diff --git a/app/src/main/java/foundation/e/blisslauncher/core/IconsHandler.java b/app/src/main/java/foundation/e/blisslauncher/core/IconsHandler.java index dec6a65cfbf618585b6f033318e97ef8e804bd4c..9f01de588adae66556a37d10d94ab11a8dca8079 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/IconsHandler.java +++ b/app/src/main/java/foundation/e/blisslauncher/core/IconsHandler.java @@ -226,7 +226,6 @@ public class IconsHandler { cacheStoreDrawable(userHandle.addUserSuffixToString(componentName.flattenToString(), '/'), badgedIcon); } } - } } diff --git a/app/src/main/java/foundation/e/blisslauncher/core/broadcast/PackageAddedRemovedHandler.java b/app/src/main/java/foundation/e/blisslauncher/core/broadcast/PackageAddedRemovedHandler.java index 6afa96d9f11b956f9f35df0abf0f59999eb39a38..26038d01b0e73c55341da49ca2897c2c35e97caa 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/broadcast/PackageAddedRemovedHandler.java +++ b/app/src/main/java/foundation/e/blisslauncher/core/broadcast/PackageAddedRemovedHandler.java @@ -32,10 +32,11 @@ public class PackageAddedRemovedHandler extends BroadcastReceiver { return; } - BlissLauncher.getApplication(ctx).getIconsHandler().clearAll(); + BlissLauncher.getApplication(ctx).resetIconsHandler(); AppAddEvent event = new AppAddEvent(packageName, user); EventRelay.getInstance().push(event); + BlissLauncher.getApplication(ctx).getAppProvider().reload(); } if ("android.intent.action.PACKAGE_CHANGED".equalsIgnoreCase(action)) { @@ -45,14 +46,16 @@ public class PackageAddedRemovedHandler extends BroadcastReceiver { launchIntent.getComponent(), user); } - BlissLauncher.getApplication(ctx).getIconsHandler().clearAll(); + BlissLauncher.getApplication(ctx).resetIconsHandler(); AppChangeEvent event = new AppChangeEvent(packageName, user); EventRelay.getInstance().push(event); + BlissLauncher.getApplication(ctx).getAppProvider().reload(); } if ("android.intent.action.PACKAGE_REMOVED".equals(action) && !replacing) { AppRemoveEvent event = new AppRemoveEvent(packageName, user); EventRelay.getInstance().push(event); + BlissLauncher.getApplication(ctx).getAppProvider().reload(); } } diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/RoundedWidgetView.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/RoundedWidgetView.java index e6bc9196aacce6fb550b82681a01bcb7935de6d2..dcb15a6c10bb5fa72affe833e6e54ada56dc18be 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/RoundedWidgetView.java +++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/RoundedWidgetView.java @@ -30,6 +30,8 @@ public class RoundedWidgetView extends AppWidgetHostView { private long _down; private boolean mChildrenFocused; + private boolean activated = false; + public RoundedWidgetView(Context context) { super(context); this.mContext = context; @@ -144,12 +146,18 @@ public class RoundedWidgetView extends AppWidgetHostView { ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); resizeBorder.setLayoutParams(layoutParams); addView(resizeBorder); + activated = true; } public void removeBorder() { if (resizeBorder != null) { removeView(resizeBorder); resizeBorder = null; + activated = false; } } + + public boolean isWidgetActivated() { + return activated; + } } 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 fe0c90e0913e5fea24236cc83ba888f570979e06..ab9f2d5b5f385fde5d344ddf467459b2c57c7da7 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 @@ -192,7 +192,7 @@ public class AppProvider { synchronized (AppProvider.class) { if (sInstance == null) { sInstance = new AppProvider(context); - //sInstance.reload(false); + sInstance.reload(); } } } @@ -205,6 +205,11 @@ public class AppProvider { public synchronized void reload() { Log.d(TAG, "reload() called"); + + if(mLauncherItems != null && mLauncherItems.size() > 0) { + mAppsRepository.updateAppsRelay(mLauncherItems); + } + initializeAppLoading(new LoadAppsTask()); if (Utilities.ATLEAST_OREO) { initializeShortcutsLoading(new LoadShortcutTask()); @@ -400,6 +405,7 @@ public class AppProvider { shortcutItem.container = databaseItem.container; shortcutItem.screenId = databaseItem.screenId; shortcutItem.cell = databaseItem.cell; + shortcutItem.user = new UserHandle(); return shortcutItem; } @@ -450,7 +456,7 @@ public class AppProvider { } public void clear() { - sInstance.mContext = null; + sInstance = null; } 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 d6cc949d557883ffec7bf898057e484932630899..6777c6ae998c98527296b57cd1fdf1e2827bb508 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 @@ -237,12 +237,13 @@ public class LauncherActivity extends AppCompatActivity implements private boolean forceReload; private AppProvider appProvider; + private int moveTo; @SuppressLint("InflateParams") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - + Log.d(TAG, "onCreate() called with: savedInstanceState = [" + savedInstanceState + "]"); appProvider = BlissLauncher.getApplication(this).getAppProvider(); prepareBroadcastReceivers(); @@ -288,7 +289,6 @@ public class LauncherActivity extends AppCompatActivity implements startService(notificationServiceIntent); createOrUpdateIconGrid(); - BlissLauncher.getApplication(this).getAppProvider().reload(); } private void setupViews() { @@ -332,7 +332,11 @@ public class LauncherActivity extends AppCompatActivity implements .subscribeWith(new DisposableObserver>() { @Override public void onNext(List launcherItems) { - showApps(launcherItems, forceReload); + if (launcherItems == null || launcherItems.size() <= 0) { + BlissLauncher.getApplication(LauncherActivity.this).getAppProvider().reload(); + } else if (!allAppsDisplayed) { + showApps(launcherItems); + } } @Override @@ -445,6 +449,7 @@ public class LauncherActivity extends AppCompatActivity implements @Override protected void onDestroy() { super.onDestroy(); + Log.d(TAG, "onDestroy() called"); TimeChangeBroadcastReceiver.unregister(this, timeChangedReceiver); ManagedProfileBroadcastReceiver.unregister(this, managedProfileReceiver); LocalBroadcastManager.getInstance(this).unregisterReceiver(mWeatherReceiver); @@ -454,10 +459,15 @@ public class LauncherActivity extends AppCompatActivity implements } public void onAppAddEvent(AppAddEvent appAddEvent) { + moveTo = -1; ApplicationItem applicationItem = AppUtils.createAppItem(this, appAddEvent.getPackageName(), appAddEvent.getUserHandle()); addLauncherItem(applicationItem); DatabaseManager.getManager(this).saveLayouts(pages, mDock); + if (moveTo != -1) { + mHorizontalPager.setCurrentPage(moveTo); + moveTo = -1; + } } public void onAppRemoveEvent(AppRemoveEvent appRemoveEvent) { @@ -472,9 +482,15 @@ public class LauncherActivity extends AppCompatActivity implements } public void onShortcutAddEvent(ShortcutAddEvent shortcutAddEvent) { + moveTo = -1; updateOrAddShortcut(shortcutAddEvent.getShortcutItem()); DatabaseManager.getManager(this).saveLayouts(pages, mDock); Toast.makeText(this, "Shortcut has been added", Toast.LENGTH_SHORT).show(); + Log.i(TAG, "onShortcutAddEvent: " + moveTo); + if (moveTo != -1) { + mHorizontalPager.setCurrentPage(moveTo); + moveTo = -1; + } } private void addLauncherItem(LauncherItem launcherItem) { @@ -506,6 +522,7 @@ public class LauncherActivity extends AppCompatActivity implements launcherItem.cell = pages.get(current).getChildCount() - 1; launcherItem.container = Constants.CONTAINER_DESKTOP; addAppToGrid(pages.get(current), view); + moveTo = current + 1; } } @@ -591,10 +608,10 @@ public class LauncherActivity extends AppCompatActivity implements launcherItem); gridLayout.removeViewAt(j); addAppToGrid(gridLayout, blissFrameLayout, j); + moveTo = i + 1; return; } } - } } else { if (launcherItem.itemType == Constants.ITEM_TYPE_SHORTCUT) { @@ -603,6 +620,7 @@ public class LauncherActivity extends AppCompatActivity implements BlissFrameLayout blissFrameLayout = prepareLauncherItem(shortcutItem); gridLayout.removeViewAt(j); addAppToGrid(gridLayout, blissFrameLayout, j); + moveTo = i + 1; return; } } @@ -868,9 +886,9 @@ public class LauncherActivity extends AppCompatActivity implements addLauncherItem(updatedAppItem); } - public void showApps(List launcherItems, boolean force) { + public void showApps(List launcherItems) { mProgressBar.setVisibility(GONE); - if(isWobbling) + if (isWobbling) handleWobbling(false); createUI(launcherItems); subscribeToEvents(); @@ -882,9 +900,6 @@ public class LauncherActivity extends AppCompatActivity implements createIndicator(); createOrUpdateBadgeCount(); allAppsDisplayed = true; - if (force) { - forceReload = false; - } } private void subscribeToEvents() { @@ -1679,10 +1694,8 @@ public class LauncherActivity extends AppCompatActivity implements if (launcherItem.itemType == Constants.ITEM_TYPE_SHORTCUT) { startShortcutIntentSafely(context, intent, launcherItem); } else if (user == null || user.equals(Process.myUserHandle())) { - Log.i(TAG, "startActivitySafely: here"); context.startActivity(intent); } else { - Log.i(TAG, "startActivitySafely: here2"); ((LauncherApps) getSystemService(LAUNCHER_APPS_SERVICE)) .startMainActivity(intent.getComponent(), user, intent.getSourceBounds(), null); } @@ -2632,11 +2645,7 @@ public class LauncherActivity extends AppCompatActivity implements */ @Override public void onBackPressed() { - if (activeRoundedWidgetView != null) { - hideWidgetResizeContainer(); - } else { - returnToHomeScreen(); - } + returnToHomeScreen(); } private void displayFolder(FolderItem app, BlissFrameLayout v) { @@ -2797,6 +2806,8 @@ public class LauncherActivity extends AppCompatActivity implements protected void onNewIntent(Intent intent) { super.onNewIntent(intent); + Log.d(TAG, "onNewIntent() called with: intent = [" + intent + "]"); + final boolean alreadyOnHome = hasWindowFocus() && ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); @@ -2804,8 +2815,7 @@ public class LauncherActivity extends AppCompatActivity implements boolean shouldMoveToDefaultScreen = alreadyOnHome && swipeSearchContainer.getVisibility() != VISIBLE && !isWobbling && mFolderWindowContainer.getVisibility() != View.VISIBLE - && activeRoundedWidgetView == null; - + && (activeRoundedWidgetView == null || !activeRoundedWidgetView.isWidgetActivated()); if (shouldMoveToDefaultScreen) { mHorizontalPager.setCurrentPage(1); @@ -2815,7 +2825,7 @@ public class LauncherActivity extends AppCompatActivity implements } private void returnToHomeScreen() { - if (activeRoundedWidgetView != null) { + if (activeRoundedWidgetView != null && activeRoundedWidgetView.isWidgetActivated()) { hideWidgetResizeContainer(); } @@ -3169,14 +3179,6 @@ public class LauncherActivity extends AppCompatActivity implements } } - public void reload() { - forceReload = true; - } - - public void loadAllApps() { - - } - /** * Adapter for folder apps. */ 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 ef26237e77111f2effed19e6ee809e2258cab871..4ce1da14addbc460ee063bca65f20d55ed1dd132 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 @@ -10,6 +10,8 @@ import android.support.v7.app.AppCompatActivity; @TargetApi(Build.VERSION_CODES.O) public class AddItemActivity extends AppCompatActivity { + private static final String TAG = "AddItemActivity"; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 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 440c6eccb99a0ff5218cda01ff0664304859a642..2a4afd5422d88df0af0a95219cfb7803c753fb97 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 @@ -10,7 +10,6 @@ import android.os.Parcelable; import android.os.UserManager; import android.util.Log; -import org.greenrobot.eventbus.EventBus; import java.io.ByteArrayOutputStream; @@ -18,6 +17,7 @@ import foundation.e.blisslauncher.BlissLauncher; import foundation.e.blisslauncher.core.IconsHandler; import foundation.e.blisslauncher.core.Utilities; import foundation.e.blisslauncher.core.database.model.ShortcutItem; +import foundation.e.blisslauncher.core.events.EventRelay; import foundation.e.blisslauncher.core.events.ShortcutAddEvent; import foundation.e.blisslauncher.core.utils.Constants; import foundation.e.blisslauncher.core.utils.UserHandle; @@ -51,7 +51,11 @@ public class InstallShortcutReceiver extends BroadcastReceiver { return; } ShortcutItem shortcutItem = createShortcutItem(data, context); - EventBus.getDefault().post(new ShortcutAddEvent(shortcutItem)); + EventRelay.getInstance().push(new ShortcutAddEvent(shortcutItem)); + context.startActivity(new Intent(Intent.ACTION_MAIN) + .addCategory(Intent.CATEGORY_HOME) + .setPackage(context.getPackageName()) + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); } public static void queueShortcut(ShortcutInfoCompat info, Context context) { @@ -68,11 +72,14 @@ public class InstallShortcutReceiver extends BroadcastReceiver { shortcutItem.icon = BlissLauncher.getApplication(context).getIconsHandler().convertIcon( icon); shortcutItem.launchIntent = info.makeIntent(); - EventBus.getDefault().post(new ShortcutAddEvent(shortcutItem)); + EventRelay.getInstance().push(new ShortcutAddEvent(shortcutItem)); + context.startActivity(new Intent(Intent.ACTION_MAIN) + .addCategory(Intent.CATEGORY_HOME) + .setPackage(context.getPackageName()) + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); } private static ShortcutItem createShortcutItem(Intent data, Context context) { - Intent intent = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT); String name = data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME); Parcelable bitmap = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_ICON);