diff options
author | YuutaW <17158086+Trumeet@users.noreply.github.com> | 2019-02-24 11:59:17 -0800 |
---|---|---|
committer | YuutaW <17158086+Trumeet@users.noreply.github.com> | 2019-02-24 11:59:17 -0800 |
commit | a08328403be84d85c006f801169a3feed0d956a4 (patch) | |
tree | ceebece6443a3e6662a4937b911c58904bb5b1ff /app/src/main/java/moe/yuuta/workmode/suspend/Suspender.kt | |
download | WorkMode-a08328403be84d85c006f801169a3feed0d956a4.tar WorkMode-a08328403be84d85c006f801169a3feed0d956a4.tar.gz WorkMode-a08328403be84d85c006f801169a3feed0d956a4.tar.bz2 WorkMode-a08328403be84d85c006f801169a3feed0d956a4.zip |
First Commit
Signed-off-by: YuutaW <17158086+Trumeet@users.noreply.github.com>
Diffstat (limited to 'app/src/main/java/moe/yuuta/workmode/suspend/Suspender.kt')
-rw-r--r-- | app/src/main/java/moe/yuuta/workmode/suspend/Suspender.kt | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/app/src/main/java/moe/yuuta/workmode/suspend/Suspender.kt b/app/src/main/java/moe/yuuta/workmode/suspend/Suspender.kt new file mode 100644 index 0000000..49924bb --- /dev/null +++ b/app/src/main/java/moe/yuuta/workmode/suspend/Suspender.kt @@ -0,0 +1,40 @@ +package moe.yuuta.workmode.suspend + +import android.content.ComponentName +import android.content.Context +import android.os.PersistableBundle +import android.service.quicksettings.TileService +import moe.yuuta.workmode.R +import moe.yuuta.workmode.access.ApplicationAccessorStarter +import moe.yuuta.workmode.suspend.data.SuspendedStorage + +/** + * The highest-level suspender to wrap all information needed to suspend or vice versa. This + * should be called from UI components directly + * Chain: UI -> Suspender -> AccessorStarter -> WorkModeAccessor -> AccessLayer -> Framework + */ +class Suspender(private val mContext: Context) { + fun suspend(packageNames: Array<String>, suspended: Boolean): Array<String> = + ApplicationAccessorStarter(mContext).setPackagesSuspended(packageNames, + suspended, + PersistableBundle(), + SuspendedApp.getDefault().serializeBundle(), // We use LauncherExtras because they are easy to read + mContext.getString(R.string.suspended_message), + true) + + fun isSuspended(packageNames: Array<String>): Boolean = + ApplicationAccessorStarter(mContext).isPackageSuspended(packageNames, true) + + fun getPackagesSuspendedByWorkMode(): List<String> = + ApplicationAccessorStarter(mContext).getPackagesSuspendedByWorkMode(true) + + fun applyFromSettings() { + val storage = SuspendedStorage(mContext) + storage.cleanList(mContext) + val status = storage.getStatus() + val listMode = storage.getListMode() + val list = storage.getList() + ApplicationAccessorStarter(mContext).apply(list.toTypedArray(), listMode, status, true) + TileService.requestListeningState(mContext, ComponentName(mContext, SuspendTile::class.java)) + } +}
\ No newline at end of file |