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 0000000000000000000000000000000000000000..c14d452887cf91785a089a1af13919c26c18d46d --- /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 0000000000000000000000000000000000000000..ce82ee7029e604217074ebcf366afc9f051f3edf --- /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 a85ad2860e0a0a53609a1d2f545b70b2661a2d1a..f309458b0d6dbab0180a6cc12f153f3b66c3eba7 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 67b2adf824b0676ee81c65f16d6fe40b5fc3986f..d6ca32c1cc26db02341c1fb691a3f25a0df4dfc7 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 68e1d88b3ae52294f12badaa8dd47adb104e336d..845049650b35b65044c78022057737167ce27c81 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 c64c7f76221cd5c411f74144b4c9d3cb779eb0ca..8904d4ae1e909a1ffdb7704ad3459c4f33dd92ab 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 26c968fe7bc1bcad090de32435e206e49520cb29..87b4a5f353bfe640b7fd53048b1a7c949d199dca 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 3cc0d54c02584b3c1a27ff22f53cb75d6ab105b2..d26e2b3c90c30a975a3a1e9ea0e6177ec2d0517d 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 72622dfaca4da54f0b4bb19ea3417cca8de5871e..9bc92d7103fe6bab2efc53f44e1726af211f4c2a 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 c30714fa1714613539e7015ef5c9862d6d788617..f4c95212b34b69cc19c3e4138492ed3ce8197e1c 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 7c951159225201c5ed77d0b292872ce7c7682d18..3bfae2fa0befbc0067874fe99bfd7e403030f0cd 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 83fb366f0ff367ff593379fa8c03f0c74ec53524..7d3c08cd858fb523fa0c40270fec8d6f0ffc087e 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 8997104a51be1d8f632922c46252c952bdb0c820..c13a3762c6aa02d7ee4549978f8e6f212d25b399 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 6cc525cf03cf3a642f2f7468f454739ce3241d78..28c092fc8996078d7311d802d2c85b8533dd5862 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 5bb8ffefa471b0449aa37323f1f12f24672f6a1a..36831b076818482ea4c2d28cc66ea7675b885781 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 4a2be941aae6b5ef00051fe0c86a4a96a24ebdff..6a17c61cc39a0388b5a195752736dd295cffbbca 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 79630f68098aaa6ef9987f77c13199d13550705b..8b4d4b60468bba5e6621416b0b8895dd0ef44bd9 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 09f567bbbe630a9314576e73050e2b99bb0c2fc6..e45c520960716deca71ab6e0bc2c6b80292b17e4 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 27f54e693928c97138b09bef1d78c5c38477bb8d..8a800c24deb91e81fcb61cb86b37464e06913efc 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 7ebf8cb2adf9d3a5d3a7087144fad15f1aafcc90..45a42e7b2914a3b3d99a4c7783dd58ab6b7232b3 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 59cd117fd27d7a258fa3bb004a131c097552398e..b137bf1f61df11bfc653d96d94d4aee8234cdf68 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 1d75e1602ff3d1417f98b2a0e688184c2bc9745c..b8275b5fd314ada6a5d9b95876c7c36f2bf54e86 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 e5effd234ce064451494a3465c4ef93dbb58e0f7..66c55a9b253db1e8f21e4e9bb6a6a949437fbcb7 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 ce51560e6c6f027cc03a416909a6eadbe8c6d249..a30ac988769c7376e22ef2afe0e47734034a5a8d 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 525bed7365faa1bca511cc61dc469862384f75f7..c7918c176d196053e0d9a6e834bec9e8111bfd15 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 5dcc3717de495b8c0ecc1cd60936da1b338b6616..02d965a96647d78465324e7e0d94ee808b844d9e 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 e06e5654103b772dbb3e9f1d4604928466bae54d..0b877d43177f37452b865b5b4e3e2b6b0f7ef662 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 741a3aaa52ff1e773a2b0c181792714c6bf28b8a..4d2762f20347d675a606cc274c05690741c1c166 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 bff708ef26af88bcdecee1661e5d20d709f25847..d70338da7b534c11c9e28e07aa03ffb7ae7793ab 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 67fab22bfc5b4f5f65c047a10de2ec9f5f927e0d..4623c8d3b24af5918547ced88b4e0928fabb4eec 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 35a72d7c63337a8855a86dc80c19dfaac96be099..2375ca2a7c6c9f8f9b47afd9f20df23bcf36bb60 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 a98089d8892b393997f5c9dd4fcd13da4b408aa2..2fbed102af8580439342aef1091bcbc75927ad36 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 {