Skip to content

Commit db48927

Browse files
committed
Move the plugin option to the main menu
1 parent d51e373 commit db48927

25 files changed

+551
-129
lines changed

app/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ android {
2222
applicationId "com.noti.main"
2323
minSdkVersion 21
2424
targetSdkVersion 33
25-
versionCode 1011900
26-
versionName "1.19.0"
25+
versionCode 1011901
26+
versionName "1.19.1"
2727
multiDexEnabled true
2828
ndk.abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
2929
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -64,7 +64,7 @@ dependencies {
6464
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
6565
implementation 'androidx.multidex:multidex:2.0.1'
6666

67-
implementation 'com.google.android.material:material:1.9.0-alpha02'
67+
implementation 'com.google.android.material:material:1.9.0-beta01'
6868
implementation 'com.google.android.gms:play-services-auth:20.4.1'
6969

7070
implementation platform('com.google.firebase:firebase-bom:30.4.1')
@@ -83,7 +83,7 @@ dependencies {
8383
implementation 'com.github.KieronQuinn:MonetCompat:0.4.1'
8484
implementation 'com.joaomgcd:taskerpluginlibrary:0.4.2'
8585
implementation 'com.microsoft.design:fluent-system-icons:1.1.184@aar'
86-
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20'
86+
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0'
8787
}
8888

8989
repositories {

app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,6 @@
4545

4646
<activity android:name=".StartActivity" />
4747
<activity android:name=".ui.prefs.BlacklistActivity" />
48-
<activity android:name=".ui.prefs.custom.CustomActivity"
49-
android:theme="@style/Theme.App.Material3"
50-
android:windowSoftInputMode="adjustNothing|stateHidden"/>
5148
<activity android:name=".ui.prefs.custom.AddActionActivity"
5249
android:windowSoftInputMode="adjustNothing|stateHidden"/>
5350
<activity android:name=".ui.OptionActivity" />
@@ -130,6 +127,11 @@
130127
</intent-filter>
131128
</activity>
132129

130+
<activity
131+
android:name=".receiver.plugin.IAPTestActivity"
132+
android:theme="@style/Theme.App.Palette.Dialog"
133+
android:exported="false"/>
134+
133135
<service
134136
android:name=".service.NotiListenerService"
135137
android:label="Read notifications"
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.noti.main.receiver.plugin;
2+
3+
import android.os.Bundle;
4+
5+
import androidx.annotation.Nullable;
6+
import androidx.annotation.VisibleForTesting;
7+
import androidx.appcompat.app.AppCompatActivity;
8+
9+
import com.noti.main.utils.BillingHelper;
10+
11+
@VisibleForTesting
12+
public class IAPTestActivity extends AppCompatActivity {
13+
@Override
14+
protected void onCreate(@Nullable Bundle savedInstanceState) {
15+
super.onCreate(savedInstanceState);
16+
BillingHelper mBillingHelper;
17+
18+
if (BillingHelper.getInstance(false) == null) {
19+
mBillingHelper = BillingHelper.initialize(this);
20+
} else mBillingHelper = BillingHelper.getInstance();
21+
22+
mBillingHelper.setBillingCallback(new BillingHelper.BillingCallback() {
23+
@Override
24+
public void onPurchased(String productId) {
25+
finish();
26+
}
27+
28+
@Override
29+
public void onUpdatePrice(Double priceValue) {
30+
31+
}
32+
});
33+
34+
mBillingHelper.Donate(this);
35+
}
36+
}

app/src/main/java/com/noti/main/receiver/plugin/PluginReceiver.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import android.content.Context;
55
import android.content.Intent;
66
import android.os.Bundle;
7+
import android.util.Log;
8+
9+
import androidx.annotation.VisibleForTesting;
710

811
import com.noti.main.BuildConfig;
912
import com.noti.main.service.NotiListenerService;
@@ -39,6 +42,14 @@ public void onReceive(Context context, Intent intent) {
3942
break;
4043

4144
case PluginConst.ACTION_REQUEST_REMOTE_ACTION:
45+
if(BuildConfig.DEBUG && rawData.getString(PluginConst.DATA_KEY_REMOTE_ACTION_NAME).equals("request_purchase")) {
46+
@VisibleForTesting
47+
Intent iap = new Intent(context, IAPTestActivity.class);
48+
iap.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
49+
context.startActivity(iap);
50+
break;
51+
}
52+
4253
DataProcess.pushPluginRemoteAction(context, data[0], data[1], packageName, PluginConst.ACTION_REQUEST_REMOTE_ACTION, rawData.getString(PluginConst.DATA_KEY_REMOTE_ACTION_NAME), data[2]);
4354
break;
4455

@@ -61,7 +72,7 @@ public void onReceive(Context context, Intent intent) {
6172
break;
6273

6374
case PluginConst.ACTION_PUSH_MESSAGE_DATA:
64-
NotiListenerService.getInstance().sendSmsNotification(BuildConfig.DEBUG, "noti.func", data[0], data[1], Calendar.getInstance().getTime());
75+
NotiListenerService.getInstance().sendSmsNotification(context, BuildConfig.DEBUG, "noti.func", data[0], data[1], Calendar.getInstance().getTime());
6576
break;
6677

6778
case PluginConst.ACTION_RESPONSE_REMOTE_DATA:

app/src/main/java/com/noti/main/ui/HolderFragment.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import com.noti.main.ui.options.SendPreference;
1818
import com.noti.main.ui.pair.PairMainFragment;
1919
import com.noti.main.ui.prefs.HistoryFragment;
20+
import com.noti.main.ui.prefs.custom.CustomFragment;
2021

2122
public class HolderFragment extends Fragment {
2223

@@ -76,10 +77,17 @@ public void commitFragment() {
7677
title = "Service & Account";
7778
break;
7879

79-
case "History":
80-
fragment = new HistoryFragment();
80+
case "Customize":
81+
fragment = new CustomFragment();
8182
View view = getView();
8283
if(view != null) view.findViewById(R.id.app_bar_layout).setVisibility(View.GONE);
84+
title = "Plugin & User scripts";
85+
break;
86+
87+
case "History":
88+
fragment = new HistoryFragment();
89+
View view2 = getView();
90+
if(view2 != null) view2.findViewById(R.id.app_bar_layout).setVisibility(View.GONE);
8391
title = "Notification history";
8492
break;
8593

app/src/main/java/com/noti/main/ui/OptionActivity.java

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package com.noti.main.ui;
22

3+
import android.content.res.Configuration;
34
import android.os.Bundle;
4-
import android.view.View;
55

6+
import androidx.annotation.NonNull;
67
import androidx.annotation.Nullable;
78
import androidx.appcompat.app.AppCompatActivity;
89
import androidx.fragment.app.Fragment;
910
import androidx.fragment.app.FragmentActivity;
1011

1112
import com.google.android.material.appbar.MaterialToolbar;
13+
import com.google.android.material.color.DynamicColors;
1214
import com.noti.main.R;
1315
import com.noti.main.ui.options.AccountPreference;
1416
import com.noti.main.ui.options.OtherPreference;
@@ -17,19 +19,21 @@
1719
import com.noti.main.ui.options.SendPreference;
1820
import com.noti.main.ui.pair.PairMainFragment;
1921
import com.noti.main.ui.prefs.HistoryFragment;
22+
import com.noti.main.ui.prefs.custom.CustomFragment;
2023

2124
public class OptionActivity extends AppCompatActivity {
2225

26+
boolean hideDefaultTitleBar = false;
27+
2328
private static String title = "Default Message";
2429

2530
@Override
2631
protected void onCreate(@Nullable Bundle savedInstanceState) {
2732
super.onCreate(savedInstanceState);
28-
setContentView(R.layout.activity_options);
2933

3034
Fragment fragment;
31-
3235
fragment = getSupportFragmentManager().findFragmentById(R.id.content_frame);
36+
3337
if(savedInstanceState == null || fragment == null) {
3438
switch (getIntent().getStringExtra("Type")) {
3539
case "Send":
@@ -62,9 +66,15 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
6266
title = "Service & Account";
6367
break;
6468

69+
case "Customize":
70+
fragment = new CustomFragment();
71+
hideDefaultTitleBar = true;
72+
title = "Plugin & User scripts";
73+
break;
74+
6575
case "History":
6676
fragment = new HistoryFragment();
67-
findViewById(R.id.app_bar_layout).setVisibility(View.GONE);
77+
hideDefaultTitleBar = true;
6878
title = "Notification history";
6979
break;
7080

@@ -80,6 +90,9 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
8090
}
8191
}
8292

93+
setContentView(hideDefaultTitleBar ? R.layout.activity_options_notitle : R.layout.activity_options);
94+
DynamicColors.applyToActivityIfAvailable(this);
95+
8396
Bundle bundle = new Bundle(0);
8497
if(fragment != null) {
8598
fragment.setArguments(bundle);
@@ -89,9 +102,17 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
89102
.commit();
90103
}
91104

92-
MaterialToolbar toolbar = findViewById(R.id.toolbar);
93-
toolbar.setTitle(title);
94-
toolbar.setNavigationOnClickListener((v) -> this.finish());
105+
if(!hideDefaultTitleBar) {
106+
MaterialToolbar toolbar = findViewById(R.id.toolbar);
107+
toolbar.setTitle(title);
108+
toolbar.setNavigationOnClickListener((v) -> this.finish());
109+
}
110+
}
111+
112+
@Override
113+
public void onConfigurationChanged(@NonNull Configuration newConfig) {
114+
super.onConfigurationChanged(newConfig);
115+
setContentView(hideDefaultTitleBar ? R.layout.activity_options_notitle : R.layout.activity_options);
95116
}
96117

97118
public static void attachFragment(FragmentActivity activity, Fragment fragment) {

app/src/main/java/com/noti/main/ui/SettingsActivity.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ public interface onPurchasedListener {
7979
MaterialCardView SendPreferences;
8080
MaterialCardView ReceptionPreferences;
8181
MaterialCardView OtherPreferences;
82+
MaterialCardView CustomizePreferences;
8283
MaterialCardView HistoryPreferences;
8384
MaterialCardView InfoPreferences;
8485

@@ -144,6 +145,7 @@ public void onUpdatePrice(Double priceValue) {
144145
SendPreferences = findViewById(R.id.SendPreferences);
145146
ReceptionPreferences = findViewById(R.id.ReceptionPreferences);
146147
OtherPreferences = findViewById(R.id.OtherPreferences);
148+
CustomizePreferences = findViewById(R.id.CustomizePreferences);
147149
HistoryPreferences = findViewById(R.id.HistoryPreferences);
148150
InfoPreferences = findViewById(R.id.InfoPreferences);
149151

@@ -173,6 +175,10 @@ public void onUpdatePrice(Double priceValue) {
173175
lastSelectedCardView = OtherPreferences;
174176
break;
175177

178+
case "Customize":
179+
lastSelectedCardView = CustomizePreferences;
180+
break;
181+
176182
case "History":
177183
lastSelectedCardView = HistoryPreferences;
178184
break;
@@ -230,6 +236,10 @@ public void onUpdatePrice(Double priceValue) {
230236
fragmentType = "Other";
231237
break;
232238

239+
case R.id.CustomizePreferences:
240+
fragmentType = "Customize";
241+
break;
242+
233243
case R.id.HistoryPreferences:
234244
fragmentType = "History";
235245
break;
@@ -265,6 +275,7 @@ public void onUpdatePrice(Double priceValue) {
265275
SendPreferences.setOnClickListener(onClickListener);
266276
ReceptionPreferences.setOnClickListener(onClickListener);
267277
OtherPreferences.setOnClickListener(onClickListener);
278+
CustomizePreferences.setOnClickListener(onClickListener);
268279
HistoryPreferences.setOnClickListener(onClickListener);
269280
InfoPreferences.setOnClickListener(onClickListener);
270281

@@ -378,13 +389,14 @@ void setCardViewRadius() {
378389
final float roundRadius = 24f;
379390

380391
float radiusInDP = Application.isTablet() || prefs.getBoolean("NewCardRadius", true) ? roundRadius : squareRadius;
381-
float radiusInPX = Math.round(radiusInDP * getResources().getDisplayMetrics().density);
392+
float radiusInPX = Math.round(radiusInDP * getResources().getDisplayMetrics().density);
382393

383394
PairPreferences.setRadius(radiusInPX);
384395
AccountPreferences.setRadius(radiusInPX);
385396
SendPreferences.setRadius(radiusInPX);
386397
ReceptionPreferences.setRadius(radiusInPX);
387398
OtherPreferences.setRadius(radiusInPX);
399+
CustomizePreferences.setRadius(radiusInPX);
388400
HistoryPreferences.setRadius(radiusInPX);
389401
InfoPreferences.setRadius(radiusInPX);
390402
}

app/src/main/java/com/noti/main/ui/options/OtherPreference.java

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import android.content.Context;
77
import android.content.Intent;
88
import android.content.SharedPreferences;
9-
import android.content.pm.PackageManager;
109
import android.os.Bundle;
1110
import android.text.InputType;
1211
import android.view.Gravity;
@@ -27,10 +26,9 @@
2726
import com.kieronquinn.monetcompat.core.MonetCompat;
2827
import com.noti.main.Application;
2928
import com.noti.main.R;
30-
import com.noti.main.ui.prefs.custom.CustomActivity;
29+
import com.noti.main.ui.prefs.custom.CustomFragment;
3130
import com.noti.main.utils.ui.ToastHelper;
3231

33-
import java.util.ArrayList;
3432
import java.util.Date;
3533

3634
import me.pushy.sdk.Pushy;
@@ -41,8 +39,6 @@ public class OtherPreference extends PreferenceFragmentCompat {
4139
MonetCompat monet;
4240
Activity mContext;
4341

44-
Preference UseTaskerExtension;
45-
Preference TaskerCompatibleInfo;
4642
Preference UseWiFiSleepPolicy;
4743
Preference HistoryLimit;
4844
Preference DataLimit;
@@ -79,8 +75,6 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
7975
setPreferencesFromResource(R.xml.other_preferences, rootKey);
8076
prefs = mContext.getSharedPreferences(Application.PREFS_NAME, MODE_PRIVATE);
8177

82-
UseTaskerExtension = findPreference("UseTaskerExtension");
83-
TaskerCompatibleInfo = findPreference("TaskerCompatibleInfo");
8478
UseWiFiSleepPolicy = findPreference("UseWiFiSleepPolicy");
8579
HistoryLimit = findPreference("HistoryLimit");
8680
DataLimit = findPreference("DataLimit");
@@ -90,26 +84,6 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
9084
SaveLastSelectedItem = findPreference("SaveLastSelectedItem");
9185
NewCardRadius = findPreference("NewCardRadius");
9286

93-
ArrayList<String> taskerPluginList = new ArrayList<>();
94-
taskerPluginList.add("net.dinglisch.android.taskerm");
95-
taskerPluginList.add("com.llamalab.automate");
96-
taskerPluginList.add("com.twofortyfouram.locale.x");
97-
taskerPluginList.add("com.arlosoft.macrodroid");
98-
int packageCount = 0;
99-
100-
for (String packageName : taskerPluginList) {
101-
try {
102-
mContext.getPackageManager().getPackageInfo(packageName, 0);
103-
} catch (PackageManager.NameNotFoundException e) {
104-
packageCount++;
105-
}
106-
}
107-
108-
if (packageCount == taskerPluginList.size()) {
109-
UseTaskerExtension.setEnabled(false);
110-
UseTaskerExtension.setSummary("This option requires the Tasker-compatible app.");
111-
}
112-
11387
UseWiFiSleepPolicy.setOnPreferenceChangeListener((p, n) -> {
11488
Pushy.toggleWifiPolicyCompliance((boolean) n, mContext);
11589
return true;
@@ -269,16 +243,6 @@ public boolean onPreferenceTreeClick(Preference preference) {
269243
dialog.show();
270244
break;
271245

272-
case "TaskerCompatibleInfo":
273-
dialog = new MaterialAlertDialogBuilder(new ContextThemeWrapper(mContext, R.style.Theme_App_Palette_Dialog));
274-
dialog.setTitle("Tasker compatible apps");
275-
dialog.setMessage(getString(R.string.Dialog_Tasker_compatible));
276-
dialog.setIcon(R.drawable.ic_info_outline_black_24dp);
277-
dialog.setPositiveButton("Close", (d, w) -> {
278-
});
279-
dialog.show();
280-
break;
281-
282246
case "TestNotification":
283247
Notify.NotifyImportance importance;
284248
String value = prefs.getString("importance", "Default");
@@ -312,7 +276,7 @@ public boolean onPreferenceTreeClick(Preference preference) {
312276
break;
313277

314278
case "StartRegexAction":
315-
mContext.startActivity(new Intent(mContext, CustomActivity.class));
279+
mContext.startActivity(new Intent(mContext, CustomFragment.class));
316280
break;
317281
}
318282
return super.onPreferenceTreeClick(preference);

0 commit comments

Comments
 (0)