From fe5b929c20bf7158d3a1bbb8e68ae57953409d4c Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sun, 15 Apr 2018 18:03:26 +0200 Subject: [PATCH] Further cleaned up code --- .../quasseldroid/service/AsyncBackend.kt | 47 ++++++++++++++++ .../quasseldroid/service/QuasselBinder.kt | 6 ++ .../quasseldroid/service/QuasselService.kt | 55 ++++++------------- .../quasseldroid/ui/chat/ChatActivity.kt | 26 ++++++++- .../quasseldroid/ui/chat/ToolbarFragment.kt | 13 ++--- .../chat/info/channel/ChannelInfoActivity.kt | 22 +++++++- .../chat/info/channel/ChannelInfoFragment.kt | 5 +- .../ui/chat/info/user/UserInfoActivity.kt | 35 +++++++++++- .../ui/chat/info/user/UserInfoFragment.kt | 13 +---- .../ui/chat/messages/MessageListFragment.kt | 5 +- .../ui/chat/nicks/NickListFragment.kt | 24 ++++---- .../ui/chat/topic/TopicActivity.kt | 19 ++++++- .../about/AboutSettingsActivity.kt | 9 ++- .../ui/clientsettings/about/LibraryAdapter.kt | 10 ++-- .../clientsettings/app/AppSettingsActivity.kt | 12 +++- .../crash/CrashSettingsActivity.kt | 9 ++- .../license/LicenseSettingsActivity.kt | 22 +++++++- .../ui/coresettings/CoreSettingsActivity.kt | 9 ++- .../ui/coresettings/CoreSettingsFragment.kt | 13 ++--- .../coresettings/chatlist/ChatListActivity.kt | 18 +++++- .../coresettings/identity/IdentityActivity.kt | 19 ++++++- .../ignoreitem/IgnoreItemActivity.kt | 21 ++++++- .../ignorelist/IgnoreListActivity.kt | 9 ++- .../ignorelist/IgnoreListFragment.kt | 7 +-- .../networkconfig/NetworkConfigActivity.kt | 9 ++- .../accounts/edit/AccountEditActivity.kt | 15 +++++ .../selection/AccountSelectionActivity.kt | 4 ++ .../selection/AccountSelectionSlide.kt | 8 +-- .../accounts/setup/AccountSetupActivity.kt | 7 +++ .../util/QuasseldroidNotificationManager.kt | 20 ++++--- .../util/service/BackendServiceConnection.kt | 11 ++-- .../util/service/ServiceBoundActivity.kt | 4 +- 32 files changed, 370 insertions(+), 136 deletions(-) create mode 100644 app/src/main/java/de/kuschku/quasseldroid/service/AsyncBackend.kt create mode 100644 app/src/main/java/de/kuschku/quasseldroid/service/QuasselBinder.kt diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/AsyncBackend.kt b/app/src/main/java/de/kuschku/quasseldroid/service/AsyncBackend.kt new file mode 100644 index 000000000..c14d45288 --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid/service/AsyncBackend.kt @@ -0,0 +1,47 @@ +package de.kuschku.quasseldroid.service + +import de.kuschku.libquassel.session.Backend +import de.kuschku.libquassel.session.SocketAddress +import de.kuschku.libquassel.util.compatibility.HandlerService + +class AsyncBackend( + private val handler: HandlerService, + private val backend: Backend, + private val disconnectCallback: () -> Unit +) : Backend { + override fun updateUserDataAndLogin(user: String, pass: String) { + handler.backend { + backend.updateUserDataAndLogin(user, pass) + } + } + + override fun connectUnlessConnected(address: SocketAddress, user: String, pass: String, + reconnect: Boolean) { + handler.backend { + backend.connectUnlessConnected(address, user, pass, reconnect) + } + } + + override fun connect(address: SocketAddress, user: String, pass: String, reconnect: Boolean) { + handler.backend { + backend.connect(address, user, pass, reconnect) + } + } + + override fun reconnect() { + handler.backend { + backend.reconnect() + } + } + + override fun disconnect(forever: Boolean) { + handler.backend { + backend.disconnect(forever) + if (forever) { + disconnectCallback + } + } + } + + override fun sessionManager() = backend.sessionManager() +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselBinder.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselBinder.kt new file mode 100644 index 000000000..ce82ee702 --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselBinder.kt @@ -0,0 +1,6 @@ +package de.kuschku.quasseldroid.service + +import android.os.Binder +import de.kuschku.libquassel.session.Backend + +class QuasselBinder(val backend: Backend) : Binder() diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt index a85ad2860..f309458b0 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt @@ -4,7 +4,6 @@ import android.annotation.SuppressLint import android.arch.lifecycle.Observer import android.content.* import android.net.ConnectivityManager -import android.os.Binder import de.kuschku.libquassel.protocol.ClientData import de.kuschku.libquassel.protocol.Protocol import de.kuschku.libquassel.protocol.Protocol_Feature @@ -206,43 +205,7 @@ class QuasselService : DaggerLifecycleService(), private val handlerService = AndroidHandlerService() - private val asyncBackend = object : Backend { - override fun updateUserDataAndLogin(user: String, pass: String) { - handlerService.backend { - backendImplementation.updateUserDataAndLogin(user, pass) - } - } - - override fun connectUnlessConnected(address: SocketAddress, user: String, pass: String, - reconnect: Boolean) { - handlerService.backend { - backendImplementation.connectUnlessConnected(address, user, pass, reconnect) - } - } - - override fun connect(address: SocketAddress, user: String, pass: String, reconnect: Boolean) { - handlerService.backend { - backendImplementation.connect(address, user, pass, reconnect) - } - } - - override fun reconnect() { - handlerService.backend { - backendImplementation.reconnect() - } - } - - override fun disconnect(forever: Boolean) { - handlerService.backend { - backendImplementation.disconnect(forever) - if (forever) { - stopSelf() - } - } - } - - override fun sessionManager() = backendImplementation.sessionManager() - } + private val asyncBackend = AsyncBackend(handlerService, backendImplementation, ::stopSelf) @Inject lateinit var database: QuasselDatabase @@ -350,5 +313,19 @@ class QuasselService : DaggerLifecycleService(), return QuasselBinder(asyncBackend) } - class QuasselBinder(val backend: Backend) : Binder() + companion object { + fun launch( + context: Context, + disconnect: Boolean? = null + ) = context.startService(intent(context, disconnect)) + + fun intent( + context: Context, + disconnect: Boolean? = null + ) = Intent(context, QuasselService::class.java).apply { + if (disconnect != null) { + putExtra("disconnect", disconnect) + } + } + } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt index 67b2adf82..d6ca32c1c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt @@ -406,11 +406,11 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc true } R.id.action_core_settings -> { - startActivity(Intent(this, CoreSettingsActivity::class.java)) + CoreSettingsActivity.launch(this) true } R.id.action_client_settings -> { - startActivity(Intent(this, AppSettingsActivity::class.java)) + AppSettingsActivity.launch(this) true } R.id.action_disconnect -> { @@ -439,4 +439,26 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc putBoolean(Keys.Status.reconnect, false) } } + + companion object { + fun launch( + context: Context, + sharedText: CharSequence? = null, + bufferId: Int? = null + ) = context.startActivity(intent(context, sharedText, bufferId)) + + fun intent( + context: Context, + sharedText: CharSequence? = null, + bufferId: Int? = null + ) = Intent(context, ChatActivity::class.java).apply { + if (sharedText != null) { + type = "text/plain" + putExtra(Intent.EXTRA_TEXT, sharedText) + } + if (bufferId != null) { + putExtra("bufferId", bufferId) + } + } + } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt index 68e1d88b3..845049650 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt @@ -1,7 +1,6 @@ package de.kuschku.quasseldroid.ui.chat import android.arch.lifecycle.Observer -import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -100,16 +99,12 @@ class ToolbarFragment : ServiceBoundFragment() { viewModel.bufferData.value?.info?.let { info -> when (info.type.toInt()) { BufferInfo.Type.QueryBuffer.toInt() -> { - val intent = Intent(requireContext(), UserInfoActivity::class.java) - intent.putExtra("bufferId", info.bufferId) - intent.putExtra("openBuffer", true) - startActivity(intent) + UserInfoActivity.launch(requireContext(), bufferId = info.bufferId, openBuffer = true) } BufferInfo.Type.ChannelBuffer.toInt() -> { - val intent = Intent(requireContext(), ChannelInfoActivity::class.java) - intent.putExtra("bufferId", info.bufferId) - intent.putExtra("openBuffer", true) - startActivity(intent) + ChannelInfoActivity.launch(requireContext(), + bufferId = info.bufferId, + openBuffer = true) } else -> null } 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 c64c7f762..8904d4ae1 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 @@ -1,5 +1,25 @@ package de.kuschku.quasseldroid.ui.chat.info.channel +import android.content.Context +import android.content.Intent import de.kuschku.quasseldroid.util.ui.SettingsActivity -class ChannelInfoActivity : SettingsActivity(ChannelInfoFragment()) +class ChannelInfoActivity : SettingsActivity(ChannelInfoFragment()) { + companion object { + fun launch( + context: Context, + openBuffer: Boolean, + bufferId: Int + ) = context.startActivity(intent(context, openBuffer, bufferId)) + + fun intent( + context: Context, + openBuffer: Boolean, + bufferId: Int + ) = Intent(context, ChannelInfoActivity::class.java).apply { + putExtra("bufferId", bufferId) + putExtra("openBuffer", openBuffer) + } + } +} + diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragment.kt index 26c968fe7..87b4a5f35 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragment.kt @@ -1,7 +1,6 @@ package de.kuschku.quasseldroid.ui.chat.info.channel import android.arch.lifecycle.Observer -import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -74,9 +73,7 @@ class ChannelInfoFragment : ServiceBoundFragment() { topic.text = contentFormatter.format(requireContext(), channel.topic()) actionEditTopic.setOnClickListener { - val intent = Intent(requireContext(), TopicActivity::class.java) - intent.putExtra("buffer", arguments?.getInt("bufferId") ?: -1) - startActivity(intent) + TopicActivity.launch(requireContext(), buffer = arguments?.getInt("bufferId") ?: -1) } actionPart.setOnClickListener { 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 3cc0d54c0..d26e2b3c9 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 @@ -1,5 +1,38 @@ package de.kuschku.quasseldroid.ui.chat.info.user +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 -class UserInfoActivity : SettingsActivity(UserInfoFragment()) +class UserInfoActivity : SettingsActivity(UserInfoFragment()) { + companion object { + fun launch( + context: Context, + openBuffer: Boolean, + bufferId: BufferId? = null, + nick: String? = null, + networkId: NetworkId? = null + ) = context.startActivity(intent(context, openBuffer, bufferId, nick, networkId)) + + fun intent( + context: Context, + openBuffer: Boolean, + bufferId: BufferId? = null, + nick: String? = null, + networkId: NetworkId? = null + ) = Intent(context, UserInfoActivity::class.java).apply { + putExtra("openBuffer", openBuffer) + if (bufferId != null) { + putExtra("bufferId", bufferId) + } + if (nick != null) { + putExtra("nick", nick) + } + if (networkId != null) { + putExtra("networkId", networkId) + } + } + } +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt index 72622dfac..9bc92d710 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt @@ -1,7 +1,6 @@ package de.kuschku.quasseldroid.ui.chat.info.user import android.arch.lifecycle.Observer -import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -162,10 +161,8 @@ class UserInfoFragment : ServiceBoundFragment() { type = Buffer_Type.of(Buffer_Type.QueryBuffer) ) - val intent = Intent(requireContext(), ChatActivity::class.java) if (info != null) { - intent.putExtra("bufferId", info.bufferId) - startActivity(intent) + ChatActivity.launch(requireContext(), bufferId = info.bufferId) } else { viewModel.allBuffers.map { listOfNotNull(it.find { @@ -175,8 +172,7 @@ class UserInfoFragment : ServiceBoundFragment() { it.isNotEmpty() }.firstElement().toLiveData().observe(this, Observer { it?.firstOrNull()?.let { info -> - intent.putExtra("bufferId", info.bufferId) - startActivity(intent) + ChatActivity.launch(requireContext(), bufferId = info.bufferId) } }) @@ -209,10 +205,7 @@ class UserInfoFragment : ServiceBoundFragment() { } actionMention.setOnClickListener { - val intent = Intent(requireContext(), ChatActivity::class.java) - intent.type = "text/plain" - intent.putExtra(Intent.EXTRA_TEXT, "${user.nick()}: ") - startActivity(intent) + ChatActivity.launch(requireContext(), sharedText = "${user.nick()}: ") } actionMention.visibleIf(arguments?.getBoolean("openBuffer") == false) } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt index c30714fa1..f4c95212b 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt @@ -200,10 +200,7 @@ class MessageListFragment : ServiceBoundFragment() { } if (autoCompleteSettings.senderDoubleClick) adapter.setOnDoubleClickListener { msg -> - val intent = Intent(requireContext(), ChatActivity::class.java) - intent.type = "text/plain" - intent.putExtra(Intent.EXTRA_TEXT, "${HostmaskHelper.nick(msg.sender)}: ") - startActivity(intent) + ChatActivity.launch(requireContext(), sharedText = "${HostmaskHelper.nick(msg.sender)}: ") } adapter.setOnUrlLongClickListener(LinkLongClickMenuHelper()) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt index 7c9511592..3bfae2fa0 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt @@ -1,7 +1,6 @@ package de.kuschku.quasseldroid.ui.chat.nicks import android.arch.lifecycle.Observer -import android.content.Intent import android.graphics.Typeface import android.os.Bundle import android.support.v7.widget.DefaultItemAnimator @@ -157,18 +156,17 @@ class NickListFragment : ServiceBoundFragment() { private val clickListener: ((String) -> Unit)? = { nick -> viewModel.session.value?.orNull()?.bufferSyncer?.let { bufferSyncer -> viewModel.bufferData.value?.info?.let(BufferInfo::networkId)?.let { networkId -> - val intent = Intent(requireContext(), UserInfoActivity::class.java) - bufferSyncer.find( - bufferName = nick, - networkId = networkId, - type = Buffer_Type.of(Buffer_Type.QueryBuffer) - )?.let { - intent.putExtra("bufferId", it.bufferId) - } - intent.putExtra("nick", nick) - intent.putExtra("networkId", networkId) - intent.putExtra("openBuffer", false) - startActivity(intent) + UserInfoActivity.launch( + requireContext(), + openBuffer = false, + bufferId = bufferSyncer.find( + bufferName = nick, + networkId = networkId, + type = Buffer_Type.of(Buffer_Type.QueryBuffer) + )?.let(BufferInfo::bufferId), + nick = nick, + networkId = networkId + ) } } } 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 83fb366f0..7d3c08cd8 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 @@ -1,5 +1,22 @@ package de.kuschku.quasseldroid.ui.chat.topic +import android.content.Context +import android.content.Intent import de.kuschku.quasseldroid.util.ui.SettingsActivity -class TopicActivity : SettingsActivity(TopicFragment()) +class TopicActivity : SettingsActivity(TopicFragment()) { + companion object { + fun launch( + context: Context, + buffer: Int + ) = context.startActivity(intent(context, buffer)) + + fun intent( + context: Context, + buffer: Int + ) = Intent(context, TopicActivity::class.java).apply { + putExtra("buffer", buffer) + } + } +} + diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsActivity.kt index 8997104a5..c13a3762c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsActivity.kt @@ -1,5 +1,12 @@ package de.kuschku.quasseldroid.ui.clientsettings.about +import android.content.Context +import android.content.Intent import de.kuschku.quasseldroid.util.ui.SettingsActivity -class AboutSettingsActivity : SettingsActivity(AboutSettingsFragment()) \ No newline at end of file +class AboutSettingsActivity : SettingsActivity(AboutSettingsFragment()) { + companion object { + fun launch(context: Context) = context.startActivity(intent(context)) + fun intent(context: Context) = Intent(context, AboutSettingsActivity::class.java) + } +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/LibraryAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/LibraryAdapter.kt index 6cc525cf0..28c092fc8 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/LibraryAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/LibraryAdapter.kt @@ -1,6 +1,5 @@ package de.kuschku.quasseldroid.ui.clientsettings.about -import android.content.Intent import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View @@ -40,10 +39,9 @@ class LibraryAdapter(private val libraries: List<Library>) : ButterKnife.bind(this, itemView) itemView.setOnClickListener { this.item?.run { - val intent = Intent(itemView.context, LicenseSettingsActivity::class.java) - intent.putExtra("license_name", license.fullName) - intent.putExtra("license_text", license.text) - itemView.context.startActivity(intent) + LicenseSettingsActivity.launch(itemView.context, + license_name = license.fullName, + license_text = license.text) } } } @@ -56,4 +54,4 @@ class LibraryAdapter(private val libraries: List<Library>) : this.license.text = item.license.shortName } } -} \ No newline at end of file +} 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 5bb8ffefa..36831b076 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 @@ -1,5 +1,6 @@ package de.kuschku.quasseldroid.ui.clientsettings.app +import android.content.Context import android.content.Intent import android.view.Menu import android.view.MenuItem @@ -16,13 +17,18 @@ class AppSettingsActivity : SettingsActivity(AppSettingsFragment()) { override fun onOptionsItemSelected(item: MenuItem?) = when (item?.itemId) { R.id.action_about -> { - startActivity(Intent(applicationContext, AboutSettingsActivity::class.java)) + AboutSettingsActivity.launch(this) true } R.id.action_crashes -> { - startActivity(Intent(applicationContext, CrashSettingsActivity::class.java)) + CrashSettingsActivity.launch(this) true } else -> super.onOptionsItemSelected(item) } -} \ No newline at end of file + + 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/crash/CrashSettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsActivity.kt index 4a2be941a..6a17c61cc 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsActivity.kt @@ -1,5 +1,12 @@ package de.kuschku.quasseldroid.ui.clientsettings.crash +import android.content.Context +import android.content.Intent import de.kuschku.quasseldroid.util.ui.SettingsActivity -class CrashSettingsActivity : SettingsActivity(CrashSettingsFragment()) \ No newline at end of file +class CrashSettingsActivity : SettingsActivity(CrashSettingsFragment()) { + companion object { + fun launch(context: Context) = context.startActivity(intent(context)) + fun intent(context: Context) = Intent(context, CrashSettingsActivity::class.java) + } +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsActivity.kt index 79630f680..8b4d4b604 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsActivity.kt @@ -1,5 +1,25 @@ package de.kuschku.quasseldroid.ui.clientsettings.license +import android.content.Context +import android.content.Intent +import android.support.annotation.StringRes import de.kuschku.quasseldroid.util.ui.SettingsActivity -class LicenseSettingsActivity : SettingsActivity(LicenseSettingsFragment()) \ No newline at end of file +class LicenseSettingsActivity : SettingsActivity(LicenseSettingsFragment()) { + companion object { + fun launch( + context: Context, + license_name: String, + @StringRes license_text: Int + ) = context.startActivity(intent(context, license_name, license_text)) + + fun intent( + context: Context, + license_name: String, + @StringRes license_text: Int + ) = Intent(context, LicenseSettingsActivity::class.java).apply { + putExtra("license_name", license_name) + putExtra("license_text", license_text) + } + } +} 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 09f567bbb..e45c52096 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 @@ -1,5 +1,12 @@ package de.kuschku.quasseldroid.ui.coresettings +import android.content.Context +import android.content.Intent import de.kuschku.quasseldroid.util.ui.SettingsActivity -class CoreSettingsActivity : SettingsActivity(CoreSettingsFragment()) \ No newline at end of file +class CoreSettingsActivity : SettingsActivity(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/CoreSettingsFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt index 27f54e693..8a800c24d 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt @@ -1,7 +1,6 @@ package de.kuschku.quasseldroid.ui.coresettings import android.arch.lifecycle.Observer -import android.content.Intent import android.os.Bundle import android.support.v4.view.ViewCompat import android.support.v7.widget.DividerItemDecoration @@ -60,15 +59,11 @@ class CoreSettingsFragment : ServiceBoundFragment() { } val identityAdapter = SettingsItemAdapter { - val intent = Intent(requireContext(), IdentityActivity::class.java) - intent.putExtra("identity", it) - startActivity(intent) + IdentityActivity.launch(requireContext(), identity = it) } val chatListAdapter = SettingsItemAdapter { - val intent = Intent(requireContext(), ChatListActivity::class.java) - intent.putExtra("chatlist", it) - startActivity(intent) + ChatListActivity.launch(requireContext(), chatlist = it) } val itemDecoration = DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) @@ -119,11 +114,11 @@ class CoreSettingsFragment : ServiceBoundFragment() { }) networkconfig.setOnClickListener { - startActivity(Intent(requireContext(), NetworkConfigActivity::class.java)) + NetworkConfigActivity.launch(requireContext()) } ignorelist.setOnClickListener { - startActivity(Intent(requireContext(), IgnoreListActivity::class.java)) + IgnoreListActivity.launch(requireContext()) } return view diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListActivity.kt index 7ebf8cb2a..45a42e7b2 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListActivity.kt @@ -1,5 +1,21 @@ package de.kuschku.quasseldroid.ui.coresettings.chatlist +import android.content.Context +import android.content.Intent import de.kuschku.quasseldroid.util.ui.SettingsActivity -class ChatListActivity : SettingsActivity(ChatListFragment()) +class ChatListActivity : SettingsActivity(ChatListFragment()) { + companion object { + fun launch( + context: Context, + chatlist: Int + ) = context.startActivity(intent(context, chatlist)) + + fun intent( + context: Context, + chatlist: Int + ) = Intent(context, ChatListActivity::class.java).apply { + putExtra("chatlist", chatlist) + } + } +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityActivity.kt index 59cd117fd..b137bf1f6 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityActivity.kt @@ -1,5 +1,22 @@ 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 -class IdentityActivity : SettingsActivity(IdentityFragment()) \ No newline at end of file +class IdentityActivity : SettingsActivity(IdentityFragment()) { + companion object { + fun launch( + context: Context, + identity: IdentityId + ) = context.startActivity(intent(context, identity)) + + fun intent( + context: Context, + identity: IdentityId + ) = Intent(context, IdentityActivity::class.java).apply { + putExtra("identity", identity) + } + } +} 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 1d75e1602..b8275b5fd 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 @@ -1,5 +1,24 @@ 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 -class IgnoreItemActivity : SettingsActivity(IgnoreItemFragment()) +class IgnoreItemActivity : SettingsActivity(IgnoreItemFragment()) { + companion object { + fun launch( + context: Context, + item: IgnoreListManager.IgnoreListItem? = null + ) = context.startActivity(intent(context, item)) + + fun intent( + context: Context, + item: IgnoreListManager.IgnoreListItem? = null + ) = Intent(context, IgnoreItemActivity::class.java).apply { + if (item != null) { + putExtra("item", item) + } + } + } +} 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 e5effd234..66c55a9b2 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 @@ -1,5 +1,12 @@ package de.kuschku.quasseldroid.ui.coresettings.ignorelist +import android.content.Context +import android.content.Intent import de.kuschku.quasseldroid.util.ui.SettingsActivity -class IgnoreListActivity : SettingsActivity(IgnoreListFragment()) +class IgnoreListActivity : SettingsActivity(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/ignorelist/IgnoreListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt index ce51560e6..a30ac9887 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt @@ -48,8 +48,7 @@ class IgnoreListFragment : SettingsFragment() { helper.attachToRecyclerView(list) add.setOnClickListener { - val intent = Intent(requireContext(), IgnoreItemActivity::class.java) - startActivityForResult(intent, REQUEST_CREATE_RULE) + startActivityForResult(IgnoreItemActivity.intent(requireContext()), REQUEST_CREATE_RULE) } viewModel.ignoreListManager @@ -68,9 +67,7 @@ class IgnoreListFragment : SettingsFragment() { } fun itemClick(item: IgnoreListManager.IgnoreListItem) { - val intent = Intent(requireContext(), IgnoreItemActivity::class.java) - intent.putExtra("item", item) - startActivityForResult(intent, REQUEST_UPDATE_RULE) + startActivityForResult(IgnoreItemActivity.intent(requireContext(), item), REQUEST_UPDATE_RULE) } fun startDrag(holder: IgnoreListAdapter.IgnoreItemViewHolder) = helper.startDrag(holder) 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 525bed736..c7918c176 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 @@ -1,5 +1,12 @@ package de.kuschku.quasseldroid.ui.coresettings.networkconfig +import android.content.Context +import android.content.Intent import de.kuschku.quasseldroid.util.ui.SettingsActivity -class NetworkConfigActivity : SettingsActivity(NetworkConfigFragment()) \ No newline at end of file +class NetworkConfigActivity : SettingsActivity(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/setup/accounts/edit/AccountEditActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt index 5dcc3717d..02d965a96 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt @@ -2,6 +2,7 @@ package de.kuschku.quasseldroid.ui.setup.accounts.edit import android.app.Activity import android.content.Context +import android.content.Intent import android.os.Bundle import android.support.design.widget.TextInputLayout import android.support.v7.app.AlertDialog @@ -181,4 +182,18 @@ class AccountEditActivity : DaggerAppCompatActivity() { } else -> super.onOptionsItemSelected(item) } + + companion object { + fun launch( + context: Context, + account: Long + ) = context.startActivity(intent(context, account)) + + fun intent( + context: Context, + account: Long + ) = Intent(context, AccountEditActivity::class.java).apply { + putExtra("account", account) + } + } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionActivity.kt index e06e56541..0b877d431 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionActivity.kt @@ -2,6 +2,7 @@ package de.kuschku.quasseldroid.ui.setup.accounts.selection import android.app.Activity import android.content.Context +import android.content.Intent import android.content.SharedPreferences import android.os.Bundle import de.kuschku.quasseldroid.Keys @@ -12,6 +13,9 @@ class AccountSelectionActivity : SetupActivity() { companion object { const val REQUEST_CREATE_FIRST = 0 const val REQUEST_CREATE_NEW = 1 + + fun launch(context: Context) = context.startActivity(intent(context)) + fun intent(context: Context) = Intent(context, AccountSelectionActivity::class.java) } override val fragments = listOf( diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt index 741a3aaa5..4d2762f20 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt @@ -49,7 +49,7 @@ class AccountSelectionSlide : SlideFragment() { override fun onChanged(t: List<AccountDatabase.Account>?) { if (t?.isEmpty() != false) startActivityForResult( - Intent(context, AccountSetupActivity::class.java), + AccountSetupActivity.intent(requireContext()), REQUEST_CREATE_FIRST ) accountViewModel.accounts.removeObserver(this) @@ -65,12 +65,10 @@ class AccountSelectionSlide : SlideFragment() { accountList.adapter = adapter adapter.addAddListener { - startActivityForResult(Intent(context, AccountSetupActivity::class.java), -1) + startActivityForResult(AccountSetupActivity.intent(requireContext()), -1) } adapter.addEditListener { id -> - val intent = Intent(context, AccountEditActivity::class.java) - intent.putExtra("account", id) - startActivityForResult(intent, REQUEST_CREATE_NEW) + startActivityForResult(AccountEditActivity.intent(requireContext(), id), REQUEST_CREATE_NEW) } adapter.addSelectionListener { updateValidity() diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupActivity.kt index bff708ef2..d70338da7 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupActivity.kt @@ -1,6 +1,8 @@ package de.kuschku.quasseldroid.ui.setup.accounts.setup import android.app.Activity +import android.content.Context +import android.content.Intent import android.os.Bundle import de.kuschku.quasseldroid.persistence.AccountDatabase import de.kuschku.quasseldroid.ui.setup.SetupActivity @@ -48,4 +50,9 @@ class AccountSetupActivity : SetupActivity() { AccountSetupUserSlide(), AccountSetupNameSlide() ) + + companion object { + fun launch(context: Context) = context.startActivity(intent(context)) + fun intent(context: Context) = Intent(context, AccountSetupActivity::class.java) + } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt b/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt index 67fab22bf..4623c8d3b 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt @@ -52,14 +52,20 @@ class QuasseldroidNotificationManager(private val context: Context) { } fun notificationBackground(): Handle { - val intentOpen = Intent(context.applicationContext, ChatActivity::class.java) - intentOpen.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP - val pendingIntentOpen = PendingIntent.getActivity(context.applicationContext, 0, intentOpen, 0) + val pendingIntentOpen = PendingIntent.getActivity( + context.applicationContext, + 0, + ChatActivity.intent(context.applicationContext).apply { + flags = Intent.FLAG_ACTIVITY_CLEAR_TOP + }, + 0 + ) - val intentDisconnect = Intent(context, QuasselService::class.java) - intentDisconnect.putExtra("disconnect", true) val pendingIntentDisconnect = PendingIntent.getService( - context, 0, intentDisconnect, PendingIntent.FLAG_UPDATE_CURRENT + context, + 0, + QuasselService.intent(context.applicationContext, disconnect = true), + PendingIntent.FLAG_UPDATE_CURRENT ) val notification = NotificationCompat.Builder( @@ -91,4 +97,4 @@ class QuasseldroidNotificationManager(private val context: Context) { val id: Int, val builder: NotificationCompat.Builder ) -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt b/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt index 35a72d7c6..2375ca2a7 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt @@ -7,6 +7,7 @@ import android.content.ServiceConnection import android.os.IBinder import de.kuschku.libquassel.session.Backend import de.kuschku.libquassel.util.Optional +import de.kuschku.quasseldroid.service.QuasselBinder import de.kuschku.quasseldroid.service.QuasselService import io.reactivex.subjects.BehaviorSubject @@ -26,25 +27,25 @@ class BackendServiceConnection : ServiceConnection { override fun onServiceConnected(component: ComponentName?, binder: IBinder?) { when (component) { ComponentName(context, QuasselService::class.java) -> - if (binder is QuasselService.QuasselBinder) { + if (binder is QuasselBinder) { backend.onNext(Optional.of(binder.backend)) } } } - fun start(intent: Intent = Intent(context, QuasselService::class.java)) { + fun start(intent: Intent = QuasselService.intent(context!!)) { context?.startService(intent) } - fun bind(intent: Intent = Intent(context, QuasselService::class.java), flags: Int = 0) { + fun bind(intent: Intent = QuasselService.intent(context!!), flags: Int = 0) { context?.bindService(intent, this, flags) } - fun stop(intent: Intent = Intent(context, QuasselService::class.java)) { + fun stop(intent: Intent = QuasselService.intent(context!!)) { context?.stopService(intent) } fun unbind() { context?.unbindService(this) } -} \ No newline at end of file +} 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 a98089d88..2fbed102a 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 @@ -140,9 +140,7 @@ abstract class ServiceBoundActivity : AppCompatActivity(), if (!reconnect || !accountIdValid) { if (!startedSelection) { - startActivityForResult( - Intent(this, AccountSelectionActivity::class.java), REQUEST_SELECT_ACCOUNT - ) + startActivityForResult(AccountSelectionActivity.intent(this), REQUEST_SELECT_ACCOUNT) startedSelection = true } } else { -- GitLab