Skip to content

Commit

Permalink
Refactor some code, resolve #125
Browse files Browse the repository at this point in the history
  • Loading branch information
threethan committed Apr 26, 2024
1 parent 9209b52 commit 181f258
Show file tree
Hide file tree
Showing 12 changed files with 60 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,14 @@ public synchronized void setAppList(LauncherActivity activity) {
launcherActivity = activity;

setItems(Collections.unmodifiableList(settingsManager
.getVisibleApps(activity, settingsManager.getAppGroupsSorted(true), fullAppSet)));
.getVisibleApps(settingsManager.getAppGroupsSorted(true), fullAppSet)));
}
public synchronized void filterBy(String text) {
boolean showHidden = !text.isEmpty() && launcherActivity.dataStoreEditor.getBoolean(Settings.KEY_SEARCH_HIDDEN, Settings.DEFAULT_SEARCH_HIDDEN);

SettingsManager settingsManager = SettingsManager.getInstance(launcherActivity);
final List<ApplicationInfo> newItems =
settingsManager.getVisibleApps(launcherActivity, settingsManager.getAppGroupsSorted(false), fullAppSet);
settingsManager.getVisibleApps(settingsManager.getAppGroupsSorted(false), fullAppSet);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
newItems.removeIf(item -> !StringLib.forSort(SettingsManager.getAppLabel(item)).contains(StringLib.forSort(text)));
Expand Down Expand Up @@ -151,7 +151,7 @@ public AppViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
}
private void setActions(AppViewHolder holder) {
// Sub-buttons
holder.moreButton.setOnClickListener(view -> AppDetailsDialog.showAppDetails(holder.app, launcherActivity));
holder.moreButton.setOnClickListener(view -> new AppDetailsDialog(launcherActivity, holder.app).show());

// Click
holder.view.setOnClickListener(view -> {
Expand All @@ -168,7 +168,7 @@ private void setActions(AppViewHolder holder) {
holder.view.setOnLongClickListener(view -> {
if (getEditMode() || !launcherActivity.canEdit() || launcherActivity.dataStoreEditor
.getBoolean(Settings.KEY_DETAILS_LONG_PRESS, Settings.DEFAULT_DETAILS_LONG_PRESS)) {
AppDetailsDialog.showAppDetails(holder.app, launcherActivity);
new AppDetailsDialog(launcherActivity, holder.app).show();
} else {
launcherActivity.setEditMode(true);
launcherActivity.selectApp(holder.app.packageName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ else if (event.getAction() == MotionEvent.ACTION_HOVER_EXIT)
else holder.textView.setBackground(null);
});
holder.menu.setOnClickListener(view ->
GroupDetailsDialog.showGroupDetails(holder.position, launcherActivity));
new GroupDetailsDialog(launcherActivity, holder.position).show());
}
@Override
public void onBindViewHolder(@NonNull GroupViewHolder holder, @SuppressLint("RecyclerView") int position) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,7 @@ private static boolean checkSupported(ApplicationInfo app, LauncherActivity laun
return Launch.checkLaunchable(launcherActivity, app);
}
public static boolean isBanner(ApplicationInfo applicationInfo) {
LauncherActivity launcherActivity = LauncherActivity.getAnyInstance();
return typeIsBanner(getType(launcherActivity, applicationInfo));
return typeIsBanner(getType(applicationInfo));
}
/** @noinspection SuspiciousMethodCalls*/
public static boolean isWebsite(ApplicationInfo applicationInfo) {
Expand Down Expand Up @@ -165,7 +164,8 @@ public static void openInfo(Context context, String packageName) {
context.startActivity(intent);
}
// Requests to uninstall the app
public static void uninstall(LauncherActivity launcher, String packageName) {
public static void uninstall(String packageName) {
LauncherActivity launcher = LauncherActivity.getAnyInstance();
if (App.isWebsite(packageName)) {
Set<String> webApps = launcher.dataStoreEditor.getStringSet(Settings.KEY_WEBSITE_LIST, Collections.emptySet());
webApps = new HashSet<>(webApps); // Copy since we're not supposed to modify directly
Expand All @@ -181,8 +181,8 @@ public static void uninstall(LauncherActivity launcher, String packageName) {
}
}

public static App.Type getType(LauncherActivity launcherActivity, ApplicationInfo app) {
for (Type type : Platform.getSupportedAppTypes(launcherActivity)) {
public static App.Type getType(ApplicationInfo app) {
for (Type type : Platform.getSupportedAppTypes(LauncherActivity.getAnyInstance())) {
if (isAppOfType(app, type)) return type;
}
return Type.TYPE_UNSUPPORTED;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ public static void clearIconCache(LauncherActivity launcherActivity) {

Icon.cachedIcons.clear();

Icon.init(launcherActivity); // Recreate folders
Icon.init(); // Recreate folders
launcherActivity.launcherService.forEachActivity(a -> {
if (a.getAppAdapter() != null) a.getAppAdapter().notifyAllChanged();
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,11 @@ private static File iconFileForPackage(ApplicationInfo app, boolean custom) {
(custom ? ICON_CUSTOM_FOLDER : ICON_CACHE_FOLDER),
cacheName + (wide && !oneIcon ? "-wide" : "") + ".webp");
}
public static void init(LauncherActivity launcherActivity) {
public static void init() {
// Icon init
File cacheDir = new File(launcherActivity.getApplicationInfo().dataDir + Icon.ICON_CACHE_FOLDER);
File cacheDir = new File(LauncherActivity.getAnyInstance().getApplicationInfo().dataDir + Icon.ICON_CACHE_FOLDER);
boolean ignored1 = cacheDir.mkdir();
File customDir = new File(launcherActivity.getApplicationInfo().dataDir + Icon.ICON_CUSTOM_FOLDER);
File customDir = new File(LauncherActivity.getAnyInstance().getApplicationInfo().dataDir + Icon.ICON_CUSTOM_FOLDER);
boolean ignored2 = customDir.mkdir();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,10 @@ public static boolean launchApp(LauncherActivity launcherActivity, ApplicationIn
+app.packageName);
launcherActivity.refreshPackages();
return false;
} else if (Objects.equals(intent.getPackage(), Platform.BROWSER_PACKAGE)) {
}

// Browser Check
if (Objects.equals(intent.getPackage(), Platform.BROWSER_PACKAGE)) {
if (Platform.hasBrowser(launcherActivity)) {
// Check for browser update. User probably won't see the prompt until closing, though.
new BrowserUpdater(launcherActivity).checkAppUpdateAndInstall();
Expand All @@ -65,11 +68,11 @@ public static boolean launchApp(LauncherActivity launcherActivity, ApplicationIn
Dialog.toast(launcherActivity.getString(R.string.download_browser_toast_main),
launcherActivity.getString(R.string.download_browser_toast_bold), true);
});
return false;
}
return false;
}

final App.Type appType = App.getType(launcherActivity, app);
final App.Type appType = App.getType(app);
if (SettingsManager.
getAppLaunchOut(app.packageName) ||
appType == App.Type.TYPE_VR || appType == App.Type.TYPE_PANEL) {
Expand Down Expand Up @@ -188,7 +191,7 @@ private static Intent getLaunchIntent(LauncherActivity activity, ApplicationInfo

// Chainload for advanced launch options
if (SettingsManager.getShowAdvancedSizeOptions(activity)
&& App.getType(activity, app) == App.Type.TYPE_PHONE &&
&& App.getType(app) == App.Type.TYPE_PHONE &&
SettingsManager.getAppLaunchOut(app.packageName)) {

int index = activity.dataStoreEditor.getInt(Settings.KEY_LAUNCH_SIZE + app.packageName, 1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ protected void onLayoutChaged(View v, int left, int top, int right, int bottom,
protected void onDestroy() {
Log.v(TAG, "Activity is being destroyed - "
+ (isFinishing() ? "Finishing" : "Not Finishing"));
if (launcherService != null) launcherService.destroyed(this);
if (launcherService != null && isFinishing()) launcherService.destroyed(this);

if (isFinishing()) try {
unbindService(launcherServiceConnection); // Should rarely cause exception
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ public void refreshInterface() {
uninstallButton.setOnClickListener(view -> {
int delay = 0;
for (String currentSelectedApp : currentSelectedApps) {
mainView.postDelayed(() -> App.uninstall(this, currentSelectedApp), delay);
mainView.postDelayed(() -> App.uninstall(currentSelectedApp), delay);
if (!App.isWebsite(currentSelectedApp)) delay += 1000;
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,8 @@ public void destroyed(LauncherActivity activity) {
* Includes chainLoadActivities as well and launcherActivities
*/
public void finishAllActivities() {
for (Activity activity: activityByIndex.keySet()) activity.finishAndRemoveTask();
for (Activity activity : ChainLoadActivity.activityList)
activity.finishAndRemoveTask();
for (Activity activity : activityByIndex.keySet()) activity.finishAndRemoveTask();
for (Activity activity : ChainLoadActivity.activityList) activity.finishAndRemoveTask();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,24 @@
* Provides the dialog which appears when pressing the three-dots icon on an app,
* or when long-pressing an app in edit mode
*/
public abstract class AppDetailsDialog {
public class AppDetailsDialog {
private static File customIconFile;
private static ApplicationInfo imageApp;
private final LauncherActivity launcherActivity;
private final ApplicationInfo currentApp;

/**
* Constructs a new GroupDetailsDialog. Make sure to call .show()!
* @param launcherActivity Parent activity
* @param app App to show details of
*/
public AppDetailsDialog(LauncherActivity launcherActivity, ApplicationInfo app) {
this.launcherActivity = launcherActivity;
this.currentApp = app;
}

@SuppressLint("SetTextI18n")
public static void showAppDetails(ApplicationInfo currentApp, LauncherActivity launcherActivity) {
public void show() {
// Set View
AlertDialog dialog = Dialog.build(launcherActivity, R.layout.dialog_details_app);
if (dialog == null) return;
Expand All @@ -52,7 +64,7 @@ public static void showAppDetails(ApplicationInfo currentApp, LauncherActivity l
// Info Action
dialog.findViewById(R.id.info).setOnClickListener(view -> App.openInfo(launcherActivity, currentApp.packageName));
dialog.findViewById(R.id.uninstall).setOnClickListener(view -> {
App.uninstall(launcherActivity, currentApp.packageName); dialog.dismiss();});
App.uninstall(currentApp.packageName); dialog.dismiss();});

// Launch Mode Toggle
@SuppressLint("UseSwitchCompatOrMaterialCode")
Expand Down Expand Up @@ -85,7 +97,7 @@ public static void showAppDetails(ApplicationInfo currentApp, LauncherActivity l
launcherActivity.showImagePicker(LauncherActivity.ImagePickerTarget.ICON);
});

App.Type appType = App.getType(launcherActivity, currentApp);
App.Type appType = App.getType(currentApp);
dialog.findViewById(R.id.info).setVisibility(currentApp.packageName.contains("://")
? View.GONE : View.VISIBLE);
if (appType == App.Type.TYPE_VR || appType == App.Type.TYPE_PANEL
Expand Down Expand Up @@ -165,7 +177,7 @@ else if (SettingsManager.getShowAdvancedSizeOptions(launcherActivity)) {
final View hideButton = dialog.findViewById(R.id.hide);
String unhideGroup = SettingsManager.getAppGroupMap().get(currentApp.packageName);
if (Objects.equals(unhideGroup, Settings.HIDDEN_GROUP))
unhideGroup = App.getDefaultGroupFor(App.getType(launcherActivity, currentApp));
unhideGroup = App.getDefaultGroupFor(App.getType(currentApp));
if (Objects.equals(unhideGroup, Settings.HIDDEN_GROUP))
try {
unhideGroup = (String) SettingsManager.getAppGroups().toArray()[0];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,22 @@
* Provides the dialog which appears when pressing the three-dots icon on a group,
* or when long-pressing the single selected group in edit mode
*/
public abstract class GroupDetailsDialog {
public static void showGroupDetails(int groupPosition, LauncherActivity launcherActivity) {
public class GroupDetailsDialog {
private final LauncherActivity launcherActivity;
private final int groupPosition;

/**
* Constructs a new GroupDetailsDialog. Make sure to call .show()!
*
* @param launcherActivity Parent activity
* @param groupPosition Position index of the group to show details for
*/
public GroupDetailsDialog(LauncherActivity launcherActivity, int groupPosition) {
this.launcherActivity = launcherActivity;
this.groupPosition = groupPosition;
}

public void show() {
final Map<String, String> apps = SettingsManager.getAppGroupMap();
final Set<String> appGroupsSet = SettingsManager.getAppGroups();
SettingsManager settingsManager = launcherActivity.settingsManager;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,7 @@ public static void setAppGroupMap(Map<String, String> value) {
* @param allApps A collection of all apps
* @return Apps which should be shown
*/
public List<ApplicationInfo> getVisibleApps(LauncherActivity launcherActivity,
List<String> selectedGroups, Collection<ApplicationInfo> allApps) {
public List<ApplicationInfo> getVisibleApps(List<String> selectedGroups, Collection<ApplicationInfo> allApps) {
// Get list of installed apps
ConcurrentHashMap<String, String> apps = getAppGroupMap();

Expand All @@ -191,7 +190,7 @@ public List<ApplicationInfo> getVisibleApps(LauncherActivity launcherActivity,
apps.put(app.packageName, Settings.UNSUPPORTED_GROUP);
else if (!apps.containsKey(app.packageName) ||
Objects.equals(apps.get(app.packageName), Settings.UNSUPPORTED_GROUP)){
apps.put(app.packageName, App.getDefaultGroupFor(App.getType(launcherActivity, app)));
apps.put(app.packageName, App.getDefaultGroupFor(App.getType(app)));
}
}

Expand Down

0 comments on commit 181f258

Please sign in to comment.