From 55c993ee9d717161db15502a1e4c8e8767f4dbe8 Mon Sep 17 00:00:00 2001 From: Amit Kumar Date: Thu, 30 Apr 2020 15:29:06 +0530 Subject: [PATCH 1/4] Fix shortcut deletion issue --- .../e/blisslauncher/BlissLauncher.java | 4 --- .../core/customviews/HorizontalPager.java | 1 - .../core/database/DatabaseManager.java | 8 +++--- .../core/executors/AppExecutors.java | 13 +++++----- .../features/launcher/AppProvider.java | 4 ++- .../features/launcher/LauncherActivity.java | 19 +++++++++----- .../features/shortcuts/AddItemActivity.java | 26 ++++++++++--------- .../shortcuts/InstallShortcutReceiver.java | 10 ++++--- 8 files changed, 48 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/foundation/e/blisslauncher/BlissLauncher.java b/app/src/main/java/foundation/e/blisslauncher/BlissLauncher.java index 4270b6b8a9..8141d07c65 100755 --- a/app/src/main/java/foundation/e/blisslauncher/BlissLauncher.java +++ b/app/src/main/java/foundation/e/blisslauncher/BlissLauncher.java @@ -58,10 +58,6 @@ public class BlissLauncher extends Application { iconsPackHandler = new IconsHandler(this); } - public void initAppProvider() { - connectAppProvider(); - } - private void connectAppProvider() { mAppProvider = AppProvider.getInstance(this); } diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/HorizontalPager.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/HorizontalPager.java index e475ead2d5..20805762d3 100755 --- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/HorizontalPager.java +++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/HorizontalPager.java @@ -152,7 +152,6 @@ public class HorizontalPager extends ViewGroup implements Insettable { @Override protected void dispatchDraw(Canvas canvas) { - Log.d(TAG, "dispatchDraw() called with: canvas = [" + canvas + "]"); final long drawingTime = getDrawingTime(); // todo be smarter about which children need drawing final int count = getChildCount(); diff --git a/app/src/main/java/foundation/e/blisslauncher/core/database/DatabaseManager.java b/app/src/main/java/foundation/e/blisslauncher/core/database/DatabaseManager.java index 5d38be0463..9819fbc795 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/database/DatabaseManager.java +++ b/app/src/main/java/foundation/e/blisslauncher/core/database/DatabaseManager.java @@ -1,7 +1,6 @@ package foundation.e.blisslauncher.core.database; import android.content.Context; -import android.util.Log; import android.widget.GridLayout; import java.util.ArrayList; @@ -19,6 +18,8 @@ public class DatabaseManager { private AppExecutors mAppExecutors; + private static final String TAG = "DatabaseManager"; + private static volatile DatabaseManager INSTANCE; private Context mContext; @@ -44,7 +45,9 @@ public class DatabaseManager { } public void saveLayouts(List pages, GridLayout dock) { - mAppExecutors.diskIO().execute(() -> saveLauncherItems(pages, dock)); + List tempPages = pages; + GridLayout tempDock = dock; + mAppExecutors.diskIO().execute(() -> saveLauncherItems(tempPages, tempDock)); } private void saveLauncherItems(final List pages, final GridLayout dock) { @@ -99,7 +102,6 @@ public class DatabaseManager { } } } - Log.i("Database", "saveLauncherItems: "+items.size()); LauncherDB.getDatabase(mContext).launcherDao().insertAll(items); } diff --git a/app/src/main/java/foundation/e/blisslauncher/core/executors/AppExecutors.java b/app/src/main/java/foundation/e/blisslauncher/core/executors/AppExecutors.java index 4adfd108ed..be58e20827 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/executors/AppExecutors.java +++ b/app/src/main/java/foundation/e/blisslauncher/core/executors/AppExecutors.java @@ -1,14 +1,15 @@ package foundation.e.blisslauncher.core.executors; import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class AppExecutors { private static final AppExecutors ourInstance = new AppExecutors(); - private Executor diskExecutor; - private Executor appExecutor; + private ExecutorService diskExecutor; + private ExecutorService appExecutor; private Executor searchExecutor; - private Executor shortcutExecutor; + private ExecutorService shortcutExecutor; public static AppExecutors getInstance() { return ourInstance; @@ -20,15 +21,15 @@ public class AppExecutors { shortcutExecutor = Executors.newSingleThreadExecutor(); } - public Executor diskIO(){ + public ExecutorService diskIO(){ return diskExecutor; } - public Executor appIO(){ + public ExecutorService appIO(){ return appExecutor; } - public Executor shortcutIO() { + public ExecutorService shortcutIO() { return shortcutExecutor; } } diff --git a/app/src/main/java/foundation/e/blisslauncher/features/launcher/AppProvider.java b/app/src/main/java/foundation/e/blisslauncher/features/launcher/AppProvider.java index 71f1ee4c5f..71cba2d5bb 100644 --- a/app/src/main/java/foundation/e/blisslauncher/features/launcher/AppProvider.java +++ b/app/src/main/java/foundation/e/blisslauncher/features/launcher/AppProvider.java @@ -506,7 +506,9 @@ public class AppProvider { } public void clear() { - sInstance = null; + this.sInstance = null; + mLauncherItems = new ArrayList<>(); + mAppsRepository.updateAppsRelay(Collections.emptyList()); } public synchronized boolean isRunning() { diff --git a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java index 3c372f249d..15403fa0b9 100755 --- a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java +++ b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java @@ -127,6 +127,8 @@ import foundation.e.blisslauncher.core.utils.UserHandle; import foundation.e.blisslauncher.features.notification.NotificationRepository; import foundation.e.blisslauncher.features.notification.NotificationService; import foundation.e.blisslauncher.features.shortcuts.DeepShortcutManager; +import foundation.e.blisslauncher.features.shortcuts.InstallShortcutReceiver; +import foundation.e.blisslauncher.features.shortcuts.ShortcutInfoCompat; import foundation.e.blisslauncher.features.suggestions.AutoCompleteAdapter; import foundation.e.blisslauncher.features.suggestions.SearchSuggestionUtil; import foundation.e.blisslauncher.features.suggestions.SuggestionProvider; @@ -145,6 +147,8 @@ import io.reactivex.Observable; import io.reactivex.ObservableSource; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Consumer; import io.reactivex.observers.DisposableObserver; import io.reactivex.schedulers.Schedulers; import me.relex.circleindicator.CircleIndicator; @@ -267,6 +271,8 @@ public class LauncherActivity extends AppCompatActivity implements mLauncherView = LayoutInflater.from(this).inflate( foundation.e.blisslauncher.R.layout.activity_main, null); + //BlissLauncher.getApplication(LauncherActivity.this).getAppProvider().reload(); + setContentView(mLauncherView); setupViews(); @@ -356,14 +362,14 @@ public class LauncherActivity extends AppCompatActivity implements private void createOrUpdateIconGrid() { getCompositeDisposable().add( AppsRepository.getAppsRepository().getAppsRelay() - .distinct() + .distinctUntilChanged() .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(new DisposableObserver>() { @Override public void onNext(List launcherItems) { if (launcherItems == null || launcherItems.size() <= 0) { BlissLauncher.getApplication(LauncherActivity.this).getAppProvider().reload(); - } else if (!allAppsDisplayed) { + } else { showApps(launcherItems); } } @@ -498,7 +504,7 @@ public class LauncherActivity extends AppCompatActivity implements ApplicationItem applicationItem = AppUtils.createAppItem(this, appAddEvent.getPackageName(), appAddEvent.getUserHandle()); addLauncherItem(applicationItem); - DatabaseManager.getManager(this).saveLayouts(pages, mDock); + //DatabaseManager.getManager(this).saveLayouts(pages, mDock); if (moveTo != -1) { mHorizontalPager.setCurrentPage(moveTo); moveTo = -1; @@ -953,7 +959,6 @@ public class LauncherActivity extends AppCompatActivity implements if (isWobbling) handleWobbling(false); createUI(launcherItems); - subscribeToEvents(); isUiDone = true; createPageChangeListener(); createFolderTitleListener(); @@ -962,9 +967,11 @@ public class LauncherActivity extends AppCompatActivity implements createIndicator(); createOrUpdateBadgeCount(); allAppsDisplayed = true; + subscribeToEvents(); } private void subscribeToEvents() { + Log.d(TAG, "subscribeToEvents() called"); events = EventRelay.getInstance(); events.subscribe(new EventsObserverImpl(this)); } @@ -1242,7 +1249,7 @@ public class LauncherActivity extends AppCompatActivity implements currentPageNumber = 0; mHorizontalPager.setUiCreated(true); - DatabaseManager.getManager(this).saveLayouts(pages, mDock); + //DatabaseManager.getManager(this).saveLayouts(pages, mDock); mDock.setEnabled(true); setUpSwipeSearchContainer(); } @@ -1629,6 +1636,7 @@ public class LauncherActivity extends AppCompatActivity implements } else { page.addView(view, index); } + //DatabaseManager.getManager(this).saveLayouts(pages, mDock); } /** @@ -2922,7 +2930,6 @@ public class LauncherActivity extends AppCompatActivity implements @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); - final boolean alreadyOnHome = hasWindowFocus() && ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); diff --git a/app/src/main/java/foundation/e/blisslauncher/features/shortcuts/AddItemActivity.java b/app/src/main/java/foundation/e/blisslauncher/features/shortcuts/AddItemActivity.java index 391237bbfa..b9cfb5cd79 100644 --- a/app/src/main/java/foundation/e/blisslauncher/features/shortcuts/AddItemActivity.java +++ b/app/src/main/java/foundation/e/blisslauncher/features/shortcuts/AddItemActivity.java @@ -16,19 +16,21 @@ public class AddItemActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - LauncherApps launcherApps = (LauncherApps) getSystemService(Context.LAUNCHER_APPS_SERVICE); - LauncherApps.PinItemRequest request = launcherApps.getPinItemRequest(getIntent()); - if (request == null) { - finish(); - return; - } + if (getIntent() != null && getIntent().getAction().equalsIgnoreCase(LauncherApps.ACTION_CONFIRM_PIN_SHORTCUT)) { + LauncherApps launcherApps = (LauncherApps) getSystemService(Context.LAUNCHER_APPS_SERVICE); + LauncherApps.PinItemRequest request = launcherApps.getPinItemRequest(getIntent()); + if (request == null) { + finish(); + return; + } - if (request.getRequestType() == LauncherApps.PinItemRequest.REQUEST_TYPE_SHORTCUT) { - InstallShortcutReceiver.queueShortcut( - new ShortcutInfoCompat(request.getShortcutInfo()), this); - request.accept(); - finish(); - return; + if (request.getRequestType() == LauncherApps.PinItemRequest.REQUEST_TYPE_SHORTCUT) { + InstallShortcutReceiver.queueShortcut( + new ShortcutInfoCompat(request.getShortcutInfo()), this.getApplicationContext()); + request.accept(); + finish(); + } } + } } diff --git a/app/src/main/java/foundation/e/blisslauncher/features/shortcuts/InstallShortcutReceiver.java b/app/src/main/java/foundation/e/blisslauncher/features/shortcuts/InstallShortcutReceiver.java index 2a4afd5422..e7cf14e88b 100644 --- a/app/src/main/java/foundation/e/blisslauncher/features/shortcuts/InstallShortcutReceiver.java +++ b/app/src/main/java/foundation/e/blisslauncher/features/shortcuts/InstallShortcutReceiver.java @@ -52,16 +52,18 @@ public class InstallShortcutReceiver extends BroadcastReceiver { } ShortcutItem shortcutItem = createShortcutItem(data, context); EventRelay.getInstance().push(new ShortcutAddEvent(shortcutItem)); - context.startActivity(new Intent(Intent.ACTION_MAIN) + /*context.startActivity(new Intent(Intent.ACTION_MAIN) .addCategory(Intent.CATEGORY_HOME) .setPackage(context.getPackageName()) - .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));*/ } public static void queueShortcut(ShortcutInfoCompat info, Context context) { + Log.d(TAG, "queueShortcut() called with: info = [" + info + "], context = [" + context + "]"); UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE); ShortcutItem shortcutItem = new ShortcutItem(); shortcutItem.id = info.getId(); + Log.i(TAG, "queueShortcut: "+ shortcutItem.id); shortcutItem.user = new UserHandle(userManager.getSerialNumberForUser(info.getUserHandle()), info.getUserHandle()); shortcutItem.packageName = info.getPackage(); @@ -73,10 +75,10 @@ public class InstallShortcutReceiver extends BroadcastReceiver { icon); shortcutItem.launchIntent = info.makeIntent(); EventRelay.getInstance().push(new ShortcutAddEvent(shortcutItem)); - context.startActivity(new Intent(Intent.ACTION_MAIN) + /*context.startActivity(new Intent(Intent.ACTION_MAIN) .addCategory(Intent.CATEGORY_HOME) .setPackage(context.getPackageName()) - .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));*/ } private static ShortcutItem createShortcutItem(Intent data, Context context) { -- GitLab From 807b60a1374060d07f47532c3d1d53934645674c Mon Sep 17 00:00:00 2001 From: Amit Kumar Date: Thu, 30 Apr 2020 16:03:09 +0530 Subject: [PATCH 2/4] Fix spotless violation --- .../e/blisslauncher/features/launcher/LauncherActivity.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java index 15403fa0b9..13e1c3499c 100755 --- a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java +++ b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java @@ -127,8 +127,6 @@ import foundation.e.blisslauncher.core.utils.UserHandle; import foundation.e.blisslauncher.features.notification.NotificationRepository; import foundation.e.blisslauncher.features.notification.NotificationService; import foundation.e.blisslauncher.features.shortcuts.DeepShortcutManager; -import foundation.e.blisslauncher.features.shortcuts.InstallShortcutReceiver; -import foundation.e.blisslauncher.features.shortcuts.ShortcutInfoCompat; import foundation.e.blisslauncher.features.suggestions.AutoCompleteAdapter; import foundation.e.blisslauncher.features.suggestions.SearchSuggestionUtil; import foundation.e.blisslauncher.features.suggestions.SuggestionProvider; @@ -147,8 +145,6 @@ import io.reactivex.Observable; import io.reactivex.ObservableSource; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Consumer; import io.reactivex.observers.DisposableObserver; import io.reactivex.schedulers.Schedulers; import me.relex.circleindicator.CircleIndicator; -- GitLab From d4b67ff4b7d8528f0b4320ddc985b7ea89443f7e Mon Sep 17 00:00:00 2001 From: Amit Kumar Date: Thu, 30 Apr 2020 18:34:05 +0530 Subject: [PATCH 3/4] Don't create UI if it's displayed. --- .../e/blisslauncher/features/launcher/LauncherActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java index 13e1c3499c..b81fbd93da 100755 --- a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java +++ b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java @@ -365,7 +365,7 @@ public class LauncherActivity extends AppCompatActivity implements public void onNext(List launcherItems) { if (launcherItems == null || launcherItems.size() <= 0) { BlissLauncher.getApplication(LauncherActivity.this).getAppProvider().reload(); - } else { + } else if(!allAppsDisplayed) { showApps(launcherItems); } } -- GitLab From 8c88fab7ed1ca5656179ef109149fad583ae2399 Mon Sep 17 00:00:00 2001 From: Amit Kumar Date: Fri, 1 May 2020 18:21:36 +0530 Subject: [PATCH 4/4] Unpin shortcut when removed --- .../e/blisslauncher/features/launcher/LauncherActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java index b81fbd93da..b87c942ae3 100755 --- a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java +++ b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java @@ -127,6 +127,7 @@ import foundation.e.blisslauncher.core.utils.UserHandle; import foundation.e.blisslauncher.features.notification.NotificationRepository; import foundation.e.blisslauncher.features.notification.NotificationService; import foundation.e.blisslauncher.features.shortcuts.DeepShortcutManager; +import foundation.e.blisslauncher.features.shortcuts.ShortcutKey; import foundation.e.blisslauncher.features.suggestions.AutoCompleteAdapter; import foundation.e.blisslauncher.features.suggestions.SearchSuggestionUtil; import foundation.e.blisslauncher.features.suggestions.SuggestionProvider; @@ -1960,6 +1961,7 @@ public class LauncherActivity extends AppCompatActivity implements startActivity(i); } } else if (launcherItem.itemType == Constants.ITEM_TYPE_SHORTCUT) { + DeepShortcutManager.getInstance(this).unpinShortcut(ShortcutKey.fromItem((ShortcutItem) launcherItem)); removeShortcutView((ShortcutItem) launcherItem, blissFrameLayout); } }); -- GitLab