From 2634410302946ea1bbd162e3fca0ab7eb8e48106 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Wed, 7 Nov 2018 21:06:05 +0100
Subject: [PATCH] Upgraded to AndroidX

---
 app/build.gradle.kts                          |  55 ++--
 .../quasseldroid/dagger/ActivityBaseModule.kt |   6 +-
 .../service/QuasselNotificationBackend.kt     |   2 +-
 .../quasseldroid/service/QuasselService.kt    |  16 +-
 .../QuasseldroidNotificationManager.kt        |   6 +-
 .../settings/AppearanceSettings.kt            |   2 +-
 .../settings/SettingsMigrationManager.kt      |   6 +-
 .../de/kuschku/quasseldroid/ssl/X509Helper.kt |   1 +
 .../quasseldroid/ui/chat/ChatActivity.kt      |  61 +++--
 .../ui/chat/ChatFragmentProvider.kt           |   2 +-
 .../quasseldroid/ui/chat/ToolbarFragment.kt   |   2 +-
 .../ui/chat/buffers/BufferListAdapter.kt      |   4 +-
 .../chat/buffers/BufferViewConfigAdapter.kt   |   6 +-
 .../chat/buffers/BufferViewConfigFragment.kt  |  16 +-
 .../chat/info/channel/ChannelInfoFragment.kt  |   2 +-
 .../channel/ChannelInfoFragmentProvider.kt    |   2 +-
 .../ui/chat/info/core/ClientAdapter.kt        |   6 +-
 .../ui/chat/info/core/CoreInfoFragment.kt     |   6 +-
 .../info/core/CoreInfoFragmentProvider.kt     |   2 +-
 .../ui/chat/info/user/UserInfoFragment.kt     |   2 +-
 .../info/user/UserInfoFragmentProvider.kt     |   2 +-
 .../ui/chat/input/AutoCompleteAdapter.kt      |   6 +-
 .../ui/chat/input/AutoCompleteHelper.kt       |   4 +-
 .../ui/chat/input/ChatlineFragment.kt         |  20 +-
 .../ui/chat/input/EditorHelper.kt             |   9 +-
 .../ui/chat/input/MessageHistoryAdapter.kt    |  10 +-
 .../ui/chat/input/RichEditText.kt             |  88 +++---
 .../quasseldroid/ui/chat/input/RichToolbar.kt |   4 +-
 .../chat/messages/MarkerLineItemDecoration.kt |   6 +-
 .../ui/chat/messages/MessageAdapter.kt        |   6 +-
 .../ui/chat/messages/MessageListFragment.kt   |  29 +-
 .../ui/chat/messages/MessageRenderer.kt       |   2 +-
 .../ui/chat/nicks/NickListAdapter.kt          |   8 +-
 .../ui/chat/nicks/NickListFragment.kt         |  13 +-
 .../ui/chat/topic/TopicFragment.kt            |  12 +-
 .../ui/chat/topic/TopicFragmentProvider.kt    |   2 +-
 .../ui/clientsettings/about/AboutFragment.kt  |  47 +---
 .../about/AboutFragmentProvider.kt            |   2 +-
 .../about/ContributorAdapter.kt               |   2 +-
 .../ui/clientsettings/about/LibraryAdapter.kt |   2 +-
 .../ui/clientsettings/about/License.kt        |   2 +-
 .../ui/clientsettings/about/Translator.kt     |   2 +-
 .../clientsettings/about/TranslatorAdapter.kt |   2 +-
 .../client/ClientSettingsActivity.kt          |   6 +-
 .../client/ClientSettingsFragment.kt          |   6 +-
 .../client/ClientSettingsFragmentProvider.kt  |   2 +-
 .../ui/clientsettings/crash/CrashAdapter.kt   |  13 +-
 .../ui/clientsettings/crash/CrashFragment.kt  |   8 +-
 .../crash/CrashFragmentProvider.kt            |   2 +-
 .../clientsettings/license/LicenseActivity.kt |   2 +-
 .../license/LicenseFragmentProvider.kt        |   2 +-
 .../whitelist/WhitelistCertificateAdapter.kt  |   4 +-
 .../whitelist/WhitelistFragment.kt            |   8 +-
 .../whitelist/WhitelistFragmentProvider.kt    |   2 +-
 .../whitelist/WhitelistHostnameAdapter.kt     |   4 +-
 .../ui/coresettings/CoreSettingsFragment.kt   |  10 +-
 .../CoreSettingsFragmentProvider.kt           |   2 +-
 .../ui/coresettings/SettingsItemAdapter.kt    |   6 +-
 .../aliasitem/AliasItemFragment.kt            |  10 +-
 .../aliasitem/AliasItemFragmentProvider.kt    |   2 +-
 .../aliaslist/AliasListAdapter.kt             |   2 +-
 .../aliaslist/AliasListFragment.kt            |  10 +-
 .../aliaslist/AliasListFragmentProvider.kt    |   2 +-
 .../DragSortItemTouchHelperCallback.kt        |   4 +-
 .../chatlist/ChatListBaseFragment.kt          |   4 +-
 .../ChatlistCreateFragmentProvider.kt         |   2 +-
 .../chatlist/ChatlistEditFragmentProvider.kt  |   2 +-
 .../chatlist/MinimumActivityAdapter.kt        |   4 +-
 .../chatlist/MinimumActivityItem.kt           |   2 +-
 .../coresettings/chatlist/NetworkAdapter.kt   |   4 +-
 .../DragSortItemTouchHelperCallback.kt        |   4 +-
 .../highlightlist/HighlightListFragment.kt    |  12 +-
 .../HighlightListFragmentProvider.kt          |   2 +-
 .../highlightlist/HighlightNickTypeAdapter.kt |   4 +-
 .../highlightlist/HighlightNickTypeItem.kt    |   2 +-
 .../highlightlist/HighlightRuleAdapter.kt     |   4 +-
 .../highlightrule/HighlightRuleFragment.kt    |   2 +-
 .../HighlightRuleFragmentProvider.kt          |   2 +-
 .../DragSortItemTouchHelperCallback.kt        |   4 +-
 .../identity/IdentityBaseFragment.kt          |  12 +-
 .../IdentityCreateFragmentProvider.kt         |   2 +-
 .../identity/IdentityEditFragmentProvider.kt  |   2 +-
 .../identity/IdentityNicksAdapter.kt          |   2 +-
 .../ignoreitem/IgnoreItemFragment.kt          |   2 +-
 .../ignoreitem/IgnoreItemFragmentProvider.kt  |   2 +-
 .../ignoreitem/IgnoreTypeAdapter.kt           |   4 +-
 .../coresettings/ignoreitem/IgnoreTypeItem.kt |   2 +-
 .../ignoreitem/ScopeTypeAdapter.kt            |   4 +-
 .../coresettings/ignoreitem/ScopeTypeItem.kt  |   2 +-
 .../ignoreitem/StrictnessTypeAdapter.kt       |   4 +-
 .../ignoreitem/StrictnessTypeItem.kt          |   2 +-
 .../DragSortItemTouchHelperCallback.kt        |   4 +-
 .../ignorelist/IgnoreListAdapter.kt           |   4 +-
 .../ignorelist/IgnoreListFragment.kt          |  12 +-
 .../ignorelist/IgnoreListFragmentProvider.kt  |   2 +-
 .../DragSortItemTouchHelperCallback.kt        |   4 +-
 .../coresettings/network/IdentityAdapter.kt   |   4 +-
 .../network/NetworkBaseFragment.kt            |  12 +-
 .../network/NetworkCreateFragmentProvider.kt  |   2 +-
 .../network/NetworkEditFragmentProvider.kt    |   2 +-
 .../network/NetworkServerAdapter.kt           |   2 +-
 .../networkconfig/NetworkConfigFragment.kt    |   4 +-
 .../NetworkConfigFragmentProvider.kt          |   2 +-
 .../networkserver/NetworkServerFragment.kt    |   2 +-
 .../NetworkServerFragmentProvider.kt          |   2 +-
 .../networkserver/ProxyTypeAdapter.kt         |   4 +-
 .../networkserver/ProxyTypeItem.kt            |   2 +-
 .../ui/setup/ServiceBoundSetupActivity.kt     |  18 +-
 .../quasseldroid/ui/setup/SetupActivity.kt    |  18 +-
 .../quasseldroid/ui/setup/SlideFragment.kt    |  14 +-
 .../accounts/edit/AccountEditActivity.kt      |   2 +-
 .../setup/accounts/edit/AccountEditModule.kt  |   2 +-
 .../accounts/selection/AccountAdapter.kt      |  16 +-
 .../AccountSelectionFragmentProvider.kt       |   2 +-
 .../selection/AccountSelectionSlide.kt        |   8 +-
 .../accounts/selection/AccountViewModel.kt    |   6 +-
 .../setup/AccountSetupConnectionSlide.kt      |   2 +-
 .../setup/AccountSetupFragmentProvider.kt     |   2 +-
 .../accounts/setup/AccountSetupNameSlide.kt   |   2 +-
 .../accounts/setup/AccountSetupUserSlide.kt   |   2 +-
 .../ui/setup/user/DefaultNetworkAdapter.kt    |   4 +-
 .../ui/setup/user/UserSetupActivity.kt        |   4 +-
 .../ui/setup/user/UserSetupChannelsSlide.kt   |   4 +-
 .../setup/user/UserSetupFragmentProvider.kt   |   2 +-
 .../ui/setup/user/UserSetupIdentitySlide.kt   |   2 +-
 .../ui/setup/user/UserSetupNetworkSlide.kt    |   4 +-
 .../kuschku/quasseldroid/util/ColorContext.kt |   2 +-
 .../util/backport/DaggerLifecycleService.kt   |   2 +-
 .../util/helper/ActivityHelper.kt             |   6 +-
 .../quasseldroid/util/helper/ButtonHelper.kt  |   2 +-
 .../util/helper/CharSequenceHelper.kt         |   2 +-
 .../quasseldroid/util/helper/ContextHelper.kt |  10 +-
 .../util/helper/DrawableHelper.kt             |   4 +-
 .../util/helper/FloatingActionButtonHelper.kt |   2 +-
 .../quasseldroid/util/helper/MenuHelper.kt    |   2 +-
 .../util/helper/PreferenceHelper.kt           |   4 +-
 .../util/helper/ResourcesHelper.kt            |   4 +-
 .../util/helper/SwitchCompatHelper.kt         |   2 +-
 .../quasseldroid/util/helper/ViewHelper.kt    |   2 +-
 .../util/irc/format/ContentFormatter.kt       |   2 +-
 .../format/spans/IrcBackgroundColorSpan.kt    |   2 +-
 .../format/spans/IrcForegroundColorSpan.kt    |   2 +-
 .../util/lists/AsyncDifferConfig.kt           |   4 +-
 .../util/lists/AsyncListDiffer.kt             |   8 +-
 .../quasseldroid/util/lists/ListAdapter.kt    |   6 +-
 .../util/missingfeatures/MissingFeature.kt    |   2 +-
 .../missingfeatures/MissingFeaturesAdapter.kt |   6 +-
 .../missingfeatures/MissingFeaturesDialog.kt  |  10 +-
 .../util/service/BackendServiceConnection.kt  |   4 +-
 .../util/service/ServiceBoundActivity.kt      |   4 +-
 .../util/ui/ColorChooserDialog.java           |  22 +-
 .../util/ui/ContextThemeWrapper.kt            |   2 +-
 .../ui/DragInterceptBottomSheetBehavior.kt    |   8 +-
 .../util/ui/DrawerRecyclerView.kt             |   6 +-
 .../util/ui/EditTextSelectionChange.kt        |   2 +-
 .../util/ui/LinkLongClickMenuHelper.kt        |   2 +-
 .../util/ui/NavigationDrawerLayout.kt         |   6 +-
 .../quasseldroid/util/ui/NickCountDrawable.kt |   4 +-
 .../util/ui/RecyclerSpinnerAdapter.kt         |   4 +-
 .../util/ui/RipplePassthroughTextView.kt      |   2 +-
 .../quasseldroid/util/ui/ShadowView.kt        |   2 +-
 .../quasseldroid/util/ui/ThemedActivity.kt    |   4 +-
 .../util/ui/TouchInterceptingFrameLayout.kt   |   6 +-
 .../ui/fastscroll/views/FastScrollPopup.java  |   2 +-
 .../views/FastScrollRecyclerView.java         |  12 +-
 .../ui/fastscroll/views/FastScroller.java     |  12 +-
 .../AttachingPreferenceFragmentCompat.kt      |   8 +-
 .../DaggerPreferenceFragmentCompat.kt         |   2 +-
 .../ListPreferenceDialogFragmentCompat.java   |   5 +-
 .../PreferenceDialogFragmentCompat.java       |  16 +-
 .../util/ui/settings/RingtonePreference.kt    |   2 +-
 .../util/ui/settings/SeekBarPreference.kt     |   6 +-
 .../settings/ServiceBoundSettingsActivity.kt  |   4 +-
 .../util/ui/settings/SettingsActivity.kt      |   4 +-
 app/src/main/res/layout-land/layout_main.xml  |  10 +-
 .../layout-sw600dp-land/activity_setup.xml    |   6 +-
 .../res/layout-sw600dp-land/layout_main.xml   |  10 +-
 .../res/layout-sw600dp-land/setup_slide.xml   |  10 +-
 .../res/layout-sw600dp/activity_setup.xml     |   6 +-
 .../main/res/layout-sw600dp/setup_slide.xml   |   6 +-
 .../res/layout-sw720dp-land/activity_main.xml |  10 +-
 .../res/layout-sw720dp/activity_settings.xml  |  14 +-
 app/src/main/res/layout/activity_main.xml     |   4 +-
 app/src/main/res/layout/activity_settings.xml |  10 +-
 app/src/main/res/layout/activity_setup.xml    |   6 +-
 .../res/layout/dialog_colorchooser_custom.xml |   2 +-
 .../res/layout/dialog_missing_features.xml    |   2 +-
 .../main/res/layout/fragment_chat_list.xml    |  10 +-
 app/src/main/res/layout/fragment_chatline.xml |   4 +-
 .../main/res/layout/fragment_info_channel.xml |  12 +-
 .../main/res/layout/fragment_info_core.xml    |   8 +-
 .../main/res/layout/fragment_info_user.xml    |  24 +-
 app/src/main/res/layout/fragment_messages.xml |   8 +-
 app/src/main/res/layout/fragment_topic.xml    |  10 +-
 app/src/main/res/layout/layout_editor.xml     |  18 +-
 app/src/main/res/layout/layout_history.xml    |   8 +-
 app/src/main/res/layout/layout_main.xml       |  10 +-
 app/src/main/res/layout/layout_toolbar.xml    |  11 +-
 .../main/res/layout/preference_seekbar.xml    |   4 +-
 .../main/res/layout/preference_vertical.xml   |   6 +-
 app/src/main/res/layout/preferences_about.xml |  10 +-
 .../res/layout/preferences_about_header.xml   |   6 +-
 app/src/main/res/layout/preferences_crash.xml |   6 +-
 .../main/res/layout/preferences_license.xml   |   4 +-
 .../main/res/layout/preferences_whitelist.xml |   8 +-
 ...preferences_whitelist_certificate_item.xml |   2 +-
 .../preferences_whitelist_hostname_item.xml   |   2 +-
 .../main/res/layout/settings_aliasitem.xml    |  24 +-
 .../main/res/layout/settings_aliaslist.xml    |   4 +-
 .../res/layout/settings_aliaslist_item.xml    |   2 +-
 app/src/main/res/layout/settings_chatlist.xml |  34 +--
 .../res/layout/settings_highlightlist.xml     |  16 +-
 .../layout/settings_highlightlist_rule.xml    |   8 +-
 .../res/layout/settings_highlightrule.xml     |  30 +-
 app/src/main/res/layout/settings_identity.xml |  62 ++---
 .../res/layout/settings_identity_nick.xml     |   6 +-
 .../main/res/layout/settings_ignoreitem.xml   |  24 +-
 .../main/res/layout/settings_ignorelist.xml   |   4 +-
 .../res/layout/settings_ignorelist_item.xml   |   4 +-
 app/src/main/res/layout/settings_list.xml     |  26 +-
 app/src/main/res/layout/settings_network.xml  |  94 +++----
 .../res/layout/settings_network_server.xml    |   8 +-
 .../res/layout/settings_networkconfig.xml     |  46 ++--
 .../res/layout/settings_networkserver.xml     |  56 ++--
 .../res/layout/setup_account_connection.xml   |   8 +-
 .../main/res/layout/setup_account_edit.xml    |  38 +--
 .../main/res/layout/setup_account_name.xml    |   4 +-
 .../main/res/layout/setup_account_user.xml    |   8 +-
 .../main/res/layout/setup_select_account.xml  |   6 +-
 app/src/main/res/layout/setup_slide.xml       |  20 +-
 .../main/res/layout/setup_user_channels.xml   |   4 +-
 .../main/res/layout/setup_user_identity.xml   |   8 +-
 .../main/res/layout/setup_user_network.xml    |  14 +-
 .../main/res/layout/widget_buffer_away.xml    |   2 +-
 app/src/main/res/layout/widget_client.xml     |   2 +-
 .../main/res/layout/widget_core_account.xml   |   4 +-
 app/src/main/res/layout/widget_formatting.xml |  16 +-
 app/src/main/res/layout/widget_network.xml    |   2 +-
 app/src/main/res/layout/widget_nick_away.xml  |   2 +-
 gradle.properties                             |   3 +
 gradlew.bat                                   | 256 ++++++++++++------
 lifecycle-ktx/build.gradle.kts                |   8 +-
 .../lifecycle/DefaultLifecycleObserver.kt     |   2 +-
 .../lifecycle/FullLifecycleObserverProxy.java |   2 +-
 persistence/build.gradle.kts                  |  19 +-
 .../persistence/AccountDatabase.kt            |   8 +-
 .../persistence/LegacyAccountDatabase.kt      |   6 +-
 .../persistence/MessageTypeConverter.kt       |   2 +-
 .../persistence/QuasselDatabase.kt            |  12 +-
 viewmodel/build.gradle.kts                    |  12 +-
 .../util/helper/LiveDataHelper.kt             |   4 +-
 .../util/helper/LiveDataZipHelper.kt          |   5 +-
 .../util/helper/ObservableHelper.kt           |   4 +-
 .../quasseldroid/viewmodel/EditorViewModel.kt |   2 +-
 .../viewmodel/QuasselViewModel.kt             |   2 +-
 255 files changed, 1177 insertions(+), 1124 deletions(-)
 rename lifecycle-ktx/src/main/java/{android/arch => androidx}/lifecycle/DefaultLifecycleObserver.kt (98%)
 rename lifecycle-ktx/src/main/java/{android/arch => androidx}/lifecycle/FullLifecycleObserverProxy.java (96%)

diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 4624c9f54..916f0973c 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -112,35 +112,27 @@ dependencies {
   implementation(kotlin("stdlib", "1.2.60"))
 
   // App Compat
-  withVersion("27.1.1") {
-    implementation("com.android.support", "appcompat-v7", version)
-    implementation("com.android.support", "design", version)
-    implementation("com.android.support", "customtabs", version)
-    implementation("com.android.support", "cardview-v7", version)
-    implementation("com.android.support", "recyclerview-v7", version)
-    implementation("com.android.support", "preference-v7", version)
-    implementation("com.android.support", "preference-v14", version)
-  }
-  implementation("com.android.support.constraint", "constraint-layout", "1.1.0-beta6")
-
-  // App Arch Lifecycle
-  withVersion("1.1.1") {
-    implementation("android.arch.lifecycle", "extensions", version)
-    implementation("android.arch.lifecycle", "reactivestreams", version)
-    testImplementation("android.arch.core", "core-testing", version)
-    implementation(project(":lifecycle-ktx"))
-  }
+  implementation("com.google.android.material", "material", "1.0.0-rc01")
 
-  // App Arch Persistence
-  withVersion("1.1.1-rc1") {
-    implementation("android.arch.persistence.room", "runtime", version)
-    kapt("android.arch.persistence.room", "compiler", version)
-    implementation("android.arch.persistence.room", "rxjava2", version)
-    testImplementation("android.arch.persistence.room", "testing", version)
-  }
+  implementation("androidx.appcompat", "appcompat", "1.0.0")
+  implementation("androidx.browser", "browser", "1.0.0")
+  implementation("androidx.cardview", "cardview", "1.0.0")
+  implementation("androidx.recyclerview", "recyclerview", "1.0.0")
+  implementation("androidx.preference", "preference", "1.0.0")
+  implementation("androidx.legacy", "legacy-preference-v14", "1.0.0")
+  implementation("androidx.constraintlayout", "constraintlayout", "1.1.2")
 
-  // App Arch Paging
-  implementation("android.arch.paging", "runtime", "1.0.0")
+  implementation("androidx.lifecycle", "lifecycle-extensions", "2.0.0-rc01")
+  implementation("androidx.lifecycle", "lifecycle-reactivestreams", "2.0.0-rc01")
+  testImplementation("androidx.arch.core", "core-testing", "2.0.0-rc01")
+  implementation(project(":lifecycle-ktx"))
+
+  implementation("androidx.room", "room-runtime", "2.0.0-rc01")
+  kapt("androidx.room", "room-compiler", "2.0.0-rc01")
+  implementation("androidx.room", "room-rxjava2", "2.0.0-rc01")
+  testImplementation("androidx.room", "room-testing", "2.0.0-rc01")
+
+  implementation("androidx.paging", "paging-runtime", "2.0.0-rc01")
 
   // Utility
   implementation("io.reactivex.rxjava2", "rxandroid", "2.0.2")
@@ -151,7 +143,7 @@ dependencies {
   implementation("commons-codec", "commons-codec", "1.11")
   implementation("com.squareup.retrofit2", "retrofit", "2.4.0")
   implementation("com.squareup.retrofit2", "converter-gson", "2.4.0")
-  withVersion("8.8.1") {
+  withVersion("9.0.0-rc1") {
     implementation("com.jakewharton", "butterknife", version)
     kapt("com.jakewharton", "butterknife-compiler", version)
   }
@@ -169,7 +161,7 @@ dependencies {
     implementation("com.afollestad.material-dialogs", "core", version)
     implementation("com.afollestad.material-dialogs", "commons", version)
   }
-  withVersion("4.6.1") {
+  withVersion("4.8.0") {
     implementation("com.github.bumptech.glide", "glide", version)
     implementation("com.github.bumptech.glide", "recyclerview-integration", version)
     kapt("com.github.bumptech.glide", "compiler", version)
@@ -194,9 +186,4 @@ dependencies {
   }
 
   testImplementation("junit", "junit", "4.12")
-  withVersion("1.0.1") {
-    androidTestImplementation("com.android.support.test", "runner", version)
-    androidTestImplementation("com.android.support.test", "rules", version)
-  }
-  androidTestImplementation("com.android.support.test.espresso", "espresso-core", "3.0.1")
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/dagger/ActivityBaseModule.kt b/app/src/main/java/de/kuschku/quasseldroid/dagger/ActivityBaseModule.kt
index 883c09874..9fe1ddb77 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/dagger/ActivityBaseModule.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/dagger/ActivityBaseModule.kt
@@ -19,10 +19,10 @@
 
 package de.kuschku.quasseldroid.dagger
 
-import android.arch.lifecycle.ViewModelProvider
-import android.arch.lifecycle.ViewModelProviders
 import android.content.Context
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
+import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.ViewModelProviders
 import dagger.Module
 import dagger.Provides
 import de.kuschku.quasseldroid.ui.setup.accounts.selection.AccountViewModel
diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
index 68ca84e20..b095370ef 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
@@ -22,8 +22,8 @@ package de.kuschku.quasseldroid.service
 import android.content.Context
 import android.graphics.Typeface
 import android.graphics.drawable.Drawable
-import android.support.annotation.ColorInt
 import android.text.SpannableStringBuilder
+import androidx.annotation.ColorInt
 import de.kuschku.libquassel.protocol.*
 import de.kuschku.libquassel.quassel.BufferInfo
 import de.kuschku.libquassel.quassel.ExtendedFeature
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 59c51fe6a..040696ce2 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.service
 
-import android.arch.lifecycle.Observer
 import android.content.*
 import android.net.ConnectivityManager
 import android.os.Handler
-import android.support.v4.app.RemoteInput
 import android.text.SpannableString
+import androidx.core.app.RemoteInput
+import androidx.lifecycle.Observer
 import de.kuschku.libquassel.connection.ConnectionState
 import de.kuschku.libquassel.connection.HostnameVerifier
 import de.kuschku.libquassel.connection.SocketAddress
@@ -187,12 +187,12 @@ class QuasselService : DaggerLifecycleService(),
           }
         }
       }
-    }
-
-    val clearMessageId = intent.getLongExtra("mark_read_message", -1)
-    if (bufferId != -1 && clearMessageId != -1L) {
-      sessionManager.session.value?.bufferSyncer?.requestSetLastSeenMsg(bufferId, clearMessageId)
-      sessionManager.session.value?.bufferSyncer?.requestMarkBufferAsRead(bufferId)
+    } else {
+      val clearMessageId = intent.getLongExtra("mark_read_message", -1)
+      if (bufferId != -1 && clearMessageId != -1L) {
+        sessionManager.session.value?.bufferSyncer?.requestSetLastSeenMsg(bufferId, clearMessageId)
+        sessionManager.session.value?.bufferSyncer?.requestMarkBufferAsRead(bufferId)
+      }
     }
   }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasseldroidNotificationManager.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasseldroidNotificationManager.kt
index 27add767e..f50291eff 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasseldroidNotificationManager.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasseldroidNotificationManager.kt
@@ -31,9 +31,9 @@ import android.graphics.Canvas
 import android.graphics.drawable.Drawable
 import android.net.Uri
 import android.os.Build
-import android.support.v4.app.NotificationCompat
-import android.support.v4.app.NotificationManagerCompat
-import android.support.v4.app.RemoteInput
+import androidx.core.app.NotificationCompat
+import androidx.core.app.NotificationManagerCompat
+import androidx.core.app.RemoteInput
 import de.kuschku.libquassel.protocol.Buffer_Type
 import de.kuschku.libquassel.quassel.BufferInfo
 import de.kuschku.libquassel.util.flag.hasFlag
diff --git a/app/src/main/java/de/kuschku/quasseldroid/settings/AppearanceSettings.kt b/app/src/main/java/de/kuschku/quasseldroid/settings/AppearanceSettings.kt
index 4eea3ce72..db619e3e9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/settings/AppearanceSettings.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/settings/AppearanceSettings.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.settings
 
