aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/moe/yuuta/workmode/suspend/Suspender.kt
diff options
context:
space:
mode:
authorYuutaW <17158086+Trumeet@users.noreply.github.com>2019-02-24 11:59:17 -0800
committerYuutaW <17158086+Trumeet@users.noreply.github.com>2019-02-24 11:59:17 -0800
commita08328403be84d85c006f801169a3feed0d956a4 (patch)
treeceebece6443a3e6662a4937b911c58904bb5b1ff /app/src/main/java/moe/yuuta/workmode/suspend/Suspender.kt
downloadWorkMode-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.kt40
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