blob: 2a0fc392867142eb2e9ffd41f349256c5a1d9cf3 [file] [log] [blame]
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.wallpaper.module;
import android.annotation.TargetApi;
import android.os.Build;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import com.android.wallpaper.module.WallpaperPersister.Destination;
import java.util.List;
/**
* Interface for persisting and retrieving wallpaper specific preferences.
*/
public interface WallpaperPreferences {
int PRESENTATION_MODE_STATIC = 1;
int PRESENTATION_MODE_ROTATING = 2;
int WALLPAPER_SET_NOT_PENDING = 0;
int WALLPAPER_SET_PENDING = 1;
int DAILY_WALLPAPER_UPDATE_NOT_PENDING = 0;
int DAILY_WALLPAPER_UPDATE_PENDING = 1;
/**
* Returns the wallpaper presentation mode.
*/
@PresentationMode
int getWallpaperPresentationMode();
/**
* Sets the presentation mode of the current wallpaper.
*/
void setWallpaperPresentationMode(@PresentationMode int presentationMode);
/**
* Returns the home attributions as a list.
*/
List<String> getHomeWallpaperAttributions();
/**
* Sets the attributions for the current home wallpaper. Clears existing attributions if any
* exist.
*/
void setHomeWallpaperAttributions(List<String> attributions);
/**
* Returns the home wallpaper's action URL or null if there is none.
*/
String getHomeWallpaperActionUrl();
/**
* Sets the home wallpaper's action URL.
*/
void setHomeWallpaperActionUrl(String actionUrl);
/**
* Returns the resource id for the home wallpaper's action label.
*/
int getHomeWallpaperActionLabelRes();
/**
* Sets the resource id for the home wallpaper's action label.
*/
void setHomeWallpaperActionLabelRes(int resId);
/**
* Returns the resource id for the home wallpaper's action icon.
*/
int getHomeWallpaperActionIconRes();
/**
* Sets the resource id for the home wallpaper's action icon.
*/
void setHomeWallpaperActionIconRes(int resId);
/**
* Returns the home wallpaper's base image URL or if there is none.
*/
String getHomeWallpaperBaseImageUrl();
/**
* Sets the home wallpaper's base image URL.
*/
void setHomeWallpaperBaseImageUrl(String baseImageUrl);
/**
* Returns the home wallpaper's collection ID or null if there is none.
*/
String getHomeWallpaperCollectionId();
/**
* Sets the home wallpaper's collection ID.
*/
void setHomeWallpaperCollectionId(String collectionId);
/**
* Returns the home wallpaper's backing file name if there's one or null.
*/
String getHomeWallpaperBackingFileName();
/**
* Sets the home wallpaper's backing file name
*/
void setHomeWallpaperBackingFileName(String fileName);
/**
* Removes all home metadata from SharedPreferences.
*/
void clearHomeWallpaperMetadata();
/**
* Returns the home wallpaper's bitmap hash code or 0 if there is none.
*/
long getHomeWallpaperHashCode();
/**
* Sets the home wallpaper's bitmap hash code if it is an individual image.
*/
void setHomeWallpaperHashCode(long hashCode);
/**
* Gets the home wallpaper's package name, which is present for live wallpapers.
*/
String getHomeWallpaperPackageName();
/**
* Sets the home wallpaper's package name, which is present for live wallpapers.
*/
void setHomeWallpaperPackageName(String packageName);
/**
* Gets the home wallpaper's service name, which is present for live wallpapers.
*/
String getHomeWallpaperServiceName();
/**
* Sets the home wallpaper's service name, which is present for live wallpapers.
*/
void setHomeWallpaperServiceName(String serviceName);
/**
* Gets the home wallpaper's ID, which is provided by WallpaperManager for static wallpapers.
*/
@TargetApi(Build.VERSION_CODES.N)
int getHomeWallpaperManagerId();
/**
* Sets the home wallpaper's ID, which is provided by WallpaperManager for static wallpapers.
*/
@TargetApi(Build.VERSION_CODES.N)
void setHomeWallpaperManagerId(int homeWallpaperId);
/**
* Gets the home wallpaper's remote identifier.
*/
String getHomeWallpaperRemoteId();
/**
* Sets the home wallpaper's remote identifier to SharedPreferences. This should be a string
* which uniquely identifies the currently set home wallpaper in the context of a remote wallpaper
* collection.
*/
void setHomeWallpaperRemoteId(String wallpaperRemoteId);
/**
* Returns the lock wallpaper's action URL or null if there is none.
*/
String getLockWallpaperActionUrl();
/**
* Sets the lock wallpaper's action URL.
*/
void setLockWallpaperActionUrl(String actionUrl);
/**
* Returns the resource id for the lock wallpaper's action label.
*/
int getLockWallpaperActionLabelRes();
/**
* Sets the resource id for the lock wallpaper's action label.
*/
void setLockWallpaperActionLabelRes(int resId);
/**
* Returns the resource id for the lock wallpaper's action icon.
*/
int getLockWallpaperActionIconRes();
/**
* Sets the resource id for the lock wallpaper's action icon.
*/
void setLockWallpaperActionIconRes(int resId);
/**
* Returns the lock wallpaper's collection ID or null if there is none.
*/
String getLockWallpaperCollectionId();
/**
* Sets the lock wallpaper's collection ID.
*/
void setLockWallpaperCollectionId(String collectionId);
/**
* Returns the home wallpaper's backing file name if there's one or null.
*/
String getLockWallpaperBackingFileName();
/**
* Sets the home wallpaper's backing file name
*/
void setLockWallpaperBackingFileName(String fileName);
/**
* Returns the lock screen attributions as a list.
*/
List<String> getLockWallpaperAttributions();
/**
* Sets the attributions for the current lock screen wallpaper. Clears existing attributions if
* any exist.
*
* @param attributions
*/
void setLockWallpaperAttributions(List<String> attributions);
/**
* Removes all lock screen metadata from SharedPreferences.
*/
void clearLockWallpaperMetadata();
/**
* Returns the lock screen wallpaper's bitmap hash code or 0 if there is none.
*/
long getLockWallpaperHashCode();
/**
* Sets the lock screen wallpaper's bitmap hash code if it is an individual image.
*/
void setLockWallpaperHashCode(long hashCode);
/**
* Gets the lock wallpaper's ID, which is provided by WallpaperManager for static wallpapers.
*/
@TargetApi(Build.VERSION_CODES.N)
int getLockWallpaperId();
/**
* Sets the lock wallpaper's ID, which is provided by WallpaperManager for static wallpapers.
*/
@TargetApi(Build.VERSION_CODES.N)
void setLockWallpaperId(int lockWallpaperId);
/**
* Gets the lock wallpaper's remote identifier.
*/
String getLockWallpaperRemoteId();
/**
* Sets the lock wallpaper's remote identifier to SharedPreferences. This should be a string
* which uniquely identifies the currently set lock wallpaper in the context of a remote
* wallpaper collection.
*/
void setLockWallpaperRemoteId(String wallpaperRemoteId);
/**
* Persists the timestamp of a daily wallpaper rotation that just occurred.
*/
void addDailyRotation(long timestamp);
/**
* Returns the timestamp of the last wallpaper daily rotation or -1 if there has never been a
* daily wallpaper rotation on the user's device.
*/
long getLastDailyRotationTimestamp();
/**
* Gets a list of the daily rotation timestamps that occurred in the last week, from least
* recent at the start of the list to most recent at the end of the list.
* The timestamps are in milliseconds since Unix epoch.
* If daily rotation has been enabled for less than one week, returns null instead.
*/
@Nullable
List<Long> getDailyRotationsInLastWeek();
/**
* Gets a list of the daily rotation timestamps that occurred the previous day (midnight to
* midnight in the user's timezone). Timestamps are in milliseconds since Unix epoch. Returns null
* if daily rotation was enabled earlier than midnight yesterday.
*/
@Nullable
List<Long> getDailyRotationsPreviousDay();
/**
* Returns the daily wallpaper enabled timestamp in milliseconds since Unix epoch, or -1 if
* daily wallpaper is not currently enabled.
*/
long getDailyWallpaperEnabledTimestamp();
/**
* Persists the timestamp when daily wallpaper feature was last enabled.
*
* @param timestamp Milliseconds since Unix epoch.
*/
void setDailyWallpaperEnabledTimestamp(long timestamp);
/**
* Clears the persisted daily rotation timestamps and the "daily wallpaper enabled" timestamp.
* Called if daily rotation is disabled.
*/
void clearDailyRotations();
/**
* Returns the timestamp of the most recent daily logging event, in milliseconds since Unix
* epoch. Returns -1 if the very first daily logging event has not occurred yet.
*/
long getLastDailyLogTimestamp();
/**
* Sets the timestamp of the most recent daily logging event.
*
* @param timestamp Milliseconds since Unix epoch.
*/
void setLastDailyLogTimestamp(long timestamp);
/**
* Returns the timestamp of the last time the app was noted to be active; i.e. the last time an
* activity entered the foreground (milliseconds since Unix epoch).
*/
long getLastAppActiveTimestamp();
/**
* Sets the timestamp of the last time the app was noted to be active; i.e. the last time an
* activity entered the foreground.
*
* @param timestamp Milliseconds since Unix epoch.
*/
void setLastAppActiveTimestamp(long timestamp);
/**
* Sets the last rotation status for daily wallpapers with a timestamp.
*
* @param status Last status code of daily rotation.
* @param timestamp Milliseconds since Unix epoch.
*/
void setDailyWallpaperRotationStatus(int status, long timestamp);
/**
* Gets the last daily wallpapers rotation status or -1 if no rotation status has ever been
* persisted to preferences.
*/
int getDailyWallpaperLastRotationStatus();
/**
* Gets the timestamp of the last set daily wallpapers rotation status in milliseconds since the
* Unix epoch or 0 if no rotation status has ever been persisted to preferences.
*/
long getDailyWallpaperLastRotationStatusTimestamp();
/**
* Gets the timestamp of the last time a sync occurred of wallpaper data to or from this device.
* Returns 0 if a sync has never occurred before.
*/
long getLastSyncTimestamp();
/**
* Sets the timestamp of the latest sync received or sent.
*/
void setLastSyncTimestamp(long timestamp);
/**
* Sets the status of whether a wallpaper is currently pending being set (i.e., user tapped the
* UI to set a wallpaper but it has not yet been actually set on the device). Does so in a
* synchronous manner so a caller may be assured that the underlying store has been updated when
* this method returns.
*/
void setPendingWallpaperSetStatusSync(@PendingWallpaperSetStatus int setStatus);
/**
* Gets the status of whether a wallpaper is currently pending being set.
*/
@PendingWallpaperSetStatus
int getPendingWallpaperSetStatus();
/**
* Sets the status of whether a wallpaper is currently pending being set (i.e., user tapped the
* UI to set a wallpaper but it has not yet been actually set on the device). Does so in an
* asynchronous manner so writing the preference to the underlying store doesn't block the calling
* thread.
*/
void setPendingWallpaperSetStatus(@PendingWallpaperSetStatus int setStatus);
/**
* Sets whether a daily wallpaper update is pending. Writes status to memory and also to disk
* before returning.
*/
void setPendingDailyWallpaperUpdateStatusSync(
@PendingDailyWallpaperUpdateStatus int updateStatus);
/**
* Returns whether a daily wallpaper update is pending.
*/
@PendingDailyWallpaperUpdateStatus
int getPendingDailyWallpaperUpdateStatus();
/**
* Sets whether a daily wallpaper update is pending. Writes status to memory immediately and to
* disk after returning.
*/
void setPendingDailyWallpaperUpdateStatus(@PendingDailyWallpaperUpdateStatus int updateStatus);
/**
* Increments the number of consecutive days daily rotation has failed.
*/
void incrementNumDaysDailyRotationFailed();
/**
* Gets the number of days daily rotation failed.
*/
int getNumDaysDailyRotationFailed();
/**
* Resets the consecutive number of days daily rotation failed to 0.
*/
void resetNumDaysDailyRotationFailed();
/**
* Increments the number of consecutive days daily rotation was not attempted.
*/
void incrementNumDaysDailyRotationNotAttempted();
/**
* Gets the number ofconsecutive days daily rotation was not attempted.
*/
int getNumDaysDailyRotationNotAttempted();
/**
* Resets the consecutive number of days daily rotation was not attempted to 0.
*/
void resetNumDaysDailyRotationNotAttempted();
/**
* Return the count of wallpaper picker launch.
*/
int getAppLaunchCount();
/**
* Return the date for the first time to launch wallpaper picker.
*/
int getFirstLaunchDateSinceSetup();
/**
* Increments the number of wallpaper picker launch.
*/
void incrementAppLaunched();
/**
* Returns the date for the first time to apply a wallpaper.
*/
int getFirstWallpaperApplyDateSinceSetup();
/**
* Update currently set daily wallpaper info.
*
* @param destination The wallpaper destination, 1: home, 2: lockscreen, 3: both.
* @param collectionId wallpaper category.
* @param wallpaperId wallpaper id.
*/
void updateDailyWallpaperSet(@Destination int destination, String collectionId,
String wallpaperId);
/**
* The possible wallpaper presentation modes, i.e., either "static" or "rotating".
*/
@IntDef({
PRESENTATION_MODE_STATIC,
PRESENTATION_MODE_ROTATING})
@interface PresentationMode {
}
/**
* Possible status of whether a wallpaper set operation is pending or not.
*/
@IntDef({
WALLPAPER_SET_NOT_PENDING,
WALLPAPER_SET_PENDING})
@interface PendingWallpaperSetStatus {
}
/**
* Possible status of whether a wallpaper set operation is pending or not.
*/
@IntDef({
DAILY_WALLPAPER_UPDATE_NOT_PENDING,
DAILY_WALLPAPER_UPDATE_PENDING})
@interface PendingDailyWallpaperUpdateStatus {
}
}