Skip to content

Commit

Permalink
Collapse on tap
Browse files Browse the repository at this point in the history
  • Loading branch information
hidroh committed Aug 26, 2018
1 parent c595ab3 commit 6f14c96
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 18 deletions.
2 changes: 2 additions & 0 deletions app/src/main/java/io/github/hidroh/splitme/Constants.kt
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package io.github.hidroh.splitme

const val ACTION_CHECK_SPLIT_SCREEN = "${BuildConfig.APPLICATION_ID}.intent.action.CHECK_SPLIT_SCREEN"
const val ACTION_SPLIT_SCREEN_CHECKED = "${BuildConfig.APPLICATION_ID}.intent.action.SPLIT_SCREEN_CHECKED"
const val ACTION_TOGGLE_SPLIT_SCREEN = "${BuildConfig.APPLICATION_ID}.intent.action.TOGGLE_SPLIT_SCREEN"
const val EXTRA_IS_IN_SPLIT_SCREEN = "${BuildConfig.APPLICATION_ID}.intent.extra.IS_IN_SPLIT_SCREEN"
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,12 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager
class InvisibleActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
SplitTileService.splitScreen = isInMultiWindowMode
LocalBroadcastManager.getInstance(this).sendBroadcast(Intent(ACTION_CHECK_SPLIT_SCREEN))
val broadcastManager = LocalBroadcastManager.getInstance(this)
when(intent.action) {
ACTION_CHECK_SPLIT_SCREEN -> broadcastManager.sendBroadcast(Intent(ACTION_SPLIT_SCREEN_CHECKED)
.putExtra(EXTRA_IS_IN_SPLIT_SCREEN, isInMultiWindowMode))
ACTION_TOGGLE_SPLIT_SCREEN -> broadcastManager.sendBroadcast(Intent(ACTION_TOGGLE_SPLIT_SCREEN))
}
finish()
}
}
32 changes: 16 additions & 16 deletions app/src/main/java/io/github/hidroh/splitme/SplitTileService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@ class SplitTileService : TileService() {
get() = LocalBroadcastManager.getInstance(this)
private val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
updateTileState()
updateTileState(intent.getBooleanExtra(EXTRA_IS_IN_SPLIT_SCREEN, false))
}
}
private var isActive: Boolean = false

override fun onStartListening() {
localBroadcastManager.registerReceiver(receiver, IntentFilter(ACTION_CHECK_SPLIT_SCREEN))
localBroadcastManager.registerReceiver(receiver, IntentFilter(ACTION_SPLIT_SCREEN_CHECKED))
checkSplitScreen()
}

Expand All @@ -30,29 +31,32 @@ class SplitTileService : TileService() {
}

override fun onClick() {
if (!enabled()) {
prompt()
if (enabled()) {
updateTileState(!isActive)
toggleAndCollapse()
} else {
toggle()
updateTileState()
prompt()
}
}

private fun toggle() {
localBroadcastManager.sendBroadcast(Intent(ACTION_TOGGLE_SPLIT_SCREEN))
splitScreen = !splitScreen
private fun toggleAndCollapse() {
startActivityAndCollapse(Intent(this, InvisibleActivity::class.java)
.setAction(ACTION_TOGGLE_SPLIT_SCREEN)
.setFlags(FLAG_ACTIVITY_NEW_TASK))
}

private fun updateTileState() {
private fun updateTileState(active: Boolean) {
isActive = active
qsTile?.apply {
state = if (splitScreen) STATE_ACTIVE else STATE_INACTIVE
label = getString(if (splitScreen) R.string.label_on else R.string.label_off)
state = if (isActive) STATE_ACTIVE else STATE_INACTIVE
label = getString(if (isActive) R.string.label_on else R.string.label_off)
updateTile()
}
}

private fun checkSplitScreen() {
startActivity(Intent(this, InvisibleActivity::class.java)
.setAction(ACTION_CHECK_SPLIT_SCREEN)
.setFlags(FLAG_ACTIVITY_LAUNCH_ADJACENT or FLAG_ACTIVITY_NEW_TASK))
}

Expand All @@ -75,8 +79,4 @@ class SplitTileService : TileService() {
}
.create())
}

companion object {
var splitScreen: Boolean = false
}
}

0 comments on commit 6f14c96

Please sign in to comment.