diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoActivity.kt index e61e558173b4a006349c64a8d7cc8d2deba1ee77..2b5bedf11c1da99dbf5b4da4c10c341a3a74650f 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoActivity.kt @@ -2,9 +2,9 @@ package de.kuschku.quasseldroid.ui.chat.info.channel import android.content.Context import android.content.Intent -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class ChannelInfoActivity : SettingsActivity(ChannelInfoFragment()) { +class ChannelInfoActivity : ServiceBoundSettingsActivity(ChannelInfoFragment()) { companion object { fun launch( context: Context, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoActivity.kt index d26e2b3c90c30a975a3a1e9ea0e6177ec2d0517d..af902b81cac58fe3649e8b171ba15bb7ef4381aa 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoActivity.kt @@ -4,9 +4,9 @@ import android.content.Context import android.content.Intent import de.kuschku.libquassel.protocol.BufferId import de.kuschku.libquassel.protocol.NetworkId -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class UserInfoActivity : SettingsActivity(UserInfoFragment()) { +class UserInfoActivity : ServiceBoundSettingsActivity(UserInfoFragment()) { companion object { fun launch( context: Context, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicActivity.kt index bf935c2e649771db246373d467e47f79d7c36aad..6df8ee88a8d577a591cd9fd93e5b0b9aff1f3beb 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicActivity.kt @@ -2,9 +2,9 @@ package de.kuschku.quasseldroid.ui.chat.topic import android.content.Context import android.content.Intent -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class TopicActivity : SettingsActivity(TopicFragment()) { +class TopicActivity : ServiceBoundSettingsActivity(TopicFragment()) { companion object { fun launch( context: Context, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsActivity.kt index 36831b076818482ea4c2d28cc66ea7675b885781..b42b387099aff1396240646d6806cf51b9d6d3b8 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsActivity.kt @@ -2,31 +2,9 @@ package de.kuschku.quasseldroid.ui.clientsettings.app import android.content.Context import android.content.Intent -import android.view.Menu -import android.view.MenuItem -import de.kuschku.quasseldroid.R -import de.kuschku.quasseldroid.ui.clientsettings.about.AboutSettingsActivity -import de.kuschku.quasseldroid.ui.clientsettings.crash.CrashSettingsActivity import de.kuschku.quasseldroid.util.ui.SettingsActivity class AppSettingsActivity : SettingsActivity(AppSettingsFragment()) { - override fun onCreateOptionsMenu(menu: Menu?): Boolean { - menuInflater.inflate(R.menu.activity_settings, menu) - return super.onCreateOptionsMenu(menu) - } - - override fun onOptionsItemSelected(item: MenuItem?) = when (item?.itemId) { - R.id.action_about -> { - AboutSettingsActivity.launch(this) - true - } - R.id.action_crashes -> { - CrashSettingsActivity.launch(this) - true - } - else -> super.onOptionsItemSelected(item) - } - companion object { fun launch(context: Context) = context.startActivity(intent(context)) fun intent(context: Context) = Intent(context, AppSettingsActivity::class.java) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragment.kt index e734b759a85b82b3de528024650823c4a2864528..db3ce7a5ae26325afacaf56b2625852a6bc05e4c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragment.kt @@ -5,9 +5,14 @@ import android.os.Bundle import android.support.v7.preference.ListPreference import android.support.v7.preference.Preference import android.support.v7.preference.PreferenceGroup +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.settings.AppearanceSettings import de.kuschku.quasseldroid.settings.Settings +import de.kuschku.quasseldroid.ui.clientsettings.about.AboutSettingsActivity +import de.kuschku.quasseldroid.ui.clientsettings.crash.CrashSettingsActivity import de.kuschku.quasseldroid.util.backport.DaggerPreferenceFragmentCompat import javax.inject.Inject @@ -16,6 +21,11 @@ class AppSettingsFragment : DaggerPreferenceFragmentCompat(), @Inject lateinit var appearanceSettings: AppearanceSettings + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setHasOptionsMenu(true) + } + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences, rootKey) } @@ -51,4 +61,21 @@ class AppSettingsFragment : DaggerPreferenceFragmentCompat(), updateSummary(preference) } } + + override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { + inflater?.inflate(R.menu.activity_settings, menu) + super.onCreateOptionsMenu(menu, inflater) + } + + override fun onOptionsItemSelected(item: MenuItem?) = when (item?.itemId) { + R.id.action_about -> { + AboutSettingsActivity.launch(requireContext()) + true + } + R.id.action_crashes -> { + CrashSettingsActivity.launch(requireContext()) + true + } + else -> super.onOptionsItemSelected(item) + } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsFragment.kt index b3e3fff994a7ba74e0fae4628d42bfd7cba5e89f..6d8c9a90b544eacf0f7eabaf3619dde2c79664b5 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsFragment.kt @@ -13,13 +13,13 @@ import butterknife.BindView import butterknife.ButterKnife import com.google.gson.Gson import com.google.gson.GsonBuilder +import dagger.android.support.DaggerFragment import de.kuschku.malheur.data.Report import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.util.helper.fromJson -import de.kuschku.quasseldroid.util.service.ServiceBoundFragment import java.io.File -class CrashSettingsFragment : ServiceBoundFragment() { +class CrashSettingsFragment : DaggerFragment() { @BindView(R.id.list) lateinit var list: RecyclerView @@ -85,7 +85,7 @@ class CrashSettingsFragment : ServiceBoundFragment() { override fun onOptionsItemSelected(item: MenuItem?) = when (item?.itemId) { R.id.action_delete_all -> { - runInBackground { + handler.post { crashDir?.mkdirs() crashDir?.listFiles()?.forEach { it.delete() diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsActivity.kt index e45c520960716deca71ab6e0bc2c6b80292b17e4..604b7ccd90464849a426f1232c78e8bdd1ab96bc 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsActivity.kt @@ -2,9 +2,9 @@ package de.kuschku.quasseldroid.ui.coresettings import android.content.Context import android.content.Intent -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class CoreSettingsActivity : SettingsActivity(CoreSettingsFragment()) { +class CoreSettingsActivity : ServiceBoundSettingsActivity(CoreSettingsFragment()) { companion object { fun launch(context: Context) = context.startActivity(intent(context)) fun intent(context: Context) = Intent(context, CoreSettingsActivity::class.java) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemActivity.kt index 58311483b6f2097985c4ce5a7764ef1baef13c0a..afcb96641f57a6813e70c6f149e1496aa2ed1c2f 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemActivity.kt @@ -3,9 +3,9 @@ package de.kuschku.quasseldroid.ui.coresettings.aliasitem import android.content.Context import android.content.Intent import de.kuschku.libquassel.quassel.syncables.interfaces.IAliasManager -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class AliasItemActivity : SettingsActivity(AliasItemFragment()) { +class AliasItemActivity : ServiceBoundSettingsActivity(AliasItemFragment()) { companion object { fun launch( context: Context, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListActivity.kt index c55e49397c386130fbc9952b60ee3c08898d059c..7c2cfd13510323e3b789f486628634b96ed211b2 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListActivity.kt @@ -2,9 +2,9 @@ package de.kuschku.quasseldroid.ui.coresettings.aliaslist import android.content.Context import android.content.Intent -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class AliasListActivity : SettingsActivity(AliasListFragment()) { +class AliasListActivity : ServiceBoundSettingsActivity(AliasListFragment()) { companion object { fun launch(context: Context) = context.startActivity(intent(context)) fun intent(context: Context) = Intent(context, AliasListActivity::class.java) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistCreateActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistCreateActivity.kt index 9f5c304df3f6609f072f5caba67e147e017d5f8e..af707989f1139d01a51e7162a3af1f550bbe8d75 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistCreateActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistCreateActivity.kt @@ -2,9 +2,9 @@ package de.kuschku.quasseldroid.ui.coresettings.chatlist import android.content.Context import android.content.Intent -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class ChatlistCreateActivity : SettingsActivity(ChatListCreateFragment()) { +class ChatlistCreateActivity : ServiceBoundSettingsActivity(ChatListCreateFragment()) { companion object { fun launch(context: Context) = context.startActivity(intent(context)) fun intent(context: Context) = Intent(context, ChatlistCreateActivity::class.java) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistEditActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistEditActivity.kt index 07d9c196c4a8e3fb21bc98e9029ca54f84f4c729..de92cd964171f5d199bb4f1af426cfd2a4ee8c25 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistEditActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistEditActivity.kt @@ -2,9 +2,9 @@ package de.kuschku.quasseldroid.ui.coresettings.chatlist import android.content.Context import android.content.Intent -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class ChatlistEditActivity : SettingsActivity(ChatListEditFragment()) { +class ChatlistEditActivity : ServiceBoundSettingsActivity(ChatListEditFragment()) { companion object { fun launch( context: Context, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListActivity.kt index cb731e56f7f8bb13215b01604defcc3c0ebdc2ec..0faa06e1fbea584933811ec1dc0b1e50dc34f5b6 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListActivity.kt @@ -2,9 +2,9 @@ package de.kuschku.quasseldroid.ui.coresettings.highlightlist import android.content.Context import android.content.Intent -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class HighlightListActivity : SettingsActivity(HighlightListFragment()) { +class HighlightListActivity : ServiceBoundSettingsActivity(HighlightListFragment()) { companion object { fun launch(context: Context) = context.startActivity(intent(context)) fun intent(context: Context) = Intent(context, HighlightListActivity::class.java) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleActivity.kt index 91d3792c5e2fc339b5886a77458e7d7d7e3470f0..81cb99315f477cfdda8722fc7db752f833280810 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleActivity.kt @@ -3,9 +3,9 @@ package de.kuschku.quasseldroid.ui.coresettings.highlightrule import android.content.Context import android.content.Intent import de.kuschku.libquassel.quassel.syncables.HighlightRuleManager -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class HighlightRuleActivity : SettingsActivity(HighlightRuleFragment()) { +class HighlightRuleActivity : ServiceBoundSettingsActivity(HighlightRuleFragment()) { companion object { fun launch( context: Context, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateActivity.kt index f6a8239a68bf275951393986c4ed48bbeca746e4..715ef4302419dcae02c3bac5d4e5cc917a339907 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateActivity.kt @@ -2,9 +2,9 @@ package de.kuschku.quasseldroid.ui.coresettings.identity import android.content.Context import android.content.Intent -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class IdentityCreateActivity : SettingsActivity(IdentityCreateFragment()) { +class IdentityCreateActivity : ServiceBoundSettingsActivity(IdentityCreateFragment()) { companion object { fun launch(context: Context) = context.startActivity(intent(context)) fun intent(context: Context) = Intent(context, IdentityCreateActivity::class.java) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityEditActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityEditActivity.kt index c9ec38bdb0a7252b793aaa44538408125e322335..e0daff5adfbf7f7799f261777e99cd89b2affc7e 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityEditActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityEditActivity.kt @@ -3,9 +3,9 @@ package de.kuschku.quasseldroid.ui.coresettings.identity import android.content.Context import android.content.Intent import de.kuschku.libquassel.protocol.IdentityId -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class IdentityEditActivity : SettingsActivity(IdentityEditFragment()) { +class IdentityEditActivity : ServiceBoundSettingsActivity(IdentityEditFragment()) { companion object { fun launch( context: Context, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemActivity.kt index b8275b5fd314ada6a5d9b95876c7c36f2bf54e86..ccc615456fdc43406d5d33710cfbd0a32e636608 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemActivity.kt @@ -3,9 +3,9 @@ package de.kuschku.quasseldroid.ui.coresettings.ignoreitem import android.content.Context import android.content.Intent import de.kuschku.libquassel.quassel.syncables.IgnoreListManager -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class IgnoreItemActivity : SettingsActivity(IgnoreItemFragment()) { +class IgnoreItemActivity : ServiceBoundSettingsActivity(IgnoreItemFragment()) { companion object { fun launch( context: Context, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListActivity.kt index 66c55a9b253db1e8f21e4e9bb6a6a949437fbcb7..eec222b119f0b6894a863f05f9fbc02f8d587bd3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListActivity.kt @@ -2,9 +2,9 @@ package de.kuschku.quasseldroid.ui.coresettings.ignorelist import android.content.Context import android.content.Intent -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class IgnoreListActivity : SettingsActivity(IgnoreListFragment()) { +class IgnoreListActivity : ServiceBoundSettingsActivity(IgnoreListFragment()) { companion object { fun launch(context: Context) = context.startActivity(intent(context)) fun intent(context: Context) = Intent(context, IgnoreListActivity::class.java) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkCreateActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkCreateActivity.kt index 25ef7bf72930b924f0d85bd2dd48ef0e01f602d7..daa8c732c025b821719238ce25c4447a8ea5fc98 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkCreateActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkCreateActivity.kt @@ -2,9 +2,9 @@ package de.kuschku.quasseldroid.ui.coresettings.network import android.content.Context import android.content.Intent -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class NetworkCreateActivity : SettingsActivity(NetworkCreateFragment()) { +class NetworkCreateActivity : ServiceBoundSettingsActivity(NetworkCreateFragment()) { companion object { fun launch(context: Context) = context.startActivity(intent(context)) fun intent(context: Context) = Intent(context, NetworkCreateActivity::class.java) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkEditActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkEditActivity.kt index f813c0565c06d86079e38aba3067897ae21710a4..0750a1b73f5afa4739fad2c2984dbba061c90bba 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkEditActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkEditActivity.kt @@ -3,9 +3,9 @@ package de.kuschku.quasseldroid.ui.coresettings.network import android.content.Context import android.content.Intent import de.kuschku.libquassel.protocol.NetworkId -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class NetworkEditActivity : SettingsActivity(NetworkEditFragment()) { +class NetworkEditActivity : ServiceBoundSettingsActivity(NetworkEditFragment()) { companion object { fun launch( context: Context, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigActivity.kt index c7918c176d196053e0d9a6e834bec9e8111bfd15..727bb1d3682420d064e2452cfefc69fb644b22c2 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigActivity.kt @@ -2,9 +2,9 @@ package de.kuschku.quasseldroid.ui.coresettings.networkconfig import android.content.Context import android.content.Intent -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class NetworkConfigActivity : SettingsActivity(NetworkConfigFragment()) { +class NetworkConfigActivity : ServiceBoundSettingsActivity(NetworkConfigFragment()) { companion object { fun launch(context: Context) = context.startActivity(intent(context)) fun intent(context: Context) = Intent(context, NetworkConfigActivity::class.java) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerActivity.kt index 9a9281c6f9ca6bb77e961b83b0104284ee28182c..d9a30d6bf3f0f319f250671f8e67218708aacf44 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerActivity.kt @@ -3,9 +3,9 @@ package de.kuschku.quasseldroid.ui.coresettings.networkserver import android.content.Context import android.content.Intent import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork -import de.kuschku.quasseldroid.util.ui.SettingsActivity +import de.kuschku.quasseldroid.util.ui.ServiceBoundSettingsActivity -class NetworkServerActivity : SettingsActivity(NetworkServerFragment()) { +class NetworkServerActivity : ServiceBoundSettingsActivity(NetworkServerFragment()) { companion object { fun launch( context: Context, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SetupActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SetupActivity.kt index ee6e7bd9d51497fced4a34f455b5626992fd0841..6eee73e76d17dff026d48a13c436d36168df28f6 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SetupActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SetupActivity.kt @@ -10,18 +10,25 @@ import android.support.design.widget.FloatingActionButton import android.support.v4.app.FragmentManager import android.support.v4.app.FragmentStatePagerAdapter import android.support.v4.view.ViewPager +import android.support.v7.widget.ActionMenuView import android.util.SparseArray import android.view.ViewGroup import butterknife.BindView import butterknife.ButterKnife import dagger.android.support.DaggerAppCompatActivity import de.kuschku.quasseldroid.R +import de.kuschku.quasseldroid.ui.clientsettings.about.AboutSettingsActivity +import de.kuschku.quasseldroid.ui.clientsettings.app.AppSettingsActivity +import de.kuschku.quasseldroid.ui.clientsettings.crash.CrashSettingsActivity import de.kuschku.quasseldroid.util.helper.observeSticky import de.kuschku.quasseldroid.util.helper.or import de.kuschku.quasseldroid.util.helper.switchMap import de.kuschku.quasseldroid.util.helper.updateRecentsHeaderIfExisting abstract class SetupActivity : DaggerAppCompatActivity() { + @BindView(R.id.menu_view) + lateinit var menuView: ActionMenuView + @BindView(R.id.view_pager) lateinit var viewPager: ViewPager @@ -80,6 +87,26 @@ abstract class SetupActivity : DaggerAppCompatActivity() { setContentView(R.layout.activity_setup) ButterKnife.bind(this) + menuView.popupTheme = R.style.Widget_PopupOverlay_Light + menuInflater.inflate(R.menu.activity_setup, menuView.menu) + menuView.setOnMenuItemClickListener { + when (it.itemId) { + R.id.action_client_settings -> { + AppSettingsActivity.launch(this) + true + } + R.id.action_crashes -> { + CrashSettingsActivity.launch(this) + true + } + R.id.action_about -> { + AboutSettingsActivity.launch(this) + true + } + else -> false + } + } + adapter = SlidePagerAdapter(supportFragmentManager) fragments.forEach(adapter::addFragment) viewPager.adapter = adapter diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt index 15ee758d74197754502810baf2d11ab2db6d03b8..4365087746c0fb746c02bff2487f7b47e3a7c74a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt @@ -8,32 +8,23 @@ import android.content.SharedPreferences import android.os.Bundle import android.support.annotation.ColorRes import android.support.annotation.DrawableRes -import android.support.v4.app.Fragment -import android.support.v7.app.AppCompatActivity -import dagger.android.AndroidInjection -import dagger.android.AndroidInjector -import dagger.android.DispatchingAndroidInjector -import dagger.android.HasFragmentInjector -import dagger.android.support.HasSupportFragmentInjector import de.kuschku.libquassel.session.Backend import de.kuschku.libquassel.util.Optional import de.kuschku.quasseldroid.Keys import de.kuschku.quasseldroid.R -import de.kuschku.quasseldroid.settings.AppearanceSettings import de.kuschku.quasseldroid.settings.AutoCompleteSettings import de.kuschku.quasseldroid.settings.ConnectionSettings import de.kuschku.quasseldroid.settings.Settings import de.kuschku.quasseldroid.ui.setup.accounts.selection.AccountSelectionActivity import de.kuschku.quasseldroid.util.helper.sharedPreferences import de.kuschku.quasseldroid.util.helper.updateRecentsHeaderIfExisting +import de.kuschku.quasseldroid.util.ui.ThemedActivity import de.kuschku.quasseldroid.viewmodel.QuasselViewModel import io.reactivex.subjects.BehaviorSubject import javax.inject.Inject -abstract class ServiceBoundActivity : AppCompatActivity(), - SharedPreferences.OnSharedPreferenceChangeListener, - HasSupportFragmentInjector, - HasFragmentInjector { +abstract class ServiceBoundActivity : ThemedActivity(), + SharedPreferences.OnSharedPreferenceChangeListener { @DrawableRes protected val icon: Int = R.mipmap.ic_launcher_recents @ColorRes @@ -43,20 +34,6 @@ abstract class ServiceBoundActivity : AppCompatActivity(), protected val backend: BehaviorSubject<Optional<Backend>> get() = connection.backend - @Inject - lateinit var supportFragmentInjector: DispatchingAndroidInjector<Fragment> - - @Inject - lateinit var frameworkFragmentInjector: DispatchingAndroidInjector<android.app.Fragment> - - override fun supportFragmentInjector(): AndroidInjector<Fragment>? { - return supportFragmentInjector - } - - override fun fragmentInjector(): AndroidInjector<android.app.Fragment>? { - return frameworkFragmentInjector - } - protected fun runInBackground(f: () -> Unit) { connection.backend.value.ifPresent { it.sessionManager().handlerService.backend(f) @@ -69,9 +46,6 @@ abstract class ServiceBoundActivity : AppCompatActivity(), } } - @Inject - lateinit var appearanceSettings: AppearanceSettings - @Inject lateinit var autoCompleteSettings: AutoCompleteSettings @@ -85,10 +59,8 @@ abstract class ServiceBoundActivity : AppCompatActivity(), private var startedSelection = false override fun onCreate(savedInstanceState: Bundle?) { - AndroidInjection.inject(this) connection.context = this checkConnection() - setTheme(appearanceSettings.theme.style) super.onCreate(savedInstanceState) viewModel = ViewModelProviders.of(this)[QuasselViewModel::class.java] viewModel.backendWrapper.onNext(this.backend) diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/ServiceBoundSettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ServiceBoundSettingsActivity.kt new file mode 100644 index 0000000000000000000000000000000000000000..30d15503794497d7a5707efa29b623c648d1c505 --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ServiceBoundSettingsActivity.kt @@ -0,0 +1,79 @@ +package de.kuschku.quasseldroid.util.ui + +import android.os.Bundle +import android.support.v4.app.Fragment +import android.support.v7.widget.Toolbar +import android.view.MenuItem +import butterknife.BindView +import butterknife.ButterKnife +import com.afollestad.materialdialogs.MaterialDialog +import de.kuschku.quasseldroid.R +import de.kuschku.quasseldroid.ui.coresettings.SettingsFragment +import de.kuschku.quasseldroid.util.service.ServiceBoundActivity + +abstract class ServiceBoundSettingsActivity(private val fragment: Fragment? = null) : + ServiceBoundActivity() { + protected open fun fragment(): Fragment? = null + + private var changeable: SettingsFragment.Changeable? = null + + @BindView(R.id.toolbar) + lateinit var toolbar: Toolbar + + override fun onCreate(savedInstanceState: Bundle?) { + val arguments = intent.extras + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_settings) + ButterKnife.bind(this) + + setSupportActionBar(toolbar) + supportActionBar?.setDisplayHomeAsUpEnabled(true) + + val fragment = this.fragment ?: this.fragment() + if (fragment != null) { + val transaction = supportFragmentManager.beginTransaction() + fragment.arguments = arguments + transaction.replace(R.id.fragment_container, fragment) + transaction.commit() + } + + this.changeable = fragment as? SettingsFragment.Changeable + } + + private fun shouldNavigateAway(callback: () -> Unit) { + val changeable = this.changeable + if (changeable?.hasChanged() == true) { + MaterialDialog.Builder(this) + .content(R.string.cancel_confirmation) + .positiveText(R.string.label_yes) + .negativeText(R.string.label_no) + .negativeColorAttr(R.attr.colorTextPrimary) + .backgroundColorAttr(R.attr.colorBackgroundCard) + .contentColorAttr(R.attr.colorTextPrimary) + .onPositive { _, _ -> + callback() + } + .build() + .show() + } else callback() + } + + override fun onBackPressed() = shouldNavigateAway { + super.onBackPressed() + } + + override fun onOptionsItemSelected(item: MenuItem?) = when (item?.itemId) { + android.R.id.home -> { + shouldNavigateAway { + if (supportParentActivityIntent != null) { + startActivity(supportParentActivityIntent) + finish() + } else { + super.onBackPressed() + } + } + true + } + else -> super.onOptionsItemSelected(item) + } +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/SettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/SettingsActivity.kt index 9f52b3f5cb16e0b59eea1e9c45502de9d4732684..e2883e884032813b0b321b0a7685b2ffb7ea452c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/SettingsActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/SettingsActivity.kt @@ -9,9 +9,8 @@ import butterknife.ButterKnife import com.afollestad.materialdialogs.MaterialDialog import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.ui.coresettings.SettingsFragment -import de.kuschku.quasseldroid.util.service.ServiceBoundActivity -abstract class SettingsActivity(private val fragment: Fragment? = null) : ServiceBoundActivity() { +abstract class SettingsActivity(private val fragment: Fragment? = null) : ThemedActivity() { protected open fun fragment(): Fragment? = null private var changeable: SettingsFragment.Changeable? = null diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/ThemedActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ThemedActivity.kt new file mode 100644 index 0000000000000000000000000000000000000000..b61af035a80772bb90ddb438a913cc01464a32b3 --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ThemedActivity.kt @@ -0,0 +1,38 @@ +package de.kuschku.quasseldroid.util.ui + +import android.os.Bundle +import android.support.v4.app.Fragment +import android.support.v7.app.AppCompatActivity +import dagger.android.AndroidInjection +import dagger.android.AndroidInjector +import dagger.android.DispatchingAndroidInjector +import dagger.android.HasFragmentInjector +import dagger.android.support.HasSupportFragmentInjector +import de.kuschku.quasseldroid.settings.AppearanceSettings +import javax.inject.Inject + +abstract class ThemedActivity : AppCompatActivity(), HasSupportFragmentInjector, + HasFragmentInjector { + @Inject + lateinit var supportFragmentInjector: DispatchingAndroidInjector<Fragment> + + @Inject + lateinit var frameworkFragmentInjector: DispatchingAndroidInjector<android.app.Fragment> + + @Inject + lateinit var appearanceSettings: AppearanceSettings + + override fun onCreate(savedInstanceState: Bundle?) { + AndroidInjection.inject(this) + setTheme(appearanceSettings.theme.style) + super.onCreate(savedInstanceState) + } + + override fun supportFragmentInjector(): AndroidInjector<Fragment>? { + return supportFragmentInjector + } + + override fun fragmentInjector(): AndroidInjector<android.app.Fragment>? { + return frameworkFragmentInjector + } +} diff --git a/app/src/main/res/layout-sw600dp-land/activity_setup.xml b/app/src/main/res/layout-sw600dp-land/activity_setup.xml index 31d62bdced3be5447bcd61be2e634003fa3c0cef..695362d646c77563bc9093ebee968c828fa54e0a 100644 --- a/app/src/main/res/layout-sw600dp-land/activity_setup.xml +++ b/app/src/main/res/layout-sw600dp-land/activity_setup.xml @@ -9,6 +9,13 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> + <android.support.v7.widget.ActionMenuView + android:id="@+id/menu_view" + android:layout_width="?actionBarSize" + android:layout_height="?actionBarSize" + android:layout_gravity="end|top" + android:theme="?attr/actionBarTheme" /> + <android.support.design.widget.FloatingActionButton android:id="@+id/next_button" android:layout_width="wrap_content" diff --git a/app/src/main/res/layout-sw600dp/activity_setup.xml b/app/src/main/res/layout-sw600dp/activity_setup.xml index 31d62bdced3be5447bcd61be2e634003fa3c0cef..695362d646c77563bc9093ebee968c828fa54e0a 100644 --- a/app/src/main/res/layout-sw600dp/activity_setup.xml +++ b/app/src/main/res/layout-sw600dp/activity_setup.xml @@ -9,6 +9,13 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> + <android.support.v7.widget.ActionMenuView + android:id="@+id/menu_view" + android:layout_width="?actionBarSize" + android:layout_height="?actionBarSize" + android:layout_gravity="end|top" + android:theme="?attr/actionBarTheme" /> + <android.support.design.widget.FloatingActionButton android:id="@+id/next_button" android:layout_width="wrap_content" diff --git a/app/src/main/res/layout/activity_setup.xml b/app/src/main/res/layout/activity_setup.xml index a0a74dc86be303ce563739282ede233f79587ee3..6d982518a49ae6b65db82cf391e19bdf0ba2e8a0 100644 --- a/app/src/main/res/layout/activity_setup.xml +++ b/app/src/main/res/layout/activity_setup.xml @@ -9,6 +9,13 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> + <android.support.v7.widget.ActionMenuView + android:id="@+id/menu_view" + android:layout_width="?actionBarSize" + android:layout_height="?actionBarSize" + android:layout_gravity="end|top" + android:theme="?attr/actionBarTheme" /> + <android.support.design.widget.FloatingActionButton android:id="@+id/next_button" android:layout_width="wrap_content" diff --git a/app/src/main/res/menu/activity_setup.xml b/app/src/main/res/menu/activity_setup.xml new file mode 100644 index 0000000000000000000000000000000000000000..8e26096afb2525a70d1c0e63d1fc22ce004ee7aa --- /dev/null +++ b/app/src/main/res/menu/activity_setup.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/action_client_settings" + android:title="@string/label_settings_client" /> + <item + android:id="@+id/action_crashes" + android:title="@string/label_crashes" /> + <item + android:id="@+id/action_about" + android:title="@string/label_about" /> +</menu> diff --git a/app/src/main/res/values/themes_base.xml b/app/src/main/res/values/themes_base.xml index 90530c4b2c333b78a7c68d1a4cccb9310b14342d..81a56512efe29de80e3f9626e7ceae3d63b81ef4 100644 --- a/app/src/main/res/values/themes_base.xml +++ b/app/src/main/res/values/themes_base.xml @@ -38,7 +38,10 @@ <style name="Theme.Base.ChatTheme.Light" parent="Theme.AppTheme.Light.NoActionBar" /> - <style name="Theme.SetupTheme" parent="Theme.AppTheme.Light.NoActionBar" /> + <style name="Theme.SetupTheme" parent="Theme.AppTheme.Light.NoActionBar"> + <item name="actionBarTheme">@style/Widget.AppBarOverlay</item> + <item name="actionBarPopupTheme">@style/Widget.PopupOverlay.Light</item> + </style> <style name="Theme.SplashTheme" parent="Theme.AppTheme.Light.NoActionBar"> <item name="android:windowBackground">@drawable/bg_splash</item>