From: Braden Farmer Date: Mon, 28 Oct 2019 03:57:59 +0000 (-0600) Subject: [WIP] Allow Taskbar to be built as a lib for inclusion into other launchers X-Git-Tag: android-x86-8.1-r3~11 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=f76ca9d05621bc13c765cdd30c6712c220901c34;p=android-x86%2Fpackages-apps-Taskbar.git [WIP] Allow Taskbar to be built as a lib for inclusion into other launchers --- diff --git a/.gitignore b/.gitignore index 9a94f0af..07578cf9 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ /build /captures /app/build +/lib/build output.json diff --git a/Android.mk b/Android.mk index 6cacb13e..ceee794c 100644 --- a/Android.mk +++ b/Android.mk @@ -3,14 +3,17 @@ include $(CLEAR_VARS) appcompat_dir := frameworks/support/v7/appcompat res_dir := app/src/main/res +nonlib_res_dir := app/src/nonlib/res LOCAL_MODULE_TAGS := optional -LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/$(res_dir) $(appcompat_dir)/res +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/$(res_dir) $(LOCAL_PATH)/$(nonlib_res_dir) $(appcompat_dir)/res LOCAL_SRC_FILES := \ $(call all-java-files-under, app/src/main/java) \ $(call all-java-files-under, app/src/androidx86/java) \ + $(call all-java-files-under, app/src/nonlib/java) \ + $(call all-java-files-under, app/src/nonplaystore/java) \ $(call all-java-files-under, app/src/compat-$(PLATFORM_SDK_VERSION)/java) LOCAL_MANIFEST_FILE := app/src/androidx86/AndroidManifest.xml diff --git a/app/build.gradle b/app/build.gradle index 8705553b..21866a72 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -78,8 +78,8 @@ android { sourceSets { main { - java { srcDirs('src/main/java', 'src/playstore/java', "src/compat-${SDK_VERSION}/java") } - res { srcDirs('src/main/res', 'src/playstore/res') } + java { srcDirs('src/main/java', 'src/playstore/java', 'src/nonlib/java', "src/compat-${SDK_VERSION}/java") } + res { srcDirs('src/main/res', 'src/playstore/res', 'src/nonlib/res') } manifest.srcFile 'src/playstore/AndroidManifest.xml' } } diff --git a/app/src/lib/AndroidManifest.xml b/app/src/lib/AndroidManifest.xml new file mode 100644 index 00000000..c05838f5 --- /dev/null +++ b/app/src/lib/AndroidManifest.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/lib/java/com/farmerbb/taskbar/lib/Taskbar.java b/app/src/lib/java/com/farmerbb/taskbar/lib/Taskbar.java new file mode 100644 index 00000000..8fac3fff --- /dev/null +++ b/app/src/lib/java/com/farmerbb/taskbar/lib/Taskbar.java @@ -0,0 +1,41 @@ +/* Copyright 2019 Braden Farmer + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.farmerbb.taskbar.lib; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; + +import com.farmerbb.taskbar.activity.MainActivity; + +public class Taskbar { + + private Taskbar() {} + + public static void openSettings(Context context) { + openSettings(context, null); + } + + public static void openSettings(Context context, String title) { + Intent intent = new Intent(context, MainActivity.class); + intent.putExtra("title", title); + + if(!(context instanceof Activity)) + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + + context.startActivity(intent); + } +} \ No newline at end of file diff --git a/app/src/lib/java/com/farmerbb/taskbar/util/ShortcutUtils.java b/app/src/lib/java/com/farmerbb/taskbar/util/ShortcutUtils.java new file mode 100644 index 00000000..0d4a0f68 --- /dev/null +++ b/app/src/lib/java/com/farmerbb/taskbar/util/ShortcutUtils.java @@ -0,0 +1,32 @@ +/* Copyright 2019 Braden Farmer + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.farmerbb.taskbar.util; + +import android.content.Context; +import android.content.Intent; + +public class ShortcutUtils { + + private ShortcutUtils() {} + + public static Intent getShortcutIntent(Context context) { + return null; + } + + public static Intent getStartStopIntent(Context context) { + return null; + } +} diff --git a/app/src/lib/res/drawable/ic_apps_black_24dp.xml b/app/src/lib/res/drawable/ic_apps_black_24dp.xml new file mode 100644 index 00000000..ad01d8a6 --- /dev/null +++ b/app/src/lib/res/drawable/ic_apps_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/lib/res/drawable/ic_brush_black_24dp.xml b/app/src/lib/res/drawable/ic_brush_black_24dp.xml new file mode 100644 index 00000000..394c6244 --- /dev/null +++ b/app/src/lib/res/drawable/ic_brush_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/lib/res/drawable/ic_error_outline_black_24dp.xml b/app/src/lib/res/drawable/ic_error_outline_black_24dp.xml new file mode 100644 index 00000000..545cc5a5 --- /dev/null +++ b/app/src/lib/res/drawable/ic_error_outline_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/lib/res/drawable/ic_settings_black_24dp.xml b/app/src/lib/res/drawable/ic_settings_black_24dp.xml new file mode 100644 index 00000000..2e85225a --- /dev/null +++ b/app/src/lib/res/drawable/ic_settings_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/lib/res/drawable/ic_web_asset_black_24dp.xml b/app/src/lib/res/drawable/ic_web_asset_black_24dp.xml new file mode 100644 index 00000000..3b9cb2ec --- /dev/null +++ b/app/src/lib/res/drawable/ic_web_asset_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/lib/res/layout/main.xml b/app/src/lib/res/layout/main.xml new file mode 100644 index 00000000..1069b519 --- /dev/null +++ b/app/src/lib/res/layout/main.xml @@ -0,0 +1,32 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/lib/res/values/public.xml b/app/src/lib/res/values/public.xml new file mode 100644 index 00000000..24fb5b31 --- /dev/null +++ b/app/src/lib/res/values/public.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/lib/res/xml/pref_about.xml b/app/src/lib/res/xml/pref_about.xml new file mode 100644 index 00000000..9c756660 --- /dev/null +++ b/app/src/lib/res/xml/pref_about.xml @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/app/src/main/java/com/farmerbb/taskbar/activity/ContextMenuActivity.java b/app/src/main/java/com/farmerbb/taskbar/activity/ContextMenuActivity.java index 8baa9eab..f66f8c3e 100644 --- a/app/src/main/java/com/farmerbb/taskbar/activity/ContextMenuActivity.java +++ b/app/src/main/java/com/farmerbb/taskbar/activity/ContextMenuActivity.java @@ -474,7 +474,7 @@ public class ContextMenuActivity extends PreferenceActivity implements Preferenc break; case "quit_taskbar": Intent quitIntent = new Intent("com.farmerbb.taskbar.QUIT"); - quitIntent.setPackage(BuildConfig.APPLICATION_ID); + quitIntent.setPackage(getPackageName()); sendBroadcast(quitIntent); showStartMenu = false; diff --git a/app/src/main/java/com/farmerbb/taskbar/activity/IconPackActivity.java b/app/src/main/java/com/farmerbb/taskbar/activity/IconPackActivity.java index 0fa85725..51a31bfc 100644 --- a/app/src/main/java/com/farmerbb/taskbar/activity/IconPackActivity.java +++ b/app/src/main/java/com/farmerbb/taskbar/activity/IconPackActivity.java @@ -104,7 +104,7 @@ public class IconPackActivity extends AppCompatActivity { PackageManager pm = getPackageManager(); ImageView imageView = convertView.findViewById(R.id.icon); - if(entry.getPackageName().equals(BuildConfig.APPLICATION_ID)) { + if(entry.getPackageName().equals(getPackageName())) { imageView.setImageDrawable(null); } else { try { @@ -148,7 +148,7 @@ public class IconPackActivity extends AppCompatActivity { else { List finalList = new ArrayList<>(); IconPack dummyIconPack = new IconPack(); - dummyIconPack.setPackageName(BuildConfig.APPLICATION_ID); + dummyIconPack.setPackageName(getPackageName()); dummyIconPack.setName(getString(R.string.icon_pack_none)); Collections.sort(list, (ip1, ip2) -> Collator.getInstance().compare(ip1.getName(), ip2.getName())); diff --git a/app/src/main/java/com/farmerbb/taskbar/activity/KeyboardShortcutActivity.java b/app/src/main/java/com/farmerbb/taskbar/activity/KeyboardShortcutActivity.java index 0cc8b4af..024e37fa 100644 --- a/app/src/main/java/com/farmerbb/taskbar/activity/KeyboardShortcutActivity.java +++ b/app/src/main/java/com/farmerbb/taskbar/activity/KeyboardShortcutActivity.java @@ -59,7 +59,7 @@ public class KeyboardShortcutActivity extends Activity { else startStopIntent = new Intent("com.farmerbb.taskbar.START"); - startStopIntent.setPackage(BuildConfig.APPLICATION_ID); + startStopIntent.setPackage(getPackageName()); sendBroadcast(startStopIntent); } diff --git a/app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java b/app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java index 9bfed04b..66507140 100644 --- a/app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java +++ b/app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java @@ -79,13 +79,15 @@ public class MainActivity extends AppCompatActivity { final SharedPreferences pref = U.getSharedPreferences(this); SharedPreferences.Editor editor = pref.edit(); - switch(pref.getString("theme", "light")) { - case "light": - setTheme(R.style.AppTheme); - break; - case "dark": - setTheme(R.style.AppTheme_Dark); - break; + if(!U.isLibrary(this)) { + switch(pref.getString("theme", "light")) { + case "light": + setTheme(R.style.AppTheme); + break; + case "dark": + setTheme(R.style.AppTheme_Dark); + break; + } } if(pref.getBoolean("taskbar_active", false) && !U.isServiceRunning(this, NotificationService.class)) @@ -98,38 +100,40 @@ public class MainActivity extends AppCompatActivity { editor.putBoolean("launcher", launcherEnabled); editor.apply(); - ComponentName component = new ComponentName(this, HomeActivity.class); - getPackageManager().setComponentEnabledSetting(component, - launcherEnabled && !U.isDelegatingHomeActivity(this) - ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED - : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, - PackageManager.DONT_KILL_APP); - - ComponentName component2 = new ComponentName(this, KeyboardShortcutActivity.class); - getPackageManager().setComponentEnabledSetting(component2, - pref.getBoolean("keyboard_shortcut", false) - ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED - : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, - PackageManager.DONT_KILL_APP); - - ComponentName component3 = new ComponentName(this, ShortcutActivity.class); - getPackageManager().setComponentEnabledSetting(component3, - U.enableFreeformModeShortcut(this) - ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED - : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, - PackageManager.DONT_KILL_APP); - - ComponentName component4 = new ComponentName(this, StartTaskbarActivity.class); - getPackageManager().setComponentEnabledSetting(component4, - PackageManager.COMPONENT_ENABLED_STATE_ENABLED, - PackageManager.DONT_KILL_APP); - - ComponentName component5 = new ComponentName(this, SecondaryHomeActivity.class); - getPackageManager().setComponentEnabledSetting(component5, - launcherEnabled && !U.isDelegatingHomeActivity(this) && FeatureFlags.SECONDARY_HOME - ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED - : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, - PackageManager.DONT_KILL_APP); + if(!U.isLibrary(this)) { + ComponentName component = new ComponentName(this, HomeActivity.class); + getPackageManager().setComponentEnabledSetting(component, + launcherEnabled && !U.isDelegatingHomeActivity(this) + ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED + : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + + ComponentName component2 = new ComponentName(this, KeyboardShortcutActivity.class); + getPackageManager().setComponentEnabledSetting(component2, + pref.getBoolean("keyboard_shortcut", false) + ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED + : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + + ComponentName component3 = new ComponentName(this, ShortcutActivity.class); + getPackageManager().setComponentEnabledSetting(component3, + U.enableFreeformModeShortcut(this) + ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED + : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + + ComponentName component4 = new ComponentName(this, StartTaskbarActivity.class); + getPackageManager().setComponentEnabledSetting(component4, + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, + PackageManager.DONT_KILL_APP); + + ComponentName component5 = new ComponentName(this, SecondaryHomeActivity.class); + getPackageManager().setComponentEnabledSetting(component5, + launcherEnabled && !U.isDelegatingHomeActivity(this) && FeatureFlags.SECONDARY_HOME + ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED + : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + } if(!launcherEnabled) LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("com.farmerbb.taskbar.KILL_HOME_ACTIVITY")); @@ -141,7 +145,7 @@ public class MainActivity extends AppCompatActivity { new Handler().postDelayed(() -> pref.edit().putBoolean("has_caption", hasCaption).apply(), 500); } - if(BuildConfig.APPLICATION_ID.equals(BuildConfig.PAID_APPLICATION_ID)) { + if(getPackageName().equals(BuildConfig.PAID_APPLICATION_ID)) { File file = new File(getFilesDir() + File.separator + "imported_successfully"); if(freeVersionInstalled() && !file.exists()) { startActivity(new Intent(this, ImportSettingsActivity.class)); @@ -157,7 +161,7 @@ public class MainActivity extends AppCompatActivity { try { PackageInfo pInfo = pm.getPackageInfo(BuildConfig.BASE_APPLICATION_ID, 0); return pInfo.versionCode >= 68 - && pm.checkSignatures(BuildConfig.BASE_APPLICATION_ID, BuildConfig.APPLICATION_ID) + && pm.checkSignatures(BuildConfig.BASE_APPLICATION_ID, getPackageName()) == PackageManager.SIGNATURE_MATCH; } catch (PackageManager.NameNotFoundException e) { return false; @@ -168,7 +172,7 @@ public class MainActivity extends AppCompatActivity { setContentView(R.layout.main); ActionBar actionBar = getSupportActionBar(); - if(actionBar != null) { + if(actionBar != null && !U.isLibrary(this)) { actionBar.setCustomView(R.layout.switch_layout); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM); } @@ -205,7 +209,7 @@ public class MainActivity extends AppCompatActivity { } SharedPreferences pref = U.getSharedPreferences(this); - if(!BuildConfig.APPLICATION_ID.equals(BuildConfig.BASE_APPLICATION_ID) && freeVersionInstalled()) { + if(!getPackageName().equals(BuildConfig.BASE_APPLICATION_ID) && freeVersionInstalled()) { if(!pref.getBoolean("dont_show_uninstall_dialog", false)) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.settings_imported_successfully) @@ -233,7 +237,7 @@ public class MainActivity extends AppCompatActivity { String iconPack = pref.getString("icon_pack", BuildConfig.BASE_APPLICATION_ID); if(iconPack.contains(BuildConfig.BASE_APPLICATION_ID)) { - editor.putString("icon_pack", BuildConfig.APPLICATION_ID); + editor.putString("icon_pack", getPackageName()); } else { U.refreshPinnedIcons(this); } @@ -355,4 +359,12 @@ public class MainActivity extends AppCompatActivity { .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE) .commit(); } + + public String getAboutFragmentTitle() { + if(!U.isLibrary(this)) + return getString(R.string.app_name); + + String title = getIntent().getStringExtra("title"); + return title != null ? title : getString(R.string.settings); + } } \ No newline at end of file diff --git a/app/src/main/java/com/farmerbb/taskbar/activity/ShortcutActivity.java b/app/src/main/java/com/farmerbb/taskbar/activity/ShortcutActivity.java index 7e673119..ced73b6c 100644 --- a/app/src/main/java/com/farmerbb/taskbar/activity/ShortcutActivity.java +++ b/app/src/main/java/com/farmerbb/taskbar/activity/ShortcutActivity.java @@ -22,8 +22,8 @@ import android.os.Bundle; import android.os.Handler; import android.support.v4.content.LocalBroadcastManager; -import com.farmerbb.taskbar.BuildConfig; import com.farmerbb.taskbar.R; +import com.farmerbb.taskbar.util.ShortcutUtils; import com.farmerbb.taskbar.util.U; public class ShortcutActivity extends Activity { @@ -44,14 +44,14 @@ public class ShortcutActivity extends Activity { } Intent intent = new Intent("com.farmerbb.taskbar.START"); - intent.setPackage(BuildConfig.APPLICATION_ID); + intent.setPackage(getPackageName()); sendBroadcast(intent); new Handler().postDelayed(() -> U.startFreeformHack(this, true), 100); } else U.showToastLong(this, R.string.no_freeform_support); } else - setResult(RESULT_OK, U.getShortcutIntent(this)); + setResult(RESULT_OK, ShortcutUtils.getShortcutIntent(this)); finish(); } diff --git a/app/src/main/java/com/farmerbb/taskbar/activity/StartTaskbarActivity.java b/app/src/main/java/com/farmerbb/taskbar/activity/StartTaskbarActivity.java index 889e24f9..eebcd27e 100644 --- a/app/src/main/java/com/farmerbb/taskbar/activity/StartTaskbarActivity.java +++ b/app/src/main/java/com/farmerbb/taskbar/activity/StartTaskbarActivity.java @@ -19,8 +19,8 @@ import android.app.Activity; import android.content.Intent; import android.os.Bundle; -import com.farmerbb.taskbar.BuildConfig; import com.farmerbb.taskbar.service.NotificationService; +import com.farmerbb.taskbar.util.ShortcutUtils; import com.farmerbb.taskbar.util.U; public class StartTaskbarActivity extends Activity { @@ -33,10 +33,10 @@ public class StartTaskbarActivity extends Activity { Intent intent = new Intent("com.farmerbb.taskbar." + (U.isServiceRunning(this, NotificationService.class) ? "QUIT" : "START")); - intent.setPackage(BuildConfig.APPLICATION_ID); + intent.setPackage(getPackageName()); sendBroadcast(intent); } else - setResult(RESULT_OK, U.getStartStopIntent(this)); + setResult(RESULT_OK, ShortcutUtils.getStartStopIntent(this)); finish(); } diff --git a/app/src/main/java/com/farmerbb/taskbar/fragment/AboutFragment.java b/app/src/main/java/com/farmerbb/taskbar/fragment/AboutFragment.java index 076329d9..c3836702 100644 --- a/app/src/main/java/com/farmerbb/taskbar/fragment/AboutFragment.java +++ b/app/src/main/java/com/farmerbb/taskbar/fragment/AboutFragment.java @@ -28,6 +28,7 @@ import android.support.v7.app.AppCompatActivity; import com.farmerbb.taskbar.BuildConfig; import com.farmerbb.taskbar.R; +import com.farmerbb.taskbar.activity.MainActivity; import com.farmerbb.taskbar.util.U; import java.text.NumberFormat; @@ -46,18 +47,20 @@ public class AboutFragment extends SettingsFragment implements Preference.OnPref // Add preferences addPreferencesFromResource(R.xml.pref_base); - - SharedPreferences pref = U.getSharedPreferences(getActivity()); addPreferencesFromResource(R.xml.pref_about); - if(BuildConfig.APPLICATION_ID.equals(BuildConfig.BASE_APPLICATION_ID) - && U.isPlayStoreInstalled(getActivity()) - && U.isPlayStoreRelease(getActivity()) - && !U.isSystemApp(getActivity()) - && !pref.getBoolean("hide_donate", false)) { - findPreference("donate").setOnPreferenceClickListener(this); - } else - getPreferenceScreen().removePreference(findPreference("donate_category")); + boolean isLibrary = U.isLibrary(getActivity()); + if(!isLibrary) { + SharedPreferences pref = U.getSharedPreferences(getActivity()); + if(getActivity().getPackageName().equals(BuildConfig.BASE_APPLICATION_ID) + && U.isPlayStoreInstalled(getActivity()) + && U.isPlayStoreRelease(getActivity()) + && !U.isSystemApp(getActivity()) + && !pref.getBoolean("hide_donate", false)) { + findPreference("donate").setOnPreferenceClickListener(this); + } else + getPreferenceScreen().removePreference(findPreference("donate_category")); + } // Set OnClickListeners for certain preferences if(U.canEnableFreeform()) @@ -70,11 +73,13 @@ public class AboutFragment extends SettingsFragment implements Preference.OnPref findPreference("pref_screen_recent_apps").setOnPreferenceClickListener(this); findPreference("pref_screen_advanced").setOnPreferenceClickListener(this); - if(BuildConfig.DEBUG || BuildConfig.APPLICATION_ID.equals(BuildConfig.ANDROIDX86_APPLICATION_ID)) - findPreference("about").setSummary(R.string.pref_about_description_alt); - else { - findPreference("about").setSummary(getString(R.string.pref_about_description, new String(Character.toChars(0x1F601)))); - findPreference("about").setOnPreferenceClickListener(this); + if(!isLibrary) { + if(BuildConfig.DEBUG || getActivity().getPackageName().equals(BuildConfig.ANDROIDX86_APPLICATION_ID)) + findPreference("about").setSummary(R.string.pref_about_description_alt); + else { + findPreference("about").setSummary(getString(R.string.pref_about_description, new String(Character.toChars(0x1F601)))); + findPreference("about").setOnPreferenceClickListener(this); + } } finishedLoadingPrefs = true; @@ -85,10 +90,10 @@ public class AboutFragment extends SettingsFragment implements Preference.OnPref super.onActivityCreated(savedInstanceState); AppCompatActivity activity = (AppCompatActivity) getActivity(); - activity.setTitle(R.string.app_name); + activity.setTitle(((MainActivity) getActivity()).getAboutFragmentTitle()); ActionBar actionBar = activity.getSupportActionBar(); if(actionBar != null) - actionBar.setDisplayHomeAsUpEnabled(false); + actionBar.setDisplayHomeAsUpEnabled(U.isLibrary(getActivity())); } @Override diff --git a/app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java b/app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java index 456607f5..61f94eaa 100644 --- a/app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java +++ b/app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java @@ -77,21 +77,29 @@ public class AdvancedFragment extends SettingsFragment implements Preference.OnP // Set OnClickListeners for certain preferences findPreference("clear_pinned_apps").setOnPreferenceClickListener(this); - findPreference("launcher").setOnPreferenceClickListener(this); - findPreference("keyboard_shortcut").setOnPreferenceClickListener(this); findPreference("dashboard_grid_size").setOnPreferenceClickListener(this); - findPreference("navigation_bar_buttons").setOnPreferenceClickListener(this); findPreference("keyboard_shortcut").setSummary(DependencyUtils.getKeyboardShortcutSummary(getActivity())); - boolean isAndroidx86 = BuildConfig.APPLICATION_ID.equals(BuildConfig.ANDROIDX86_APPLICATION_ID); + boolean isLibrary = U.isLibrary(getActivity()); + boolean isAndroidx86 = getActivity().getPackageName().equals(BuildConfig.ANDROIDX86_APPLICATION_ID); + + if(isLibrary) { + getPreferenceScreen().removePreference(findPreference("launcher")); + getPreferenceScreen().removePreference(findPreference("keyboard_shortcut")); + getPreferenceScreen().removePreference(findPreference("navigation_bar_buttons")); + } else { + findPreference("launcher").setOnPreferenceClickListener(this); + findPreference("keyboard_shortcut").setOnPreferenceClickListener(this); + findPreference("navigation_bar_buttons").setOnPreferenceClickListener(this); + } - if(!isAndroidx86 && U.isPlayStoreInstalled(getActivity()) && U.isPlayStoreRelease(getActivity())) { + if(!isAndroidx86 && !isLibrary && U.isPlayStoreInstalled(getActivity()) && U.isPlayStoreRelease(getActivity())) { findPreference("secondscreen").setOnPreferenceClickListener(this); secondScreenPrefEnabled = true; } else getPreferenceScreen().removePreference(findPreference("secondscreen")); - if(isAndroidx86) + if(isAndroidx86 || isLibrary) getPreferenceScreen().removePreference(findPreference("tasker_enabled")); bindPreferenceSummaryToValue(findPreference("dashboard")); @@ -100,7 +108,8 @@ public class AdvancedFragment extends SettingsFragment implements Preference.OnP boolean lockHomeToggle = pref.getBoolean("launcher", false) && U.isLauncherPermanentlyEnabled(getActivity()); - findPreference("launcher").setEnabled(!lockHomeToggle); + if(!isLibrary) + findPreference("launcher").setEnabled(!lockHomeToggle); finishedLoadingPrefs = true; } diff --git a/app/src/main/java/com/farmerbb/taskbar/fragment/AppearanceFragment.java b/app/src/main/java/com/farmerbb/taskbar/fragment/AppearanceFragment.java index 71d15b5b..6ef0d96a 100644 --- a/app/src/main/java/com/farmerbb/taskbar/fragment/AppearanceFragment.java +++ b/app/src/main/java/com/farmerbb/taskbar/fragment/AppearanceFragment.java @@ -98,7 +98,7 @@ public class AppearanceFragment extends SettingsFragment implements Preference.O Preference iconPackListPref = findPreference("icon_pack_list"); if(iconPackListPref != null) { SharedPreferences pref = U.getSharedPreferences(getActivity()); - String iconPackPackage = pref.getString("icon_pack", BuildConfig.APPLICATION_ID); + String iconPackPackage = pref.getString("icon_pack", getActivity().getPackageName()); PackageManager pm = getActivity().getPackageManager(); boolean iconPackValid = true; @@ -108,7 +108,7 @@ public class AppearanceFragment extends SettingsFragment implements Preference.O iconPackValid = false; } - if(!iconPackValid || iconPackPackage.equals(BuildConfig.APPLICATION_ID)) { + if(!iconPackValid || iconPackPackage.equals(getActivity().getPackageName())) { iconPackListPref.setSummary(getString(R.string.icon_pack_none)); } else { try { diff --git a/app/src/main/java/com/farmerbb/taskbar/fragment/GeneralFragment.java b/app/src/main/java/com/farmerbb/taskbar/fragment/GeneralFragment.java index 2c02e8f9..b9b31600 100644 --- a/app/src/main/java/com/farmerbb/taskbar/fragment/GeneralFragment.java +++ b/app/src/main/java/com/farmerbb/taskbar/fragment/GeneralFragment.java @@ -47,7 +47,13 @@ public class GeneralFragment extends SettingsFragment implements Preference.OnPr // Set OnClickListeners for certain preferences findPreference("blacklist").setOnPreferenceClickListener(this); - findPreference("notification_settings").setOnPreferenceClickListener(this); + + if(!U.isLibrary(getActivity())) + findPreference("notification_settings").setOnPreferenceClickListener(this); + else { + getPreferenceScreen().removePreference(findPreference("start_on_boot")); + getPreferenceScreen().removePreference(findPreference("notification_settings")); + } if(U.canEnableFreeform() && !U.isChromeOs(getActivity()) @@ -122,9 +128,9 @@ public class GeneralFragment extends SettingsFragment implements Preference.OnPr intent2.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS); if(Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1) - intent2.putExtra(Settings.EXTRA_APP_PACKAGE, BuildConfig.APPLICATION_ID); + intent2.putExtra(Settings.EXTRA_APP_PACKAGE, getActivity().getPackageName()); else { - intent2.putExtra("app_package", BuildConfig.APPLICATION_ID); + intent2.putExtra("app_package", getActivity().getPackageName()); intent2.putExtra("app_uid", getActivity().getApplicationInfo().uid); } diff --git a/app/src/main/java/com/farmerbb/taskbar/fragment/SettingsFragment.java b/app/src/main/java/com/farmerbb/taskbar/fragment/SettingsFragment.java index b5c0127b..7d28779a 100644 --- a/app/src/main/java/com/farmerbb/taskbar/fragment/SettingsFragment.java +++ b/app/src/main/java/com/farmerbb/taskbar/fragment/SettingsFragment.java @@ -82,6 +82,8 @@ public abstract class SettingsFragment extends PreferenceFragment { if(finishedLoadingPrefs) { switch(preference.getKey()) { case "theme": + if(U.isLibrary(getActivity())) break; + // Restart MainActivity Intent intent = new Intent(getActivity(), MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); diff --git a/app/src/main/java/com/farmerbb/taskbar/service/NotificationService.java b/app/src/main/java/com/farmerbb/taskbar/service/NotificationService.java index 746aafb7..b5813557 100644 --- a/app/src/main/java/com/farmerbb/taskbar/service/NotificationService.java +++ b/app/src/main/java/com/farmerbb/taskbar/service/NotificationService.java @@ -95,10 +95,10 @@ public class NotificationService extends Service { intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); Intent receiverIntent = new Intent("com.farmerbb.taskbar.SHOW_HIDE_TASKBAR"); - receiverIntent.setPackage(BuildConfig.APPLICATION_ID); + receiverIntent.setPackage(getPackageName()); Intent receiverIntent2 = new Intent("com.farmerbb.taskbar.QUIT"); - receiverIntent2.setPackage(BuildConfig.APPLICATION_ID); + receiverIntent2.setPackage(getPackageName()); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); PendingIntent receiverPendingIntent = PendingIntent.getBroadcast(this, 0, receiverIntent, PendingIntent.FLAG_UPDATE_CURRENT); @@ -132,7 +132,7 @@ public class NotificationService extends Service { String freeformLabel = getString(pref.getBoolean("freeform_hack", false) ? R.string.freeform_off : R.string.freeform_on); Intent freeformIntent = new Intent("com.farmerbb.taskbar.TOGGLE_FREEFORM_MODE"); - freeformIntent.setPackage(BuildConfig.APPLICATION_ID); + freeformIntent.setPackage(getPackageName()); PendingIntent freeformPendingIntent = PendingIntent.getBroadcast(this, 0, freeformIntent, PendingIntent.FLAG_UPDATE_CURRENT); @@ -150,7 +150,7 @@ public class NotificationService extends Service { LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("com.farmerbb.taskbar.UPDATE_SWITCH")); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) - TileService.requestListeningState(this, new ComponentName(BuildConfig.APPLICATION_ID, QuickSettingsTileService.class.getName())); + TileService.requestListeningState(this, new ComponentName(getPackageName(), QuickSettingsTileService.class.getName())); DependencyUtils.requestTaskerQuery(this); @@ -175,7 +175,7 @@ public class NotificationService extends Service { LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("com.farmerbb.taskbar.UPDATE_SWITCH")); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) - TileService.requestListeningState(this, new ComponentName(BuildConfig.APPLICATION_ID, QuickSettingsTileService.class.getName())); + TileService.requestListeningState(this, new ComponentName(getPackageName(), QuickSettingsTileService.class.getName())); DependencyUtils.requestTaskerQuery(this); diff --git a/app/src/main/java/com/farmerbb/taskbar/service/QuickSettingsTileService.java b/app/src/main/java/com/farmerbb/taskbar/service/QuickSettingsTileService.java index 91916218..2d82a5b0 100644 --- a/app/src/main/java/com/farmerbb/taskbar/service/QuickSettingsTileService.java +++ b/app/src/main/java/com/farmerbb/taskbar/service/QuickSettingsTileService.java @@ -43,7 +43,7 @@ public class QuickSettingsTileService extends TileService { Intent intent = new Intent("com.farmerbb.taskbar." + (U.isServiceRunning(this, NotificationService.class) ? "QUIT" : "START")); - intent.setPackage(BuildConfig.APPLICATION_ID); + intent.setPackage(getPackageName()); sendBroadcast(intent); new Handler().postDelayed(this::updateState, 100); diff --git a/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java b/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java index 67f0ba49..e4f2c9bb 100644 --- a/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java +++ b/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java @@ -48,6 +48,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.PowerManager; +import android.os.Process; import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; @@ -321,8 +322,11 @@ public class TaskbarController implements UIController { if(U.isBlissOs(context)) { drawable = ContextCompat.getDrawable(context, R.drawable.bliss); drawable.setTint(accentColor); - } else - drawable = ContextCompat.getDrawable(context, R.mipmap.ic_launcher); + } else { + LauncherApps launcherApps = (LauncherApps) context.getSystemService(Context.LAUNCHER_APPS_SERVICE); + LauncherActivityInfo info = launcherApps.getActivityList(context.getPackageName(), Process.myUserHandle()).get(0); + drawable = IconCache.getInstance(context).getIcon(context, context.getPackageManager(), info); + } startButton.setImageDrawable(drawable); padding = context.getResources().getDimensionPixelSize(R.dimen.app_drawer_icon_padding_alt); @@ -1664,7 +1668,7 @@ public class TaskbarController implements UIController { } private int getResourceIdFor(String name) { - String packageName = context.getResources().getResourcePackageName(R.mipmap.ic_launcher); + String packageName = context.getResources().getResourcePackageName(R.drawable.dummy); return context.getResources().getIdentifier(name, "drawable", packageName); } } diff --git a/app/src/main/java/com/farmerbb/taskbar/util/IconCache.java b/app/src/main/java/com/farmerbb/taskbar/util/IconCache.java index f9d47b96..c36c9e13 100644 --- a/app/src/main/java/com/farmerbb/taskbar/util/IconCache.java +++ b/app/src/main/java/com/farmerbb/taskbar/util/IconCache.java @@ -94,19 +94,19 @@ public class IconCache { private Drawable loadIcon(Context context, PackageManager pm, LauncherActivityInfo appInfo) { SharedPreferences pref = U.getSharedPreferences(context); - String iconPackPackage = pref.getString("icon_pack", BuildConfig.APPLICATION_ID); + String iconPackPackage = pref.getString("icon_pack", context.getPackageName()); boolean useMask = pref.getBoolean("icon_pack_use_mask", false); IconPackManager iconPackManager = IconPackManager.getInstance(); try { pm.getPackageInfo(iconPackPackage, 0); } catch (PackageManager.NameNotFoundException e) { - iconPackPackage = BuildConfig.APPLICATION_ID; + iconPackPackage = context.getPackageName(); pref.edit().putString("icon_pack", iconPackPackage).apply(); U.refreshPinnedIcons(context); } - if(iconPackPackage.equals(BuildConfig.APPLICATION_ID)) + if(iconPackPackage.equals(context.getPackageName())) return getIcon(pm, appInfo); else { IconPack iconPack = iconPackManager.getIconPack(iconPackPackage); diff --git a/app/src/main/java/com/farmerbb/taskbar/util/U.java b/app/src/main/java/com/farmerbb/taskbar/util/U.java index 594538ed..9d1f94cd 100644 --- a/app/src/main/java/com/farmerbb/taskbar/util/U.java +++ b/app/src/main/java/com/farmerbb/taskbar/util/U.java @@ -63,8 +63,6 @@ import com.farmerbb.taskbar.R; import com.farmerbb.taskbar.activity.ContextMenuActivity; import com.farmerbb.taskbar.activity.DummyActivity; import com.farmerbb.taskbar.activity.InvisibleActivityFreeform; -import com.farmerbb.taskbar.activity.ShortcutActivity; -import com.farmerbb.taskbar.activity.StartTaskbarActivity; import com.farmerbb.taskbar.activity.TouchAbsorberActivity; import com.farmerbb.taskbar.activity.dark.ContextMenuActivityDark; import com.farmerbb.taskbar.service.DashboardService; @@ -104,6 +102,7 @@ public class U { private static final int WINDOWING_MODE_FULLSCREEN = 1; private static final int WINDOWING_MODE_FREEFORM = 5; + @SuppressWarnings("deprecation") public static SharedPreferences getSharedPreferences(Context context) { return context.getSharedPreferences(BuildConfig.APPLICATION_ID + "_preferences", Context.MODE_PRIVATE); } @@ -128,7 +127,7 @@ public class U { .setPositiveButton(R.string.action_grant_permission, (dialog, which) -> { try { context.startActivity(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, - Uri.parse("package:" + BuildConfig.APPLICATION_ID))); + Uri.parse("package:" + context.getPackageName()))); finalOnFinish.run(); } catch (ActivityNotFoundException e) { @@ -154,7 +153,7 @@ public class U { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(R.string.error_dialog_title) - .setMessage(context.getString(R.string.error_dialog_message, BuildConfig.APPLICATION_ID, appopCmd)) + .setMessage(context.getString(R.string.error_dialog_message, context.getPackageName(), appopCmd)) .setPositiveButton(R.string.action_ok, (dialog, which) -> finalOnFinish.run()); AlertDialog dialog = builder.create(); @@ -622,13 +621,13 @@ public class U { public static void checkForUpdates(Context context) { String url; if(isPlayStoreRelease(context)) { - if(BuildConfig.APPLICATION_ID.equals(BuildConfig.BASE_APPLICATION_ID) + if(context.getPackageName().equals(BuildConfig.BASE_APPLICATION_ID) && !isPlayStoreInstalled(context)) url = "https://github.com/farmerbb/Taskbar/releases"; else - url = "https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID; + url = "https://play.google.com/store/apps/details?id=" + context.getPackageName(); } else - url = "https://f-droid.org/repository/browse/?fdid=" + BuildConfig.APPLICATION_ID; + url = "https://f-droid.org/repository/browse/?fdid=" + context.getPackageName(); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); @@ -644,7 +643,7 @@ public class U { homeIntent.addCategory(Intent.CATEGORY_HOME); ResolveInfo defaultLauncher = context.getPackageManager().resolveActivity(homeIntent, PackageManager.MATCH_DEFAULT_ONLY); - return defaultLauncher.activityInfo.packageName.equals(BuildConfig.APPLICATION_ID); + return defaultLauncher.activityInfo.packageName.equals(context.getPackageName()); } public static void setCachedRotation(int cachedRotation) { @@ -867,32 +866,6 @@ public class U { } } - public static Intent getShortcutIntent(Context context) { - Intent shortcutIntent = new Intent(context, ShortcutActivity.class); - shortcutIntent.setAction(Intent.ACTION_MAIN); - shortcutIntent.putExtra("is_launching_shortcut", true); - - Intent intent = new Intent(); - intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); - intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.mipmap.ic_freeform_mode)); - intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, context.getString(R.string.pref_header_freeform)); - - return intent; - } - - public static Intent getStartStopIntent(Context context) { - Intent shortcutIntent = new Intent(context, StartTaskbarActivity.class); - shortcutIntent.setAction(Intent.ACTION_MAIN); - shortcutIntent.putExtra("is_launching_shortcut", true); - - Intent intent = new Intent(); - intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); - intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.mipmap.ic_launcher)); - intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, context.getString(R.string.start_taskbar)); - - return intent; - } - public static boolean canEnableFreeform() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N; } @@ -1088,7 +1061,7 @@ public class U { public static boolean isSystemApp(Context context) { try { - ApplicationInfo info = context.getPackageManager().getApplicationInfo(BuildConfig.APPLICATION_ID, 0); + ApplicationInfo info = context.getPackageManager().getApplicationInfo(context.getPackageName(), 0); int mask = ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP; return (info.flags & mask) != 0; } catch (PackageManager.NameNotFoundException e) { @@ -1112,19 +1085,19 @@ public class U { validBlissOsBuildProp = true; return validBlissOsBuildProp - && BuildConfig.APPLICATION_ID.equals(BuildConfig.BASE_APPLICATION_ID) + && context.getPackageName().equals(BuildConfig.BASE_APPLICATION_ID) && isSystemApp(context); } public static boolean isLauncherPermanentlyEnabled(Context context) { - if(BuildConfig.APPLICATION_ID.equals(BuildConfig.ANDROIDX86_APPLICATION_ID)) + if(context.getPackageName().equals(BuildConfig.ANDROIDX86_APPLICATION_ID)) return true; PackageManager pm = context.getPackageManager(); try { pm.getPackageInfo(BuildConfig.SUPPORT_APPLICATION_ID, 0); - return pm.checkSignatures(BuildConfig.SUPPORT_APPLICATION_ID, BuildConfig.APPLICATION_ID) == PackageManager.SIGNATURE_MATCH - && BuildConfig.APPLICATION_ID.equals(BuildConfig.BASE_APPLICATION_ID) + return pm.checkSignatures(BuildConfig.SUPPORT_APPLICATION_ID, context.getPackageName()) == PackageManager.SIGNATURE_MATCH + && context.getPackageName().equals(BuildConfig.BASE_APPLICATION_ID) && isSystemApp(context); } catch (PackageManager.NameNotFoundException e) { return false; @@ -1274,7 +1247,7 @@ public class U { } // Customizations for Android-x86 devices (non-Bliss) - if(BuildConfig.APPLICATION_ID.equals(BuildConfig.ANDROIDX86_APPLICATION_ID) + if(context.getPackageName().equals(BuildConfig.ANDROIDX86_APPLICATION_ID) && isSystemApp(context) && !pref.getBoolean("android_x86_prefs", false)) { pref.edit() @@ -1348,7 +1321,7 @@ public class U { } else showToastLong(context, R.string.pin_shortcut_not_supported); } else { - Intent intent = getShortcutIntent(context); + Intent intent = ShortcutUtils.getShortcutIntent(context); intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); intent.putExtra("duplicate", false); @@ -1455,7 +1428,7 @@ public class U { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !isSystemApp(context)) { ApplicationInfo applicationInfo = null; try { - applicationInfo = context.getPackageManager().getApplicationInfo(BuildConfig.APPLICATION_ID, 0); + applicationInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), 0); } catch (PackageManager.NameNotFoundException e) { /* Gracefully fail */ } if(applicationInfo != null) { @@ -1508,7 +1481,7 @@ public class U { } public static boolean isPlayStoreRelease(Context context) { - return isPlayStoreRelease(context, BuildConfig.APPLICATION_ID); + return isPlayStoreRelease(context, context.getPackageName()); } @SuppressLint("PackageManagerGetSignatures") @@ -1627,4 +1600,9 @@ public class U { && pref.getBoolean("full_length", context.getResources().getBoolean(R.bool.def_full_length)) && !getTaskbarPosition(context).contains("vertical"); } + + @SuppressWarnings("deprecation") + public static boolean isLibrary(Context context) { + return !context.getPackageName().equals(BuildConfig.APPLICATION_ID); + } } diff --git a/app/src/main/res/drawable/dummy.xml b/app/src/main/res/drawable/dummy.xml new file mode 100644 index 00000000..e6b55319 --- /dev/null +++ b/app/src/main/res/drawable/dummy.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 9ec6e82c..893adb5d 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -383,4 +383,7 @@ Show status icons and clock Only visible when Taskbar is horizontal + Settings + Powered by Taskbar + diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 226154b1..51c03bc6 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -383,4 +383,7 @@ Show status icons and clock Only visible when Taskbar is horizontal + Settings + Powered by Taskbar + \ No newline at end of file diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 7a0de612..1a4cd6ea 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -383,4 +383,7 @@ Show status icons and clock Only visible when Taskbar is horizontal + Settings + Powered by Taskbar + diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 19dc1793..f78805ca 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -383,4 +383,7 @@ Show status icons and clock Only visible when Taskbar is horizontal + Settings + Powered by Taskbar + \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 1a8bbd2d..a6f91577 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -375,4 +375,7 @@ Bu durumda, bu cihazdaki serbest biçimli modu kullanmak için özel bir ROM fla Show status icons and clock Only visible when Taskbar is horizontal + Settings + Powered by Taskbar + \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index d5453324..c009db62 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -383,4 +383,7 @@ Show status icons and clock Only visible when Taskbar is horizontal + Settings + Powered by Taskbar + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 44ec295f..8b7b0a5e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -383,4 +383,7 @@ Show status icons and clock Only visible when Taskbar is horizontal + Settings + Powered by Taskbar + diff --git a/app/src/nonlib/java/com/farmerbb/taskbar/util/ShortcutUtils.java b/app/src/nonlib/java/com/farmerbb/taskbar/util/ShortcutUtils.java new file mode 100644 index 00000000..b68a1031 --- /dev/null +++ b/app/src/nonlib/java/com/farmerbb/taskbar/util/ShortcutUtils.java @@ -0,0 +1,54 @@ +/* Copyright 2019 Braden Farmer + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.farmerbb.taskbar.util; + +import android.content.Context; +import android.content.Intent; + +import com.farmerbb.taskbar.R; +import com.farmerbb.taskbar.activity.ShortcutActivity; +import com.farmerbb.taskbar.activity.StartTaskbarActivity; + +public class ShortcutUtils { + + private ShortcutUtils() {} + + public static Intent getShortcutIntent(Context context) { + Intent shortcutIntent = new Intent(context, ShortcutActivity.class); + shortcutIntent.setAction(Intent.ACTION_MAIN); + shortcutIntent.putExtra("is_launching_shortcut", true); + + Intent intent = new Intent(); + intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); + intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.mipmap.ic_freeform_mode)); + intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, context.getString(R.string.pref_header_freeform)); + + return intent; + } + + public static Intent getStartStopIntent(Context context) { + Intent shortcutIntent = new Intent(context, StartTaskbarActivity.class); + shortcutIntent.setAction(Intent.ACTION_MAIN); + shortcutIntent.putExtra("is_launching_shortcut", true); + + Intent intent = new Intent(); + intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); + intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.mipmap.ic_launcher)); + intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, context.getString(R.string.start_taskbar)); + + return intent; + } +} diff --git a/app/src/main/res/drawable/ic_apps_black_24dp.xml b/app/src/nonlib/res/drawable/ic_apps_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_apps_black_24dp.xml rename to app/src/nonlib/res/drawable/ic_apps_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_brush_black_24dp.xml b/app/src/nonlib/res/drawable/ic_brush_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_brush_black_24dp.xml rename to app/src/nonlib/res/drawable/ic_brush_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_error_outline_black_24dp.xml b/app/src/nonlib/res/drawable/ic_error_outline_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_error_outline_black_24dp.xml rename to app/src/nonlib/res/drawable/ic_error_outline_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_settings_black_24dp.xml b/app/src/nonlib/res/drawable/ic_settings_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_settings_black_24dp.xml rename to app/src/nonlib/res/drawable/ic_settings_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_web_asset_black_24dp.xml b/app/src/nonlib/res/drawable/ic_web_asset_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_web_asset_black_24dp.xml rename to app/src/nonlib/res/drawable/ic_web_asset_black_24dp.xml diff --git a/app/src/main/res/layout/main.xml b/app/src/nonlib/res/layout/main.xml similarity index 100% rename from app/src/main/res/layout/main.xml rename to app/src/nonlib/res/layout/main.xml diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_freeform_mode.xml b/app/src/nonlib/res/mipmap-anydpi-v26/ic_freeform_mode.xml similarity index 100% rename from app/src/main/res/mipmap-anydpi-v26/ic_freeform_mode.xml rename to app/src/nonlib/res/mipmap-anydpi-v26/ic_freeform_mode.xml diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/nonlib/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to app/src/nonlib/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/app/src/main/res/mipmap-hdpi/ic_freeform_mode.png b/app/src/nonlib/res/mipmap-hdpi/ic_freeform_mode.png similarity index 100% rename from app/src/main/res/mipmap-hdpi/ic_freeform_mode.png rename to app/src/nonlib/res/mipmap-hdpi/ic_freeform_mode.png diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/nonlib/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-hdpi/ic_launcher.png rename to app/src/nonlib/res/mipmap-hdpi/ic_launcher.png diff --git a/app/src/main/res/mipmap-mdpi/ic_freeform_mode.png b/app/src/nonlib/res/mipmap-mdpi/ic_freeform_mode.png similarity index 100% rename from app/src/main/res/mipmap-mdpi/ic_freeform_mode.png rename to app/src/nonlib/res/mipmap-mdpi/ic_freeform_mode.png diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/nonlib/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-mdpi/ic_launcher.png rename to app/src/nonlib/res/mipmap-mdpi/ic_launcher.png diff --git a/app/src/main/res/mipmap-xhdpi/ic_freeform_mode.png b/app/src/nonlib/res/mipmap-xhdpi/ic_freeform_mode.png similarity index 100% rename from app/src/main/res/mipmap-xhdpi/ic_freeform_mode.png rename to app/src/nonlib/res/mipmap-xhdpi/ic_freeform_mode.png diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/nonlib/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to app/src/nonlib/res/mipmap-xhdpi/ic_launcher.png diff --git a/app/src/main/res/mipmap-xxhdpi/ic_freeform_mode.png b/app/src/nonlib/res/mipmap-xxhdpi/ic_freeform_mode.png similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/ic_freeform_mode.png rename to app/src/nonlib/res/mipmap-xxhdpi/ic_freeform_mode.png diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/nonlib/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to app/src/nonlib/res/mipmap-xxhdpi/ic_launcher.png diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_freeform_mode.png b/app/src/nonlib/res/mipmap-xxxhdpi/ic_freeform_mode.png similarity index 100% rename from app/src/main/res/mipmap-xxxhdpi/ic_freeform_mode.png rename to app/src/nonlib/res/mipmap-xxxhdpi/ic_freeform_mode.png diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/nonlib/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to app/src/nonlib/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/app/src/main/res/xml/accessibility_service.xml b/app/src/nonlib/res/xml/accessibility_service.xml similarity index 100% rename from app/src/main/res/xml/accessibility_service.xml rename to app/src/nonlib/res/xml/accessibility_service.xml diff --git a/app/src/main/res/xml/pref_about.xml b/app/src/nonlib/res/xml/pref_about.xml similarity index 100% rename from app/src/main/res/xml/pref_about.xml rename to app/src/nonlib/res/xml/pref_about.xml diff --git a/app/src/androidx86/java/com/farmerbb/taskbar/util/DependencyUtils.java b/app/src/nonplaystore/java/com/farmerbb/taskbar/util/DependencyUtils.java similarity index 100% rename from app/src/androidx86/java/com/farmerbb/taskbar/util/DependencyUtils.java rename to app/src/nonplaystore/java/com/farmerbb/taskbar/util/DependencyUtils.java diff --git a/app/src/playstore/java/com/farmerbb/taskbar/receiver/ReceiveSettingsReceiver.java b/app/src/playstore/java/com/farmerbb/taskbar/receiver/ReceiveSettingsReceiver.java index 35b42a28..02847bc9 100644 --- a/app/src/playstore/java/com/farmerbb/taskbar/receiver/ReceiveSettingsReceiver.java +++ b/app/src/playstore/java/com/farmerbb/taskbar/receiver/ReceiveSettingsReceiver.java @@ -44,7 +44,7 @@ public class ReceiveSettingsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // Ignore this broadcast if this is the free version - if(BuildConfig.APPLICATION_ID.equals(BuildConfig.PAID_APPLICATION_ID)) { + if(context.getPackageName().equals(BuildConfig.PAID_APPLICATION_ID)) { // Get pinned and blocked apps PinnedBlockedApps pba = PinnedBlockedApps.getInstance(context); pba.clear(context); @@ -148,7 +148,7 @@ public class ReceiveSettingsReceiver extends BroadcastReceiver { String contents = intent.getStringExtra("preferences"); if(contents.length() > 0) try { - File file = new File(context.getFilesDir().getParent() + "/shared_prefs/" + BuildConfig.APPLICATION_ID + "_preferences.xml"); + File file = new File(context.getFilesDir().getParent() + "/shared_prefs/" + context.getPackageName() + "_preferences.xml"); FileOutputStream output = new FileOutputStream(file); output.write(contents.getBytes()); output.close(); diff --git a/app/src/playstore/java/com/farmerbb/taskbar/receiver/SendSettingsReceiver.java b/app/src/playstore/java/com/farmerbb/taskbar/receiver/SendSettingsReceiver.java index 2d98baa7..2afe2522 100644 --- a/app/src/playstore/java/com/farmerbb/taskbar/receiver/SendSettingsReceiver.java +++ b/app/src/playstore/java/com/farmerbb/taskbar/receiver/SendSettingsReceiver.java @@ -42,7 +42,7 @@ public class SendSettingsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // Ignore this broadcast if this is the paid version - if(BuildConfig.APPLICATION_ID.equals(BuildConfig.BASE_APPLICATION_ID)) { + if(context.getPackageName().equals(BuildConfig.BASE_APPLICATION_ID)) { Intent sendSettingsIntent = new Intent("com.farmerbb.taskbar.SEND_SETTINGS"); sendSettingsIntent.setPackage(BuildConfig.PAID_APPLICATION_ID); @@ -139,7 +139,7 @@ public class SendSettingsReceiver extends BroadcastReceiver { StringBuilder preferences = new StringBuilder(); try { - File file = new File(context.getFilesDir().getParent() + "/shared_prefs/" + BuildConfig.APPLICATION_ID + "_preferences.xml"); + File file = new File(context.getFilesDir().getParent() + "/shared_prefs/" + context.getPackageName() + "_preferences.xml"); FileInputStream input = new FileInputStream(file); InputStreamReader reader = new InputStreamReader(input); BufferedReader buffer = new BufferedReader(reader); @@ -160,7 +160,7 @@ public class SendSettingsReceiver extends BroadcastReceiver { // Get custom start button image File file = new File(context.getFilesDir() + "/images", "custom_image"); if(file.exists() && U.isPlayStoreRelease(context, BuildConfig.PAID_APPLICATION_ID)) { - Uri uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".fileprovider", file); + Uri uri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", file); context.grantUriPermission(BuildConfig.PAID_APPLICATION_ID, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); sendSettingsIntent.putExtra("custom_image", uri); } diff --git a/app/src/playstore/java/com/farmerbb/taskbar/receiver/TaskerActionReceiver.java b/app/src/playstore/java/com/farmerbb/taskbar/receiver/TaskerActionReceiver.java index f856cc5c..d6036732 100644 --- a/app/src/playstore/java/com/farmerbb/taskbar/receiver/TaskerActionReceiver.java +++ b/app/src/playstore/java/com/farmerbb/taskbar/receiver/TaskerActionReceiver.java @@ -44,7 +44,7 @@ public final class TaskerActionReceiver extends BroadcastReceiver { if(actionIntent != null) switch(action) { case "tasker_on": case "tasker_off": - actionIntent.setPackage(BuildConfig.APPLICATION_ID); + actionIntent.setPackage(context.getPackageName()); context.sendBroadcast(actionIntent); break; default: diff --git a/lib/build.gradle b/lib/build.gradle new file mode 100644 index 00000000..326973f0 --- /dev/null +++ b/lib/build.gradle @@ -0,0 +1,81 @@ +ext { + SUPPORT_LIBRARY_VERSION = "28.0.0" + SDK_VERSION = 29 +} + +apply plugin: 'com.android.library' + +repositories { + google() +} + +android { + compileSdkVersion SDK_VERSION + buildToolsVersion "28.0.3" + + defaultConfig { + minSdkVersion 21 + targetSdkVersion SDK_VERSION + + // TODO keep versionName and versionCode in sync with Android-x86 manifest + versionCode 195 + versionName "4.0.3" + + resConfigs "en", "ja", "ru", "de", "zh-rCN", "tr", "nl" + vectorDrawables.generatedDensities = [] + + buildConfigField "String", "BASE_APPLICATION_ID", "\"com.farmerbb.taskbar\"" + buildConfigField "String", "PAID_APPLICATION_ID", "\"com.farmerbb.taskbar.paid\"" + buildConfigField "String", "SUPPORT_APPLICATION_ID", "\"com.farmerbb.taskbar.support\"" + buildConfigField "String", "ANDROIDX86_APPLICATION_ID", "\"com.farmerbb.taskbar.androidx86\"" + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + signingConfigs { + release { + if(System.getenv("KSTOREFILE") != null) + storeFile file(System.getenv("KSTOREFILE")) + + storePassword System.getenv("KSTOREPWD") + keyAlias System.getenv("KEYALIAS") + keyPassword System.getenv("KEYPWD") + } + } + + buildTypes { + debug { + manifestPlaceholders = [appName: "@string/app_name_debug"] + } + + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + manifestPlaceholders = [appName: "@string/app_name"] + } + } + + sourceSets { + main { + java { srcDirs('../app/src/main/java', '../app/src/lib/java', '../app/src/nonplaystore/java', "../app/src/compat-${SDK_VERSION}/java") } + res { srcDirs('../app/src/main/res', '../app/src/lib/res') } + manifest.srcFile '../app/src/lib/AndroidManifest.xml' + } + } + + lintOptions { + abortOnError false + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation "com.android.support:support-v4:${SUPPORT_LIBRARY_VERSION}" + implementation "com.android.support:appcompat-v7:${SUPPORT_LIBRARY_VERSION}" + implementation "com.android.support:design:${SUPPORT_LIBRARY_VERSION}" +} + diff --git a/settings.gradle b/settings.gradle index e7b4def4..3cbe2493 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':app' +include ':app', ':lib'