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

Commit 41d25ec4 authored by d34d's avatar d34d Committed by Clark Scheff
Browse files

Themes: Add RequestType to ThemeChangeRequest [1/3]

Change-Id: I2c65ca8eebb3347873cbb133fc29d5ade75b258b
parent 35998f23
Loading
Loading
Loading
Loading
+25 −2
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import static android.provider.ThemesContract.ThemesColumns.*;
public final class ThemeChangeRequest implements Parcelable {
    private final Map<String, String> mThemeComponents = new HashMap<String, String>();
    private final Map<String, String> mPerAppOverlays = new HashMap<String, String>();
    private RequestType mRequestType;

    public String getOverlayThemePackageName() {
        return getThemePackageNameForComponent(MODIFIES_OVERLAYS);
@@ -90,17 +91,23 @@ public final class ThemeChangeRequest implements Parcelable {
        return mThemeComponents.size() + mPerAppOverlays.size();
    }

    public RequestType getReqeustType() {
        return mRequestType;
    }

    private String getThemePackageNameForComponent(String componentName) {
        return mThemeComponents.get(componentName);
    }

    private ThemeChangeRequest(Map<String, String> components, Map<String, String> perAppThemes) {
    private ThemeChangeRequest(Map<String, String> components, Map<String, String> perAppThemes,
            RequestType requestType) {
        if (components != null) {
            mThemeComponents.putAll(components);
        }
        if (perAppThemes != null) {
            mPerAppOverlays.putAll(perAppThemes);
        }
        mRequestType = requestType;
    }

    private ThemeChangeRequest(Parcel source) {
@@ -113,6 +120,7 @@ public final class ThemeChangeRequest implements Parcelable {
        for (int i = 0 ; i < numComponents; i++) {
            mPerAppOverlays.put(source.readString(), source.readString());
        }
        mRequestType = RequestType.values()[source.readInt()];
    }

    @Override
@@ -132,6 +140,7 @@ public final class ThemeChangeRequest implements Parcelable {
            dest.writeString(appPkgName);
            dest.writeString(mPerAppOverlays.get(appPkgName));
        }
        dest.writeInt(mRequestType.ordinal());
    }

    public static final Parcelable.Creator<ThemeChangeRequest> CREATOR =
@@ -147,9 +156,18 @@ public final class ThemeChangeRequest implements Parcelable {
                }
            };

    public enum RequestType {
        USER_REQUEST,
        USER_REQUEST_MIXNMATCH,
        THEME_UPDATED,
        THEME_REMOVED,
        THEME_RESET;
    }

    public static class Builder {
        Map<String, String> mThemeComponents = new HashMap<String, String>();
        Map<String, String> mPerAppOverlays = new HashMap<String, String>();
        RequestType mRequestType = RequestType.USER_REQUEST;

        public Builder() {}

@@ -218,8 +236,13 @@ public final class ThemeChangeRequest implements Parcelable {
            return this;
        }

        public Builder setRequestType(RequestType requestType) {
            mRequestType = requestType != null ? requestType : RequestType.USER_REQUEST;
            return this;
        }

        public ThemeChangeRequest build() {
            return new ThemeChangeRequest(mThemeComponents, mPerAppOverlays);
            return new ThemeChangeRequest(mThemeComponents, mPerAppOverlays, mRequestType);
        }
    }
}
+5 −1
Original line number Diff line number Diff line
@@ -771,7 +771,11 @@ public class ThemeService extends IThemeService.Stub {
            }
        }

        // When a theme is being updated the new config equal the old config so in this case we
        // want to update the timestamp so they are no longer equal.
        if (request.getReqeustType() == ThemeChangeRequest.RequestType.THEME_UPDATED) {
            builder.setThemeChangeTimestamp(System.currentTimeMillis());
        }

        return builder;
    }
+3 −5
Original line number Diff line number Diff line
@@ -23,13 +23,10 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.ThemeUtils;
import android.content.res.ThemeChangeRequest;
import android.content.res.ThemeChangeRequest.RequestType;
import android.content.res.ThemeConfig;
import android.content.res.ThemeManager;
import android.os.SystemClock;
import android.provider.ThemesContract;

import java.util.ArrayList;
import java.util.List;

import com.android.internal.R;

@@ -77,7 +74,8 @@ public class AppsFailureReceiver extends BroadcastReceiver {
                            .setLockWallpaper(themePkgName)
                            .setAlarm(themePkgName)
                            .setNotification(themePkgName)
                            .setRingtone(themePkgName);
                            .setRingtone(themePkgName)
                            .setRequestType(RequestType.THEME_RESET);
                    // Since we are resetting everything to the system theme, we can have the
                    // theme service remove all per app themes without setting them explicitly :)
                    tm.requestThemeChange(builder.build(), true);