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

Commit 3a30cfeb authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Adding minSpanX and minSpanY for all the launcher widgets

Bug: 22353460
Change-Id: Id4450dee42a83e4603dcd56e1c4dec2b0e405858
parent 36db8567
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -120,4 +120,8 @@ message Widget {
  optional bool configure = 3;
  optional Resource icon = 4;
  optional Resource preview = 5;

  // Assume that a widget is resizable upto 2x2 if no data is available
  optional int32 minSpanX = 6 [default = 2];
  optional int32 minSpanY = 7 [default = 2];
}
+6 −2
Original line number Diff line number Diff line
@@ -2690,8 +2690,12 @@ public class CellLayout extends ViewGroup implements BubbleTextShadowHandler {
     * @param result An array of length 2 in which to store the result (may be null).
     */
    public static int[] rectToCell(Launcher launcher, int width, int height, int[] result) {
        DeviceProfile grid = launcher.getDeviceProfile();
        Rect padding = grid.getWorkspacePadding(Utilities.isRtl(launcher.getResources()));
        return rectToCell(launcher.getDeviceProfile(), launcher, width, height, result);
    }

    public static int[] rectToCell(DeviceProfile grid, Context context, int width, int height,
            int[] result) {
        Rect padding = grid.getWorkspacePadding(Utilities.isRtl(context.getResources()));

        // Always assume we're working with the smallest span to make sure we
        // reserve enough space in both orientations.
+1 −1
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ public class LauncherBackupAgentHelper extends BackupAgentHelper {
            LauncherClings.synchonouslyMarkFirstRunClingDismissed(this);

            // TODO: Update the backup set to include rank.
            if (mHelper.restoredBackupVersion <= 2) {
            if (mHelper.restoredBackupVersion <= 3) {
                LauncherAppState.getLauncherProvider().updateFolderItemsRank();
                LauncherAppState.getLauncherProvider().convertShortcutsToLauncherActivities();
            }
+19 −7
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ public class LauncherBackupHelper implements BackupHelper {
    private static final boolean VERBOSE = LauncherBackupAgentHelper.VERBOSE;
    private static final boolean DEBUG = LauncherBackupAgentHelper.DEBUG;

    private static final int BACKUP_VERSION = 2;
    private static final int BACKUP_VERSION = 3;
    private static final int MAX_JOURNAL_SIZE = 1000000;

    // Journal key is such that it is always smaller than any dynamically generated
@@ -148,6 +148,7 @@ public class LauncherBackupHelper implements BackupHelper {

    private IconCache mIconCache;
    private DeviceProfieData mDeviceProfileData;
    private InvariantDeviceProfile mIdp;

    boolean restoreSuccessful;
    int restoredBackupVersion = 1;
@@ -178,6 +179,7 @@ public class LauncherBackupHelper implements BackupHelper {
                mExistingKeys.add(keyToBackupKey(key));
            }
        }
        restoredBackupVersion = journal.backupVersion;
    }

    /**
@@ -206,7 +208,8 @@ public class LauncherBackupHelper implements BackupHelper {

        if (mDeviceProfileData == null) {
            LauncherAppState app = LauncherAppState.getInstance();
            mDeviceProfileData = initDeviceProfileData(app.getInvariantDeviceProfile());
            mIdp = app.getInvariantDeviceProfile();
            mDeviceProfileData = initDeviceProfileData(mIdp);
            mIconCache = app.getIconCache();
        }

@@ -308,9 +311,9 @@ public class LauncherBackupHelper implements BackupHelper {
        if (mDeviceProfileData == null) {
            // This call does not happen on a looper thread. So LauncherAppState
            // can't be created . Instead initialize required dependencies directly.
            InvariantDeviceProfile profile = new InvariantDeviceProfile(mContext);
            mDeviceProfileData = initDeviceProfileData(profile);
            mIconCache = new IconCache(mContext, profile);
            mIdp = new InvariantDeviceProfile(mContext);
            mDeviceProfileData = initDeviceProfileData(mIdp);
            mIconCache = new IconCache(mContext, mIdp);
        }

        int dataSize = data.size();
@@ -335,7 +338,6 @@ public class LauncherBackupHelper implements BackupHelper {
                MessageNano.mergeFrom(journal, readCheckedBytes(mBuffer, dataSize));
                applyJournal(journal);
                restoreSuccessful = isBackupCompatible(journal);
                restoredBackupVersion = journal.backupVersion;
                return;
            }

@@ -636,7 +638,7 @@ public class LauncherBackupHelper implements BackupHelper {
                } else {
                    Log.w(TAG, "empty intent on appwidget: " + id);
                }
                if (mExistingKeys.contains(backupKey)) {
                if (mExistingKeys.contains(backupKey) && restoredBackupVersion >= BACKUP_VERSION) {
                    if (DEBUG) Log.d(TAG, "already saved widget " + backupKey);

                    // remember that we already backed this up previously
@@ -969,6 +971,16 @@ public class LauncherBackupHelper implements BackupHelper {
            widget.icon.data = Utilities.flattenBitmap(icon);
            widget.icon.dpi = dpi;
        }

        // Calculate the spans corresponding to any one of the orientations as it should not change
        // based on orientation.
        int[] minSpans = CellLayout.rectToCell(
                mIdp.portraitProfile, mContext, info.minResizeWidth, info.minResizeHeight, null);
        widget.minSpanX = (info.resizeMode & LauncherAppWidgetProviderInfo.RESIZE_HORIZONTAL) != 0
                ? minSpans[0] : -1;
        widget.minSpanY = (info.resizeMode & LauncherAppWidgetProviderInfo.RESIZE_VERTICAL) != 0
                ? minSpans[1] : -1;

        return widget;
    }