-import android.support.annotation.StyleRes
+import androidx.annotation.StyleRes
 import de.kuschku.quasseldroid.R
 
 data class AppearanceSettings(
diff --git a/app/src/main/java/de/kuschku/quasseldroid/settings/SettingsMigrationManager.kt b/app/src/main/java/de/kuschku/quasseldroid/settings/SettingsMigrationManager.kt
index 9e1d9dd40..ed372ae0d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/settings/SettingsMigrationManager.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/settings/SettingsMigrationManager.kt
@@ -21,9 +21,9 @@ package de.kuschku.quasseldroid.settings
 
 import android.annotation.SuppressLint
 import android.content.Context
-import android.support.annotation.XmlRes
-import android.support.v7.preference.PreferenceManager
-import android.support.v7.preference.PreferenceManager.KEY_HAS_SET_DEFAULT_VALUES
+import androidx.annotation.XmlRes
+import androidx.preference.PreferenceManager
+import androidx.preference.PreferenceManager.KEY_HAS_SET_DEFAULT_VALUES
 import de.kuschku.quasseldroid.R.xml.preferences
 
 class SettingsMigrationManager(
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ssl/X509Helper.kt b/app/src/main/java/de/kuschku/quasseldroid/ssl/X509Helper.kt
index 9eaf9b994..e2d04316c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ssl/X509Helper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ssl/X509Helper.kt
@@ -2,6 +2,7 @@ package de.kuschku.quasseldroid.ssl
 
 import java.security.cert.X509Certificate
 
+// FIXME: re-read RFC and check it's actually secure
 object X509Helper {
   fun hostnames(certificate: X509Certificate): Sequence<String> =
     (sequenceOf(commonName(certificate)) + subjectAlternativeNames(certificate))
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 97fd0b1e1..9364648d8 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
@@ -20,7 +20,6 @@
 package de.kuschku.quasseldroid.ui.chat
 
 import android.app.Activity
-import android.arch.lifecycle.Observer
 import android.content.Context
 import android.content.Intent
 import android.content.SharedPreferences
@@ -29,24 +28,29 @@ import android.graphics.Canvas
 import android.graphics.drawable.Drawable
 import android.os.Build
 import android.os.Bundle
-import android.support.design.widget.BottomSheetBehavior
-import android.support.v4.content.pm.ShortcutInfoCompat
-import android.support.v4.content.pm.ShortcutManagerCompat
-import android.support.v4.graphics.drawable.IconCompat
-import android.support.v4.widget.DrawerLayout
-import android.support.v7.app.ActionBarDrawerToggle
-import android.support.v7.widget.DefaultItemAnimator
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.Toolbar
 import android.text.Html
-import android.view.*
+import android.view.ActionMode
+import android.view.Menu
+import android.view.MenuItem
+import android.view.View
 import android.widget.EditText
+import androidx.appcompat.app.ActionBarDrawerToggle
+import androidx.appcompat.widget.Toolbar
+import androidx.core.content.pm.ShortcutInfoCompat
+import androidx.core.content.pm.ShortcutManagerCompat
+import androidx.core.graphics.drawable.IconCompat
+import androidx.core.view.GravityCompat
+import androidx.drawerlayout.widget.DrawerLayout
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.DefaultItemAnimator
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import com.afollestad.materialdialogs.MaterialDialog
 import com.bumptech.glide.request.target.SimpleTarget
 import com.bumptech.glide.request.transition.Transition
+import com.google.android.material.bottomsheet.BottomSheetBehavior
 import de.kuschku.libquassel.connection.ConnectionState
 import de.kuschku.libquassel.connection.QuasselSecurityException
 import de.kuschku.libquassel.protocol.Buffer_Type
@@ -225,8 +229,8 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
 
     viewModel.bufferOpened.toLiveData().observe(this, Observer {
       actionMode?.finish()
-      if (drawerLayout.isDrawerOpen(Gravity.START)) {
-        drawerLayout.closeDrawer(Gravity.START, true)
+      if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
+        drawerLayout.closeDrawer(GravityCompat.START, true)
       }
     })
 
@@ -528,7 +532,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
           if (resources.getBoolean(R.bool.buffer_drawer_exists) &&
               viewModel.buffer.value == Int.MAX_VALUE &&
               !restoredDrawerState) {
-            drawerLayout.openDrawer(Gravity.START)
+            drawerLayout.openDrawer(GravityCompat.START)
           }
           connectedAccount = accountId
           viewModel.session.value?.orNull()?.let { session ->
@@ -589,9 +593,9 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
     viewModel.bufferDataThrottled.toLiveData().observe(this, Observer {
       bufferData = it
       if (bufferData?.info?.type?.hasFlag(Buffer_Type.ChannelBuffer) == true) {
-        drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.END)
+        drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END)
       } else {
-        drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.END)
+        drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END)
       }
 
       invalidateOptionsMenu()
@@ -662,8 +666,8 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
     outState?.putInt(KEY_OPEN_BUFFER, viewModel.buffer.value ?: -1)
     outState?.putInt(KEY_OPEN_BUFFERVIEWCONFIG, viewModel.bufferViewConfigId.value ?: -1)
     outState?.putLong(KEY_CONNECTED_ACCOUNT, connectedAccount)
-    outState?.putBoolean(KEY_OPEN_DRAWER_START, drawerLayout.isDrawerOpen(Gravity.START))
-    outState?.putBoolean(KEY_OPEN_DRAWER_END, drawerLayout.isDrawerOpen(Gravity.END))
+    outState?.putBoolean(KEY_OPEN_DRAWER_START, drawerLayout.isDrawerOpen(GravityCompat.START))
+    outState?.putBoolean(KEY_OPEN_DRAWER_END, drawerLayout.isDrawerOpen(GravityCompat.END))
   }
 
   override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
@@ -674,10 +678,10 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
     connectedAccount = savedInstanceState?.getLong(KEY_CONNECTED_ACCOUNT, -1L) ?: -1L
 
     if (savedInstanceState?.getBoolean(KEY_OPEN_DRAWER_START) == true) {
-      drawerLayout.openDrawer(Gravity.START)
+      drawerLayout.openDrawer(GravityCompat.START)
     }
     if (savedInstanceState?.getBoolean(KEY_OPEN_DRAWER_END) == true) {
-      drawerLayout.openDrawer(Gravity.END)
+      drawerLayout.openDrawer(GravityCompat.END)
     }
     if (savedInstanceState?.getBoolean(KEY_OPEN_DRAWER_START) != null ||
         savedInstanceState?.getBoolean(KEY_OPEN_DRAWER_END) != null) {
@@ -712,20 +716,21 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
       drawerToggle.onOptionsItemSelected(item)
     }
     R.id.action_nicklist        -> {
-      if (drawerLayout.isDrawerVisible(Gravity.END)) {
-        drawerLayout.closeDrawer(Gravity.END)
+      if (drawerLayout.isDrawerVisible(GravityCompat.END)) {
+        drawerLayout.closeDrawer(GravityCompat.END)
       } else {
-        drawerLayout.openDrawer(Gravity.END)
+        drawerLayout.openDrawer(GravityCompat.END)
       }
       true
     }
     R.id.action_filter_messages -> {
       runInBackground {
         viewModel.buffer { buffer ->
-          val filteredRaw = database.filtered().get(accountId,
-                                                    buffer,
-                                                    accountDatabase.accounts().findById(accountId)?.defaultFiltered
-                                                    ?: 0)
+          val filteredRaw = database.filtered().get(
+            accountId,
+            buffer,
+            accountDatabase.accounts().findById(accountId)?.defaultFiltered ?: 0
+          )
           val filtered = Message_Type.of(filteredRaw)
           val flags = intArrayOf(
             Message.MessageType.Join.bit or Message.MessageType.NetsplitJoin.bit,
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatFragmentProvider.kt
index e3af1b8a5..02b4f5441 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.chat
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
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 bc4eec68e..26346ebd3 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
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.chat
 
-import android.arch.lifecycle.Observer
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.lifecycle.Observer
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.protocol.Buffer_Type
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt
index f9d77a0ee..1f6befd88 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt
@@ -20,13 +20,13 @@
 package de.kuschku.quasseldroid.ui.chat.buffers
 
 import android.graphics.drawable.Drawable
-import android.support.v7.util.DiffUtil
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.protocol.BufferId
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigAdapter.kt
index a4c28cd43..58fd88076 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigAdapter.kt
@@ -19,13 +19,13 @@
 
 package de.kuschku.quasseldroid.ui.chat.buffers
 
-import android.support.v7.view.ContextThemeWrapper
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.ThemedSpinnerAdapter
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.view.ContextThemeWrapper
+import androidx.appcompat.widget.ThemedSpinnerAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.BufferViewConfig
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
index 233a04e69..8bfeb1dac 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
@@ -19,12 +19,16 @@
 
 package de.kuschku.quasseldroid.ui.chat.buffers
 
-import android.arch.lifecycle.Observer
 import android.os.Bundle
 import android.os.Parcelable
-import android.support.v7.widget.*
 import android.view.*
 import android.widget.AdapterView
+import androidx.appcompat.widget.AppCompatSpinner
+import androidx.appcompat.widget.Toolbar
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.DefaultItemAnimator
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import com.afollestad.materialdialogs.MaterialDialog
@@ -268,8 +272,10 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
     var hasRestoredChatListState = false
     listAdapter.setOnUpdateFinishedListener {
       if (!hasRestoredChatListState && it.isNotEmpty()) {
-        savedInstanceState?.getParcelable<Parcelable>(KEY_STATE_LIST)
-          ?.let(chatList.layoutManager::onRestoreInstanceState)
+        chatList.layoutManager?.let {
+          savedInstanceState?.getParcelable<Parcelable>(KEY_STATE_LIST)
+            ?.let(it::onRestoreInstanceState)
+        }
         hasRestoredChatListState = true
       }
     }
@@ -455,7 +461,7 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
 
   override fun onSaveInstanceState(outState: Bundle) {
     super.onSaveInstanceState(outState)
-    outState.putParcelable(KEY_STATE_LIST, chatList.layoutManager.onSaveInstanceState())
+    outState.putParcelable(KEY_STATE_LIST, chatList.layoutManager?.onSaveInstanceState())
   }
 
   private fun clickListener(bufferId: BufferId) {
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 a4a5a2eee..4bbbc5403 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
@@ -19,13 +19,13 @@
 
 package de.kuschku.quasseldroid.ui.chat.info.channel
 
-import android.arch.lifecycle.Observer
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.Button
 import android.widget.TextView
+import androidx.lifecycle.Observer
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.protocol.Buffer_Type
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragmentProvider.kt
index e6eec9499..134fc5a37 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.chat.info.channel
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt
index 917a6cc13..a7955ea60 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt
@@ -1,9 +1,6 @@
 package de.kuschku.quasseldroid.ui.chat.info.core
 
 import android.graphics.drawable.Drawable
-import android.support.v7.recyclerview.extensions.ListAdapter
-import android.support.v7.util.DiffUtil
-import android.support.v7.widget.RecyclerView
 import android.text.Html
 import android.view.LayoutInflater
 import android.view.View
@@ -11,6 +8,9 @@ import android.view.ViewGroup
 import android.widget.Button
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.ExtendedFeature
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt
index 0f1e01b0b..d9ebac165 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt
@@ -19,10 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.chat.info.core
 
-import android.arch.lifecycle.Observer
 import android.os.Bundle
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
 import android.text.Html
 import android.view.LayoutInflater
 import android.view.View
@@ -30,6 +27,9 @@ import android.view.ViewGroup
 import android.widget.Button
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.QuasselFeatures
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragmentProvider.kt
index 59607acc5..cba0d3537 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.chat.info.core
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
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 68eb288d1..5336a1fe1 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
@@ -19,7 +19,6 @@
 
 package de.kuschku.quasseldroid.ui.chat.info.user
 
-import android.arch.lifecycle.Observer
 import android.os.Bundle
 import android.text.SpannableString
 import android.view.LayoutInflater
@@ -29,6 +28,7 @@ import android.widget.Button
 import android.widget.ImageView
 import android.widget.TextView
 import android.widget.Toast
+import androidx.lifecycle.Observer
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.protocol.Buffer_Type
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragmentProvider.kt
index 03642fcc7..7ee185632 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.chat.info.user
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt
index b13ef6398..9a651d285 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt
@@ -19,14 +19,14 @@
 
 package de.kuschku.quasseldroid.ui.chat.input
 
-import android.support.v7.recyclerview.extensions.ListAdapter
-import android.support.v7.util.DiffUtil
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt
index 7414e030d..4a02838ae 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.chat.input
 
-import android.arch.lifecycle.Observer
 import android.graphics.Typeface
-import android.support.v4.app.FragmentActivity
 import android.text.SpannableString
 import android.text.style.ForegroundColorSpan
 import android.text.style.StyleSpan
+import androidx.fragment.app.FragmentActivity
+import androidx.lifecycle.Observer
 import de.kuschku.libquassel.protocol.Buffer_Type
 import de.kuschku.libquassel.quassel.syncables.IrcChannel
 import de.kuschku.libquassel.quassel.syncables.IrcUser
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
index 6d91961bf..53d840014 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
@@ -19,20 +19,20 @@
 
 package de.kuschku.quasseldroid.ui.chat.input
 
-import android.arch.lifecycle.Observer
 import android.os.Bundle
-import android.support.design.widget.BottomSheetBehavior
-import android.support.v7.widget.AppCompatImageButton
-import android.support.v7.widget.DefaultItemAnimator
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
 import android.text.SpannableString
 import android.text.Spanned
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.appcompat.widget.AppCompatImageButton
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.DefaultItemAnimator
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.google.android.material.bottomsheet.BottomSheetBehavior
 import de.kuschku.libquassel.quassel.syncables.interfaces.IAliasManager
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.settings.AppearanceSettings
@@ -165,8 +165,8 @@ class ChatlineFragment : ServiceBoundFragment() {
       .observe(this, Observer(messageHistoryAdapter::submitList))
 
     fun send() {
-      if (chatline.text.isNotBlank()) {
-        val lines = chatline.text.lineSequence().map {
+      if (chatline.safeText.isNotBlank()) {
+        val lines = chatline.safeText.lineSequence().map {
           SpannableString(it).apply {
             for (span in getSpans(0, length, Any::class.java)) {
               if (getSpanFlags(span) and Spanned.SPAN_COMPOSING != 0) {
@@ -221,8 +221,8 @@ class ChatlineFragment : ServiceBoundFragment() {
   }
 
   fun replaceText(text: CharSequence) {
-    if (chatline.text.isNotBlank()) {
-      chatline.text.lineSequence().forEach(viewModel::addRecentlySentMessage)
+    if (chatline.safeText.isNotBlank()) {
+      chatline.safeText.lineSequence().forEach(viewModel::addRecentlySentMessage)
     }
     editorHelper.replaceText(text)
   }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/EditorHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/EditorHelper.kt
index 0c759f91e..00de2348f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/EditorHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/EditorHelper.kt
@@ -19,13 +19,13 @@
 
 package de.kuschku.quasseldroid.ui.chat.input
 
-import android.support.annotation.ColorInt
-import android.support.annotation.StringRes
-import android.support.v4.app.FragmentActivity
 import android.text.Editable
 import android.text.TextWatcher
 import android.view.KeyEvent
 import android.view.inputmethod.EditorInfo
+import androidx.annotation.ColorInt
+import androidx.annotation.StringRes
+import androidx.fragment.app.FragmentActivity
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.settings.AppearanceSettings
 import de.kuschku.quasseldroid.settings.AutoCompleteSettings
@@ -222,7 +222,6 @@ class EditorHelper(
         override fun onColorChooserDismissed(dialog: ColorChooserDialog) {
           f(selectedColor)
         }
-      })
-      .show(activity)
+      }).show(activity)
   }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt
index 942c48991..0f3527018 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt
@@ -19,23 +19,23 @@
 
 package de.kuschku.quasseldroid.ui.chat.input
 
-import android.support.v7.recyclerview.extensions.ListAdapter
-import android.support.v7.util.DiffUtil
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
 
 class MessageHistoryAdapter : ListAdapter<CharSequence, MessageHistoryAdapter.MessageViewHolder>(
   object : DiffUtil.ItemCallback<CharSequence>() {
-    override fun areItemsTheSame(oldItem: CharSequence?, newItem: CharSequence?) =
+    override fun areItemsTheSame(oldItem: CharSequence, newItem: CharSequence) =
       oldItem === newItem
 
-    override fun areContentsTheSame(oldItem: CharSequence?, newItem: CharSequence?) =
+    override fun areContentsTheSame(oldItem: CharSequence, newItem: CharSequence) =
       oldItem == newItem
   }) {
   private var clickListener: ((CharSequence) -> Unit)? = null
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/RichEditText.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/RichEditText.kt
index 71ee2550a..4ca1be7d5 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/RichEditText.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/RichEditText.kt
@@ -21,11 +21,13 @@ package de.kuschku.quasseldroid.ui.chat.input
 
 import android.content.Context
 import android.graphics.Typeface
-import android.support.annotation.ColorInt
+import android.text.Editable
 import android.text.InputType
+import android.text.SpannableStringBuilder
 import android.text.Spanned
 import android.text.style.*
 import android.util.AttributeSet
+import androidx.annotation.ColorInt
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.util.helper.*
 import de.kuschku.quasseldroid.util.irc.format.spans.*
@@ -33,6 +35,11 @@ import de.kuschku.quasseldroid.util.ui.DoubleClickHelper
 import de.kuschku.quasseldroid.util.ui.EditTextSelectionChange
 
 class RichEditText : EditTextSelectionChange {
+  val safeText: Editable
+    get() = this.text ?: SpannableStringBuilder("").also {
+      this.text = it
+    }
+
   val mircColors = listOf(
     R.color.mircColor00, R.color.mircColor01, R.color.mircColor02, R.color.mircColor03,
     R.color.mircColor04, R.color.mircColor05, R.color.mircColor06, R.color.mircColor07,
@@ -85,13 +92,13 @@ class RichEditText : EditTextSelectionChange {
     this.doubleClickHelper.doubleClickListener = listener
   }
 
-  fun isBold(range: IntRange = selection) = this.text.hasSpans<StyleSpan>(range) {
+  fun isBold(range: IntRange = selection) = this.safeText.hasSpans<StyleSpan>(range) {
     it.style == Typeface.BOLD || it.style == Typeface.BOLD_ITALIC
   }
 
   fun toggleBold(range: IntRange = selection, createNew: Boolean = true) {
     val bold = isBold(range)
-    this.text.removeSpans<StyleSpan, IrcBoldSpan>(range) { span ->
+    this.safeText.removeSpans<StyleSpan, IrcBoldSpan>(range) { span ->
       when {
         span is IrcBoldSpan         -> span
         span.style == Typeface.BOLD -> IrcBoldSpan()
@@ -100,21 +107,21 @@ class RichEditText : EditTextSelectionChange {
     }
 
     if (!bold && createNew) {
-      this.text.setSpan(
+      this.safeText.setSpan(
         IrcBoldSpan(), range.start, range.endInclusive + 1, Spanned.SPAN_INCLUSIVE_INCLUSIVE
       )
     }
     selectedFormattingChanged()
   }
 
-  fun isItalic(range: IntRange = selection) = this.text.hasSpans<StyleSpan>(range) {
+  fun isItalic(range: IntRange = selection) = this.safeText.hasSpans<StyleSpan>(range) {
     it.style == Typeface.ITALIC || it.style == Typeface.BOLD_ITALIC
   }
 
   fun toggleItalic(range: IntRange = selection, createNew: Boolean = true) {
     val italic = isItalic(range)
 
-    this.text.removeSpans<StyleSpan, IrcItalicSpan>(range) { span ->
+    this.safeText.removeSpans<StyleSpan, IrcItalicSpan>(range) { span ->
       when {
         span is IrcItalicSpan         -> span
         span.style == Typeface.ITALIC -> IrcItalicSpan()
@@ -123,19 +130,19 @@ class RichEditText : EditTextSelectionChange {
     }
 
     if (!italic && createNew) {
-      this.text.setSpan(
+      this.safeText.setSpan(
         IrcItalicSpan(), range.start, range.endInclusive + 1, Spanned.SPAN_INCLUSIVE_INCLUSIVE
       )
     }
     selectedFormattingChanged()
   }
 
-  fun isUnderline(range: IntRange = selection) = this.text.hasSpans<UnderlineSpan>(range)
+  fun isUnderline(range: IntRange = selection) = this.safeText.hasSpans<UnderlineSpan>(range)
 
   fun toggleUnderline(range: IntRange = selection, createNew: Boolean = true) {
     val underline = isUnderline(range)
 
-    this.text.removeSpans<UnderlineSpan, IrcUnderlineSpan>(range) { span ->
+    this.safeText.removeSpans<UnderlineSpan, IrcUnderlineSpan>(range) { span ->
       when (span) {
         is IrcUnderlineSpan -> span
         else                -> IrcUnderlineSpan()
@@ -143,19 +150,20 @@ class RichEditText : EditTextSelectionChange {
     }
 
     if (!underline && createNew) {
-      this.text.setSpan(
+      this.safeText.setSpan(
         IrcUnderlineSpan(), range.start, range.endInclusive + 1, Spanned.SPAN_INCLUSIVE_INCLUSIVE
       )
     }
     selectedFormattingChanged()
   }
 
-  fun isStrikethrough(range: IntRange = selection) = this.text.hasSpans<StrikethroughSpan>(range)
+  fun isStrikethrough(
+    range: IntRange = selection) = this.safeText.hasSpans<StrikethroughSpan>(range)
 
   fun toggleStrikethrough(range: IntRange = selection, createNew: Boolean = true) {
     val strikethrough = isStrikethrough(range)
 
-    this.text.removeSpans<StrikethroughSpan, IrcStrikethroughSpan>(range) { span ->
+    this.safeText.removeSpans<StrikethroughSpan, IrcStrikethroughSpan>(range) { span ->
       when (span) {
         is IrcStrikethroughSpan -> span
         else                    -> IrcStrikethroughSpan()
@@ -163,7 +171,7 @@ class RichEditText : EditTextSelectionChange {
     }
 
     if (!strikethrough && createNew) {
-      this.text.setSpan(
+      this.safeText.setSpan(
         IrcStrikethroughSpan(), range.start, range.endInclusive + 1,
         Spanned.SPAN_INCLUSIVE_INCLUSIVE
       )
@@ -171,14 +179,14 @@ class RichEditText : EditTextSelectionChange {
     selectedFormattingChanged()
   }
 
-  fun isMonospace(range: IntRange = selection) = this.text.hasSpans<TypefaceSpan>(range) {
+  fun isMonospace(range: IntRange = selection) = this.safeText.hasSpans<TypefaceSpan>(range) {
     it.family == "monospace"
   }
 
   fun toggleMonospace(range: IntRange = selection, createNew: Boolean = true) {
     val monospace = isMonospace(range)
 
-    this.text.removeSpans<TypefaceSpan, IrcMonospaceSpan>(range) { span ->
+    this.safeText.removeSpans<TypefaceSpan, IrcMonospaceSpan>(range) { span ->
       when {
         span is IrcMonospaceSpan   -> span
         span.family == "monospace" -> IrcMonospaceSpan()
@@ -187,20 +195,21 @@ class RichEditText : EditTextSelectionChange {
     }
 
     if (!monospace && createNew) {
-      this.text.setSpan(
+      this.safeText.setSpan(
         IrcMonospaceSpan(), range.start, range.endInclusive + 1, Spanned.SPAN_INCLUSIVE_INCLUSIVE
       )
     }
     selectedFormattingChanged()
   }
 
-  fun foregroundColors(range: IntRange = selection) = this.text.spans<ForegroundColorSpan>(range)
+  fun foregroundColors(
+    range: IntRange = selection) = this.safeText.spans<ForegroundColorSpan>(range)
   fun foregroundColor(range: IntRange = selection) =
     foregroundColors(range).singleOrNull()?.foregroundColor
 
   fun toggleForeground(range: IntRange = selection, @ColorInt color: Int? = null,
                        mircColor: Int? = null) {
-    this.text.removeSpans<ForegroundColorSpan, IrcForegroundColorSpan<*>>(range) { span ->
+    this.safeText.removeSpans<ForegroundColorSpan, IrcForegroundColorSpan<*>>(range) { span ->
       val mirc = mircColorMap[span.foregroundColor]
       when {
         span is IrcForegroundColorSpan<*> -> span
@@ -211,14 +220,14 @@ class RichEditText : EditTextSelectionChange {
 
     if (color != null) {
       if (mircColor != null) {
-        this.text.setSpan(
+        this.safeText.setSpan(
           IrcForegroundColorSpan.MIRC(mircColor, color),
           range.start,
           range.last + 1,
           Spanned.SPAN_INCLUSIVE_INCLUSIVE
         )
       } else {
-        this.text.setSpan(
+        this.safeText.setSpan(
           IrcForegroundColorSpan.HEX(color),
           range.start,
           range.last + 1,
@@ -229,13 +238,14 @@ class RichEditText : EditTextSelectionChange {
     selectedFormattingChanged()
   }
 
-  fun backgroundColors(range: IntRange = selection) = this.text.spans<BackgroundColorSpan>(range)
+  fun backgroundColors(
+    range: IntRange = selection) = this.safeText.spans<BackgroundColorSpan>(range)
   fun backgroundColor(range: IntRange = selection) =
     backgroundColors(range).singleOrNull()?.backgroundColor
 
   fun toggleBackground(range: IntRange = selection, @ColorInt color: Int? = null,
                        mircColor: Int? = null) {
-    this.text.removeSpans<BackgroundColorSpan, IrcBackgroundColorSpan<*>>(range) { span ->
+    this.safeText.removeSpans<BackgroundColorSpan, IrcBackgroundColorSpan<*>>(range) { span ->
       val mirc = mircColorMap[span.backgroundColor]
       when {
         span is IrcBackgroundColorSpan<*> -> span
@@ -246,14 +256,14 @@ class RichEditText : EditTextSelectionChange {
 
     if (color != null) {
       if (mircColor != null) {
-        this.text.setSpan(
+        this.safeText.setSpan(
           IrcBackgroundColorSpan.MIRC(mircColor, color),
           range.start,
           range.last + 1,
           Spanned.SPAN_INCLUSIVE_INCLUSIVE
         )
       } else {
-        this.text.setSpan(
+        this.safeText.setSpan(
           IrcBackgroundColorSpan.HEX(color),
           range.start,
           range.last + 1,
@@ -288,7 +298,7 @@ class RichEditText : EditTextSelectionChange {
   }
 
   fun autoComplete(text: CharSequence, suffix: String) {
-    val range = this.text.lastWordIndices(this.selection.start, true)
+    val range = this.safeText.lastWordIndices(this.selection.start, true)
     val replacement = if (range?.start == 0) {
       "$text$suffix"
     } else {
@@ -296,11 +306,11 @@ class RichEditText : EditTextSelectionChange {
     }
 
     if (range != null) {
-      this.text.replace(range.start, range.endInclusive + 1, replacement)
+      this.safeText.replace(range.start, range.endInclusive + 1, replacement)
       this.setSelection(range.start + replacement.length)
     } else {
-      this.text.append(replacement)
-      this.setSelection(this.text.length)
+      this.safeText.append(replacement)
+      this.setSelection(this.safeText.length)
     }
   }
 
@@ -310,33 +320,33 @@ class RichEditText : EditTextSelectionChange {
     val previousReplacement = item.lastCompletion?.let { "${item.lastCompletion.name}$suffix" }
 
     if (previousReplacement != null &&
-        this.text.length >= item.range.start + previousReplacement.length &&
-        this.text.substring(
+        this.safeText.length >= item.range.start + previousReplacement.length &&
+        this.safeText.substring(
           item.range.start, item.range.start + previousReplacement.length
         ) == previousReplacement) {
-      this.text.replace(
+      this.safeText.replace(
         item.range.start, item.range.start + previousReplacement.length, replacement
       )
       this.setSelection(item.range.start + replacement.length)
     } else {
-      this.text.replace(item.range.start, item.range.endInclusive + 1, replacement)
+      this.safeText.replace(item.range.start, item.range.endInclusive + 1, replacement)
       this.setSelection(item.range.start + replacement.length)
     }
   }
 
   fun replaceText(text: CharSequence?) {
     this.setText(text)
-    this.setSelection(this.text.length)
+    this.setSelection(this.safeText.length)
   }
 
   fun appendText(text: CharSequence?, suffix: String?) {
-    val shouldAddSuffix = this.text.isEmpty()
-    if (this.text.isNotEmpty() && !this.text.endsWith(" "))
-      this.text.append(" ")
-    this.text.append(text)
+    val shouldAddSuffix = this.safeText.isEmpty()
+    if (this.safeText.isNotEmpty() && !this.safeText.endsWith(" "))
+      this.safeText.append(" ")
+    this.safeText.append(text)
     if (shouldAddSuffix)
-      this.text.append(suffix)
-    this.setSelection(this.text.length)
+      this.safeText.append(suffix)
+    this.setSelection(this.safeText.length)
   }
 
   private fun selectedFormattingChanged(range: IntRange = selection) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/RichToolbar.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/RichToolbar.kt
index 3126b50a6..b215e81d7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/RichToolbar.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/RichToolbar.kt
@@ -20,11 +20,11 @@
 package de.kuschku.quasseldroid.ui.chat.input
 
 import android.content.Context
-import android.support.annotation.ColorInt
-import android.support.v7.widget.Toolbar
 import android.util.AttributeSet
 import android.view.LayoutInflater
 import android.view.View
+import androidx.annotation.ColorInt
+import androidx.appcompat.widget.Toolbar
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MarkerLineItemDecoration.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MarkerLineItemDecoration.kt
index 3fdca04c0..55982551d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MarkerLineItemDecoration.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MarkerLineItemDecoration.kt
@@ -23,10 +23,10 @@ import android.content.Context
 import android.graphics.Canvas
 import android.graphics.Paint
 import android.graphics.Rect
-import android.support.annotation.AttrRes
-import android.support.annotation.DimenRes
-import android.support.v7.widget.RecyclerView
 import android.view.View
+import androidx.annotation.AttrRes
+import androidx.annotation.DimenRes
+import androidx.recyclerview.widget.RecyclerView
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.util.helper.styledAttributes
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
index 515df0a60..ce9e3b469 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
@@ -20,15 +20,15 @@
 package de.kuschku.quasseldroid.ui.chat.messages
 
 import android.annotation.SuppressLint
-import android.arch.paging.PagedListAdapter
-import android.support.v7.util.DiffUtil
-import android.support.v7.widget.RecyclerView
 import android.util.LruCache
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.paging.PagedListAdapter
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.protocol.Message_Flag
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 4d397b6aa..97a88f34f 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
@@ -19,27 +19,27 @@
 
 package de.kuschku.quasseldroid.ui.chat.messages
 
-import android.arch.lifecycle.Observer
-import android.arch.paging.LivePagedListBuilder
-import android.arch.paging.PagedList
 import android.content.ClipData
 import android.content.ClipboardManager
 import android.content.Context
 import android.content.Intent
 import android.os.Bundle
-import android.support.design.widget.FloatingActionButton
-import android.support.v4.widget.SwipeRefreshLayout
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
 import android.text.SpannableStringBuilder
 import android.util.TypedValue
 import android.view.*
+import androidx.lifecycle.Observer
+import androidx.paging.LivePagedListBuilder
+import androidx.paging.PagedList
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
 import butterknife.BindView
 import butterknife.ButterKnife
 import com.bumptech.glide.Glide
 import com.bumptech.glide.ListPreloader
 import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader
 import com.bumptech.glide.util.FixedPreloadSizeProvider
+import com.google.android.material.floatingactionbutton.FloatingActionButton
 import de.kuschku.libquassel.connection.ConnectionState
 import de.kuschku.libquassel.protocol.BufferId
 import de.kuschku.libquassel.protocol.Message_Type
@@ -201,8 +201,7 @@ class MessageListFragment : ServiceBoundFragment() {
     }
   }
 
-  private val boundaryCallback = object :
-    PagedList.BoundaryCallback<DisplayMessage>() {
+  private val boundaryCallback = object : PagedList.BoundaryCallback<DisplayMessage>() {
     override fun onItemAtFrontLoaded(itemAtFront: DisplayMessage) = Unit
     override fun onItemAtEndLoaded(itemAtEnd: DisplayMessage) {
       loadMore()
@@ -290,7 +289,7 @@ class MessageListFragment : ServiceBoundFragment() {
         scrollDown.toggle(canScrollDown && isScrollingDown)
       }
 
-      override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
+      override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
         isScrolling = when (newState) {
           RecyclerView.SCROLL_STATE_SETTLING, RecyclerView.SCROLL_STATE_IDLE -> false
           RecyclerView.SCROLL_STATE_DRAGGING                                 -> true
@@ -403,7 +402,8 @@ class MessageListFragment : ServiceBoundFragment() {
         }
       } else {
         savedInstanceState?.apply {
-          messageList.layoutManager.onRestoreInstanceState(getParcelable(KEY_STATE_LIST))
+          (messageList.layoutManager as RecyclerView.LayoutManager).onRestoreInstanceState(
+            getParcelable(KEY_STATE_LIST))
         }
         hasLoaded = true
       }
@@ -416,7 +416,7 @@ class MessageListFragment : ServiceBoundFragment() {
 
     scrollDown.hide(object : FloatingActionButton.OnVisibilityChangedListener() {
       override fun onHidden(fab: FloatingActionButton) {
-        fab.visibility = View.VISIBLE
+        (fab as View).visibility = View.VISIBLE
       }
     })
     scrollDown.setOnClickListener { messageList.scrollToPosition(0) }
@@ -446,7 +446,8 @@ class MessageListFragment : ServiceBoundFragment() {
     ))
 
     savedInstanceState?.run {
-      messageList.layoutManager.onRestoreInstanceState(getParcelable(KEY_STATE_LIST))
+      (messageList.layoutManager as RecyclerView.LayoutManager).onRestoreInstanceState(getParcelable(
+        KEY_STATE_LIST))
       previousLoadKey = getInt(KEY_STATE_PAGING).nullIf { it == -1 }
       lastBuffer = getInt(KEY_STATE_BUFFER).nullIf { it == -1 }
     }
@@ -476,7 +477,7 @@ class MessageListFragment : ServiceBoundFragment() {
 
   override fun onSaveInstanceState(outState: Bundle) {
     super.onSaveInstanceState(outState)
-    outState.putParcelable(KEY_STATE_LIST, messageList.layoutManager.onSaveInstanceState())
+    outState.putParcelable(KEY_STATE_LIST, messageList.layoutManager?.onSaveInstanceState())
     outState.putInt(KEY_STATE_PAGING, previousLoadKey ?: -1)
     outState.putInt(KEY_STATE_BUFFER, lastBuffer ?: -1)
   }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageRenderer.kt
index 60c4bb302..f68f8b222 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageRenderer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageRenderer.kt
@@ -20,7 +20,7 @@
 package de.kuschku.quasseldroid.ui.chat.messages
 
 import android.content.Context
-import android.support.annotation.LayoutRes
+import androidx.annotation.LayoutRes
 import de.kuschku.libquassel.protocol.Message_Type
 import de.kuschku.quasseldroid.persistence.QuasselDatabase
 import de.kuschku.quasseldroid.viewmodel.data.FormattedMessage
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt
index b009b83ae..a0997d080 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt
@@ -19,14 +19,14 @@
 
 package de.kuschku.quasseldroid.ui.chat.nicks
 
-import android.support.v7.recyclerview.extensions.ListAdapter
-import android.support.v7.util.DiffUtil
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.util.helpers.nullIf
@@ -47,7 +47,7 @@ class NickListAdapter(
     override fun areItemsTheSame(oldItem: IrcUserItem, newItem: IrcUserItem) =
       oldItem.nick == newItem.nick
 
-    override fun areContentsTheSame(oldItem: IrcUserItem?, newItem: IrcUserItem?) =
+    override fun areContentsTheSame(oldItem: IrcUserItem, newItem: IrcUserItem) =
       oldItem == newItem
   }), FastScrollRecyclerView.SectionedAdapter {
   override fun getSectionName(position: Int) = getItem(position).let {
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 ef857918d..34bea810d 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
@@ -19,18 +19,18 @@
 
 package de.kuschku.quasseldroid.ui.chat.nicks
 
-import android.arch.lifecycle.Observer
 import android.graphics.Typeface
 import android.os.Bundle
-import android.support.v7.widget.DefaultItemAnimator
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
 import android.text.SpannableString
 import android.text.style.ForegroundColorSpan
 import android.text.style.StyleSpan
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.DefaultItemAnimator
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import com.bumptech.glide.Glide
@@ -160,7 +160,8 @@ class NickListFragment : ServiceBoundFragment() {
       }
     })
     savedInstanceState?.run {
-      nickList.layoutManager.onRestoreInstanceState(getParcelable(KEY_STATE_LIST))
+      (nickList.layoutManager as RecyclerView.LayoutManager)
+        .onRestoreInstanceState(getParcelable(KEY_STATE_LIST))
     }
 
     val sizeProvider = FixedPreloadSizeProvider<List<Avatar>>(avatarSize, avatarSize)
@@ -183,7 +184,7 @@ class NickListFragment : ServiceBoundFragment() {
 
   override fun onSaveInstanceState(outState: Bundle) {
     super.onSaveInstanceState(outState)
-    outState.putParcelable(KEY_STATE_LIST, nickList.layoutManager.onSaveInstanceState())
+    outState.putParcelable(KEY_STATE_LIST, nickList.layoutManager?.onSaveInstanceState())
   }
 
   private val clickListener: ((String) -> Unit)? = { nick ->
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt
index 4e2b76f84..c484eddfa 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt
@@ -19,17 +19,17 @@
 
 package de.kuschku.quasseldroid.ui.chat.topic
 
-import android.arch.lifecycle.Observer
 import android.os.Bundle
-import android.support.design.widget.BottomSheetBehavior
-import android.support.v7.widget.DefaultItemAnimator
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.DefaultItemAnimator
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.google.android.material.bottomsheet.BottomSheetBehavior
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.settings.AppearanceSettings
 import de.kuschku.quasseldroid.settings.AutoCompleteSettings
@@ -132,7 +132,7 @@ class TopicFragment : SettingsFragment(), SettingsFragment.Savable {
       val session = sessionOptional.orNull()
       viewModel.buffer { bufferId ->
         session?.bufferSyncer?.bufferInfo(bufferId)?.also { bufferInfo ->
-          val topic = formatSerializer.toEscapeCodes(chatline.text)
+          val topic = formatSerializer.toEscapeCodes(chatline.safeText)
           session.rpcHandler?.sendInput(bufferInfo, "/topic $topic")
           return true
         }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragmentProvider.kt
index 5d6c11a34..06d7dc796 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.chat.topic
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt
index 18aded090..6805cd88e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt
@@ -25,16 +25,16 @@ import android.content.Context
 import android.content.Intent
 import android.net.Uri
 import android.os.Bundle
-import android.support.v4.view.ViewCompat
-import android.support.v7.widget.DividerItemDecoration
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.Button
 import android.widget.TextView
 import android.widget.Toast
+import androidx.core.view.ViewCompat
+import androidx.recyclerview.widget.DividerItemDecoration
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import dagger.android.support.DaggerFragment
@@ -109,40 +109,9 @@ class AboutFragment : DaggerFragment() {
     libraries.itemAnimator = null
     libraries.adapter = LibraryAdapter(listOf(
       Library(
-        name = "Android Architecture Components: Lifecycle",
-        version = "1.1.1",
+        name = "AndroidX",
         license = apache2,
-        url = "https://android.googlesource.com/platform/frameworks/support/+/master/lifecycle"
-      ),
-      Library(
-        name = "Android Architecture Components: Paging",
-        version = "1.0.0",
-        license = apache2,
-        url = "https://android.googlesource.com/platform/frameworks/support/+/master/paging"
-      ),
-      Library(
-        name = "Android Architecture Components: Persistence",
-        version = "1.1.1-rc1",
-        license = apache2,
-        url = "https://android.googlesource.com/platform/frameworks/support/+/master/persistence"
-      ),
-      Library(
-        name = "Android Architecture Components: Room",
-        version = "1.1.1-rc1",
-        license = apache2,
-        url = "https://android.googlesource.com/platform/frameworks/support/+/master/persistence"
-      ),
-      Library(
-        name = "Android Support Library",
-        version = "27.1.1",
-        license = apache2,
-        url = "https://android.googlesource.com/platform/frameworks/support/+/master"
-      ),
-      Library(
-        name = "Android Support Library: Constraint Layout",
-        version = "1.1.0-beta6",
-        license = apache2,
-        url = "https://android.googlesource.com/platform/frameworks/opt/sherpa/+/studio-3.0/constraintlayout"
+        url = "https://developer.android.com/jetpack/androidx/"
       ),
       Library(
         name = "atinject",
@@ -163,7 +132,7 @@ class AboutFragment : DaggerFragment() {
       ),
       Library(
         name = "Butter Knife",
-        version = "8.8.1",
+        version = "8.9.0",
         license = apache2,
         url = "http://jakewharton.github.io/butterknife/"
       ),
@@ -184,7 +153,7 @@ class AboutFragment : DaggerFragment() {
       ),
       Library(
         name = "Glide",
-        version = "4.6.1",
+        version = "4.8.0",
         license = apache2,
         url = "https://bumptech.github.io/glide/"
       ),
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragmentProvider.kt
index 593771afa..efb25f263 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.about
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/ContributorAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/ContributorAdapter.kt
index 189dda620..4d4f8f417 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/ContributorAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/ContributorAdapter.kt
@@ -19,11 +19,11 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.about
 
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
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 112375c84..55e4458a0 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
@@ -19,11 +19,11 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.about
 
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/License.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/License.kt
index 467598177..ab61e1eb9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/License.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/License.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.about
 
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 
 data class License(
   val shortName: String,
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Translator.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Translator.kt
index b29f42305..58f0561ee 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Translator.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Translator.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.about
 
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 
 data class Translator(
   val name: String,
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/TranslatorAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/TranslatorAdapter.kt
index b751d65ea..b0d72c090 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/TranslatorAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/TranslatorAdapter.kt
@@ -19,11 +19,11 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.about
 
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsActivity.kt
index 52237e873..d0f2152fd 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsActivity.kt
@@ -21,9 +21,9 @@ package de.kuschku.quasseldroid.ui.clientsettings.client
 
 import android.content.Context
 import android.content.Intent
-import android.support.v7.preference.ListPreference
-import android.support.v7.preference.Preference
-import android.support.v7.preference.PreferenceFragmentCompat
+import androidx.preference.ListPreference
+import androidx.preference.Preference
+import androidx.preference.PreferenceFragmentCompat
 import de.kuschku.quasseldroid.util.ui.settings.ListPreferenceDialogFragmentCompat
 import de.kuschku.quasseldroid.util.ui.settings.SettingsActivity
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsFragment.kt
index 0dceab577..b36497c75 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsFragment.kt
@@ -22,12 +22,12 @@ package de.kuschku.quasseldroid.ui.clientsettings.client
 import android.content.SharedPreferences
 import android.os.Build
 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 androidx.preference.ListPreference
+import androidx.preference.Preference
+import androidx.preference.PreferenceGroup
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.settings.AppearanceSettings
 import de.kuschku.quasseldroid.settings.Settings
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsFragmentProvider.kt
index c6f9a2fb0..c77aabe2d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.client
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashAdapter.kt
index 4cdc653cd..bed1e52b6 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashAdapter.kt
@@ -20,13 +20,13 @@
 package de.kuschku.quasseldroid.ui.clientsettings.crash
 
 import android.content.Intent
-import android.support.v7.recyclerview.extensions.ListAdapter
-import android.support.v7.util.DiffUtil
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.malheur.data.Report
@@ -37,11 +37,10 @@ import org.threeten.bp.format.DateTimeFormatter
 
 class CrashAdapter : ListAdapter<Pair<Report, String>, CrashAdapter.CrashViewHolder>(
   object : DiffUtil.ItemCallback<Pair<Report, String>>() {
-    override fun areItemsTheSame(oldItem: Pair<Report, String>?, newItem: Pair<Report, String>?) =
-      oldItem?.second == newItem?.second
+    override fun areItemsTheSame(oldItem: Pair<Report, String>, newItem: Pair<Report, String>) =
+      oldItem.second == newItem.second
 
-    override fun areContentsTheSame(oldItem: Pair<Report, String>?,
-                                    newItem: Pair<Report, String>?) =
+    override fun areContentsTheSame(oldItem: Pair<Report, String>, newItem: Pair<Report, String>) =
       oldItem == newItem
   }
 ) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragment.kt
index f0afe8d2e..530faf1a2 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragment.kt
@@ -22,11 +22,11 @@ package de.kuschku.quasseldroid.ui.clientsettings.crash
 import android.os.Bundle
 import android.os.Handler
 import android.os.HandlerThread
-import android.support.v4.view.ViewCompat
-import android.support.v7.widget.DividerItemDecoration
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
 import android.view.*
+import androidx.core.view.ViewCompat
+import androidx.recyclerview.widget.DividerItemDecoration
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import com.google.gson.Gson
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragmentProvider.kt
index 90fb73c3b..ef13279c4 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.crash
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseActivity.kt
index d5abe2bf1..f082a3671 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseActivity.kt
@@ -21,7 +21,7 @@ package de.kuschku.quasseldroid.ui.clientsettings.license
 
 import android.content.Context
 import android.content.Intent
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 import de.kuschku.quasseldroid.util.ui.settings.SettingsActivity
 
 class LicenseActivity : SettingsActivity(LicenseFragment()) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseFragmentProvider.kt
index a92879f3a..eea7fab02 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.license
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt
index 4074f6c26..804a1ab12 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.whitelist
 
-import android.support.v7.widget.AppCompatImageButton
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.AppCompatImageButton
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragment.kt
index d4a002d4c..5408e3a2d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragment.kt
@@ -22,13 +22,13 @@ package de.kuschku.quasseldroid.ui.clientsettings.whitelist
 import android.os.Bundle
 import android.os.Handler
 import android.os.HandlerThread
-import android.support.v4.view.ViewCompat
-import android.support.v7.widget.DividerItemDecoration
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.core.view.ViewCompat
+import androidx.recyclerview.widget.DividerItemDecoration
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragmentProvider.kt
index e22288351..921a3ac7c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.whitelist
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt
index f5d428a4e..94681d4ed 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.whitelist
 
-import android.support.v7.widget.AppCompatImageButton
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.AppCompatImageButton
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
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 acd2145c3..777218ec8 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
@@ -19,16 +19,16 @@
 
 package de.kuschku.quasseldroid.ui.coresettings
 
-import android.arch.lifecycle.Observer
 import android.os.Bundle
-import android.support.v4.view.ViewCompat
-import android.support.v7.widget.DividerItemDecoration
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.Button
+import androidx.core.view.ViewCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.DividerItemDecoration
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.BufferViewConfig
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt
index e45182a1d..03cfbcdf0 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItemAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItemAdapter.kt
index 46d6169f3..d7f4925d1 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItemAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItemAdapter.kt
@@ -19,13 +19,13 @@
 
 package de.kuschku.quasseldroid.ui.coresettings
 
-import android.support.v7.recyclerview.extensions.ListAdapter
-import android.support.v7.util.DiffUtil
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.protocol.IdentityId
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt
index f547b4548..fc061d638 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt
@@ -22,16 +22,16 @@ package de.kuschku.quasseldroid.ui.coresettings.aliasitem
 import android.app.Activity
 import android.content.Intent
 import android.os.Bundle
-import android.support.design.widget.BottomSheetBehavior
-import android.support.v7.widget.DefaultItemAnimator
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.EditText
+import androidx.recyclerview.widget.DefaultItemAnimator
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.google.android.material.bottomsheet.BottomSheetBehavior
 import de.kuschku.libquassel.quassel.syncables.interfaces.IAliasManager
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.settings.AppearanceSettings
@@ -140,7 +140,7 @@ class AliasItemFragment : SettingsFragment(), SettingsFragment.Savable,
 
   private fun applyChanges() = IAliasManager.Alias(
     name = name.text.toString(),
-    expansion = formatSerializer.toEscapeCodes(expansion.text)
+    expansion = formatSerializer.toEscapeCodes(expansion.safeText)
   )
 
   override fun onSave() = rule.let { data ->
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragmentProvider.kt
index e452dd0e2..b91efd5cc 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.aliasitem
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListAdapter.kt
index db8697636..625c40470 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListAdapter.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.aliaslist
 
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.MotionEvent
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.interfaces.IAliasManager
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragment.kt
index e36bbdd7c..5609c9b59 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragment.kt
@@ -20,20 +20,16 @@
 package de.kuschku.quasseldroid.ui.coresettings.aliaslist
 
 import android.app.Activity
-import android.arch.lifecycle.Observer
 import android.content.Intent
 import android.os.Bundle
-import android.support.design.widget.FloatingActionButton
-import android.support.v7.widget.DefaultItemAnimator
-import android.support.v7.widget.DividerItemDecoration
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.helper.ItemTouchHelper
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.*
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.google.android.material.floatingactionbutton.FloatingActionButton
 import de.kuschku.libquassel.quassel.syncables.AliasManager
 import de.kuschku.libquassel.quassel.syncables.interfaces.IAliasManager
 import de.kuschku.libquassel.util.Optional
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragmentProvider.kt
index 0f94a249c..9da148fee 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.aliaslist
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/DragSortItemTouchHelperCallback.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/DragSortItemTouchHelperCallback.kt
index e47b1f569..cc52fea9b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/DragSortItemTouchHelperCallback.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/DragSortItemTouchHelperCallback.kt
@@ -19,8 +19,8 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.aliaslist
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.helper.ItemTouchHelper
+import androidx.recyclerview.widget.ItemTouchHelper
+import androidx.recyclerview.widget.RecyclerView
 
 class DragSortItemTouchHelperCallback(private val adapter: AliasListAdapter) :
   ItemTouchHelper.Callback() {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt
index efc4390e3..84e4af0f0 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt
@@ -19,15 +19,15 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.chatlist
 
-import android.arch.lifecycle.Observer
 import android.os.Bundle
-import android.support.v7.widget.SwitchCompat
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.AdapterView
 import android.widget.EditText
 import android.widget.Spinner
+import androidx.appcompat.widget.SwitchCompat
+import androidx.lifecycle.Observer
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.protocol.Buffer_Activity
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistCreateFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistCreateFragmentProvider.kt
index f9fd4c2c9..245294f4a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistCreateFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistCreateFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.chatlist
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistEditFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistEditFragmentProvider.kt
index 7776a1963..2384b40a9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistEditFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistEditFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.chatlist
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityAdapter.kt
index e51ad8b7c..aab76a5e7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityAdapter.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.chatlist
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.ThemedSpinnerAdapter
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.ThemedSpinnerAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.protocol.Buffer_Activities
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityItem.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityItem.kt
index d28a73e15..4f82245f1 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityItem.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityItem.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.chatlist
 
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 import de.kuschku.libquassel.protocol.Buffer_Activity
 
 data class MinimumActivityItem(val activity: Buffer_Activity, @StringRes val name: Int)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt
index 3116eadef..70a0f2e87 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.chatlist
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.ThemedSpinnerAdapter
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.ThemedSpinnerAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.protocol.NetworkId
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/DragSortItemTouchHelperCallback.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/DragSortItemTouchHelperCallback.kt
index 3c45896d0..c981b025c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/DragSortItemTouchHelperCallback.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/DragSortItemTouchHelperCallback.kt
@@ -19,8 +19,8 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.highlightlist
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.helper.ItemTouchHelper
+import androidx.recyclerview.widget.ItemTouchHelper
+import androidx.recyclerview.widget.RecyclerView
 
 class DragSortItemTouchHelperCallback(private val adapter: HighlightRuleAdapter) :
   ItemTouchHelper.Callback() {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragment.kt
index 1801e1629..849a04a23 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragment.kt
@@ -20,19 +20,19 @@
 package de.kuschku.quasseldroid.ui.coresettings.highlightlist
 
 import android.app.Activity
-import android.arch.lifecycle.Observer
 import android.content.Intent
 import android.os.Bundle
-import android.support.v7.widget.DefaultItemAnimator
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.SwitchCompat
-import android.support.v7.widget.helper.ItemTouchHelper
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.Button
 import android.widget.Spinner
+import androidx.appcompat.widget.SwitchCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.DefaultItemAnimator
+import androidx.recyclerview.widget.ItemTouchHelper
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.HighlightRuleManager
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragmentProvider.kt
index 498edbe89..4f1f1e95a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.highlightlist
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeAdapter.kt
index cef4c53cb..f8645e1df 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeAdapter.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.highlightlist
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.ThemedSpinnerAdapter
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.ThemedSpinnerAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.interfaces.IHighlightRuleManager
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeItem.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeItem.kt
index 1487ad4fb..32fa895df 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeItem.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeItem.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.highlightlist
 
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 import de.kuschku.libquassel.quassel.syncables.interfaces.IHighlightRuleManager
 
 data class HighlightNickTypeItem(
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightRuleAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightRuleAdapter.kt
index 1b91abd1a..f0ee87c00 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightRuleAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightRuleAdapter.kt
@@ -19,13 +19,13 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.highlightlist
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.SwitchCompat
 import android.view.LayoutInflater
 import android.view.MotionEvent
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.SwitchCompat
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.HighlightRuleManager
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragment.kt
index dc54c7e7c..a6163a0da 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragment.kt
@@ -22,11 +22,11 @@ package de.kuschku.quasseldroid.ui.coresettings.highlightrule
 import android.app.Activity
 import android.content.Intent
 import android.os.Bundle
-import android.support.v7.widget.SwitchCompat
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.EditText
+import androidx.appcompat.widget.SwitchCompat
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.HighlightRuleManager
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragmentProvider.kt
index a9f61024d..e7e38d297 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.highlightrule
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/DragSortItemTouchHelperCallback.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/DragSortItemTouchHelperCallback.kt
index 70104772d..9a6b68672 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/DragSortItemTouchHelperCallback.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/DragSortItemTouchHelperCallback.kt
@@ -19,8 +19,8 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.identity
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.helper.ItemTouchHelper
+import androidx.recyclerview.widget.ItemTouchHelper
+import androidx.recyclerview.widget.RecyclerView
 
 class DragSortItemTouchHelperCallback(private val adapter: IdentityNicksAdapter) :
   ItemTouchHelper.Callback() {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt
index d6bf8f292..f333c9fd6 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt
@@ -19,18 +19,18 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.identity
 
-import android.arch.lifecycle.Observer
 import android.os.Bundle
-import android.support.v4.view.ViewCompat
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.SwitchCompat
-import android.support.v7.widget.helper.ItemTouchHelper
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.Button
 import android.widget.EditText
+import androidx.appcompat.widget.SwitchCompat
+import androidx.core.view.ViewCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.ItemTouchHelper
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import com.afollestad.materialdialogs.MaterialDialog
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragmentProvider.kt
index 28aeb328d..841ce437f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.identity
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityEditFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityEditFragmentProvider.kt
index 795dca383..e5406f56d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityEditFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityEditFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.identity
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt
index ae4858a74..f869743bc 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.identity
 
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.MotionEvent
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragment.kt
index af77d8999..c6e88baa5 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragment.kt
@@ -22,13 +22,13 @@ package de.kuschku.quasseldroid.ui.coresettings.ignoreitem
 import android.app.Activity
 import android.content.Intent
 import android.os.Bundle
-import android.support.v7.widget.SwitchCompat
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.AdapterView
 import android.widget.EditText
 import android.widget.Spinner
+import androidx.appcompat.widget.SwitchCompat
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.IgnoreListManager
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragmentProvider.kt
index 8f99e9818..cf2855c02 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.ignoreitem
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeAdapter.kt
index f0cdf9551..4ff062ed3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeAdapter.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.ignoreitem
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.ThemedSpinnerAdapter
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.ThemedSpinnerAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.IgnoreListManager
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeItem.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeItem.kt
index 0a6731c1c..4039cceb7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeItem.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeItem.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.ignoreitem
 
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 import de.kuschku.libquassel.quassel.syncables.IgnoreListManager
 
 data class IgnoreTypeItem(val value: IgnoreListManager.IgnoreType, @StringRes val name: Int)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeAdapter.kt
index db69ab3c3..3a31839bc 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeAdapter.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.ignoreitem
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.ThemedSpinnerAdapter
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.ThemedSpinnerAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.IgnoreListManager
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeItem.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeItem.kt
index c7ca93efb..d3bb006bc 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeItem.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeItem.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.ignoreitem
 
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 import de.kuschku.libquassel.quassel.syncables.IgnoreListManager
 
 data class ScopeTypeItem(val value: IgnoreListManager.ScopeType, @StringRes val name: Int)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeAdapter.kt
index 3a099af44..066c41ba4 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeAdapter.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.ignoreitem
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.ThemedSpinnerAdapter
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.ThemedSpinnerAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.IgnoreListManager
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeItem.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeItem.kt
index d962e00b4..7229aaefd 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeItem.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeItem.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.ignoreitem
 
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 import de.kuschku.libquassel.quassel.syncables.IgnoreListManager
 
 data class StrictnessTypeItem(val value: IgnoreListManager.StrictnessType, @StringRes val name: Int)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/DragSortItemTouchHelperCallback.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/DragSortItemTouchHelperCallback.kt
index db456a9ae..95f1728ee 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/DragSortItemTouchHelperCallback.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/DragSortItemTouchHelperCallback.kt
@@ -19,8 +19,8 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.ignorelist
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.helper.ItemTouchHelper
+import androidx.recyclerview.widget.ItemTouchHelper
+import androidx.recyclerview.widget.RecyclerView
 
 class DragSortItemTouchHelperCallback(private val adapter: IgnoreListAdapter) :
   ItemTouchHelper.Callback() {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListAdapter.kt
index 59bca241e..8e6f2e573 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListAdapter.kt
@@ -19,13 +19,13 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.ignorelist
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.SwitchCompat
 import android.view.LayoutInflater
 import android.view.MotionEvent
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.SwitchCompat
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.IgnoreListManager
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 5519ff6ed..8cf0db75a 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
@@ -20,19 +20,19 @@
 package de.kuschku.quasseldroid.ui.coresettings.ignorelist
 
 import android.app.Activity
-import android.arch.lifecycle.Observer
 import android.content.Intent
 import android.os.Bundle
-import android.support.design.widget.FloatingActionButton
-import android.support.v7.widget.DefaultItemAnimator
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.helper.ItemTouchHelper
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.DefaultItemAnimator
+import androidx.recyclerview.widget.ItemTouchHelper
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.google.android.material.floatingactionbutton.FloatingActionButton
 import de.kuschku.libquassel.quassel.syncables.IgnoreListManager
 import de.kuschku.libquassel.util.Optional
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragmentProvider.kt
index ea3c34f45..a7e2a573b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.ignorelist
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/DragSortItemTouchHelperCallback.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/DragSortItemTouchHelperCallback.kt
index 8f7429552..54c868b75 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/DragSortItemTouchHelperCallback.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/DragSortItemTouchHelperCallback.kt
@@ -19,8 +19,8 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.network
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.helper.ItemTouchHelper
+import androidx.recyclerview.widget.ItemTouchHelper
+import androidx.recyclerview.widget.RecyclerView
 
 class DragSortItemTouchHelperCallback(private val adapter: NetworkServerAdapter) :
   ItemTouchHelper.Callback() {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/IdentityAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/IdentityAdapter.kt
index 47002c5a7..4f188b4e4 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/IdentityAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/IdentityAdapter.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.network
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.ThemedSpinnerAdapter
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.ThemedSpinnerAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.protocol.NetworkId
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt
index 1c25edd89..50244d57d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt
@@ -20,20 +20,20 @@
 package de.kuschku.quasseldroid.ui.coresettings.network
 
 import android.app.Activity
-import android.arch.lifecycle.Observer
 import android.content.Intent
 import android.os.Bundle
-import android.support.v4.view.ViewCompat
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.SwitchCompat
-import android.support.v7.widget.helper.ItemTouchHelper
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.Button
 import android.widget.EditText
 import android.widget.Spinner
+import androidx.appcompat.widget.SwitchCompat
+import androidx.core.view.ViewCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.ItemTouchHelper
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.Identity
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkCreateFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkCreateFragmentProvider.kt
index 928ecbd4a..f710dc514 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkCreateFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkCreateFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.network
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkEditFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkEditFragmentProvider.kt
index d41f53e91..557be007a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkEditFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkEditFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.network
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt
index ab772c05d..f4e28ff62 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt
@@ -20,13 +20,13 @@
 package de.kuschku.quasseldroid.ui.coresettings.network
 
 import android.graphics.drawable.Drawable
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.MotionEvent
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt
index 770895cb7..2100fed19 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt
@@ -19,13 +19,13 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.networkconfig
 
-import android.arch.lifecycle.Observer
 import android.os.Bundle
-import android.support.v7.widget.SwitchCompat
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.EditText
+import androidx.appcompat.widget.SwitchCompat
+import androidx.lifecycle.Observer
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.NetworkConfig
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt
index 9bfc89520..774c1c4f9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.networkconfig
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerFragment.kt
index b98f4d1ff..4b46c9f12 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerFragment.kt
@@ -22,12 +22,12 @@ package de.kuschku.quasseldroid.ui.coresettings.networkserver
 import android.app.Activity
 import android.content.Intent
 import android.os.Bundle
-import android.support.v7.widget.SwitchCompat
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.EditText
 import android.widget.Spinner
+import androidx.appcompat.widget.SwitchCompat
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerFragmentProvider.kt
index 13c445336..9be926dd9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.networkserver
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeAdapter.kt
index 97618a689..eb3d4f7dc 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeAdapter.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.networkserver
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.ThemedSpinnerAdapter
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.ThemedSpinnerAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeItem.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeItem.kt
index 197d2fc11..80b491bb8 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeItem.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeItem.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.networkserver
 
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork
 
 data class ProxyTypeItem(val value: INetwork.ProxyType, @StringRes val name: Int)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/ServiceBoundSetupActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/ServiceBoundSetupActivity.kt
index 7f70989c0..d3b4ae05d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/ServiceBoundSetupActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/ServiceBoundSetupActivity.kt
@@ -19,24 +19,24 @@
 
 package de.kuschku.quasseldroid.ui.setup
 
-import android.arch.lifecycle.MutableLiveData
-import android.arch.lifecycle.Observer
 import android.content.Context
 import android.content.SharedPreferences
 import android.content.pm.PackageManager
 import android.os.Bundle
 import android.os.Parcelable
-import android.support.annotation.ColorRes
-import android.support.annotation.DrawableRes
-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 androidx.annotation.ColorRes
+import androidx.annotation.DrawableRes
+import androidx.appcompat.widget.ActionMenuView
+import androidx.fragment.app.FragmentManager
+import androidx.fragment.app.FragmentStatePagerAdapter
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.Observer
+import androidx.viewpager.widget.ViewPager
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.google.android.material.floatingactionbutton.FloatingActionButton
 import dagger.android.support.DaggerAppCompatActivity
 import de.kuschku.libquassel.session.Backend
 import de.kuschku.libquassel.util.Optional
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 345417488..8f184dea6 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
@@ -19,23 +19,23 @@
 
 package de.kuschku.quasseldroid.ui.setup
 
-import android.arch.lifecycle.MutableLiveData
-import android.arch.lifecycle.Observer
 import android.content.Context
 import android.content.pm.PackageManager
 import android.os.Bundle
 import android.os.Parcelable
-import android.support.annotation.ColorRes
-import android.support.annotation.DrawableRes
-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 androidx.annotation.ColorRes
+import androidx.annotation.DrawableRes
+import androidx.appcompat.widget.ActionMenuView
+import androidx.fragment.app.FragmentManager
+import androidx.fragment.app.FragmentStatePagerAdapter
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.Observer
+import androidx.viewpager.widget.ViewPager
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.google.android.material.floatingactionbutton.FloatingActionButton
 import dagger.android.support.DaggerAppCompatActivity
 import de.kuschku.libquassel.util.helpers.nullIf
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlideFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlideFragment.kt
index 0d5fbb76b..57d37c436 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlideFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlideFragment.kt
@@ -19,16 +19,16 @@
 
 package de.kuschku.quasseldroid.ui.setup
 
-import android.arch.lifecycle.LifecycleOwner
-import android.arch.lifecycle.MutableLiveData
-import android.arch.lifecycle.Observer
 import android.os.Bundle
-import android.support.annotation.StringRes
-import android.support.design.widget.CollapsingToolbarLayout
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.annotation.StringRes
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.Observer
+import com.google.android.material.appbar.CollapsingToolbarLayout
 import dagger.android.support.DaggerFragment
 import de.kuschku.quasseldroid.R
 
@@ -41,12 +41,12 @@ abstract class SlideFragment : DaggerFragment() {
   protected abstract fun isValid(): Boolean
 
   val valid = object : MutableLiveData<Boolean>() {
-    override fun observe(owner: LifecycleOwner, observer: Observer<Boolean>) {
+    override fun observe(owner: LifecycleOwner, observer: Observer<in Boolean>) {
       super.observe(owner, observer)
       observer.onChanged(value)
     }
 
-    override fun observeForever(observer: Observer<Boolean>) {
+    override fun observeForever(observer: Observer<in Boolean>) {
       super.observeForever(observer)
       observer.onChanged(value)
     }
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 e5040d46d..72a92d01e 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
@@ -23,7 +23,6 @@ import android.app.Activity
 import android.content.Context
 import android.content.Intent
 import android.os.Bundle
-import android.support.design.widget.TextInputLayout
 import android.text.Editable
 import android.view.Menu
 import android.view.MenuItem
@@ -31,6 +30,7 @@ import android.widget.EditText
 import butterknife.BindView
 import butterknife.ButterKnife
 import com.afollestad.materialdialogs.MaterialDialog
+import com.google.android.material.textfield.TextInputLayout
 import dagger.android.support.DaggerAppCompatActivity
 import de.kuschku.quasseldroid.Keys
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditModule.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditModule.kt
index 29678fda3..80624a1a3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditModule.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditModule.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.setup.accounts.edit
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountAdapter.kt
index c72746b1e..83150babf 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountAdapter.kt
@@ -20,18 +20,18 @@
 package de.kuschku.quasseldroid.ui.setup.accounts.selection
 
 import android.annotation.SuppressLint
-import android.arch.lifecycle.LifecycleOwner
-import android.arch.lifecycle.LiveData
-import android.arch.lifecycle.MutableLiveData
-import android.arch.lifecycle.Observer
-import android.support.v7.util.DiffUtil
-import android.support.v7.widget.AppCompatImageButton
-import android.support.v7.widget.AppCompatRadioButton
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.AppCompatImageButton
+import androidx.appcompat.widget.AppCompatRadioButton
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt
index 8ec33d4df..96cfacc72 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.setup.accounts.selection
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
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 6440101f1..d563785fd 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
@@ -20,15 +20,15 @@
 package de.kuschku.quasseldroid.ui.setup.accounts.selection
 
 import android.app.Activity
-import android.arch.lifecycle.Observer
 import android.content.Intent
 import android.os.Bundle
-import android.support.v7.widget.DefaultItemAnimator
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.DefaultItemAnimator
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountViewModel.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountViewModel.kt
index 6606e354a..b5f1801aa 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountViewModel.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountViewModel.kt
@@ -20,9 +20,9 @@
 package de.kuschku.quasseldroid.ui.setup.accounts.selection
 
 import android.app.Application
-import android.arch.lifecycle.AndroidViewModel
-import android.arch.lifecycle.LiveData
-import android.arch.lifecycle.MutableLiveData
+import androidx.lifecycle.AndroidViewModel
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
 import de.kuschku.quasseldroid.persistence.AccountDatabase
 
 class AccountViewModel(application: Application) : AndroidViewModel(application) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt
index 8335989c3..cf45bafaf 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt
@@ -20,7 +20,6 @@
 package de.kuschku.quasseldroid.ui.setup.accounts.setup
 
 import android.os.Bundle
-import android.support.design.widget.TextInputLayout
 import android.text.Editable
 import android.view.LayoutInflater
 import android.view.View
@@ -28,6 +27,7 @@ import android.view.ViewGroup
 import android.widget.EditText
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.google.android.material.textfield.TextInputLayout
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.ui.setup.SlideFragment
 import de.kuschku.quasseldroid.util.Patterns
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt
index 0ad677257..0dadca9c3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.setup.accounts.setup
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupNameSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupNameSlide.kt
index a2529953c..49c81197e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupNameSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupNameSlide.kt
@@ -20,7 +20,6 @@
 package de.kuschku.quasseldroid.ui.setup.accounts.setup
 
 import android.os.Bundle
-import android.support.design.widget.TextInputLayout
 import android.text.Editable
 import android.view.LayoutInflater
 import android.view.View
@@ -28,6 +27,7 @@ import android.view.ViewGroup
 import android.widget.EditText
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.google.android.material.textfield.TextInputLayout
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.ui.setup.SlideFragment
 import de.kuschku.quasseldroid.util.TextValidator
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt
index c09bd2b1e..f8963e276 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt
@@ -20,7 +20,6 @@
 package de.kuschku.quasseldroid.ui.setup.accounts.setup
 
 import android.os.Bundle
-import android.support.design.widget.TextInputLayout
 import android.text.Editable
 import android.view.LayoutInflater
 import android.view.View
@@ -28,6 +27,7 @@ import android.view.ViewGroup
 import android.widget.EditText
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.google.android.material.textfield.TextInputLayout
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.ui.setup.SlideFragment
 import de.kuschku.quasseldroid.util.TextValidator
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/DefaultNetworkAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/DefaultNetworkAdapter.kt
index 4f0ba7856..3394c3d47 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/DefaultNetworkAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/DefaultNetworkAdapter.kt
@@ -19,12 +19,12 @@
 
 package de.kuschku.quasseldroid.ui.setup.user
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.ThemedSpinnerAdapter
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.ThemedSpinnerAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupActivity.kt
index 556db453d..7d8eee924 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupActivity.kt
@@ -20,10 +20,10 @@
 package de.kuschku.quasseldroid.ui.setup.user
 
 import android.app.Activity
-import android.arch.lifecycle.Observer
 import android.content.Context
 import android.content.Intent
 import android.os.Bundle
+import androidx.lifecycle.Observer
 import de.kuschku.libquassel.protocol.IdentityId
 import de.kuschku.libquassel.protocol.NetworkId
 import de.kuschku.libquassel.quassel.syncables.Identity
@@ -72,7 +72,7 @@ class UserSetupActivity : ServiceBoundSetupActivity() {
                       useSsl = it.secure
                     )
                   }
-                ), data.getStringArray("channels").toList())
+                ), data.getStringArray("channels")?.toList().orEmpty())
               }
             })
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupChannelsSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupChannelsSlide.kt
index b3e2fd6b5..fbcaef99d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupChannelsSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupChannelsSlide.kt
@@ -20,13 +20,13 @@
 package de.kuschku.quasseldroid.ui.setup.user
 
 import android.os.Bundle
-import android.support.design.widget.TextInputLayout
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.EditText
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.google.android.material.textfield.TextInputLayout
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.defaults.DefaultNetwork
 import de.kuschku.quasseldroid.ui.setup.SlideFragment
@@ -45,7 +45,7 @@ class UserSetupChannelsSlide : SlideFragment() {
 
   override fun setData(data: Bundle) {
     if (data.containsKey("channels"))
-      channelsField.setText(data.getStringArray("channels").joinToString("\n"))
+      channelsField.setText(data.getStringArray("channels")?.joinToString("\n"))
     else if (data.containsKey("network"))
       (data.getSerializable("network") as? DefaultNetwork)?.let {
         channelsField.setText(it.defaultChannels.joinToString("\n"))
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupFragmentProvider.kt
index 676e288fe..d880ef990 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupFragmentProvider.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.ui.setup.user
 
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupIdentitySlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupIdentitySlide.kt
index 75e5aeb3b..ed5bcf691 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupIdentitySlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupIdentitySlide.kt
@@ -20,7 +20,6 @@
 package de.kuschku.quasseldroid.ui.setup.user
 
 import android.os.Bundle
-import android.support.design.widget.TextInputLayout
 import android.text.Editable
 import android.view.LayoutInflater
 import android.view.View
@@ -28,6 +27,7 @@ import android.view.ViewGroup
 import android.widget.EditText
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.google.android.material.textfield.TextInputLayout
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.ui.setup.SlideFragment
 import de.kuschku.quasseldroid.util.Patterns
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupNetworkSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupNetworkSlide.kt
index f9d0450ba..6021acea7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupNetworkSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupNetworkSlide.kt
@@ -20,8 +20,6 @@
 package de.kuschku.quasseldroid.ui.setup.user
 
 import android.os.Bundle
-import android.support.design.widget.TextInputLayout
-import android.support.v7.widget.SwitchCompat
 import android.text.Editable
 import android.view.LayoutInflater
 import android.view.View
@@ -29,8 +27,10 @@ import android.view.ViewGroup
 import android.widget.AdapterView
 import android.widget.EditText
 import android.widget.Spinner
+import androidx.appcompat.widget.SwitchCompat
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.google.android.material.textfield.TextInputLayout
 import de.kuschku.libquassel.util.helpers.nullIf
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.defaults.DefaultNetwork
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ColorContext.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ColorContext.kt
index fd78460ef..b2afc42d5 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ColorContext.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ColorContext.kt
@@ -2,7 +2,7 @@ package de.kuschku.quasseldroid.util
 
 import android.content.Context
 import android.graphics.Typeface
-import android.support.annotation.ColorInt
+import androidx.annotation.ColorInt
 import de.kuschku.libquassel.util.irc.SenderColorUtil
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.settings.MessageSettings
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/backport/DaggerLifecycleService.kt b/app/src/main/java/de/kuschku/quasseldroid/util/backport/DaggerLifecycleService.kt
index ecb64a53d..3d388fe5b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/backport/DaggerLifecycleService.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/backport/DaggerLifecycleService.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.util.backport
 
-import android.arch.lifecycle.LifecycleService
+import androidx.lifecycle.LifecycleService
 import dagger.android.AndroidInjection
 
 abstract class DaggerLifecycleService : LifecycleService() {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ActivityHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ActivityHelper.kt
index 21d260dc6..4f59ce22a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ActivityHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ActivityHelper.kt
@@ -25,9 +25,9 @@ import android.app.ActivityManager
 import android.graphics.Bitmap
 import android.graphics.BitmapFactory
 import android.os.Build
-import android.support.annotation.ColorRes
-import android.support.annotation.DrawableRes
-import android.support.annotation.StringRes
+import androidx.annotation.ColorRes
+import androidx.annotation.DrawableRes
+import androidx.annotation.StringRes
 
 /**
  * Modifies the display of an {@see Activity} in the Android Recents menu if the current version
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ButtonHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ButtonHelper.kt
index c70a1d04a..89b828e8e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ButtonHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ButtonHelper.kt
@@ -19,8 +19,8 @@
 
 package de.kuschku.quasseldroid.util.helper
 
-import android.support.v4.graphics.drawable.DrawableCompat
 import android.widget.Button
+import androidx.core.graphics.drawable.DrawableCompat
 
 fun Button.retint() {
   val (left, top, right, bottom) = compoundDrawables.map {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/CharSequenceHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/CharSequenceHelper.kt
index b4e11d26c..a6c68d6d8 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/CharSequenceHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/CharSequenceHelper.kt
@@ -60,7 +60,7 @@ private class DelimitedRangesSequence(
       if (nextState == -1)
         calcNext()
       if (nextState == 0)
-        throw NoSuchElementException()
+        throw java.util.NoSuchElementException()
       val result = nextItem as IntRange
       // Clean next to avoid keeping reference on yielded instance
       nextItem = null
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ContextHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ContextHelper.kt
index 3d5305f93..30e6b56cc 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ContextHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ContextHelper.kt
@@ -22,11 +22,11 @@ package de.kuschku.quasseldroid.util.helper
 import android.content.Context
 import android.content.SharedPreferences
 import android.preference.PreferenceManager
-import android.support.annotation.ColorInt
-import android.support.annotation.ColorRes
-import android.support.annotation.DrawableRes
-import android.support.graphics.drawable.VectorDrawableCompat
-import android.support.v4.content.ContextCompat
+import androidx.annotation.ColorInt
+import androidx.annotation.ColorRes
+import androidx.annotation.DrawableRes
+import androidx.core.content.ContextCompat
+import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
 
 fun Context.getDrawableCompat(@DrawableRes id: Int) = ContextCompat.getDrawable(this, id)
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/DrawableHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/DrawableHelper.kt
index 8f894973b..a65f83724 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/DrawableHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/DrawableHelper.kt
@@ -20,7 +20,7 @@
 package de.kuschku.quasseldroid.util.helper
 
 import android.graphics.drawable.Drawable
-import android.support.annotation.ColorInt
-import android.support.v4.graphics.drawable.DrawableCompat
+import androidx.annotation.ColorInt
+import androidx.core.graphics.drawable.DrawableCompat
 
 fun Drawable.tint(@ColorInt tint: Int) = DrawableCompat.setTint(this, tint)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/FloatingActionButtonHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/FloatingActionButtonHelper.kt
index 2a52bc20e..b00caf62f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/FloatingActionButtonHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/FloatingActionButtonHelper.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.util.helper
 
-import android.support.design.widget.FloatingActionButton
+import com.google.android.material.floatingactionbutton.FloatingActionButton
 
 fun FloatingActionButton.toggle(visible: Boolean) {
   if (visible) show()
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt
index 72fa16986..bb4d40311 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt
@@ -20,8 +20,8 @@
 package de.kuschku.quasseldroid.util.helper
 
 import android.content.Context
-import android.support.v4.graphics.drawable.DrawableCompat
 import android.view.Menu
+import androidx.core.graphics.drawable.DrawableCompat
 import de.kuschku.quasseldroid.R
 
 fun Menu.retint(context: Context) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/PreferenceHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/PreferenceHelper.kt
index 47a10d6dc..7f9dcc74a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/PreferenceHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/PreferenceHelper.kt
@@ -19,8 +19,8 @@
 
 package de.kuschku.quasseldroid.util.helper
 
-import android.support.v7.preference.PreferenceCategory
-import android.support.v7.preference.PreferenceScreen
+import androidx.preference.PreferenceCategory
+import androidx.preference.PreferenceScreen
 
 fun PreferenceCategory.preferences() = (0 until preferenceCount).map(this::getPreference)
 fun PreferenceScreen.preferences() = (0 until preferenceCount).map(this::getPreference)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ResourcesHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ResourcesHelper.kt
index fb39da649..5032794e3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ResourcesHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ResourcesHelper.kt
@@ -21,8 +21,8 @@ package de.kuschku.quasseldroid.util.helper
 
 import android.content.res.Resources
 import android.os.Build
-import android.support.annotation.ColorInt
-import android.support.annotation.ColorRes
+import androidx.annotation.ColorInt
+import androidx.annotation.ColorRes
 
 @ColorInt
 fun Resources.getColorBackport(@ColorRes color: Int, theme: Resources.Theme): Int {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/SwitchCompatHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/SwitchCompatHelper.kt
index 04b8a1a59..534c3dc34 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/SwitchCompatHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/SwitchCompatHelper.kt
@@ -19,8 +19,8 @@
 
 package de.kuschku.quasseldroid.util.helper
 
-import android.support.v7.widget.SwitchCompat
 import android.view.ViewGroup
+import androidx.appcompat.widget.SwitchCompat
 import de.kuschku.quasseldroid.util.ui.AnimationHelper
 
 fun SwitchCompat.setDependent(view: ViewGroup, reverse: Boolean = false) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ViewHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ViewHelper.kt
index 53c94eaa3..638e020f5 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ViewHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ViewHelper.kt
@@ -19,8 +19,8 @@
 
 package de.kuschku.quasseldroid.util.helper
 
-import android.support.v7.widget.TooltipCompat
 import android.view.View
+import androidx.appcompat.widget.TooltipCompat
 
 fun View.visibleIf(check: Boolean) = if (check) {
   this.visibility = View.VISIBLE
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt
index e835ec7af..5fdbdd69e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt
@@ -21,7 +21,6 @@ package de.kuschku.quasseldroid.util.irc.format
 
 import android.content.Context
 import android.graphics.Typeface
-import android.support.annotation.ColorInt
 import android.text.SpannableString
 import android.text.Spanned
 import android.text.TextPaint
@@ -30,6 +29,7 @@ import android.text.style.ForegroundColorSpan
 import android.text.style.StyleSpan
 import android.text.style.URLSpan
 import android.view.View
+import androidx.annotation.ColorInt
 import de.kuschku.libquassel.protocol.NetworkId
 import de.kuschku.libquassel.util.irc.HostmaskHelper
 import de.kuschku.libquassel.util.irc.SenderColorUtil
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcBackgroundColorSpan.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcBackgroundColorSpan.kt
index cec3101cb..68d4981fa 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcBackgroundColorSpan.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcBackgroundColorSpan.kt
@@ -19,8 +19,8 @@
 
 package de.kuschku.quasseldroid.util.irc.format.spans
 
-import android.support.annotation.ColorInt
 import android.text.style.BackgroundColorSpan
+import androidx.annotation.ColorInt
 
 sealed class IrcBackgroundColorSpan<T : IrcBackgroundColorSpan<T>>(@ColorInt color: Int) :
   BackgroundColorSpan(color), Copyable<T> {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcForegroundColorSpan.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcForegroundColorSpan.kt
index 571d78a97..7e04080f3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcForegroundColorSpan.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcForegroundColorSpan.kt
@@ -19,8 +19,8 @@
 
 package de.kuschku.quasseldroid.util.irc.format.spans
 
-import android.support.annotation.ColorInt
 import android.text.style.ForegroundColorSpan
+import androidx.annotation.ColorInt
 
 sealed class IrcForegroundColorSpan<T : IrcForegroundColorSpan<T>>(@ColorInt color: Int) :
   ForegroundColorSpan(color), Copyable<T> {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/lists/AsyncDifferConfig.kt b/app/src/main/java/de/kuschku/quasseldroid/util/lists/AsyncDifferConfig.kt
index 8861d3bb1..d6ff7dcea 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/lists/AsyncDifferConfig.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/lists/AsyncDifferConfig.kt
@@ -18,8 +18,8 @@ package de.kuschku.quasseldroid.util.lists
 
 import android.os.Handler
 import android.os.Looper
-import android.support.annotation.RestrictTo
-import android.support.v7.util.DiffUtil
+import androidx.annotation.RestrictTo
+import androidx.recyclerview.widget.DiffUtil
 
 import java.util.concurrent.Executor
 import java.util.concurrent.Executors
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/lists/AsyncListDiffer.kt b/app/src/main/java/de/kuschku/quasseldroid/util/lists/AsyncListDiffer.kt
index 65ef18ec1..fd6a15b7e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/lists/AsyncListDiffer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/lists/AsyncListDiffer.kt
@@ -16,10 +16,10 @@
 
 package de.kuschku.quasseldroid.util.lists
 
-import android.support.v7.util.AdapterListUpdateCallback
-import android.support.v7.util.DiffUtil
-import android.support.v7.util.ListUpdateCallback
-import android.support.v7.widget.RecyclerView
+import androidx.recyclerview.widget.AdapterListUpdateCallback
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListUpdateCallback
+import androidx.recyclerview.widget.RecyclerView
 import java.util.*
 
 /**
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/lists/ListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/util/lists/ListAdapter.kt
index 55ffbf150..352edd0aa 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/lists/ListAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/lists/ListAdapter.kt
@@ -16,9 +16,9 @@
 
 package de.kuschku.quasseldroid.util.lists
 
-import android.support.v7.util.AdapterListUpdateCallback
-import android.support.v7.util.DiffUtil
-import android.support.v7.widget.RecyclerView
+import androidx.recyclerview.widget.AdapterListUpdateCallback
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.RecyclerView
 
 /**
  * [RecyclerView.Adapter] base class for presenting List data in a
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeature.kt b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeature.kt
index 0deff7558..f77ec3355 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeature.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeature.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.util.missingfeatures
 
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 import de.kuschku.libquassel.quassel.ExtendedFeature
 
 data class MissingFeature(
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeaturesAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeaturesAdapter.kt
index 9e3d6e8d1..0ade1d01a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeaturesAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeaturesAdapter.kt
@@ -19,13 +19,13 @@
 
 package de.kuschku.quasseldroid.util.missingfeatures
 
-import android.support.v7.recyclerview.extensions.ListAdapter
-import android.support.v7.util.DiffUtil
-import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListAdapter
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeaturesDialog.kt b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeaturesDialog.kt
index d56ac3302..6ba174d50 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeaturesDialog.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeaturesDialog.kt
@@ -22,11 +22,11 @@ package de.kuschku.quasseldroid.util.missingfeatures
 import android.app.Dialog
 import android.content.DialogInterface
 import android.os.Bundle
-import android.support.v4.app.DialogFragment
-import android.support.v4.app.FragmentActivity
-import android.support.v4.app.FragmentManager
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
+import androidx.fragment.app.DialogFragment
+import androidx.fragment.app.FragmentActivity
+import androidx.fragment.app.FragmentManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import com.afollestad.materialdialogs.MaterialDialog
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 30526fc85..961104315 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
@@ -19,13 +19,13 @@
 
 package de.kuschku.quasseldroid.util.service
 
-import android.arch.lifecycle.DefaultLifecycleObserver
-import android.arch.lifecycle.LifecycleOwner
 import android.content.ComponentName
 import android.content.Context
 import android.content.Intent
 import android.content.ServiceConnection
 import android.os.IBinder
+import androidx.lifecycle.DefaultLifecycleObserver
+import androidx.lifecycle.LifecycleOwner
 import de.kuschku.libquassel.session.Backend
 import de.kuschku.libquassel.util.Optional
 import de.kuschku.quasseldroid.service.QuasselBinder
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 c8f062998..70e82de8a 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
@@ -22,9 +22,9 @@ package de.kuschku.quasseldroid.util.service
 import android.content.Context
 import android.content.SharedPreferences
 import android.os.Bundle
-import android.support.annotation.ColorRes
-import android.support.annotation.DrawableRes
 import android.view.WindowManager
+import androidx.annotation.ColorRes
+import androidx.annotation.DrawableRes
 import de.kuschku.libquassel.session.Backend
 import de.kuschku.libquassel.util.Optional
 import de.kuschku.quasseldroid.Keys
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/ColorChooserDialog.java b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ColorChooserDialog.java
index 03c127e7f..c6e1b68bb 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/ColorChooserDialog.java
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ColorChooserDialog.java
@@ -25,17 +25,6 @@ import android.content.Context;
 import android.content.DialogInterface;
 import android.graphics.Color;
 import android.os.Bundle;
-import android.support.annotation.ArrayRes;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringDef;
-import android.support.annotation.StringRes;
-import android.support.v4.app.DialogFragment;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.content.res.ResourcesCompat;
 import android.text.Editable;
 import android.text.InputFilter;
 import android.text.TextWatcher;
@@ -59,6 +48,17 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Locale;
 
+import androidx.annotation.ArrayRes;
+import androidx.annotation.ColorInt;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringDef;
+import androidx.annotation.StringRes;
+import androidx.core.content.res.ResourcesCompat;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentManager;
 import de.kuschku.quasseldroid.R;
 
 /**
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/ContextThemeWrapper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ContextThemeWrapper.kt
index d6e8b4d7e..caaa42815 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/ContextThemeWrapper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ContextThemeWrapper.kt
@@ -25,8 +25,8 @@ import android.content.res.AssetManager
 import android.content.res.Configuration
 import android.content.res.Resources
 import android.os.Build
-import android.support.annotation.StyleRes
 import android.view.LayoutInflater
+import androidx.annotation.StyleRes
 import de.kuschku.quasseldroid.R
 
 /**
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/DragInterceptBottomSheetBehavior.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/DragInterceptBottomSheetBehavior.kt
index 0234f9c01..672b8062a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/DragInterceptBottomSheetBehavior.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/DragInterceptBottomSheetBehavior.kt
@@ -20,11 +20,11 @@
 package de.kuschku.quasseldroid.util.ui
 
 import android.content.Context
-import android.support.design.widget.BottomSheetBehavior
-import android.support.design.widget.CoordinatorLayout
 import android.util.AttributeSet
 import android.view.MotionEvent
 import android.view.View
+import androidx.coordinatorlayout.widget.CoordinatorLayout
+import com.google.android.material.bottomsheet.BottomSheetBehavior
 
 class DragInterceptBottomSheetBehavior<V : View> : BottomSheetBehavior<V> {
   constructor() : super()
@@ -32,8 +32,8 @@ class DragInterceptBottomSheetBehavior<V : View> : BottomSheetBehavior<V> {
 
   var allowDragging = true
 
-  override fun onInterceptTouchEvent(parent: CoordinatorLayout?, child: V,
-                                     event: MotionEvent?): Boolean {
+  override fun onInterceptTouchEvent(parent: CoordinatorLayout, child: V,
+                                     event: MotionEvent): Boolean {
     if (!allowDragging) return false
     return super.onInterceptTouchEvent(parent, child, event)
   }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/DrawerRecyclerView.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/DrawerRecyclerView.kt
index dd5417b10..f609bb8dd 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/DrawerRecyclerView.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/DrawerRecyclerView.kt
@@ -23,8 +23,8 @@ import android.content.Context
 import android.graphics.Canvas
 import android.graphics.Rect
 import android.graphics.drawable.Drawable
-import android.support.v4.view.ViewCompat
 import android.util.AttributeSet
+import androidx.core.view.ViewCompat
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.util.ui.fastscroll.views.FastScrollRecyclerView
 
@@ -47,9 +47,7 @@ class DrawerRecyclerView @JvmOverloads constructor(
     mInsetForeground = a.getDrawable(R.styleable.DrawerRecyclerView_insetBackground)
     a.recycle()
     setWillNotDraw(true) // No need to draw until the insets are adjusted
-    ViewCompat.setOnApplyWindowInsetsListener(
-      this
-    ) { _, insets ->
+    ViewCompat.setOnApplyWindowInsetsListener(this) { _, insets ->
       if (null == mInsets) {
         mInsets = Rect()
       }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/EditTextSelectionChange.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/EditTextSelectionChange.kt
index 81a758c5d..6ae10aea8 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/EditTextSelectionChange.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/EditTextSelectionChange.kt
@@ -20,8 +20,8 @@
 package de.kuschku.quasseldroid.util.ui
 
 import android.content.Context
-import android.support.v7.widget.AppCompatEditText
 import android.util.AttributeSet
+import androidx.appcompat.widget.AppCompatEditText
 
 open class EditTextSelectionChange : AppCompatEditText {
   constructor(context: Context?) : super(context)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/LinkLongClickMenuHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/LinkLongClickMenuHelper.kt
index a37eb1343..169426227 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/LinkLongClickMenuHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/LinkLongClickMenuHelper.kt
@@ -23,8 +23,8 @@ import android.content.ClipData
 import android.content.ClipboardManager
 import android.content.Context
 import android.content.Intent
-import android.support.v7.widget.PopupMenu
 import android.widget.TextView
+import androidx.appcompat.widget.PopupMenu
 import de.kuschku.quasseldroid.R
 
 class LinkLongClickMenuHelper :
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/NavigationDrawerLayout.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/NavigationDrawerLayout.kt
index dd86776bc..c8050e509 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/NavigationDrawerLayout.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/NavigationDrawerLayout.kt
@@ -19,9 +19,9 @@ import android.content.Context
 import android.graphics.Canvas
 import android.graphics.Rect
 import android.graphics.drawable.Drawable
-import android.support.v4.view.ViewCompat
 import android.util.AttributeSet
 import android.widget.FrameLayout
+import androidx.core.view.ViewCompat
 import de.kuschku.quasseldroid.R
 
 class NavigationDrawerLayout @JvmOverloads constructor(
@@ -43,9 +43,7 @@ class NavigationDrawerLayout @JvmOverloads constructor(
     mInsetForeground = a.getDrawable(R.styleable.NavigationDrawerLayout_insetBackground)
     a.recycle()
     setWillNotDraw(true) // No need to draw until the insets are adjusted
-    ViewCompat.setOnApplyWindowInsetsListener(
-      this
-    ) { _, insets ->
+    ViewCompat.setOnApplyWindowInsetsListener(this) { _, insets ->
       if (null == mInsets) {
         mInsets = Rect()
       }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/NickCountDrawable.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/NickCountDrawable.kt
index 71dbe7a10..e56b699cc 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/NickCountDrawable.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/NickCountDrawable.kt
@@ -2,8 +2,8 @@ package de.kuschku.quasseldroid.util.ui
 
 import android.graphics.*
 import android.graphics.drawable.Drawable
-import android.support.annotation.ColorInt
-import android.support.annotation.Dimension
+import androidx.annotation.ColorInt
+import androidx.annotation.Dimension
 
 class NickCountDrawable(
   count: Int,
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/RecyclerSpinnerAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/RecyclerSpinnerAdapter.kt
index 8ce43135c..01c499002 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/RecyclerSpinnerAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/RecyclerSpinnerAdapter.kt
@@ -20,11 +20,11 @@
 package de.kuschku.quasseldroid.util.ui
 
 import android.content.res.Resources
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.ThemedSpinnerAdapter
 import android.view.View
 import android.view.ViewGroup
 import android.widget.BaseAdapter
+import androidx.appcompat.widget.ThemedSpinnerAdapter
+import androidx.recyclerview.widget.RecyclerView
 
 abstract class RecyclerSpinnerAdapter<VH : RecyclerView.ViewHolder> : BaseAdapter(),
                                                                       ThemedSpinnerAdapter {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/RipplePassthroughTextView.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/RipplePassthroughTextView.kt
index 7ab1d4d9d..44cfc4c96 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/RipplePassthroughTextView.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/RipplePassthroughTextView.kt
@@ -21,10 +21,10 @@ package de.kuschku.quasseldroid.util.ui
 
 import android.annotation.SuppressLint
 import android.content.Context
-import android.support.v7.widget.AppCompatTextView
 import android.text.Spannable
 import android.util.AttributeSet
 import android.view.MotionEvent
+import androidx.appcompat.widget.AppCompatTextView
 
 class RipplePassthroughTextView : AppCompatTextView {
   constructor(context: Context?) : super(context)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/ShadowView.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ShadowView.kt
index 613b438c3..a79345e86 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/ShadowView.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ShadowView.kt
@@ -26,11 +26,11 @@ import android.graphics.drawable.PaintDrawable
 import android.graphics.drawable.ShapeDrawable
 import android.graphics.drawable.shapes.RectShape
 import android.os.Build
-import android.support.annotation.RequiresApi
 import android.util.AttributeSet
 import android.util.LruCache
 import android.view.Gravity
 import android.view.View
+import androidx.annotation.RequiresApi
 import de.kuschku.quasseldroid.R
 
 /**
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
index 26d763b3f..2c77620ed 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/ThemedActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ThemedActivity.kt
@@ -22,8 +22,8 @@ package de.kuschku.quasseldroid.util.ui
 import android.content.Context
 import android.content.pm.PackageManager
 import android.os.Bundle
-import android.support.v4.app.Fragment
-import android.support.v7.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatActivity
+import androidx.fragment.app.Fragment
 import dagger.android.AndroidInjection
 import dagger.android.AndroidInjector
 import dagger.android.DispatchingAndroidInjector
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/TouchInterceptingFrameLayout.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/TouchInterceptingFrameLayout.kt
index 0d9731185..234816840 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/TouchInterceptingFrameLayout.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/TouchInterceptingFrameLayout.kt
@@ -26,9 +26,9 @@ import android.view.MotionEvent
 import android.widget.FrameLayout
 
 class TouchInterceptingFrameLayout : FrameLayout {
-  constructor(context: Context?) : super(context)
-  constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
-  constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) :
+  constructor(context: Context) : super(context)
+  constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
+  constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) :
     super(context, attrs, defStyleAttr)
 
   @SuppressLint("ClickableViewAccessibility")
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScrollPopup.java b/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScrollPopup.java
index acc9fa585..dd3f61e8c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScrollPopup.java
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScrollPopup.java
@@ -25,9 +25,9 @@ import android.graphics.Path;
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.graphics.Typeface;
-import android.support.annotation.Keep;
 import android.text.TextUtils;
 
+import androidx.annotation.Keep;
 import de.kuschku.quasseldroid.util.ui.fastscroll.utils.Utils;
 
 public class FastScrollPopup {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScrollRecyclerView.java b/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScrollRecyclerView.java
index 87ae64320..d9761115a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScrollRecyclerView.java
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScrollRecyclerView.java
@@ -20,18 +20,18 @@ import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.Canvas;
 import android.graphics.Typeface;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.util.SparseIntArray;
 import android.view.MotionEvent;
 import android.view.View;
 
+import androidx.annotation.ColorInt;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
 import de.kuschku.quasseldroid.R;
 import de.kuschku.quasseldroid.util.ui.fastscroll.interfaces.OnFastScrollStateChangeListener;
 import de.kuschku.quasseldroid.util.ui.fastscroll.utils.Utils;
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScroller.java b/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScroller.java
index 1cc7cee4f..71bd5fd57 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScroller.java
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScroller.java
@@ -27,18 +27,18 @@ import android.graphics.Paint;
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.Typeface;
-import android.support.annotation.ColorInt;
-import android.support.annotation.IntDef;
-import android.support.annotation.Keep;
-import android.support.v4.view.animation.FastOutLinearInInterpolator;
-import android.support.v4.view.animation.LinearOutSlowInInterpolator;
-import android.support.v7.widget.RecyclerView;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.ViewConfiguration;
 
 import java.lang.annotation.Retention;
 
+import androidx.annotation.ColorInt;
+import androidx.annotation.IntDef;
+import androidx.annotation.Keep;
+import androidx.interpolator.view.animation.FastOutLinearInInterpolator;
+import androidx.interpolator.view.animation.LinearOutSlowInInterpolator;
+import androidx.recyclerview.widget.RecyclerView;
 import de.kuschku.quasseldroid.R;
 import de.kuschku.quasseldroid.util.ui.fastscroll.interfaces.OnFastScrollStateChangeListener;
 import de.kuschku.quasseldroid.util.ui.fastscroll.utils.Utils;
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/AttachingPreferenceFragmentCompat.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/AttachingPreferenceFragmentCompat.kt
index b89e220da..b29bebc60 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/AttachingPreferenceFragmentCompat.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/AttachingPreferenceFragmentCompat.kt
@@ -21,10 +21,10 @@ package de.kuschku.quasseldroid.util.ui.settings
 
 import android.content.Intent
 import android.os.Bundle
-import android.support.v7.preference.Preference
-import android.support.v7.preference.PreferenceCategory
-import android.support.v7.preference.PreferenceFragmentCompat
-import android.support.v7.preference.PreferenceScreen
+import androidx.preference.Preference
+import androidx.preference.PreferenceCategory
+import androidx.preference.PreferenceFragmentCompat
+import androidx.preference.PreferenceScreen
 import de.kuschku.quasseldroid.util.helper.preferences
 import java.util.concurrent.atomic.AtomicInteger
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/DaggerPreferenceFragmentCompat.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/DaggerPreferenceFragmentCompat.kt
index aa7cb6698..74cb3cfe1 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/DaggerPreferenceFragmentCompat.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/DaggerPreferenceFragmentCompat.kt
@@ -20,7 +20,7 @@
 package de.kuschku.quasseldroid.util.ui.settings
 
 import android.content.Context
-import android.support.v4.app.Fragment
+import androidx.fragment.app.Fragment
 import dagger.android.AndroidInjector
 import dagger.android.DispatchingAndroidInjector
 import dagger.android.support.AndroidSupportInjection
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/ListPreferenceDialogFragmentCompat.java b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/ListPreferenceDialogFragmentCompat.java
index 712a097bc..6a336bc7a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/ListPreferenceDialogFragmentCompat.java
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/ListPreferenceDialogFragmentCompat.java
@@ -17,8 +17,6 @@
 package de.kuschku.quasseldroid.util.ui.settings;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v7.preference.ListPreference;
 import android.view.View;
 
 import com.afollestad.materialdialogs.DialogAction;
@@ -26,6 +24,9 @@ import com.afollestad.materialdialogs.MaterialDialog;
 
 import java.util.ArrayList;
 
+import androidx.annotation.NonNull;
+import androidx.preference.ListPreference;
+
 public class ListPreferenceDialogFragmentCompat extends PreferenceDialogFragmentCompat {
 
   private static final String SAVE_STATE_INDEX = "ListPreferenceDialogFragment.index";
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/PreferenceDialogFragmentCompat.java b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/PreferenceDialogFragmentCompat.java
index 4c86df671..dee4d6f4f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/PreferenceDialogFragmentCompat.java
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/PreferenceDialogFragmentCompat.java
@@ -24,13 +24,6 @@ import android.graphics.Canvas;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.v4.app.DialogFragment;
-import android.support.v4.app.Fragment;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.preference.DialogPreference;
-import android.support.v7.preference.PreferenceFragmentCompat;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -41,11 +34,18 @@ import android.widget.TextView;
 import com.afollestad.materialdialogs.DialogAction;
 import com.afollestad.materialdialogs.MaterialDialog;
 
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.preference.DialogPreference;
+import androidx.preference.PreferenceFragmentCompat;
 import de.kuschku.quasseldroid.R;
 
 /**
  * Abstract base class which presents a dialog associated with a
- * {@link android.support.v7.preference.DialogPreference}. Since the preference object may
+ * {@link androidx.fragment.app.DialogFragment}. Since the preference object may
  * not be available during fragment re-creation, the necessary information for displaying the dialog
  * is read once during the initial call to {@link #onCreate(Bundle)} and saved/restored in the saved
  * instance state. Custom subclasses should also follow this pattern.
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/RingtonePreference.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/RingtonePreference.kt
index a54ef1712..a76a3956a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/RingtonePreference.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/RingtonePreference.kt
@@ -24,9 +24,9 @@ import android.content.Intent
 import android.content.res.TypedArray
 import android.media.RingtoneManager
 import android.net.Uri
-import android.support.v7.preference.DialogPreference
 import android.text.TextUtils
 import android.util.AttributeSet
+import androidx.preference.DialogPreference
 import de.kuschku.quasseldroid.R
 
 open class RingtonePreference : DialogPreference,
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/SeekBarPreference.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/SeekBarPreference.kt
index fa862ca4b..acfac5258 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/SeekBarPreference.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/SeekBarPreference.kt
@@ -17,13 +17,13 @@ package de.kuschku.quasseldroid.util.ui.settings
 
 import android.content.Context
 import android.content.res.TypedArray
-import android.support.v7.preference.Preference
-import android.support.v7.preference.PreferenceViewHolder
-import android.support.v7.widget.AppCompatSeekBar
 import android.util.AttributeSet
 import android.util.Log
 import android.widget.SeekBar
 import android.widget.TextView
+import androidx.appcompat.widget.AppCompatSeekBar
+import androidx.preference.Preference
+import androidx.preference.PreferenceViewHolder
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/ServiceBoundSettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/ServiceBoundSettingsActivity.kt
index 27dbb9cd8..bf518fb1e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/ServiceBoundSettingsActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/ServiceBoundSettingsActivity.kt
@@ -20,9 +20,9 @@
 package de.kuschku.quasseldroid.util.ui.settings
 
 import android.os.Bundle
-import android.support.v4.app.Fragment
-import android.support.v7.widget.Toolbar
 import android.view.MenuItem
+import androidx.appcompat.widget.Toolbar
+import androidx.fragment.app.Fragment
 import butterknife.BindView
 import butterknife.ButterKnife
 import com.afollestad.materialdialogs.MaterialDialog
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/SettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/SettingsActivity.kt
index 6e2f34226..0451c923d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/SettingsActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/settings/SettingsActivity.kt
@@ -20,9 +20,9 @@
 package de.kuschku.quasseldroid.util.ui.settings
 
 import android.os.Bundle
-import android.support.v4.app.Fragment
-import android.support.v7.widget.Toolbar
 import android.view.MenuItem
+import androidx.appcompat.widget.Toolbar
+import androidx.fragment.app.Fragment
 import butterknife.BindView
 import butterknife.ButterKnife
 import com.afollestad.materialdialogs.MaterialDialog
diff --git a/app/src/main/res/layout-land/layout_main.xml b/app/src/main/res/layout-land/layout_main.xml
index 839ab2728..0759f57ef 100644
--- a/app/src/main/res/layout-land/layout_main.xml
+++ b/app/src/main/res/layout-land/layout_main.xml
@@ -17,14 +17,14 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:gravity="bottom">
 
-  <android.support.design.widget.CoordinatorLayout
+  <androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:layout_marginBottom="?actionBarSize"
@@ -40,7 +40,7 @@
       app:layout_behavior="@string/appbar_scrolling_view_behavior"
       tools:layout="@layout/fragment_messages" />
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/autocomplete_list"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -49,7 +49,7 @@
       app:behavior_peekHeight="92dp"
       app:layout_behavior="@string/bottom_sheet_behavior"
       tools:listitem="@layout/widget_nick" />
-  </android.support.design.widget.CoordinatorLayout>
+  </androidx.coordinatorlayout.widget.CoordinatorLayout>
 
   <LinearLayout
     android:layout_width="match_parent"
@@ -78,4 +78,4 @@
     app:layout_behavior="@string/drag_intercept_bottom_sheet_behavior"
     tools:layout="@layout/fragment_chatline" />
 
-</android.support.design.widget.CoordinatorLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
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 cd364753f..fcd559588 100644
--- a/app/src/main/res/layout-sw600dp-land/activity_setup.xml
+++ b/app/src/main/res/layout-sw600dp-land/activity_setup.xml
@@ -23,19 +23,19 @@
   android:layout_width="match_parent"
   android:layout_height="match_parent">
 
-  <android.support.v4.view.ViewPager
+  <androidx.viewpager.widget.ViewPager
     android:id="@+id/view_pager"
     android:layout_width="match_parent"
     android:layout_height="match_parent" />
 
-  <android.support.v7.widget.ActionMenuView
+  <androidx.appcompat.widget.ActionMenuView
     android:id="@+id/menu_view"
     android:layout_width="56dp"
     android:layout_height="?actionBarSize"
     android:layout_gravity="end|top"
     android:theme="?attr/actionBarPopupTheme" />
 
-  <android.support.design.widget.FloatingActionButton
+  <com.google.android.material.floatingactionbutton.FloatingActionButton
     android:id="@+id/next_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout-sw600dp-land/layout_main.xml b/app/src/main/res/layout-sw600dp-land/layout_main.xml
index c97dae5a2..4f5b19298 100644
--- a/app/src/main/res/layout-sw600dp-land/layout_main.xml
+++ b/app/src/main/res/layout-sw600dp-land/layout_main.xml
@@ -27,12 +27,12 @@
 
   <include layout="@layout/layout_toolbar" />
 
-  <android.support.design.widget.CoordinatorLayout
+  <androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:gravity="bottom">
 
-    <android.support.design.widget.CoordinatorLayout
+    <androidx.coordinatorlayout.widget.CoordinatorLayout
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_marginBottom="?actionBarSize"
@@ -46,7 +46,7 @@
         app:layout_behavior="@string/appbar_scrolling_view_behavior"
         tools:layout="@layout/fragment_messages" />
 
-      <android.support.v7.widget.RecyclerView
+      <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/autocomplete_list"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -55,7 +55,7 @@
         app:behavior_peekHeight="92dp"
         app:layout_behavior="@string/bottom_sheet_behavior"
         tools:listitem="@layout/widget_nick" />
-    </android.support.design.widget.CoordinatorLayout>
+    </androidx.coordinatorlayout.widget.CoordinatorLayout>
 
     <LinearLayout
       android:layout_width="match_parent"
@@ -84,6 +84,6 @@
       app:layout_behavior="@string/drag_intercept_bottom_sheet_behavior"
       tools:layout="@layout/fragment_chatline" />
 
-  </android.support.design.widget.CoordinatorLayout>
+  </androidx.coordinatorlayout.widget.CoordinatorLayout>
 
 </LinearLayout>
diff --git a/app/src/main/res/layout-sw600dp-land/setup_slide.xml b/app/src/main/res/layout-sw600dp-land/setup_slide.xml
index 4c465471b..986620cd6 100644
--- a/app/src/main/res/layout-sw600dp-land/setup_slide.xml
+++ b/app/src/main/res/layout-sw600dp-land/setup_slide.xml
@@ -46,7 +46,7 @@
       android:textSize="28sp"
       tools:text="Connection" />
 
-    <android.support.v4.widget.Space
+    <Space
       android:layout_width="match_parent"
       android:layout_height="8dp"
       android:layout_gravity="end" />
@@ -64,24 +64,24 @@
 
   </LinearLayout>
 
-  <android.support.v4.widget.Space
+  <Space
     android:layout_width="?attr/actionBarSize"
     android:layout_height="match_parent" />
 
-  <android.support.v4.widget.NestedScrollView
+  <androidx.core.widget.NestedScrollView
     android:id="@+id/scrollView"
     android:layout_width="0dip"
     android:layout_height="wrap_content"
     android:layout_gravity="center_vertical|start"
     android:layout_weight="1">
 
-    <android.support.v7.widget.CardView
+    <com.google.android.material.card.MaterialCardView
       android:id="@+id/content_host"
       android:layout_width="400dp"
       android:layout_height="wrap_content"
       android:minHeight="400dp"
       app:cardElevation="4dp" />
 
-  </android.support.v4.widget.NestedScrollView>
+  </androidx.core.widget.NestedScrollView>
 
 </LinearLayout>
diff --git a/app/src/main/res/layout-sw600dp/activity_setup.xml b/app/src/main/res/layout-sw600dp/activity_setup.xml
index cd364753f..fcd559588 100644
--- a/app/src/main/res/layout-sw600dp/activity_setup.xml
+++ b/app/src/main/res/layout-sw600dp/activity_setup.xml
@@ -23,19 +23,19 @@
   android:layout_width="match_parent"
   android:layout_height="match_parent">
 
-  <android.support.v4.view.ViewPager
+  <androidx.viewpager.widget.ViewPager
     android:id="@+id/view_pager"
     android:layout_width="match_parent"
     android:layout_height="match_parent" />
 
-  <android.support.v7.widget.ActionMenuView
+  <androidx.appcompat.widget.ActionMenuView
     android:id="@+id/menu_view"
     android:layout_width="56dp"
     android:layout_height="?actionBarSize"
     android:layout_gravity="end|top"
     android:theme="?attr/actionBarPopupTheme" />
 
-  <android.support.design.widget.FloatingActionButton
+  <com.google.android.material.floatingactionbutton.FloatingActionButton
     android:id="@+id/next_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout-sw600dp/setup_slide.xml b/app/src/main/res/layout-sw600dp/setup_slide.xml
index 6a767e774..9296ab73d 100644
--- a/app/src/main/res/layout-sw600dp/setup_slide.xml
+++ b/app/src/main/res/layout-sw600dp/setup_slide.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -60,7 +60,7 @@
 
     </LinearLayout>
 
-    <android.support.v7.widget.CardView
+    <com.google.android.material.card.MaterialCardView
       android:id="@+id/content_host"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -69,4 +69,4 @@
 
   </LinearLayout>
 
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout-sw720dp-land/activity_main.xml b/app/src/main/res/layout-sw720dp-land/activity_main.xml
index 73e34a2e1..f90a333de 100644
--- a/app/src/main/res/layout-sw720dp-land/activity_main.xml
+++ b/app/src/main/res/layout-sw720dp-land/activity_main.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/drawer_layout"
@@ -42,18 +42,18 @@
       android:layout_height="match_parent"
       android:orientation="vertical">
 
-      <android.support.design.widget.AppBarLayout
+      <com.google.android.material.appbar.AppBarLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:theme="?attr/actionBarTheme">
 
-        <android.support.v7.widget.Toolbar
+        <androidx.appcompat.widget.Toolbar
           android:layout_width="match_parent"
           android:layout_height="?attr/actionBarSize"
           app:contentInsetStartWithNavigation="0dp"
           app:popupTheme="?attr/actionBarPopupTheme" />
 
-      </android.support.design.widget.AppBarLayout>
+      </com.google.android.material.appbar.AppBarLayout>
 
       <View
         android:layout_width="1dp"
@@ -72,4 +72,4 @@
     android:layout_height="match_parent"
     android:layout_gravity="end"
     tools:layout="@layout/fragment_nick_list" />
-</android.support.v4.widget.DrawerLayout>
+</androidx.drawerlayout.widget.DrawerLayout>
diff --git a/app/src/main/res/layout-sw720dp/activity_settings.xml b/app/src/main/res/layout-sw720dp/activity_settings.xml
index 56c2bce09..c7b28db78 100644
--- a/app/src/main/res/layout-sw720dp/activity_settings.xml
+++ b/app/src/main/res/layout-sw720dp/activity_settings.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -32,21 +32,21 @@
     android:fitsSystemWindows="true"
     android:orientation="vertical">
 
-    <android.support.design.widget.AppBarLayout
+    <com.google.android.material.appbar.AppBarLayout
       android:layout_width="match_parent"
       android:layout_height="172dp"
       android:theme="?attr/actionBarTheme">
 
-      <android.support.v7.widget.Toolbar
+      <androidx.appcompat.widget.Toolbar
         android:id="@+id/toolbar"
         android:layout_width="match_parent"
         android:layout_height="?attr/actionBarSize"
         app:contentInsetStartWithNavigation="0dp"
         app:popupTheme="?attr/actionBarPopupTheme" />
 
-    </android.support.design.widget.AppBarLayout>
+    </com.google.android.material.appbar.AppBarLayout>
 
-    <android.support.v7.widget.CardView
+    <com.google.android.material.card.MaterialCardView
       android:layout_width="@dimen/max_content_width"
       android:layout_height="match_parent"
       android:layout_gravity="center_horizontal"
@@ -61,7 +61,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         tools:layout="@layout/preferences_about" />
-    </android.support.v7.widget.CardView>
+    </com.google.android.material.card.MaterialCardView>
 
   </LinearLayout>
-</android.support.v4.widget.DrawerLayout>
+</androidx.drawerlayout.widget.DrawerLayout>
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index fee5b5bff..d34dd8b67 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/drawer_layout"
@@ -50,4 +50,4 @@
       android:layout_height="match_parent"
       tools:layout="@layout/fragment_chat_list" />
   </de.kuschku.quasseldroid.util.ui.NavigationDrawerLayout>
-</android.support.v4.widget.DrawerLayout>
+</androidx.drawerlayout.widget.DrawerLayout>
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index 1462df1e3..c3f17b591 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
@@ -29,19 +29,19 @@
     android:fitsSystemWindows="true"
     android:orientation="vertical">
 
-    <android.support.design.widget.AppBarLayout
+    <com.google.android.material.appbar.AppBarLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:theme="?attr/actionBarTheme">
 
-      <android.support.v7.widget.Toolbar
+      <androidx.appcompat.widget.Toolbar
         android:id="@+id/toolbar"
         android:layout_width="match_parent"
         android:layout_height="?attr/actionBarSize"
         app:contentInsetStartWithNavigation="0dp"
         app:popupTheme="?attr/actionBarPopupTheme" />
 
-    </android.support.design.widget.AppBarLayout>
+    </com.google.android.material.appbar.AppBarLayout>
 
     <FrameLayout
       android:id="@+id/fragment_container"
@@ -49,4 +49,4 @@
       android:layout_height="match_parent" />
   </LinearLayout>
 
-</android.support.v4.widget.DrawerLayout>
+</androidx.drawerlayout.widget.DrawerLayout>
diff --git a/app/src/main/res/layout/activity_setup.xml b/app/src/main/res/layout/activity_setup.xml
index 92a7f5fe2..547e97aca 100644
--- a/app/src/main/res/layout/activity_setup.xml
+++ b/app/src/main/res/layout/activity_setup.xml
@@ -23,19 +23,19 @@
   android:layout_width="match_parent"
   android:layout_height="match_parent">
 
-  <android.support.v4.view.ViewPager
+  <androidx.viewpager.widget.ViewPager
     android:id="@+id/view_pager"
     android:layout_width="match_parent"
     android:layout_height="match_parent" />
 
-  <android.support.v7.widget.ActionMenuView
+  <androidx.appcompat.widget.ActionMenuView
     android:id="@+id/menu_view"
     android:layout_width="56dp"
     android:layout_height="?actionBarSize"
     android:layout_gravity="end|top"
     android:theme="?attr/actionBarPopupTheme" />
 
-  <android.support.design.widget.FloatingActionButton
+  <com.google.android.material.floatingactionbutton.FloatingActionButton
     android:id="@+id/next_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/dialog_colorchooser_custom.xml b/app/src/main/res/layout/dialog_colorchooser_custom.xml
index 4a8b6c135..23f04b8bf 100644
--- a/app/src/main/res/layout/dialog_colorchooser_custom.xml
+++ b/app/src/main/res/layout/dialog_colorchooser_custom.xml
@@ -132,7 +132,7 @@
       android:textSize="@dimen/md_content_textsize"
       tools:ignore="HardcodedText" />
 
-    <SeekBar
+    <androidx.appcompat.widget.AppCompatSeekBar
       android:id="@+id/md_colorR"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/dialog_missing_features.xml b/app/src/main/res/layout/dialog_missing_features.xml
index 09017390d..196bd7426 100644
--- a/app/src/main/res/layout/dialog_missing_features.xml
+++ b/app/src/main/res/layout/dialog_missing_features.xml
@@ -39,7 +39,7 @@
     android:textColor="?colorTextPrimary"
     android:textSize="16sp" />
 
-  <android.support.v7.widget.RecyclerView
+  <androidx.recyclerview.widget.RecyclerView
     android:id="@+id/list"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/fragment_chat_list.xml b/app/src/main/res/layout/fragment_chat_list.xml
index 7a9e4f6bb..6706a0b83 100644
--- a/app/src/main/res/layout/fragment_chat_list.xml
+++ b/app/src/main/res/layout/fragment_chat_list.xml
@@ -24,19 +24,19 @@
   android:layout_height="match_parent"
   android:orientation="vertical">
 
-  <android.support.design.widget.AppBarLayout
+  <com.google.android.material.appbar.AppBarLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:theme="?attr/actionBarTheme">
 
-    <android.support.v7.widget.Toolbar
+    <androidx.appcompat.widget.Toolbar
       android:id="@+id/chatListToolbar"
       android:layout_width="match_parent"
       android:layout_height="?attr/actionBarSize"
       app:contentInsetStartWithNavigation="0dp"
       app:popupTheme="?attr/actionBarPopupTheme">
 
-      <android.support.v7.widget.AppCompatSpinner
+      <androidx.appcompat.widget.AppCompatSpinner
         android:id="@+id/chatListSpinner"
         style="@style/Widget.FullWidthSpinner"
         android:layout_width="fill_parent"
@@ -44,9 +44,9 @@
         app:popupTheme="?attr/actionBarPopupTheme"
         tools:listitem="@layout/widget_spinner_item_toolbar" />
 
-    </android.support.v7.widget.Toolbar>
+    </androidx.appcompat.widget.Toolbar>
 
-  </android.support.design.widget.AppBarLayout>
+  </com.google.android.material.appbar.AppBarLayout>
 
 
   <de.kuschku.quasseldroid.util.ui.fastscroll.views.FastScrollRecyclerView
diff --git a/app/src/main/res/layout/fragment_chatline.xml b/app/src/main/res/layout/fragment_chatline.xml
index f79e20010..edd582d6d 100644
--- a/app/src/main/res/layout/fragment_chatline.xml
+++ b/app/src/main/res/layout/fragment_chatline.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/history_panel"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
@@ -28,4 +28,4 @@
 
   <include layout="@layout/layout_history" />
 
-</android.support.design.widget.CoordinatorLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/fragment_info_channel.xml b/app/src/main/res/layout/fragment_info_channel.xml
index 616be8dec..a73b3a150 100644
--- a/app/src/main/res/layout/fragment_info_channel.xml
+++ b/app/src/main/res/layout/fragment_info_channel.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
@@ -59,28 +59,28 @@
         android:paddingRight="?android:attr/listPreferredItemPaddingRight"
         android:paddingStart="?android:attr/listPreferredItemPaddingLeft">
 
-        <android.support.v7.widget.AppCompatButton
+        <androidx.appcompat.widget.AppCompatButton
           android:id="@+id/action_edit_topic"
           style="@style/Widget.Info.ActionButton"
           android:contentDescription="@string/label_edit_topic_long"
           android:text="@string/label_edit_topic"
           tools:drawableTint="?colorTextSecondary" />
 
-        <android.support.v7.widget.AppCompatButton
+        <androidx.appcompat.widget.AppCompatButton
           android:id="@+id/action_who"
           style="@style/Widget.Info.ActionButton"
           android:contentDescription="@string/label_who_long"
           android:text="@string/label_who"
           tools:drawableTint="?colorTextSecondary" />
 
-        <android.support.v7.widget.AppCompatButton
+        <androidx.appcompat.widget.AppCompatButton
           android:id="@+id/action_part"
           style="@style/Widget.Info.ActionButton"
           android:contentDescription="@string/label_part_long"
           android:text="@string/label_part"
           tools:drawableTint="?colorTextSecondary" />
 
-        <android.support.v7.widget.AppCompatButton
+        <androidx.appcompat.widget.AppCompatButton
           android:id="@+id/action_join"
           style="@style/Widget.Info.ActionButton"
           android:contentDescription="@string/label_join_long"
@@ -96,4 +96,4 @@
       android:layout_height="1dp"
       android:background="?colorDivider" />
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/fragment_info_core.xml b/app/src/main/res/layout/fragment_info_core.xml
index 4b7330b75..2b2e0298d 100644
--- a/app/src/main/res/layout/fragment_info_core.xml
+++ b/app/src/main/res/layout/fragment_info_core.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -95,7 +95,7 @@
         android:layout_weight="1"
         tools:text="Connection verified by Let’s Encrypt" />
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         android:id="@+id/secure_icon"
         android:layout_width="24dp"
         android:layout_height="24dp"
@@ -116,7 +116,7 @@
       android:visibility="gone"
       tools:visibility="visible" />
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/clients"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -125,4 +125,4 @@
       tools:listitem="@layout/widget_client" />
 
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/fragment_info_user.xml b/app/src/main/res/layout/fragment_info_user.xml
index 5167d2b8e..e8c53ea12 100644
--- a/app/src/main/res/layout/fragment_info_user.xml
+++ b/app/src/main/res/layout/fragment_info_user.xml
@@ -17,19 +17,19 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
 
-  <android.support.design.widget.AppBarLayout
+  <com.google.android.material.appbar.AppBarLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="#40000000"
     app:elevation="0dip">
 
-    <android.support.design.widget.CollapsingToolbarLayout
+    <com.google.android.material.appbar.CollapsingToolbarLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       app:layout_scrollFlags="scroll">
@@ -44,10 +44,10 @@
         app:layout_collapseMode="parallax"
         tools:src="@tools:sample/avatars" />
 
-    </android.support.design.widget.CollapsingToolbarLayout>
-  </android.support.design.widget.AppBarLayout>
+    </com.google.android.material.appbar.CollapsingToolbarLayout>
+  </com.google.android.material.appbar.AppBarLayout>
 
-  <android.support.v4.widget.NestedScrollView
+  <androidx.core.widget.NestedScrollView
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
@@ -89,14 +89,14 @@
           android:paddingRight="?android:attr/listPreferredItemPaddingRight"
           android:paddingStart="?android:attr/listPreferredItemPaddingLeft">
 
-          <android.support.v7.widget.AppCompatButton
+          <androidx.appcompat.widget.AppCompatButton
             android:id="@+id/action_query"
             style="@style/Widget.Info.ActionButton"
             android:contentDescription="@string/label_query_long"
             android:text="@string/label_query"
             tools:drawableTint="?colorTextSecondary" />
 
-          <android.support.v7.widget.AppCompatButton
+          <androidx.appcompat.widget.AppCompatButton
             android:id="@+id/action_ignore"
             style="@style/Widget.Info.ActionButton"
             android:contentDescription="@string/label_ignore_long"
@@ -105,14 +105,14 @@
             tools:drawableTint="?colorTextSecondary"
             tools:visibility="visible" />
 
-          <android.support.v7.widget.AppCompatButton
+          <androidx.appcompat.widget.AppCompatButton
             android:id="@+id/action_whois"
             style="@style/Widget.Info.ActionButton"
             android:contentDescription="@string/label_whois_long"
             android:text="@string/label_whois"
             tools:drawableTint="?colorTextSecondary" />
 
-          <android.support.v7.widget.AppCompatButton
+          <androidx.appcompat.widget.AppCompatButton
             android:id="@+id/action_mention"
             style="@style/Widget.Info.ActionButton"
             android:contentDescription="@string/label_mention_long"
@@ -224,5 +224,5 @@
           android:text="@string/label_user_server" />
       </LinearLayout>
     </LinearLayout>
-  </android.support.v4.widget.NestedScrollView>
-</android.support.design.widget.CoordinatorLayout>
+  </androidx.core.widget.NestedScrollView>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/fragment_messages.xml b/app/src/main/res/layout/fragment_messages.xml
index 93d165165..12c718509 100644
--- a/app/src/main/res/layout/fragment_messages.xml
+++ b/app/src/main/res/layout/fragment_messages.xml
@@ -25,12 +25,12 @@
   android:background="?attr/colorBackground"
   tools:showIn="@layout/activity_main">
 
-  <android.support.v4.widget.SwipeRefreshLayout
+  <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
     android:id="@+id/swipeRefreshLayout"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/messages"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
@@ -38,9 +38,9 @@
       app:stackFromEnd="true"
       tools:listitem="@layout/widget_chatmessage_plain" />
 
-  </android.support.v4.widget.SwipeRefreshLayout>
+  </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
 
-  <android.support.design.widget.FloatingActionButton
+  <com.google.android.material.floatingactionbutton.FloatingActionButton
     android:id="@+id/scrollDown"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/fragment_topic.xml b/app/src/main/res/layout/fragment_topic.xml
index cb7661fe0..78599f2a7 100644
--- a/app/src/main/res/layout/fragment_topic.xml
+++ b/app/src/main/res/layout/fragment_topic.xml
@@ -24,7 +24,7 @@
   android:layout_height="match_parent"
   android:orientation="vertical">
 
-  <android.support.design.widget.CoordinatorLayout
+  <androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="0dip"
     android:layout_weight="1">
@@ -52,7 +52,7 @@
         android:textSize="16sp" />
     </ScrollView>
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/autocomplete_list"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -62,9 +62,9 @@
       app:layout_behavior="@string/bottom_sheet_behavior"
       tools:listitem="@layout/widget_nick" />
 
-  </android.support.design.widget.CoordinatorLayout>
+  </androidx.coordinatorlayout.widget.CoordinatorLayout>
 
-  <android.support.design.widget.AppBarLayout
+  <com.google.android.material.appbar.AppBarLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="?attr/colorBackgroundCard">
@@ -74,5 +74,5 @@
       android:layout_width="match_parent"
       android:layout_height="?attr/actionBarSize"
       app:contentInsetStart="0dip" />
-  </android.support.design.widget.AppBarLayout>
+  </com.google.android.material.appbar.AppBarLayout>
 </LinearLayout>
diff --git a/app/src/main/res/layout/layout_editor.xml b/app/src/main/res/layout/layout_editor.xml
index 41d4276d0..dde9aec40 100644
--- a/app/src/main/res/layout/layout_editor.xml
+++ b/app/src/main/res/layout/layout_editor.xml
@@ -25,17 +25,17 @@
   android:layout_height="match_parent"
   android:orientation="vertical">
 
-  <android.support.design.widget.CoordinatorLayout
+  <androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="0dip"
     android:layout_weight="1"
     android:orientation="vertical">
 
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.widget.ConstraintLayout
       android:layout_width="match_parent"
       android:layout_height="match_parent">
 
-      <android.support.v7.widget.AppCompatImageButton
+      <androidx.appcompat.widget.AppCompatImageButton
         android:id="@+id/tab_complete"
         style="?attr/buttonStyleSmall"
         android:layout_width="?attr/actionBarSize"
@@ -77,7 +77,7 @@
           android:textSize="16sp" />
       </ScrollView>
 
-      <android.support.v7.widget.AppCompatImageButton
+      <androidx.appcompat.widget.AppCompatImageButton
         android:id="@+id/send"
         style="?attr/buttonStyleSmall"
         android:layout_width="?attr/actionBarSize"
@@ -91,9 +91,9 @@
         app:srcCompat="@drawable/ic_send"
         app:tint="?attr/colorAccent"
         tools:ignore="UnusedAttribute" />
-    </android.support.constraint.ConstraintLayout>
+    </androidx.constraintlayout.widget.ConstraintLayout>
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/autocomplete_list"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -102,9 +102,9 @@
       app:behavior_peekHeight="@dimen/autocomplete_max_height"
       app:layout_behavior="@string/bottom_sheet_behavior"
       tools:listitem="@layout/widget_nick" />
-  </android.support.design.widget.CoordinatorLayout>
+  </androidx.coordinatorlayout.widget.CoordinatorLayout>
 
-  <android.support.design.widget.AppBarLayout
+  <com.google.android.material.appbar.AppBarLayout
     android:id="@+id/formatting_toolbar_container"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -116,5 +116,5 @@
       android:layout_width="match_parent"
       android:layout_height="?attr/actionBarSize"
       app:contentInsetStart="0dip" />
-  </android.support.design.widget.AppBarLayout>
+  </com.google.android.material.appbar.AppBarLayout>
 </LinearLayout>
diff --git a/app/src/main/res/layout/layout_history.xml b/app/src/main/res/layout/layout_history.xml
index 02f37ca28..2b7ce6259 100644
--- a/app/src/main/res/layout/layout_history.xml
+++ b/app/src/main/res/layout/layout_history.xml
@@ -28,7 +28,7 @@
   app:layout_behavior="@string/bottom_sheet_behavior"
   tools:ignore="KeyboardInaccessibleWidget">
 
-  <android.support.v7.widget.CardView
+  <com.google.android.material.card.MaterialCardView
     style="?attr/cardStyle"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -64,7 +64,7 @@
           android:layout_height="match_parent"
           android:layout_weight="1" />
 
-        <android.support.v7.widget.AppCompatImageButton
+        <androidx.appcompat.widget.AppCompatImageButton
           android:id="@+id/close"
           android:layout_width="48dp"
           android:layout_height="48dp"
@@ -76,11 +76,11 @@
           app:tint="?attr/colorForegroundSecondary" />
       </LinearLayout>
 
-      <android.support.v7.widget.RecyclerView
+      <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/msg_history"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         tools:listitem="@layout/widget_history_message" />
     </LinearLayout>
-  </android.support.v7.widget.CardView>
+  </com.google.android.material.card.MaterialCardView>
 </de.kuschku.quasseldroid.util.ui.TouchInterceptingFrameLayout>
diff --git a/app/src/main/res/layout/layout_main.xml b/app/src/main/res/layout/layout_main.xml
index abf1a11d4..bb80ce059 100644
--- a/app/src/main/res/layout/layout_main.xml
+++ b/app/src/main/res/layout/layout_main.xml
@@ -27,12 +27,12 @@
 
   <include layout="@layout/layout_toolbar" />
 
-  <android.support.design.widget.CoordinatorLayout
+  <androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:gravity="bottom">
 
-    <android.support.design.widget.CoordinatorLayout
+    <androidx.coordinatorlayout.widget.CoordinatorLayout
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_marginBottom="?actionBarSize"
@@ -45,7 +45,7 @@
         android:layout_height="match_parent"
         tools:layout="@layout/fragment_messages" />
 
-      <android.support.v7.widget.RecyclerView
+      <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/autocomplete_list"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -54,7 +54,7 @@
         app:behavior_peekHeight="@dimen/autocomplete_max_height"
         app:layout_behavior="@string/bottom_sheet_behavior"
         tools:listitem="@layout/widget_nick" />
-    </android.support.design.widget.CoordinatorLayout>
+    </androidx.coordinatorlayout.widget.CoordinatorLayout>
 
     <LinearLayout
       android:layout_width="match_parent"
@@ -83,6 +83,6 @@
       app:layout_behavior="@string/drag_intercept_bottom_sheet_behavior"
       tools:layout="@layout/fragment_chatline" />
 
-  </android.support.design.widget.CoordinatorLayout>
+  </androidx.coordinatorlayout.widget.CoordinatorLayout>
 
 </LinearLayout>
diff --git a/app/src/main/res/layout/layout_toolbar.xml b/app/src/main/res/layout/layout_toolbar.xml
index a279e38e8..3ca8c191b 100644
--- a/app/src/main/res/layout/layout_toolbar.xml
+++ b/app/src/main/res/layout/layout_toolbar.xml
@@ -17,18 +17,19 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<com.google.android.material.appbar.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
-  android:theme="?attr/actionBarTheme">
+  android:theme="?attr/actionBarTheme"
+  tools:showIn="@layout/activity_main">
 
   <FrameLayout
     android:layout_width="match_parent"
     android:layout_height="?attr/actionBarSize">
 
-    <android.support.v7.widget.Toolbar
+    <androidx.appcompat.widget.Toolbar
       android:id="@+id/toolbar"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
@@ -42,7 +43,7 @@
         android:layout_height="fill_parent"
         tools:layout="@layout/fragment_toolbar" />
 
-    </android.support.v7.widget.Toolbar>
+    </androidx.appcompat.widget.Toolbar>
 
     <de.kuschku.quasseldroid.util.ui.MaterialContentLoadingProgressBar
       android:id="@+id/progress_bar"
@@ -56,4 +57,4 @@
       tools:indeterminate="true" />
   </FrameLayout>
 
-</android.support.design.widget.AppBarLayout>
+</com.google.android.material.appbar.AppBarLayout>
diff --git a/app/src/main/res/layout/preference_seekbar.xml b/app/src/main/res/layout/preference_seekbar.xml
index 2041b1339..462388751 100644
--- a/app/src/main/res/layout/preference_seekbar.xml
+++ b/app/src/main/res/layout/preference_seekbar.xml
@@ -27,7 +27,7 @@
   android:paddingStart="15dp"
   android:paddingTop="5dp">
 
-  <android.support.v7.widget.AppCompatSeekBar
+  <androidx.appcompat.widget.AppCompatSeekBar
     android:id="@+id/seekBarPrefSeekBar"
     android:layout_width="0dip"
     android:layout_height="wrap_content"
@@ -51,4 +51,4 @@
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     tools:text="$" />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/app/src/main/res/layout/preference_vertical.xml b/app/src/main/res/layout/preference_vertical.xml
index 88fa50c09..ef959d9bb 100644
--- a/app/src/main/res/layout/preference_vertical.xml
+++ b/app/src/main/res/layout/preference_vertical.xml
@@ -49,12 +49,14 @@
     android:paddingStart="0dp"
     android:paddingTop="4dp">
 
-    <android.support.v7.internal.widget.PreferenceImageView
+    <androidx.appcompat.widget.AppCompatImageView
       android:id="@android:id/icon"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       app:maxHeight="48dp"
-      app:maxWidth="48dp" />
+      app:maxWidth="48dp"
+      app:tint="?colorTextSecondary"
+      tools:src="@drawable/ic_account" />
   </FrameLayout>
 
   <LinearLayout
diff --git a/app/src/main/res/layout/preferences_about.xml b/app/src/main/res/layout/preferences_about.xml
index ff19e8267..8df23c053 100644
--- a/app/src/main/res/layout/preferences_about.xml
+++ b/app/src/main/res/layout/preferences_about.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
@@ -41,7 +41,7 @@
         style="@style/Widget.Subhead"
         android:text="@string/label_contributors" />
 
-      <android.support.v7.widget.RecyclerView
+      <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/contributors"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -61,7 +61,7 @@
         style="@style/Widget.Subhead"
         android:text="@string/label_translators" />
 
-      <android.support.v7.widget.RecyclerView
+      <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/translators"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -80,7 +80,7 @@
         style="@style/Widget.Subhead"
         android:text="@string/label_libraries" />
 
-      <android.support.v7.widget.RecyclerView
+      <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/libraries"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -89,4 +89,4 @@
     </LinearLayout>
 
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/preferences_about_header.xml b/app/src/main/res/layout/preferences_about_header.xml
index 9c9c5201c..ab42f1920 100644
--- a/app/src/main/res/layout/preferences_about_header.xml
+++ b/app/src/main/res/layout/preferences_about_header.xml
@@ -38,7 +38,7 @@
     android:focusable="true"
     android:orientation="horizontal">
 
-    <android.support.v7.widget.AppCompatImageView
+    <androidx.appcompat.widget.AppCompatImageView
       android:layout_width="?actionBarSize"
       android:layout_height="?actionBarSize"
       android:layout_gravity="center"
@@ -67,7 +67,7 @@
     </LinearLayout>
   </LinearLayout>
 
-  <android.support.v7.widget.ButtonBarLayout
+  <LinearLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_marginBottom="8dp"
@@ -88,7 +88,7 @@
       android:layout_height="wrap_content"
       android:text="@string/label_github" />
 
-  </android.support.v7.widget.ButtonBarLayout>
+  </LinearLayout>
 
   <TextView
     style="@style/Widget.RtlConformTextView"
diff --git a/app/src/main/res/layout/preferences_crash.xml b/app/src/main/res/layout/preferences_crash.xml
index 0978768ff..b791420b0 100644
--- a/app/src/main/res/layout/preferences_crash.xml
+++ b/app/src/main/res/layout/preferences_crash.xml
@@ -17,8 +17,10 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/list"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
-  android:scrollbars="vertical" />
+  android:scrollbars="vertical"
+  tools:listitem="@layout/widget_crash" />
diff --git a/app/src/main/res/layout/preferences_license.xml b/app/src/main/res/layout/preferences_license.xml
index ca7d8a474..77850080a 100644
--- a/app/src/main/res/layout/preferences_license.xml
+++ b/app/src/main/res/layout/preferences_license.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
@@ -30,4 +30,4 @@
     android:layout_height="wrap_content"
     android:padding="16dp"
     tools:text="@string/license_apache_2" />
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/preferences_whitelist.xml b/app/src/main/res/layout/preferences_whitelist.xml
index 66ead17af..75b961723 100644
--- a/app/src/main/res/layout/preferences_whitelist.xml
+++ b/app/src/main/res/layout/preferences_whitelist.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
@@ -33,7 +33,7 @@
       style="@style/Widget.Subhead"
       android:text="@string/label_whitelist_certificates" />
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/certificate_whitelist"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -46,7 +46,7 @@
       style="@style/Widget.Subhead"
       android:text="@string/label_whitelist_hostnames" />
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/hostname_whitelist"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -56,4 +56,4 @@
       tools:listitem="@layout/preferences_whitelist_hostname_item" />
 
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/preferences_whitelist_certificate_item.xml b/app/src/main/res/layout/preferences_whitelist_certificate_item.xml
index 045f0f73b..5154b0e08 100644
--- a/app/src/main/res/layout/preferences_whitelist_certificate_item.xml
+++ b/app/src/main/res/layout/preferences_whitelist_certificate_item.xml
@@ -60,7 +60,7 @@
 
   </LinearLayout>
 
-  <android.support.v7.widget.AppCompatImageButton
+  <androidx.appcompat.widget.AppCompatImageButton
     android:id="@+id/action_delete"
     android:layout_width="wrap_content"
     android:layout_height="match_parent"
diff --git a/app/src/main/res/layout/preferences_whitelist_hostname_item.xml b/app/src/main/res/layout/preferences_whitelist_hostname_item.xml
index 33c9e3f96..e70aeef21 100644
--- a/app/src/main/res/layout/preferences_whitelist_hostname_item.xml
+++ b/app/src/main/res/layout/preferences_whitelist_hostname_item.xml
@@ -60,7 +60,7 @@
 
   </LinearLayout>
 
-  <android.support.v7.widget.AppCompatImageButton
+  <androidx.appcompat.widget.AppCompatImageButton
     android:id="@+id/action_delete"
     android:layout_width="wrap_content"
     android:layout_height="match_parent"
diff --git a/app/src/main/res/layout/settings_aliasitem.xml b/app/src/main/res/layout/settings_aliasitem.xml
index 921f00741..8edfe3bff 100644
--- a/app/src/main/res/layout/settings_aliasitem.xml
+++ b/app/src/main/res/layout/settings_aliasitem.xml
@@ -24,12 +24,12 @@
   android:layout_height="match_parent"
   android:orientation="vertical">
 
-  <android.support.design.widget.CoordinatorLayout
+  <androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="0dip"
     android:layout_weight="1">
 
-    <android.support.v4.widget.NestedScrollView
+    <androidx.core.widget.NestedScrollView
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:scrollbars="vertical">
@@ -46,21 +46,21 @@
             android:layout_height="wrap_content"
             android:minHeight="48dp">
 
-            <android.support.design.widget.TextInputLayout
+            <com.google.android.material.textfield.TextInputLayout
               style="@style/Widget.CoreSettings.PrimaryItemSwitch"
               android:hint="@string/settings_aliasitem_name">
 
-              <android.support.design.widget.TextInputEditText
+              <com.google.android.material.textfield.TextInputEditText
                 android:id="@+id/name"
                 style="@style/Widget.CoreSettings.EditText"
                 tools:text="back" />
-            </android.support.design.widget.TextInputLayout>
+            </com.google.android.material.textfield.TextInputLayout>
           </LinearLayout>
         </LinearLayout>
 
         <LinearLayout style="@style/Widget.CoreSettings.Wrapper">
 
-          <android.support.design.widget.TextInputLayout
+          <com.google.android.material.textfield.TextInputLayout
             style="@style/Widget.CoreSettings.PrimaryItemSwitch"
             android:hint="@string/settings_aliasitem_expansion">
 
@@ -71,12 +71,12 @@
               android:inputType="textMultiLine"
               android:textColor="?attr/colorForeground"
               android:textSize="16sp" />
-          </android.support.design.widget.TextInputLayout>
+          </com.google.android.material.textfield.TextInputLayout>
         </LinearLayout>
       </LinearLayout>
-    </android.support.v4.widget.NestedScrollView>
+    </androidx.core.widget.NestedScrollView>
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/autocomplete_list"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -86,9 +86,9 @@
       app:layout_behavior="@string/bottom_sheet_behavior"
       tools:listitem="@layout/widget_nick" />
 
-  </android.support.design.widget.CoordinatorLayout>
+  </androidx.coordinatorlayout.widget.CoordinatorLayout>
 
-  <android.support.design.widget.AppBarLayout
+  <com.google.android.material.appbar.AppBarLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="?attr/colorBackgroundCard">
@@ -98,5 +98,5 @@
       android:layout_width="match_parent"
       android:layout_height="?attr/actionBarSize"
       app:contentInsetStart="0dip" />
-  </android.support.design.widget.AppBarLayout>
+  </com.google.android.material.appbar.AppBarLayout>
 </LinearLayout>
diff --git a/app/src/main/res/layout/settings_aliaslist.xml b/app/src/main/res/layout/settings_aliaslist.xml
index 83c1bcb80..30e449b03 100644
--- a/app/src/main/res/layout/settings_aliaslist.xml
+++ b/app/src/main/res/layout/settings_aliaslist.xml
@@ -23,13 +23,13 @@
   android:layout_width="match_parent"
   android:layout_height="match_parent">
 
-  <android.support.v7.widget.RecyclerView
+  <androidx.recyclerview.widget.RecyclerView
     android:id="@+id/list"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:listitem="@layout/settings_aliaslist_item" />
 
-  <android.support.design.widget.FloatingActionButton
+  <com.google.android.material.floatingactionbutton.FloatingActionButton
     android:id="@+id/add"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/settings_aliaslist_item.xml b/app/src/main/res/layout/settings_aliaslist_item.xml
index fef7d9d67..da8efa3b3 100644
--- a/app/src/main/res/layout/settings_aliaslist_item.xml
+++ b/app/src/main/res/layout/settings_aliaslist_item.xml
@@ -26,7 +26,7 @@
   android:orientation="horizontal"
   tools:showIn="@layout/settings_aliaslist">
 
-  <android.support.v7.widget.AppCompatImageView
+  <androidx.appcompat.widget.AppCompatImageView
     android:id="@+id/handle"
     android:layout_width="wrap_content"
     android:layout_height="match_parent"
diff --git a/app/src/main/res/layout/settings_chatlist.xml b/app/src/main/res/layout/settings_chatlist.xml
index 5874f3e12..74132f857 100644
--- a/app/src/main/res/layout/settings_chatlist.xml
+++ b/app/src/main/res/layout/settings_chatlist.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -31,7 +31,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_eye" />
 
@@ -44,29 +44,29 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       android:visibility="visible">
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_chatlist_buffer_view_name">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/buffer_view_name"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="All Chats" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/show_search"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:checked="true"
         android:text="@string/settings_chatlist_show_search" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/sort_alphabetically"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:checked="true"
         android:text="@string/settings_chatlist_sort_alphabetically" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/add_new_buffers_automatically"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:checked="true"
@@ -78,7 +78,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_server_network" />
 
@@ -96,7 +96,7 @@
         style="@style/Widget.FullWidthSpinner"
         tools:listitem="@layout/widget_spinner_item_inline" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/show_status_buffer"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:checked="true"
@@ -108,7 +108,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_tag_text" />
 
@@ -121,13 +121,13 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       android:visibility="visible">
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/show_channels"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:checked="true"
         android:text="@string/settings_chatlist_show_channels" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/show_queries"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:checked="true"
@@ -139,7 +139,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_clock" />
 
@@ -157,15 +157,15 @@
         style="@style/Widget.FullWidthSpinner"
         tools:listitem="@layout/widget_spinner_item_inline" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/hide_inactive_buffers"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_chatlist_hide_inactive_buffers" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/hide_inactive_networks"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_chatlist_hide_inactive_networks" />
     </LinearLayout>
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/settings_highlightlist.xml b/app/src/main/res/layout/settings_highlightlist.xml
index 563ac00d9..7922e7529 100644
--- a/app/src/main/res/layout/settings_highlightlist.xml
+++ b/app/src/main/res/layout/settings_highlightlist.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -31,7 +31,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_server_network" />
 
@@ -49,7 +49,7 @@
         style="@style/Widget.FullWidthSpinner"
         tools:listitem="@layout/widget_spinner_item_inline" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/is_case_sensitive"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_highlightlist_nicks_case_sensitive" />
@@ -60,7 +60,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_server_network" />
 
@@ -73,7 +73,7 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       android:visibility="visible">
 
-      <android.support.v7.widget.RecyclerView
+      <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/highlight_rules"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -98,7 +98,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_server_network" />
 
@@ -111,7 +111,7 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       android:visibility="visible">
 
-      <android.support.v7.widget.RecyclerView
+      <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/highlight_ignore_rules"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -131,4 +131,4 @@
       </LinearLayout>
     </LinearLayout>
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/settings_highlightlist_rule.xml b/app/src/main/res/layout/settings_highlightlist_rule.xml
index f69060c02..49ba4607c 100644
--- a/app/src/main/res/layout/settings_highlightlist_rule.xml
+++ b/app/src/main/res/layout/settings_highlightlist_rule.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
+<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -34,7 +34,7 @@
     android:gravity="center_vertical"
     android:minHeight="?listPreferredItemHeightSmall">
 
-    <android.support.v7.widget.AppCompatImageView
+    <androidx.appcompat.widget.AppCompatImageView
       android:id="@+id/handle"
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
@@ -91,7 +91,7 @@
 
     </LinearLayout>
 
-    <android.support.v7.widget.SwitchCompat
+    <androidx.appcompat.widget.SwitchCompat
       android:id="@+id/toggle"
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
@@ -101,4 +101,4 @@
       android:paddingStart="?listPreferredItemPaddingLeft"
       android:text="" />
   </LinearLayout>
-</android.support.v7.widget.CardView>
+</com.google.android.material.card.MaterialCardView>
diff --git a/app/src/main/res/layout/settings_highlightrule.xml b/app/src/main/res/layout/settings_highlightrule.xml
index c8b918b93..9358401a1 100644
--- a/app/src/main/res/layout/settings_highlightrule.xml
+++ b/app/src/main/res/layout/settings_highlightrule.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -31,11 +31,11 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_filter" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/enabled"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_highlightrule_enabled" />
@@ -45,45 +45,45 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       android:visibility="visible">
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_highlightrule_name">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/name"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="https://clbin.com/*.jpg*" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/is_regex"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_highlightrule_regular_expression" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/is_case_sensitive"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_highlightrule_case_sensitive" />
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_highlightrule_sender">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/sender"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="TARS" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_highlightrule_channel">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/channel"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="#yepityha" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
     </LinearLayout>
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/settings_identity.xml b/app/src/main/res/layout/settings_identity.xml
index 0e7781340..f78acd4ab 100644
--- a/app/src/main/res/layout/settings_identity.xml
+++ b/app/src/main/res/layout/settings_identity.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -31,7 +31,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_account_card" />
 
@@ -44,35 +44,35 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       android:visibility="visible">
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_identity_identity_name">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/identity_name"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="Standardidentität" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_identity_real_name">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/real_name"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="Janne Koschinski" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_identity_ident">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/ident"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="justJanne" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
     </LinearLayout>
 
     <LinearLayout
@@ -92,7 +92,7 @@
       android:orientation="vertical"
       android:visibility="visible">
 
-      <android.support.v7.widget.RecyclerView
+      <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/nicks"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -117,7 +117,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_message_bulleted" />
 
@@ -130,35 +130,35 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       android:visibility="visible">
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_identity_kick_reason">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/kick_reason"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_identity_part_reason">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/part_reason"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="So if you care to find me, look to the western sky. As someone told me lately, everyone deserves a chance to fly." />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_identity_quit_reason">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/quit_reason"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="So if you care to find me, look to the western sky. As someone told me lately, everyone deserves a chance to fly." />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
     </LinearLayout>
 
     <LinearLayout
@@ -166,7 +166,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_clock" />
 
@@ -179,17 +179,17 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       android:visibility="visible">
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_identity_away_reason">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/away_reason"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="Gone Fishing." />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/detach_away"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_identity_detach_away" />
@@ -199,16 +199,16 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
-        <android.support.design.widget.TextInputLayout
+        <com.google.android.material.textfield.TextInputLayout
           style="@style/Widget.CoreSettings.EditTextLayout"
           android:hint="@string/settings_identity_detach_away_reason">
 
-          <android.support.design.widget.TextInputEditText
+          <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/detach_away_reason"
             style="@style/Widget.CoreSettings.EditText"
             tools:text="Gone Fishing." />
-        </android.support.design.widget.TextInputLayout>
+        </com.google.android.material.textfield.TextInputLayout>
       </LinearLayout>
     </LinearLayout>
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/settings_identity_nick.xml b/app/src/main/res/layout/settings_identity_nick.xml
index 74e983358..e177bc024 100644
--- a/app/src/main/res/layout/settings_identity_nick.xml
+++ b/app/src/main/res/layout/settings_identity_nick.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
+<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -47,7 +47,7 @@
       android:textAppearance="?android:attr/textAppearanceListItemSmall"
       tools:text="@sample/messages.json/data/sender" />
 
-    <android.support.v7.widget.AppCompatImageView
+    <androidx.appcompat.widget.AppCompatImageView
       android:id="@+id/handle"
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
@@ -59,4 +59,4 @@
       app:srcCompat="@drawable/ic_reorder"
       app:tint="?colorTextSecondary" />
   </LinearLayout>
-</android.support.v7.widget.CardView>
+</com.google.android.material.card.MaterialCardView>
diff --git a/app/src/main/res/layout/settings_ignoreitem.xml b/app/src/main/res/layout/settings_ignoreitem.xml
index 34b9960be..8f8d69d2a 100644
--- a/app/src/main/res/layout/settings_ignoreitem.xml
+++ b/app/src/main/res/layout/settings_ignoreitem.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -31,11 +31,11 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_filter" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/enabled"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_ignoreitem_enabled" />
@@ -45,17 +45,17 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       android:visibility="visible">
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_ignoreitem_ignorerule">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/ignore_rule"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="https://clbin.com/*.jpg*" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/isregex"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_ignoreitem_isregex" />
@@ -84,7 +84,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_tag_text" />
 
@@ -108,15 +108,15 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       android:visibility="visible">
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_ignoreitem_scoperule">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/scope_rule"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="https://clbin.com/*.jpg*" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
     </LinearLayout>
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/settings_ignorelist.xml b/app/src/main/res/layout/settings_ignorelist.xml
index 1654c3761..0e2547564 100644
--- a/app/src/main/res/layout/settings_ignorelist.xml
+++ b/app/src/main/res/layout/settings_ignorelist.xml
@@ -23,7 +23,7 @@
   android:layout_width="match_parent"
   android:layout_height="match_parent">
 
-  <android.support.v7.widget.RecyclerView
+  <androidx.recyclerview.widget.RecyclerView
     android:id="@+id/list"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -31,7 +31,7 @@
     android:paddingRight="2dp"
     tools:listitem="@layout/settings_ignorelist_item" />
 
-  <android.support.design.widget.FloatingActionButton
+  <com.google.android.material.floatingactionbutton.FloatingActionButton
     android:id="@+id/add"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/settings_ignorelist_item.xml b/app/src/main/res/layout/settings_ignorelist_item.xml
index 84ca67be6..6d6dfbfd1 100644
--- a/app/src/main/res/layout/settings_ignorelist_item.xml
+++ b/app/src/main/res/layout/settings_ignorelist_item.xml
@@ -28,7 +28,7 @@
   android:minHeight="?listPreferredItemHeightSmall"
   tools:showIn="@layout/settings_ignorelist">
 
-  <android.support.v7.widget.AppCompatImageView
+  <androidx.appcompat.widget.AppCompatImageView
     android:id="@+id/handle"
     android:layout_width="wrap_content"
     android:layout_height="match_parent"
@@ -74,7 +74,7 @@
 
   </LinearLayout>
 
-  <android.support.v7.widget.SwitchCompat
+  <androidx.appcompat.widget.SwitchCompat
     android:id="@+id/toggle"
     android:layout_width="wrap_content"
     android:layout_height="match_parent"
diff --git a/app/src/main/res/layout/settings_list.xml b/app/src/main/res/layout/settings_list.xml
index a175a975f..267253e85 100644
--- a/app/src/main/res/layout/settings_list.xml
+++ b/app/src/main/res/layout/settings_list.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -31,7 +31,7 @@
 
     <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroupHeader">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_server_network" />
 
@@ -42,7 +42,7 @@
 
     <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroup">
 
-      <android.support.v7.widget.RecyclerView
+      <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/networks"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -64,7 +64,7 @@
 
     <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroupHeader">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_account_card" />
 
@@ -80,7 +80,7 @@
       android:layout_marginStart="72dp"
       android:orientation="vertical">
 
-      <android.support.v7.widget.RecyclerView
+      <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/identities"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -102,7 +102,7 @@
 
     <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroupHeader">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_list_bulleted" />
 
@@ -113,7 +113,7 @@
 
     <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroup">
 
-      <android.support.v7.widget.RecyclerView
+      <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/chatlists"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -138,7 +138,7 @@
       style="@style/Widget.CoreSettings.PrimaryItemGroupHeader"
       android:focusable="true">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_filter" />
 
@@ -152,7 +152,7 @@
       style="@style/Widget.CoreSettings.PrimaryItemGroupHeader"
       android:focusable="true">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_bell" />
 
@@ -166,7 +166,7 @@
       style="@style/Widget.CoreSettings.PrimaryItemGroupHeader"
       android:focusable="true">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_message_bulleted" />
 
@@ -180,7 +180,7 @@
       style="@style/Widget.CoreSettings.PrimaryItemGroupHeader"
       android:focusable="true">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_settings" />
 
@@ -194,7 +194,7 @@
       style="@style/Widget.CoreSettings.PrimaryItemGroupHeader"
       android:focusable="true">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_info" />
 
@@ -203,4 +203,4 @@
         android:text="@string/label_info_core" />
     </LinearLayout>
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/settings_network.xml b/app/src/main/res/layout/settings_network.xml
index b0c0cf829..d446eecbd 100644
--- a/app/src/main/res/layout/settings_network.xml
+++ b/app/src/main/res/layout/settings_network.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -31,7 +31,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_message_bulleted" />
 
@@ -44,15 +44,15 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       android:visibility="visible">
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_network_network_name">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/network_name"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="Snoonet" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
     </LinearLayout>
 
     <LinearLayout
@@ -60,7 +60,7 @@
       android:orientation="vertical"
       android:visibility="visible">
 
-      <android.support.v7.widget.RecyclerView
+      <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/servers"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -85,7 +85,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_account_card" />
 
@@ -109,11 +109,11 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_key_variant" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/sasl_enabled"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_network_sasl_enabled" />
@@ -124,27 +124,27 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       tools:visibility="gone">
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_network_sasl_account">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/sasl_account"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="justjanne" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_network_sasl_password"
         app:passwordToggleEnabled="true">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/sasl_password"
           style="@style/Widget.CoreSettings.EditText"
           android:inputType="textPassword"
           tools:text="thisisasecurepassword" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
       <!-- TODO: Add info box to show if network supports SASL when connected -->
     </LinearLayout>
@@ -154,11 +154,11 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_key_variant" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/autoidentify_enabled"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_network_autoidentify_enabled" />
@@ -169,27 +169,27 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       tools:visibility="gone">
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_network_autoidentify_service">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/autoidentify_service"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="NickServ" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_network_autoidentify_password"
         app:passwordToggleEnabled="true">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/autoidentify_password"
           style="@style/Widget.CoreSettings.EditText"
           android:inputType="textPassword"
           tools:text="thisisasecurepassword" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
     </LinearLayout>
 
     <LinearLayout
@@ -197,7 +197,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_server_network" />
 
@@ -210,18 +210,18 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       android:visibility="visible">
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_network_perform">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/perform"
           style="@style/Widget.CoreSettings.EditText"
           android:inputType="textMultiLine"
           tools:text="/mode -x" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/rejoin_channels"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_network_rejoin_channels" />
@@ -232,11 +232,11 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_clock" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/autoreconnect_enabled"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_network_autoreconnect_enabled" />
@@ -251,32 +251,32 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
-        <android.support.design.widget.TextInputLayout
+        <com.google.android.material.textfield.TextInputLayout
           style="@style/Widget.CoreSettings.EditTextLayout"
           android:hint="@string/settings_network_autoreconnect_interval">
 
-          <android.support.design.widget.TextInputEditText
+          <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/autoreconnect_interval"
             style="@style/Widget.CoreSettings.EditText"
             tools:text="60" />
-        </android.support.design.widget.TextInputLayout>
+        </com.google.android.material.textfield.TextInputLayout>
 
         <TextView
           style="@style/Widget.CoreSettings.EditTextSuffix"
           android:text="@string/settings_network_autoreconnect_interval_unit" />
       </FrameLayout>
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_network_autoreconnect_attempts">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/autoreconnect_attempts"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="20" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/autoreconnect_unlimited"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_network_autoreconnect_unlimited" />
@@ -287,11 +287,11 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_settings" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/customratelimits_enabled"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_network_customratelimits_enabled" />
@@ -302,34 +302,34 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       tools:visibility="visible">
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/customratelimits_unlimited"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_network_customratelimits_unlimited" />
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_network_customratelimits_burstsize">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/customratelimits_burstsize"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="5" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
       <FrameLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
-        <android.support.design.widget.TextInputLayout
+        <com.google.android.material.textfield.TextInputLayout
           style="@style/Widget.CoreSettings.EditTextLayout"
           android:hint="@string/settings_network_customratelimits_delay">
 
-          <android.support.design.widget.TextInputEditText
+          <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/customratelimits_delay"
             style="@style/Widget.CoreSettings.EditText"
             tools:text="2.20" />
-        </android.support.design.widget.TextInputLayout>
+        </com.google.android.material.textfield.TextInputLayout>
 
         <TextView
           style="@style/Widget.CoreSettings.EditTextSuffix"
@@ -337,4 +337,4 @@
       </FrameLayout>
     </LinearLayout>
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/settings_network_server.xml b/app/src/main/res/layout/settings_network_server.xml
index 47c5d0734..e76c2c585 100644
--- a/app/src/main/res/layout/settings_network_server.xml
+++ b/app/src/main/res/layout/settings_network_server.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
+<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -35,7 +35,7 @@
     android:paddingBottom="10dp"
     android:paddingTop="10dp">
 
-    <android.support.v7.widget.AppCompatImageView
+    <androidx.appcompat.widget.AppCompatImageView
       android:id="@+id/ssl_enabled"
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
@@ -76,7 +76,7 @@
         tools:text="@sample/networks.json/data/port" />
     </LinearLayout>
 
-    <android.support.v7.widget.AppCompatImageView
+    <androidx.appcompat.widget.AppCompatImageView
       android:id="@+id/handle"
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
@@ -88,4 +88,4 @@
       app:srcCompat="@drawable/ic_reorder"
       app:tint="?colorTextSecondary" />
   </LinearLayout>
-</android.support.v7.widget.CardView>
+</com.google.android.material.card.MaterialCardView>
diff --git a/app/src/main/res/layout/settings_networkconfig.xml b/app/src/main/res/layout/settings_networkconfig.xml
index b868b3a0b..69a766317 100644
--- a/app/src/main/res/layout/settings_networkconfig.xml
+++ b/app/src/main/res/layout/settings_networkconfig.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -31,11 +31,11 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_history" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/ping_timeout_enabled"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_networkconfig_ping_timeout" />
@@ -50,16 +50,16 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
-        <android.support.design.widget.TextInputLayout
+        <com.google.android.material.textfield.TextInputLayout
           style="@style/Widget.CoreSettings.EditTextLayout"
           android:hint="@string/settings_networkconfig_ping_interval">
 
-          <android.support.design.widget.TextInputEditText
+          <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/ping_interval"
             style="@style/Widget.CoreSettings.EditText"
             android:inputType="number"
             tools:text="30" />
-        </android.support.design.widget.TextInputLayout>
+        </com.google.android.material.textfield.TextInputLayout>
 
         <TextView
           style="@style/Widget.CoreSettings.EditTextSuffix"
@@ -70,16 +70,16 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
-        <android.support.design.widget.TextInputLayout
+        <com.google.android.material.textfield.TextInputLayout
           style="@style/Widget.CoreSettings.EditTextLayout"
           android:hint="@string/settings_networkconfig_max_ping_count">
 
-          <android.support.design.widget.TextInputEditText
+          <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/max_ping_count"
             style="@style/Widget.CoreSettings.EditText"
             android:inputType="number"
             tools:text="10" />
-        </android.support.design.widget.TextInputLayout>
+        </com.google.android.material.textfield.TextInputLayout>
 
         <TextView
           style="@style/Widget.CoreSettings.EditTextSuffix"
@@ -92,11 +92,11 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_account" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/auto_who_enabled"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_networkconfig_auto_who" />
@@ -111,16 +111,16 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
-        <android.support.design.widget.TextInputLayout
+        <com.google.android.material.textfield.TextInputLayout
           style="@style/Widget.CoreSettings.EditTextLayout"
           android:hint="@string/settings_networkconfig_auto_who_interval">
 
-          <android.support.design.widget.TextInputEditText
+          <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/auto_who_interval"
             style="@style/Widget.CoreSettings.EditText"
             android:inputType="number"
             tools:text="90" />
-        </android.support.design.widget.TextInputLayout>
+        </com.google.android.material.textfield.TextInputLayout>
 
         <TextView
           style="@style/Widget.CoreSettings.EditTextSuffix"
@@ -131,16 +131,16 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
-        <android.support.design.widget.TextInputLayout
+        <com.google.android.material.textfield.TextInputLayout
           style="@style/Widget.CoreSettings.EditTextLayout"
           android:hint="@string/settings_networkconfig_auto_who_nick_limit">
 
-          <android.support.design.widget.TextInputEditText
+          <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/auto_who_nick_limit"
             style="@style/Widget.CoreSettings.EditText"
             android:inputType="number"
             tools:text="100" />
-        </android.support.design.widget.TextInputLayout>
+        </com.google.android.material.textfield.TextInputLayout>
 
         <TextView
           style="@style/Widget.CoreSettings.EditTextSuffix"
@@ -151,16 +151,16 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
-        <android.support.design.widget.TextInputLayout
+        <com.google.android.material.textfield.TextInputLayout
           style="@style/Widget.CoreSettings.EditTextLayout"
           android:hint="@string/settings_networkconfig_auto_who_delay">
 
-          <android.support.design.widget.TextInputEditText
+          <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/auto_who_delay"
             style="@style/Widget.CoreSettings.EditText"
             android:inputType="number"
             tools:text="5" />
-        </android.support.design.widget.TextInputLayout>
+        </com.google.android.material.textfield.TextInputLayout>
 
         <TextView
           style="@style/Widget.CoreSettings.EditTextSuffix"
@@ -173,14 +173,14 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_message_bulleted" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/standard_ctcp"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_networkconfig_standard_ctcp" />
     </LinearLayout>
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/settings_networkserver.xml b/app/src/main/res/layout/settings_networkserver.xml
index aadef1679..1e0c2fa0c 100644
--- a/app/src/main/res/layout/settings_networkserver.xml
+++ b/app/src/main/res/layout/settings_networkserver.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -31,7 +31,7 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_server_network" />
 
@@ -44,48 +44,48 @@
       style="@style/Widget.CoreSettings.DependentGroup"
       android:visibility="visible">
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_networkserver_host">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/host"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="irc.freenode.org" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_networkserver_port">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/port"
           style="@style/Widget.CoreSettings.EditText"
           android:inputType="number"
           tools:text="6667" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/ssl_enabled"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_networkserver_ssl_enabled" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/ssl_verify"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_networkserver_ssl_verify" />
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_networkserver_password"
         app:passwordToggleEnabled="true">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/password"
           style="@style/Widget.CoreSettings.EditText"
           android:inputType="textPassword"
           tools:text="thisisasecurepassword" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
     </LinearLayout>
 
     <LinearLayout
@@ -93,11 +93,11 @@
       android:layout_height="wrap_content"
       android:minHeight="48dp">
 
-      <android.support.v7.widget.AppCompatImageView
+      <androidx.appcompat.widget.AppCompatImageView
         style="@style/Widget.CoreSettings.PrimaryItemIcon"
         app:srcCompat="@drawable/ic_settings" />
 
-      <android.support.v7.widget.SwitchCompat
+      <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/proxy_enabled"
         style="@style/Widget.CoreSettings.PrimaryItemSwitch"
         android:text="@string/settings_networkserver_proxy_enabled" />
@@ -117,48 +117,48 @@
         style="@style/Widget.FullWidthSpinner"
         tools:listitem="@layout/widget_spinner_item_inline" />
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_networkserver_proxy_host">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/proxy_host"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="localhost" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_networkserver_proxy_port">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/proxy_port"
           style="@style/Widget.CoreSettings.EditText"
           android:inputType="number"
           tools:text="8080" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_networkserver_proxy_user">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/proxy_user"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="justjanne" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.CoreSettings.EditTextLayout"
         android:hint="@string/settings_networkserver_proxy_pass"
         app:passwordToggleEnabled="true">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
           android:id="@+id/proxy_pass"
           style="@style/Widget.CoreSettings.EditText"
           android:inputType="textPassword"
           tools:text="thisisasecurepassword" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
     </LinearLayout>
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/setup_account_connection.xml b/app/src/main/res/layout/setup_account_connection.xml
index bbe764da0..463fd3372 100644
--- a/app/src/main/res/layout/setup_account_connection.xml
+++ b/app/src/main/res/layout/setup_account_connection.xml
@@ -27,7 +27,7 @@
   android:orientation="vertical"
   android:padding="32dp">
 
-  <android.support.design.widget.TextInputLayout
+  <com.google.android.material.textfield.TextInputLayout
     android:id="@+id/hostWrapper"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -40,9 +40,9 @@
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:inputType="textUri" />
-  </android.support.design.widget.TextInputLayout>
+  </com.google.android.material.textfield.TextInputLayout>
 
-  <android.support.design.widget.TextInputLayout
+  <com.google.android.material.textfield.TextInputLayout
     android:id="@+id/portWrapper"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -56,6 +56,6 @@
       android:layout_height="wrap_content"
       android:inputType="number"
       android:text="@string/defaultConnectionPort" />
-  </android.support.design.widget.TextInputLayout>
+  </com.google.android.material.textfield.TextInputLayout>
 
 </LinearLayout>
diff --git a/app/src/main/res/layout/setup_account_edit.xml b/app/src/main/res/layout/setup_account_edit.xml
index 4bdf7366a..dfc400f3a 100644
--- a/app/src/main/res/layout/setup_account_edit.xml
+++ b/app/src/main/res/layout/setup_account_edit.xml
@@ -17,7 +17,7 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
@@ -28,7 +28,7 @@
     android:layout_height="wrap_content"
     android:orientation="vertical">
 
-    <android.support.v4.widget.Space
+    <Space
       android:layout_width="match_parent"
       android:layout_height="16dp" />
 
@@ -42,7 +42,7 @@
         android:layout_width="56dp"
         android:layout_height="68dp">
 
-        <android.support.v7.widget.AppCompatImageView
+        <androidx.appcompat.widget.AppCompatImageView
           android:layout_width="24dp"
           android:layout_height="24dp"
           android:layout_gravity="center_vertical"
@@ -51,7 +51,7 @@
           tools:ignore="ContentDescription" />
       </FrameLayout>
 
-      <android.support.design.widget.TextInputLayout
+      <com.google.android.material.textfield.TextInputLayout
         android:id="@+id/nameWrapper"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -64,10 +64,10 @@
           android:layout_height="wrap_content"
           android:inputType="text"
           app:errorEnabled="true" />
-      </android.support.design.widget.TextInputLayout>
+      </com.google.android.material.textfield.TextInputLayout>
     </LinearLayout>
 
-    <android.support.v4.widget.Space
+    <Space
       android:layout_width="match_parent"
       android:layout_height="16dp" />
 
@@ -81,7 +81,7 @@
         android:layout_width="56dp"
         android:layout_height="68dp">
 
-        <android.support.v7.widget.AppCompatImageView
+        <androidx.appcompat.widget.AppCompatImageView
           android:layout_width="24dp"
           android:layout_height="24dp"
           android:layout_gravity="center_vertical"
@@ -95,7 +95,7 @@
         android:layout_height="wrap_content"
         android:orientation="vertical">
 
-        <android.support.design.widget.TextInputLayout
+        <com.google.android.material.textfield.TextInputLayout
           android:id="@+id/hostWrapper"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
@@ -108,9 +108,9 @@
             android:layout_height="wrap_content"
             android:inputType="textUri"
             app:errorEnabled="true" />
-        </android.support.design.widget.TextInputLayout>
+        </com.google.android.material.textfield.TextInputLayout>
 
-        <android.support.design.widget.TextInputLayout
+        <com.google.android.material.textfield.TextInputLayout
           android:id="@+id/portWrapper"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
@@ -124,11 +124,11 @@
             android:inputType="number"
             android:text="@string/defaultConnectionPort"
             app:errorEnabled="true" />
-        </android.support.design.widget.TextInputLayout>
+        </com.google.android.material.textfield.TextInputLayout>
       </LinearLayout>
     </LinearLayout>
 
-    <android.support.v4.widget.Space
+    <Space
       android:layout_width="match_parent"
       android:layout_height="16dp" />
 
@@ -143,7 +143,7 @@
         android:layout_width="56dp"
         android:layout_height="68dp">
 
-        <android.support.v7.widget.AppCompatImageView
+        <androidx.appcompat.widget.AppCompatImageView
           android:layout_width="24dp"
           android:layout_height="24dp"
           android:layout_gravity="center_vertical"
@@ -157,7 +157,7 @@
         android:layout_height="wrap_content"
         android:orientation="vertical">
 
-        <android.support.design.widget.TextInputLayout
+        <com.google.android.material.textfield.TextInputLayout
           android:id="@+id/userWrapper"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
@@ -170,9 +170,9 @@
             android:layout_height="wrap_content"
             android:inputType="textVisiblePassword|textNoSuggestions"
             app:errorEnabled="true" />
-        </android.support.design.widget.TextInputLayout>
+        </com.google.android.material.textfield.TextInputLayout>
 
-        <android.support.design.widget.TextInputLayout
+        <com.google.android.material.textfield.TextInputLayout
           android:id="@+id/passWrapper"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
@@ -186,13 +186,13 @@
             android:layout_height="wrap_content"
             android:inputType="textPassword"
             app:errorEnabled="true" />
-        </android.support.design.widget.TextInputLayout>
+        </com.google.android.material.textfield.TextInputLayout>
 
       </LinearLayout>
     </LinearLayout>
 
-    <android.support.v4.widget.Space
+    <Space
       android:layout_width="match_parent"
       android:layout_height="16dp" />
   </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/setup_account_name.xml b/app/src/main/res/layout/setup_account_name.xml
index 997311e82..9983768e6 100644
--- a/app/src/main/res/layout/setup_account_name.xml
+++ b/app/src/main/res/layout/setup_account_name.xml
@@ -25,7 +25,7 @@
   android:orientation="vertical"
   android:padding="32dp">
 
-  <android.support.design.widget.TextInputLayout
+  <com.google.android.material.textfield.TextInputLayout
     android:id="@+id/nameWrapper"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -38,6 +38,6 @@
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:inputType="text" />
-  </android.support.design.widget.TextInputLayout>
+  </com.google.android.material.textfield.TextInputLayout>
 
 </LinearLayout>
diff --git a/app/src/main/res/layout/setup_account_user.xml b/app/src/main/res/layout/setup_account_user.xml
index 4695b73e6..773bad9fa 100644
--- a/app/src/main/res/layout/setup_account_user.xml
+++ b/app/src/main/res/layout/setup_account_user.xml
@@ -25,7 +25,7 @@
   android:orientation="vertical"
   android:padding="32dp">
 
-  <android.support.design.widget.TextInputLayout
+  <com.google.android.material.textfield.TextInputLayout
     android:id="@+id/userWrapper"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -38,9 +38,9 @@
       android:layout_height="wrap_content"
       android:inputType="textVisiblePassword|textNoSuggestions"
       app:errorEnabled="true" />
-  </android.support.design.widget.TextInputLayout>
+  </com.google.android.material.textfield.TextInputLayout>
 
-  <android.support.design.widget.TextInputLayout
+  <com.google.android.material.textfield.TextInputLayout
     android:id="@+id/passWrapper"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -54,6 +54,6 @@
       android:layout_height="wrap_content"
       android:inputType="textPassword"
       app:errorEnabled="true" />
-  </android.support.design.widget.TextInputLayout>
+  </com.google.android.material.textfield.TextInputLayout>
 
 </LinearLayout>
diff --git a/app/src/main/res/layout/setup_select_account.xml b/app/src/main/res/layout/setup_select_account.xml
index 1455ad301..32faffc53 100644
--- a/app/src/main/res/layout/setup_select_account.xml
+++ b/app/src/main/res/layout/setup_select_account.xml
@@ -17,7 +17,9 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/account_list"
   android:layout_width="match_parent"
-  android:layout_height="match_parent" />
+  android:layout_height="match_parent"
+  tools:listitem="@layout/widget_core_account" />
diff --git a/app/src/main/res/layout/setup_slide.xml b/app/src/main/res/layout/setup_slide.xml
index 45c9aa387..1458bf9a4 100644
--- a/app/src/main/res/layout/setup_slide.xml
+++ b/app/src/main/res/layout/setup_slide.xml
@@ -17,18 +17,18 @@
   with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:ignore="InconsistentLayout">
 
-  <android.support.design.widget.AppBarLayout
+  <com.google.android.material.appbar.AppBarLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content">
 
-    <android.support.design.widget.CollapsingToolbarLayout
+    <com.google.android.material.appbar.CollapsingToolbarLayout
       android:id="@+id/collapsingToolbar"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -49,7 +49,7 @@
         app:layout_collapseMode="parallax"
         app:layout_collapseParallaxMultiplier="1">
 
-        <android.support.v4.widget.Space
+        <Space
           android:layout_width="match_parent"
           android:layout_height="21sp"
           android:layout_marginTop="24dp" />
@@ -70,16 +70,16 @@
           tools:text="First, please choose which server your core is hosted on." />
       </LinearLayout>
 
-      <android.support.v7.widget.Toolbar
+      <androidx.appcompat.widget.Toolbar
         android:layout_width="match_parent"
         android:layout_height="?actionBarSize"
         app:layout_collapseMode="pin"
         app:titleMarginEnd="48dp"
         app:titleMarginStart="16dp" />
-    </android.support.design.widget.CollapsingToolbarLayout>
-  </android.support.design.widget.AppBarLayout>
+    </com.google.android.material.appbar.CollapsingToolbarLayout>
+  </com.google.android.material.appbar.AppBarLayout>
 
-  <android.support.v4.widget.NestedScrollView
+  <androidx.core.widget.NestedScrollView
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     app:layout_behavior="@string/appbar_scrolling_view_behavior">
@@ -88,5 +88,5 @@
       android:id="@+id/content_host"
       android:layout_width="match_parent"
       android:layout_height="wrap_content" />
-  </android.support.v4.widget.NestedScrollView>
-</android.support.design.widget.CoordinatorLayout>
+  </androidx.core.widget.NestedScrollView>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/setup_user_channels.xml b/app/src/main/res/layout/setup_user_channels.xml
index 3d8976048..cb56f1994 100644
--- a/app/src/main/res/layout/setup_user_channels.xml
+++ b/app/src/main/res/layout/setup_user_channels.xml
@@ -25,7 +25,7 @@
   android:orientation="vertical"
   android:padding="32dp">
 
-  <android.support.design.widget.TextInputLayout
+  <com.google.android.material.textfield.TextInputLayout
     android:id="@+id/channelsWrapper"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -38,6 +38,6 @@
       android:layout_height="wrap_content"
       android:inputType="textMultiLine"
       app:errorEnabled="true" />
-  </android.support.design.widget.TextInputLayout>
+  </com.google.android.material.textfield.TextInputLayout>
 
 </LinearLayout>
diff --git a/app/src/main/res/layout/setup_user_identity.xml b/app/src/main/res/layout/setup_user_identity.xml
index 38c5eaf83..578b3466c 100644
--- a/app/src/main/res/layout/setup_user_identity.xml
+++ b/app/src/main/res/layout/setup_user_identity.xml
@@ -25,7 +25,7 @@
   android:orientation="vertical"
   android:padding="32dp">
 
-  <android.support.design.widget.TextInputLayout
+  <com.google.android.material.textfield.TextInputLayout
     android:id="@+id/nickWrapper"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -38,9 +38,9 @@
       android:layout_height="wrap_content"
       android:inputType="textVisiblePassword|textNoSuggestions"
       app:errorEnabled="true" />
-  </android.support.design.widget.TextInputLayout>
+  </com.google.android.material.textfield.TextInputLayout>
 
-  <android.support.design.widget.TextInputLayout
+  <com.google.android.material.textfield.TextInputLayout
     android:id="@+id/realnameWrapper"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -54,6 +54,6 @@
       android:layout_height="wrap_content"
       android:inputType="textPersonName"
       app:errorEnabled="true" />
-  </android.support.design.widget.TextInputLayout>
+  </com.google.android.material.textfield.TextInputLayout>
 
 </LinearLayout>
diff --git a/app/src/main/res/layout/setup_user_network.xml b/app/src/main/res/layout/setup_user_network.xml
index 9bf02ee51..df68ef42d 100644
--- a/app/src/main/res/layout/setup_user_network.xml
+++ b/app/src/main/res/layout/setup_user_network.xml
@@ -42,7 +42,7 @@
     android:layout_height="wrap_content"
     android:orientation="vertical">
 
-    <android.support.design.widget.TextInputLayout
+    <com.google.android.material.textfield.TextInputLayout
       android:id="@+id/nameWrapper"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -55,9 +55,9 @@
         android:layout_height="wrap_content"
         android:inputType="textUri|textNoSuggestions"
         app:errorEnabled="true" />
-    </android.support.design.widget.TextInputLayout>
+    </com.google.android.material.textfield.TextInputLayout>
 
-    <android.support.design.widget.TextInputLayout
+    <com.google.android.material.textfield.TextInputLayout
       android:id="@+id/hostWrapper"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -70,9 +70,9 @@
         android:layout_height="wrap_content"
         android:inputType="textUri|textNoSuggestions"
         app:errorEnabled="true" />
-    </android.support.design.widget.TextInputLayout>
+    </com.google.android.material.textfield.TextInputLayout>
 
-    <android.support.design.widget.TextInputLayout
+    <com.google.android.material.textfield.TextInputLayout
       android:id="@+id/portWrapper"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -88,9 +88,9 @@
         android:text="6667"
         app:errorEnabled="true"
         tools:ignore="HardcodedText" />
-    </android.support.design.widget.TextInputLayout>
+    </com.google.android.material.textfield.TextInputLayout>
 
-    <android.support.v7.widget.SwitchCompat
+    <androidx.appcompat.widget.SwitchCompat
       android:id="@+id/ssl_enabled"
       style="@style/Widget.CoreSettings.PrimaryItemSwitch"
       android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/widget_buffer_away.xml b/app/src/main/res/layout/widget_buffer_away.xml
index aabbfe9e3..5b2d80295 100644
--- a/app/src/main/res/layout/widget_buffer_away.xml
+++ b/app/src/main/res/layout/widget_buffer_away.xml
@@ -76,7 +76,7 @@
       tools:visibility="visible" />
   </LinearLayout>
 
-  <android.support.v7.widget.AppCompatImageView
+  <androidx.appcompat.widget.AppCompatImageView
     android:layout_width="24dp"
     android:layout_height="24dp"
     android:layout_gravity="center_vertical"
diff --git a/app/src/main/res/layout/widget_client.xml b/app/src/main/res/layout/widget_client.xml
index 8dc71aac3..cb2bf6597 100644
--- a/app/src/main/res/layout/widget_client.xml
+++ b/app/src/main/res/layout/widget_client.xml
@@ -39,7 +39,7 @@
       android:text="@string/label_disconnect" />
   </LinearLayout>
 
-  <android.support.v7.widget.AppCompatImageView
+  <androidx.appcompat.widget.AppCompatImageView
     android:id="@+id/secure_icon"
     android:layout_width="24dp"
     android:layout_height="24dp"
diff --git a/app/src/main/res/layout/widget_core_account.xml b/app/src/main/res/layout/widget_core_account.xml
index 1593b6a7a..b6387b790 100644
--- a/app/src/main/res/layout/widget_core_account.xml
+++ b/app/src/main/res/layout/widget_core_account.xml
@@ -34,7 +34,7 @@
     android:layout_width="48dp"
     android:layout_height="match_parent">
 
-    <android.support.v7.widget.AppCompatRadioButton
+    <androidx.appcompat.widget.AppCompatRadioButton
       android:id="@+id/account_select"
       android:layout_width="48dp"
       android:layout_height="48dp"
@@ -77,7 +77,7 @@
       tools:text="testUser on localhost" />
   </LinearLayout>
 
-  <android.support.v7.widget.AppCompatImageButton
+  <androidx.appcompat.widget.AppCompatImageButton
     android:id="@+id/account_edit"
     style="?attr/buttonStyleSmall"
     android:layout_width="48dp"
diff --git a/app/src/main/res/layout/widget_formatting.xml b/app/src/main/res/layout/widget_formatting.xml
index dabe97ddc..be6456e03 100644
--- a/app/src/main/res/layout/widget_formatting.xml
+++ b/app/src/main/res/layout/widget_formatting.xml
@@ -27,7 +27,7 @@
     android:layout_height="match_parent"
     android:padding="2dp">
 
-    <android.support.v7.widget.AppCompatImageButton
+    <androidx.appcompat.widget.AppCompatImageButton
       android:id="@+id/action_format_bold"
       style="@style/Widget.Button.Format"
       android:contentDescription="@string/label_bold"
@@ -38,7 +38,7 @@
       android:layout_width="2dp"
       android:layout_height="match_parent" />
 
-    <android.support.v7.widget.AppCompatImageButton
+    <androidx.appcompat.widget.AppCompatImageButton
       android:id="@+id/action_format_italic"
       style="@style/Widget.Button.Format"
       android:contentDescription="@string/label_italic"
@@ -49,7 +49,7 @@
       android:layout_width="2dp"
       android:layout_height="match_parent" />
 
-    <android.support.v7.widget.AppCompatImageButton
+    <androidx.appcompat.widget.AppCompatImageButton
       android:id="@+id/action_format_underline"
       style="@style/Widget.Button.Format"
       android:contentDescription="@string/label_underline"
@@ -60,7 +60,7 @@
       android:layout_width="2dp"
       android:layout_height="match_parent" />
 
-    <android.support.v7.widget.AppCompatImageButton
+    <androidx.appcompat.widget.AppCompatImageButton
       android:id="@+id/action_format_strikethrough"
       style="@style/Widget.Button.Format"
       android:contentDescription="@string/label_strikethrough"
@@ -71,7 +71,7 @@
       android:layout_width="2dp"
       android:layout_height="match_parent" />
 
-    <android.support.v7.widget.AppCompatImageButton
+    <androidx.appcompat.widget.AppCompatImageButton
       android:id="@+id/action_format_monospace"
       style="@style/Widget.Button.Format"
       android:contentDescription="@string/label_monospace"
@@ -87,7 +87,7 @@
       android:layout_height="48dp"
       android:layout_gravity="center">
 
-      <android.support.v7.widget.AppCompatImageButton
+      <androidx.appcompat.widget.AppCompatImageButton
         android:id="@+id/action_format_foreground"
         style="@style/Widget.Button.Format"
         android:layout_width="match_parent"
@@ -115,7 +115,7 @@
       android:layout_height="48dp"
       android:layout_gravity="center">
 
-      <android.support.v7.widget.AppCompatImageButton
+      <androidx.appcompat.widget.AppCompatImageButton
         android:id="@+id/action_format_background"
         style="@style/Widget.Button.Format"
         android:layout_width="match_parent"
@@ -138,7 +138,7 @@
       android:layout_width="2dp"
       android:layout_height="match_parent" />
 
-    <android.support.v7.widget.AppCompatImageButton
+    <androidx.appcompat.widget.AppCompatImageButton
       android:id="@+id/action_format_clear"
       style="@style/Widget.Button.Format"
       android:contentDescription="@string/label_clear_formatting"
diff --git a/app/src/main/res/layout/widget_network.xml b/app/src/main/res/layout/widget_network.xml
index 00debbaa4..827f0ca15 100644
--- a/app/src/main/res/layout/widget_network.xml
+++ b/app/src/main/res/layout/widget_network.xml
@@ -52,7 +52,7 @@
       android:textSize="14sp"
       tools:text="Freenode" />
 
-    <android.support.v7.widget.AppCompatImageView
+    <androidx.appcompat.widget.AppCompatImageView
       android:id="@+id/status"
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
diff --git a/app/src/main/res/layout/widget_nick_away.xml b/app/src/main/res/layout/widget_nick_away.xml
index 11ff43127..0ba3d94f8 100644
--- a/app/src/main/res/layout/widget_nick_away.xml
+++ b/app/src/main/res/layout/widget_nick_away.xml
@@ -73,7 +73,7 @@
       tools:visibility="visible" />
   </LinearLayout>
 
-  <android.support.v7.widget.AppCompatImageView
+  <androidx.appcompat.widget.AppCompatImageView
     android:layout_width="24dp"
     android:layout_height="24dp"
     android:layout_gravity="center_vertical"
diff --git a/gradle.properties b/gradle.properties
index 3b3e30e92..4a92e00b8 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -35,3 +35,6 @@ android.enableD8=true
 org.gradle.caching=true
 # Enable android build cache
 android.enableBuildCache=true
+# Enable AndroidX
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/gradlew.bat b/gradlew.bat
index f9553162f..cccdd3d51 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,84 +1,172 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+#!/usr/bin/env sh
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+    echo "$*"
+}
+
+die () {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Escape application args
+save () {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+  cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/lifecycle-ktx/build.gradle.kts b/lifecycle-ktx/build.gradle.kts
index ad25f2c8c..183854ebb 100644
--- a/lifecycle-ktx/build.gradle.kts
+++ b/lifecycle-ktx/build.gradle.kts
@@ -29,11 +29,7 @@ plugins {
 dependencies {
   implementation(kotlin("stdlib", "1.2.60"))
 
-  withVersion("27.1.1") {
-    implementation("com.android.support", "support-annotations", version)
-  }
+  implementation("androidx.annotation", "annotation", "1.0.0")
 
-  withVersion("1.1.1") {
-    implementation("android.arch.lifecycle", "common", version)
-  }
+  implementation("androidx.lifecycle", "lifecycle-common", "2.0.0-rc01")
 }
diff --git a/lifecycle-ktx/src/main/java/android/arch/lifecycle/DefaultLifecycleObserver.kt b/lifecycle-ktx/src/main/java/androidx/lifecycle/DefaultLifecycleObserver.kt
similarity index 98%
rename from lifecycle-ktx/src/main/java/android/arch/lifecycle/DefaultLifecycleObserver.kt
rename to lifecycle-ktx/src/main/java/androidx/lifecycle/DefaultLifecycleObserver.kt
index 7ddd156ec..714cf8f35 100644
--- a/lifecycle-ktx/src/main/java/android/arch/lifecycle/DefaultLifecycleObserver.kt
+++ b/lifecycle-ktx/src/main/java/androidx/lifecycle/DefaultLifecycleObserver.kt
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.arch.lifecycle
+package androidx.lifecycle
 
 /**
  * Callback interface for listening to [LifecycleOwner] state changes.
diff --git a/lifecycle-ktx/src/main/java/android/arch/lifecycle/FullLifecycleObserverProxy.java b/lifecycle-ktx/src/main/java/androidx/lifecycle/FullLifecycleObserverProxy.java
similarity index 96%
rename from lifecycle-ktx/src/main/java/android/arch/lifecycle/FullLifecycleObserverProxy.java
rename to lifecycle-ktx/src/main/java/androidx/lifecycle/FullLifecycleObserverProxy.java
index 82990c784..a241b6696 100644
--- a/lifecycle-ktx/src/main/java/android/arch/lifecycle/FullLifecycleObserverProxy.java
+++ b/lifecycle-ktx/src/main/java/androidx/lifecycle/FullLifecycleObserverProxy.java
@@ -17,7 +17,7 @@
  * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-package android.arch.lifecycle;
+package androidx.lifecycle;
 
 public interface FullLifecycleObserverProxy extends FullLifecycleObserver {
 }
diff --git a/persistence/build.gradle.kts b/persistence/build.gradle.kts
index 52247be8d..d71940c29 100644
--- a/persistence/build.gradle.kts
+++ b/persistence/build.gradle.kts
@@ -53,21 +53,14 @@ android {
 dependencies {
   implementation(kotlin("stdlib", "1.2.60"))
 
-  // App Compat
-  withVersion("27.1.1") {
-    implementation("com.android.support", "appcompat-v7", version)
-  }
+  implementation("androidx.appcompat", "appcompat", "1.0.0")
 
-  // App Arch Persistence
-  withVersion("1.1.1-rc1") {
-    implementation("android.arch.persistence.room", "runtime", version)
-    kapt("android.arch.persistence.room", "compiler", version)
-    implementation("android.arch.persistence.room", "rxjava2", version)
-    testImplementation("android.arch.persistence.room", "testing", version)
-  }
+  implementation("androidx.room", "room-runtime", "2.0.0-rc01")
+  kapt("androidx.room", "room-compiler", "2.0.0-rc01")
+  implementation("androidx.room", "room-rxjava2", "2.0.0-rc01")
+  testImplementation("androidx.room", "room-testing", "2.0.0-rc01")
 
-  // App Arch Paging
-  implementation("android.arch.paging", "runtime", "1.0.0")
+  implementation("androidx.paging", "paging-runtime", "2.0.0-rc01")
 
   // Utility
   implementation("org.threeten", "threetenbp", "1.3.6", classifier = "no-tzdb")
diff --git a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/AccountDatabase.kt b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/AccountDatabase.kt
index dd9b27a80..83a371d18 100644
--- a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/AccountDatabase.kt
+++ b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/AccountDatabase.kt
@@ -19,11 +19,11 @@
 
 package de.kuschku.quasseldroid.persistence
 
-import android.arch.lifecycle.LiveData
-import android.arch.persistence.db.SupportSQLiteDatabase
-import android.arch.persistence.room.*
-import android.arch.persistence.room.migration.Migration
 import android.content.Context
+import androidx.lifecycle.LiveData
+import androidx.room.*
+import androidx.room.migration.Migration
+import androidx.sqlite.db.SupportSQLiteDatabase
 
 @Database(entities = [(AccountDatabase.Account::class)], version = 3)
 abstract class AccountDatabase : RoomDatabase() {
diff --git a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/LegacyAccountDatabase.kt b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/LegacyAccountDatabase.kt
index 963e77f03..3f989879d 100644
--- a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/LegacyAccountDatabase.kt
+++ b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/LegacyAccountDatabase.kt
@@ -19,10 +19,10 @@
 
 package de.kuschku.quasseldroid.persistence
 
-import android.arch.persistence.db.SupportSQLiteDatabase
-import android.arch.persistence.room.*
-import android.arch.persistence.room.migration.Migration
 import android.content.Context
+import androidx.room.*
+import androidx.room.migration.Migration
+import androidx.sqlite.db.SupportSQLiteDatabase
 
 @Database(entities = [(LegacyAccountDatabase.Account::class)], version = 4)
 abstract class LegacyAccountDatabase : RoomDatabase() {
diff --git a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/MessageTypeConverter.kt b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/MessageTypeConverter.kt
index 19dce40bc..5f8d4f5f8 100644
--- a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/MessageTypeConverter.kt
+++ b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/MessageTypeConverter.kt
@@ -1,6 +1,6 @@
 package de.kuschku.quasseldroid.persistence
 
-import android.arch.persistence.room.TypeConverter
+import androidx.room.TypeConverter
 import de.kuschku.libquassel.protocol.*
 import org.threeten.bp.Instant
 
diff --git a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt
index 0ecccd20a..d624daaa4 100644
--- a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt
+++ b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt
@@ -19,13 +19,13 @@
 
 package de.kuschku.quasseldroid.persistence
 
-import android.arch.lifecycle.LiveData
-import android.arch.paging.DataSource
-import android.arch.persistence.db.SupportSQLiteDatabase
-import android.arch.persistence.room.*
-import android.arch.persistence.room.migration.Migration
 import android.content.Context
-import android.support.annotation.IntRange
+import androidx.annotation.IntRange
+import androidx.lifecycle.LiveData
+import androidx.paging.DataSource
+import androidx.room.*
+import androidx.room.migration.Migration
+import androidx.sqlite.db.SupportSQLiteDatabase
 import de.kuschku.libquassel.protocol.*
 import de.kuschku.quasseldroid.persistence.QuasselDatabase.*
 import io.reactivex.Flowable
diff --git a/viewmodel/build.gradle.kts b/viewmodel/build.gradle.kts
index df10697cf..7edf82a86 100644
--- a/viewmodel/build.gradle.kts
+++ b/viewmodel/build.gradle.kts
@@ -46,16 +46,10 @@ android {
 dependencies {
   implementation(kotlin("stdlib", "1.2.60"))
 
-  // App Compat
-  withVersion("27.1.1") {
-    implementation("com.android.support", "appcompat-v7", version)
-  }
+  implementation("androidx.appcompat", "appcompat", "1.0.0")
 
-  // App Arch Lifecycle
-  withVersion("1.1.1") {
-    implementation("android.arch.lifecycle", "extensions", version)
-    implementation("android.arch.lifecycle", "reactivestreams", version)
-  }
+  implementation("androidx.lifecycle", "lifecycle-extensions", "2.0.0-rc01")
+  implementation("androidx.lifecycle", "lifecycle-reactivestreams", "2.0.0-rc01")
 
   // Utility
   implementation("io.reactivex.rxjava2", "rxandroid", "2.0.2")
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataHelper.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataHelper.kt
index 83fb77f93..e04a14afd 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataHelper.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataHelper.kt
@@ -19,8 +19,8 @@
 
 package de.kuschku.quasseldroid.util.helper
 
-import android.arch.lifecycle.*
-import android.support.annotation.MainThread
+import androidx.annotation.MainThread
+import androidx.lifecycle.*
 import io.reactivex.BackpressureStrategy
 import io.reactivex.Observable
 
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataZipHelper.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataZipHelper.kt
index 83d3faa30..b36edb44f 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataZipHelper.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataZipHelper.kt
@@ -17,8 +17,9 @@
  */
 package de.kuschku.quasseldroid.util.helper
 
-import android.arch.lifecycle.LiveData
-import android.arch.lifecycle.MediatorLiveData
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MediatorLiveData
+
 
 /**
  * This function creates a [LiveData] of a [Pair] of the two types provided. The resulting LiveData
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/ObservableHelper.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/ObservableHelper.kt
index eb0a0b7ae..4b87953bd 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/ObservableHelper.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/ObservableHelper.kt
@@ -19,8 +19,8 @@
 
 package de.kuschku.quasseldroid.util.helper
 
-import android.arch.lifecycle.LiveData
-import android.arch.lifecycle.LiveDataReactiveStreams
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.LiveDataReactiveStreams
 import de.kuschku.libquassel.util.compatibility.HandlerService
 import io.reactivex.*
 import io.reactivex.functions.BiFunction
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt
index 9871845f4..f75726536 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.viewmodel
 
-import android.arch.lifecycle.ViewModel
+import androidx.lifecycle.ViewModel
 import de.kuschku.libquassel.protocol.Buffer_Type
 import de.kuschku.libquassel.quassel.syncables.AliasManager
 import de.kuschku.libquassel.quassel.syncables.IrcChannel
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
index 25ada760b..52b89bfff 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
@@ -19,7 +19,7 @@
 
 package de.kuschku.quasseldroid.viewmodel
 
-import android.arch.lifecycle.ViewModel
+import androidx.lifecycle.ViewModel
 import de.kuschku.libquassel.connection.ConnectionState
 import de.kuschku.libquassel.protocol.*
 import de.kuschku.libquassel.quassel.BufferInfo
-- 
GitLab