mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-20 13:33:13 -07:00
Android Wakeup Dialog
This commit is contained in:
parent
ec569b5d71
commit
83777c4fa4
6 changed files with 55 additions and 32 deletions
|
@ -18,31 +18,30 @@
|
||||||
package com.metallic.chiaki.main
|
package com.metallic.chiaki.main
|
||||||
|
|
||||||
import android.app.ActivityOptions
|
import android.app.ActivityOptions
|
||||||
|
import android.app.AlertDialog
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import android.view.animation.AnimationUtils
|
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import androidx.lifecycle.ViewModelProviders
|
import androidx.lifecycle.ViewModelProviders
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.metallic.chiaki.R
|
import com.metallic.chiaki.R
|
||||||
import com.metallic.chiaki.TestStartActivity
|
import com.metallic.chiaki.TestStartActivity
|
||||||
import com.metallic.chiaki.common.DiscoveredDisplayHost
|
import com.metallic.chiaki.common.DiscoveredDisplayHost
|
||||||
import com.metallic.chiaki.common.DisplayHost
|
import com.metallic.chiaki.common.DisplayHost
|
||||||
import com.metallic.chiaki.common.Preferences
|
import com.metallic.chiaki.common.Preferences
|
||||||
import com.metallic.chiaki.common.ext.RevealActivity
|
|
||||||
import com.metallic.chiaki.common.ext.putRevealExtra
|
import com.metallic.chiaki.common.ext.putRevealExtra
|
||||||
import com.metallic.chiaki.common.getDatabase
|
|
||||||
import com.metallic.chiaki.common.ext.viewModelFactory
|
import com.metallic.chiaki.common.ext.viewModelFactory
|
||||||
|
import com.metallic.chiaki.common.getDatabase
|
||||||
import com.metallic.chiaki.lib.ConnectInfo
|
import com.metallic.chiaki.lib.ConnectInfo
|
||||||
import com.metallic.chiaki.lib.DiscoveryHost
|
import com.metallic.chiaki.lib.DiscoveryHost
|
||||||
|
import com.metallic.chiaki.lib.RegistEventSuccess
|
||||||
import com.metallic.chiaki.regist.RegistActivity
|
import com.metallic.chiaki.regist.RegistActivity
|
||||||
import com.metallic.chiaki.settings.SettingsActivity
|
import com.metallic.chiaki.settings.SettingsActivity
|
||||||
import com.metallic.chiaki.stream.StreamActivity
|
import com.metallic.chiaki.stream.StreamActivity
|
||||||
import io.reactivex.disposables.CompositeDisposable
|
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
import kotlinx.android.synthetic.main.activity_main.*
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity()
|
class MainActivity : AppCompatActivity()
|
||||||
|
@ -173,23 +172,38 @@ class MainActivity : AppCompatActivity()
|
||||||
val registeredHost = host.registeredHost
|
val registeredHost = host.registeredHost
|
||||||
if(registeredHost != null)
|
if(registeredHost != null)
|
||||||
{
|
{
|
||||||
if(host is DiscoveredDisplayHost && host.discoveredHost.state == DiscoveryHost.State.STANDBY)
|
fun connect() {
|
||||||
{
|
|
||||||
// TODO: show AlertDialog
|
|
||||||
viewModel.discoveryManager.sendWakeup(host.host, registeredHost.rpRegistKey)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
val connectInfo = ConnectInfo(host.host, registeredHost.rpRegistKey, registeredHost.rpKey, Preferences(this).videoProfile)
|
val connectInfo = ConnectInfo(host.host, registeredHost.rpRegistKey, registeredHost.rpKey, Preferences(this).videoProfile)
|
||||||
Intent(this, StreamActivity::class.java).let {
|
Intent(this, StreamActivity::class.java).let {
|
||||||
it.putExtra(StreamActivity.EXTRA_CONNECT_INFO, connectInfo)
|
it.putExtra(StreamActivity.EXTRA_CONNECT_INFO, connectInfo)
|
||||||
startActivity(it)
|
startActivity(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(host is DiscoveredDisplayHost && host.discoveredHost.state == DiscoveryHost.State.STANDBY)
|
||||||
|
{
|
||||||
|
MaterialAlertDialogBuilder(this)
|
||||||
|
.setMessage(R.string.alert_message_standby_wakeup)
|
||||||
|
.setPositiveButton(R.string.action_wakeup) { _, _ ->
|
||||||
|
viewModel.discoveryManager.sendWakeup(host.host, registeredHost.rpRegistKey)
|
||||||
|
}
|
||||||
|
.setNeutralButton(R.string.action_connect_immediately) { _, _ ->
|
||||||
|
connect()
|
||||||
|
}
|
||||||
|
.setNegativeButton(R.string.action_connect_cancel_connect) { _, _ -> }
|
||||||
|
.create()
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
else
|
||||||
|
connect()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// TODO: show registration
|
Intent(this, RegistActivity::class.java).let {
|
||||||
|
it.putExtra(RegistActivity.EXTRA_HOST, host.host)
|
||||||
|
it.putExtra(RegistActivity.EXTRA_BROADCAST, false)
|
||||||
|
startActivity(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,7 @@ class RegistActivity: AppCompatActivity(), RevealActivity
|
||||||
|
|
||||||
viewModel.ps4Version.observe(this, Observer {
|
viewModel.ps4Version.observe(this, Observer {
|
||||||
psnAccountIdHelpGroup.visibility = if(it == RegistViewModel.PS4Version.GE_7) View.VISIBLE else View.GONE
|
psnAccountIdHelpGroup.visibility = if(it == RegistViewModel.PS4Version.GE_7) View.VISIBLE else View.GONE
|
||||||
psnIdTextInputLayout.hint = getString(when(it)
|
psnIdTextInputLayout.hint = getString(when(it!!)
|
||||||
{
|
{
|
||||||
RegistViewModel.PS4Version.GE_7 -> R.string.hint_regist_psn_account_id
|
RegistViewModel.PS4Version.GE_7 -> R.string.hint_regist_psn_account_id
|
||||||
RegistViewModel.PS4Version.LT_7 -> R.string.hint_regist_psn_online_id
|
RegistViewModel.PS4Version.LT_7 -> R.string.hint_regist_psn_online_id
|
||||||
|
|
|
@ -18,15 +18,15 @@
|
||||||
package com.metallic.chiaki.regist
|
package com.metallic.chiaki.regist
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.app.AlertDialog
|
|
||||||
import android.content.DialogInterface
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.method.ScrollingMovementMethod
|
import android.text.method.ScrollingMovementMethod
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import androidx.lifecycle.ViewModelProviders
|
import androidx.lifecycle.ViewModelProviders
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.metallic.chiaki.R
|
import com.metallic.chiaki.R
|
||||||
import com.metallic.chiaki.common.MacAddress
|
import com.metallic.chiaki.common.MacAddress
|
||||||
import com.metallic.chiaki.common.ext.viewModelFactory
|
import com.metallic.chiaki.common.ext.viewModelFactory
|
||||||
|
@ -55,6 +55,9 @@ class RegistExecuteActivity: AppCompatActivity()
|
||||||
.of(this, viewModelFactory { RegistExecuteViewModel(getDatabase(this)) })
|
.of(this, viewModelFactory { RegistExecuteViewModel(getDatabase(this)) })
|
||||||
.get(RegistExecuteViewModel::class.java)
|
.get(RegistExecuteViewModel::class.java)
|
||||||
|
|
||||||
|
showDuplicateDialog()
|
||||||
|
return
|
||||||
|
|
||||||
logTextView.setHorizontallyScrolling(true)
|
logTextView.setHorizontallyScrolling(true)
|
||||||
logTextView.movementMethod = ScrollingMovementMethod()
|
logTextView.movementMethod = ScrollingMovementMethod()
|
||||||
viewModel.logText.observe(this, Observer {
|
viewModel.logText.observe(this, Observer {
|
||||||
|
@ -123,7 +126,7 @@ class RegistExecuteActivity: AppCompatActivity()
|
||||||
|
|
||||||
val macStr = viewModel.host?.ps4Mac?.let { MacAddress(it).toString() } ?: ""
|
val macStr = viewModel.host?.ps4Mac?.let { MacAddress(it).toString() } ?: ""
|
||||||
|
|
||||||
dialog = AlertDialog.Builder(this)
|
dialog = MaterialAlertDialogBuilder(this)
|
||||||
.setMessage(getString(R.string.alert_regist_duplicate, macStr))
|
.setMessage(getString(R.string.alert_regist_duplicate, macStr))
|
||||||
.setNegativeButton(R.string.action_regist_discard) { _, _ -> }
|
.setNegativeButton(R.string.action_regist_discard) { _, _ -> }
|
||||||
.setPositiveButton(R.string.action_regist_overwrite) { _, _ ->
|
.setPositiveButton(R.string.action_regist_overwrite) { _, _ ->
|
||||||
|
|
|
@ -30,6 +30,7 @@ import android.widget.EditText
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.*
|
import androidx.lifecycle.*
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.metallic.chiaki.*
|
import com.metallic.chiaki.*
|
||||||
import com.metallic.chiaki.R
|
import com.metallic.chiaki.R
|
||||||
import com.metallic.chiaki.lib.ConnectInfo
|
import com.metallic.chiaki.lib.ConnectInfo
|
||||||
|
@ -142,7 +143,7 @@ class StreamActivity : AppCompatActivity()
|
||||||
{
|
{
|
||||||
dialog?.dismiss()
|
dialog?.dismiss()
|
||||||
val reasonStr = state.reasonString
|
val reasonStr = state.reasonString
|
||||||
val dialog = AlertDialog.Builder(this)
|
val dialog = MaterialAlertDialogBuilder(this)
|
||||||
.setMessage(getString(R.string.alert_message_session_quit, state.reason.toString())
|
.setMessage(getString(R.string.alert_message_session_quit, state.reason.toString())
|
||||||
+ (if(reasonStr != null) "\n$reasonStr" else ""))
|
+ (if(reasonStr != null) "\n$reasonStr" else ""))
|
||||||
.setPositiveButton(R.string.action_reconnect) { _, _ ->
|
.setPositiveButton(R.string.action_reconnect) { _, _ ->
|
||||||
|
@ -168,7 +169,7 @@ class StreamActivity : AppCompatActivity()
|
||||||
if(dialogContents != CreateErrorDialog)
|
if(dialogContents != CreateErrorDialog)
|
||||||
{
|
{
|
||||||
dialog?.dismiss()
|
dialog?.dismiss()
|
||||||
val dialog = AlertDialog.Builder(this)
|
val dialog = MaterialAlertDialogBuilder(this)
|
||||||
.setMessage(getString(R.string.alert_message_session_create_error, state.error.errorCode.toString()))
|
.setMessage(getString(R.string.alert_message_session_create_error, state.error.errorCode.toString()))
|
||||||
.setOnDismissListener {
|
.setOnDismissListener {
|
||||||
dialog = null
|
dialog = null
|
||||||
|
@ -190,7 +191,7 @@ class StreamActivity : AppCompatActivity()
|
||||||
val view = layoutInflater.inflate(R.layout.dialog_login_pin, null)
|
val view = layoutInflater.inflate(R.layout.dialog_login_pin, null)
|
||||||
val pinEditText = view.findViewById<EditText>(R.id.pinEditText)
|
val pinEditText = view.findViewById<EditText>(R.id.pinEditText)
|
||||||
|
|
||||||
val dialog = AlertDialog.Builder(this)
|
val dialog = MaterialAlertDialogBuilder(this)
|
||||||
.setMessage(
|
.setMessage(
|
||||||
if(state.pinIncorrect)
|
if(state.pinIncorrect)
|
||||||
R.string.alert_message_login_pin_request_incorrect
|
R.string.alert_message_login_pin_request_incorrect
|
||||||
|
|
|
@ -8,6 +8,9 @@
|
||||||
<string name="alert_message_login_pin_request">Login PIN:</string>
|
<string name="alert_message_login_pin_request">Login PIN:</string>
|
||||||
<string name="alert_message_login_pin_request_incorrect">Entered PIN was incorrect!\nLogin PIN:</string>
|
<string name="alert_message_login_pin_request_incorrect">Entered PIN was incorrect!\nLogin PIN:</string>
|
||||||
<string name="action_reconnect">Reconnect</string>
|
<string name="action_reconnect">Reconnect</string>
|
||||||
|
<string name="action_wakeup">Wakeup</string>
|
||||||
|
<string name="action_connect_immediately">Connect</string>
|
||||||
|
<string name="action_connect_cancel_connect">Cancel</string>
|
||||||
<string name="action_quit_session">Quit</string>
|
<string name="action_quit_session">Quit</string>
|
||||||
<string name="action_login_pin_connect">Connect</string>
|
<string name="action_login_pin_connect">Connect</string>
|
||||||
<string name="action_settings">Settings</string>
|
<string name="action_settings">Settings</string>
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
<item name="colorOnSecondary">#000000</item>
|
<item name="colorOnSecondary">#000000</item>
|
||||||
<item name="android:statusBarColor">?attr/colorPrimarySurface</item>
|
<item name="android:statusBarColor">?attr/colorPrimarySurface</item>
|
||||||
<item name="android:navigationBarColor">?attr/colorPrimarySurface</item>
|
<item name="android:navigationBarColor">?attr/colorPrimarySurface</item>
|
||||||
|
<item name="materialAlertDialogTheme">@style/AppTheme.AlertDialog</item>
|
||||||
|
|
||||||
<item name="android:windowActivityTransitions">true</item>
|
<item name="android:windowActivityTransitions">true</item>
|
||||||
</style>
|
</style>
|
||||||
|
@ -22,6 +23,15 @@
|
||||||
<item name="android:textColor">@color/floating_action_button_speed_dial_tint</item>
|
<item name="android:textColor">@color/floating_action_button_speed_dial_tint</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="AppTheme.AlertDialog" parent="Theme.MaterialComponents.Dialog.Alert">
|
||||||
|
<item name="android:textColorPrimary">@android:color/primary_text_dark</item>
|
||||||
|
<item name="materialButtonStyle">@style/AppTheme.AlertDialog.Button</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="AppTheme.AlertDialog.Button" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
|
||||||
|
<item name="android:textColor">@color/accent</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="MageTheme" parent="Theme.MaterialComponents.NoActionBar">
|
<style name="MageTheme" parent="Theme.MaterialComponents.NoActionBar">
|
||||||
<item name="colorPrimary">@color/primary</item>
|
<item name="colorPrimary">@color/primary</item>
|
||||||
<item name="colorPrimaryDark">@color/primary_dark</item>
|
<item name="colorPrimaryDark">@color/primary_dark</item>
|
||||||
|
@ -48,7 +58,7 @@
|
||||||
<item name="android:windowActivityTransitions">true</item>
|
<item name="android:windowActivityTransitions">true</item>
|
||||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||||
|
|
||||||
<item name="android:alertDialogTheme">@style/MageTheme.AlertDialog</item>
|
-<item name="materialAlertDialogTheme">@style/AppTheme.AlertDialog</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="MageTheme.Translucent" parent="MageTheme">
|
<style name="MageTheme.Translucent" parent="MageTheme">
|
||||||
|
@ -59,15 +69,6 @@
|
||||||
<item name="fontFamily">sans-serif-condensed-light</item>
|
<item name="fontFamily">sans-serif-condensed-light</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="MageTheme.AlertDialog" parent="Theme.MaterialComponents.Dialog.Alert">
|
|
||||||
<item name="android:textColorPrimary">@android:color/primary_text_light</item>
|
|
||||||
<item name="materialButtonStyle">@style/MageTheme.AlertDialog.Button</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="MageTheme.AlertDialog.Button" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
|
|
||||||
<item name="android:textColor">@color/accent</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="MageTheme.TextInputStyle" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
|
<style name="MageTheme.TextInputStyle" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
|
||||||
<item name="hintTextColor">?attr/colorAccent</item>
|
<item name="hintTextColor">?attr/colorAccent</item>
|
||||||
<item name="boxCornerRadiusTopStart">16dp</item>
|
<item name="boxCornerRadiusTopStart">16dp</item>
|
||||||
|
@ -87,10 +88,11 @@
|
||||||
<item name="android:textColor">?attr/colorOnSecondary</item>
|
<item name="android:textColor">?attr/colorOnSecondary</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="StreamTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
<style name="StreamTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
|
||||||
<item name="colorPrimary">@color/primary</item>
|
<item name="colorPrimary">@color/primary</item>
|
||||||
<item name="colorPrimaryDark">@color/primary_dark</item>
|
<item name="colorPrimaryDark">@color/primary_dark</item>
|
||||||
<item name="colorAccent">@color/accent</item>
|
<item name="colorAccent">@color/accent</item>
|
||||||
|
<item name="materialAlertDialogTheme">@style/AppTheme.AlertDialog</item>
|
||||||
<item name="android:windowBackground">@color/stream_background</item>
|
<item name="android:windowBackground">@color/stream_background</item>
|
||||||
</style>
|
</style>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue