Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a405c1d4 authored by Romain Hunault's avatar Romain Hunault 💻
Browse files

Fix broken shortcut, icon mismatch and home button not working issues

parent 06b0a65d
Loading
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -226,7 +226,6 @@ public class IconsHandler {
                    cacheStoreDrawable(userHandle.addUserSuffixToString(componentName.flattenToString(), '/'), badgedIcon);
                }
            }

        }
    }

+5 −2
Original line number Diff line number Diff line
@@ -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();
        }
    }

+8 −0
Original line number Diff line number Diff line
@@ -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;
    }
}
+8 −2
Original line number Diff line number Diff line
@@ -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() {
+29 −27
Original line number Diff line number Diff line
@@ -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<List<LauncherItem>>() {
                            @Override
                            public void onNext(List<LauncherItem> 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,7 +886,7 @@ public class LauncherActivity extends AppCompatActivity implements
        addLauncherItem(updatedAppItem);
    }

    public void showApps(List<LauncherItem> launcherItems, boolean force) {
    public void showApps(List<LauncherItem> launcherItems) {
        mProgressBar.setVisibility(GONE);
        if (isWobbling)
            handleWobbling(false);
@@ -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,12 +2645,8 @@ public class LauncherActivity extends AppCompatActivity implements
     */
    @Override
    public void onBackPressed() {
        if (activeRoundedWidgetView != null) {
            hideWidgetResizeContainer();
        } else {
        returnToHomeScreen();
    }
    }

    private void displayFolder(FolderItem app, BlissFrameLayout v) {
        if (currentAnimator != null) {
@@ -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.
     */
Loading