Skip to content

Commit

Permalink
Ability to disable Private Space shortcuts
Browse files Browse the repository at this point in the history
They are disabled by default.
  • Loading branch information
TSonono committed Nov 25, 2024
1 parent 3420b8f commit 386f7a6
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 1 deletion.
2 changes: 2 additions & 0 deletions app/src/main/java/fr/neamar/kiss/SettingsActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -672,6 +672,8 @@ public void onDenied() {
}
} else if ("selected-contact-mime-types".equals(key)) {
getDataHandler().reloadContactsProvider();
} else if ("disable-private-space-shortcuts".equals(key)) {
getDataHandler().reloadShortcuts();
}
}

Expand Down
44 changes: 43 additions & 1 deletion app/src/main/java/fr/neamar/kiss/loader/LoadShortcutsPojos.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,15 @@
package fr.neamar.kiss.loader;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.LauncherApps;
import android.content.pm.LauncherUserInfo;
import android.content.pm.ShortcutInfo;
import android.os.Build;
import android.os.UserManager;
import android.preference.PreferenceManager;

import androidx.annotation.RequiresApi;

import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -33,6 +39,8 @@ protected List<ShortcutPojo> doInBackground(Void... params) {
return new ArrayList<>();
}

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);

List<ShortcutRecord> records = DBHelper.getShortcuts(context);
DataHandler dataHandler = KissApplication.getApplication(context).getDataHandler();
TagsHandler tagsHandler = dataHandler.getTagsHandler();
Expand All @@ -52,8 +60,13 @@ protected List<ShortcutPojo> doInBackground(Void... params) {
// get all oreo shortcuts from system directly
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
LauncherApps launcherApps = (LauncherApps) context.getSystemService(Context.LAUNCHER_APPS_SERVICE);
List<ShortcutInfo> shortcutInfos = ShortcutUtil.getAllShortcuts(context);
for (ShortcutInfo shortcutInfo : shortcutInfos) {
LauncherUserInfo info = null;
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
info = launcherApps.getLauncherUserInfo(shortcutInfo.getUserHandle());
}
if (isCancelled()) {
break;
}
Expand All @@ -62,7 +75,16 @@ protected List<ShortcutPojo> doInBackground(Void... params) {
if (shortcutRecord != null) {
boolean disabled = PackageManagerUtils.isAppSuspended(context, shortcutInfo.getPackage(), new UserHandle(context, shortcutInfo.getUserHandle())) || userManager.isQuietModeEnabled(shortcutInfo.getUserHandle());
ShortcutPojo pojo = createPojo(shortcutRecord, tagsHandler, ShortcutUtil.getComponentName(context, shortcutInfo), shortcutInfo.isPinned(), shortcutInfo.isDynamic(), disabled);
pojos.add(pojo);
if ((android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM)
&& (info != null)) {
boolean privateSpaceShortcutsDisabled = prefs.getBoolean("disable-private-space-shortcuts", true);
if (shouldAddShortcut(userManager, info, shortcutInfo.getUserHandle(),
privateSpaceShortcutsDisabled)) {
pojos.add(pojo);
}
} else {
pojos.add(pojo);
}
}
}
}
Expand All @@ -71,10 +93,30 @@ protected List<ShortcutPojo> doInBackground(Void... params) {
return pojos;
}

@RequiresApi(35)
private boolean shouldAddShortcut(UserManager manager, LauncherUserInfo info,
android.os.UserHandle profile, boolean privateSpaceShortcutsDisabled) {
if (!info.getUserType().equalsIgnoreCase(UserManager.USER_TYPE_PROFILE_PRIVATE)) {
return true;
} else {
if (privateSpaceShortcutsDisabled) {
return false;
}
else return !isQuietModeEnabled(manager, profile);
}
}

private ShortcutPojo createPojo(ShortcutRecord shortcutRecord, TagsHandler tagsHandler, String componentName, boolean pinned, boolean dynamic, boolean disabled) {
ShortcutPojo pojo = new ShortcutPojo(shortcutRecord, componentName, pinned, dynamic, disabled);
pojo.setName(shortcutRecord.name);
pojo.setTags(tagsHandler.getTags(pojo.id));
return pojo;
}

private boolean isQuietModeEnabled(UserManager manager, android.os.UserHandle profile) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return manager.isQuietModeEnabled(profile);
}
return false;
}
}
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -357,4 +357,5 @@
<string name="tagged_result_sort_mode_desc">Select how results should be sorted when shown by tag</string>
<string name="tags_category">Tags</string>
<string name="menu_private_space">Private Space</string>
<string name="disable_private_space_shortcuts">Disable Private Space app shortcuts</string>
</resources>
4 changes: 4 additions & 0 deletions app/src/main/res/xml/preferences.xml
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,10 @@
android:defaultValue="false"
android:key="call-contact-on-click"
android:title="@string/contacts_call_on_click" />
<fr.neamar.kiss.preference.SwitchPreference
android:defaultValue="true"
android:key="disable-private-space-shortcuts"
android:title="@string/disable_private_space_shortcuts" />
</PreferenceCategory>
<PreferenceScreen
android:key="wallpaper-holder"
Expand Down

0 comments on commit 386f7a6

Please sign in to comment.