From 327bb52c6061b8b36c67dbd79ceff11254476141 Mon Sep 17 00:00:00 2001 From: Moez Bhatti Date: Wed, 20 Jun 2018 19:13:10 -0400 Subject: [PATCH] Migrate to AndroidX --- build.gradle | 6 +- data/build.gradle | 6 +- .../QKSMS/manager/PermissionManagerImpl.kt | 2 +- .../receiver/DefaultSmsChangedReceiver.kt | 2 +- .../QKSMS/receiver/RemoteMessagingReceiver.kt | 2 +- .../QKSMS/repository/ImageRepostoryImpl.kt | 2 +- .../java/com/moez/QKSMS/model/Attachment.kt | 2 +- gradle.properties | 2 + presentation/build.gradle | 20 +- .../QKSMS/feature/main/MainViewModelTest.kt | 2 +- .../com/moez/QKSMS/common/MenuItemAdapter.kt | 4 +- .../com/moez/QKSMS/common/QKApplication.kt | 6 +- .../java/com/moez/QKSMS/common/QkDialog.kt | 8 +- .../com/moez/QKSMS/common/ViewModelFactory.kt | 4 +- .../AndroidLifecycleScopeProvider.java | 166 +++++++++++++ .../AutodisposeAndroidLifecycle.kt | 74 ++++++ .../DrawerLayoutDrawerOpenedObservable.java | 92 +++++++ .../LifecycleEventsObservable.java | 124 ++++++++++ .../RealmRecyclerViewAdapter.java | 228 ++++++++++++++++++ .../common/androidxcompat/RxDrawerLayout.java | 69 ++++++ .../QKSMS/common/androidxcompat/drawerOpen.kt | 48 ++++ .../moez/QKSMS/common/base/FlowableAdapter.kt | 4 +- .../com/moez/QKSMS/common/base/QkActivity.kt | 2 +- .../com/moez/QKSMS/common/base/QkAdapter.kt | 4 +- .../moez/QKSMS/common/base/QkRealmAdapter.kt | 4 +- .../QKSMS/common/base/QkThemedActivity.kt | 4 +- .../java/com/moez/QKSMS/common/base/QkView.kt | 2 +- .../moez/QKSMS/common/base/QkViewHolder.kt | 2 +- .../com/moez/QKSMS/common/base/QkViewModel.kt | 6 +- .../moez/QKSMS/common/util/FontProvider.kt | 2 +- .../moez/QKSMS/common/util/LiveRealmData.kt | 2 +- .../common/util/NotificationManagerImpl.kt | 8 +- .../util/extensions/AdapterExtensions.kt | 4 +- .../util/extensions/ContextExtensions.kt | 4 +- .../common/util/extensions/ViewExtensions.kt | 2 +- .../QKSMS/common/widget/GroupAvatarView.kt | 2 +- .../QKSMS/common/widget/PagerTitleView.kt | 2 +- .../QKSMS/common/widget/PreferenceView.kt | 2 +- .../moez/QKSMS/common/widget/QkEditText.kt | 6 +- .../com/moez/QKSMS/common/widget/QkSwitch.kt | 2 +- .../moez/QKSMS/common/widget/QkTextView.kt | 2 +- .../QKSMS/feature/blocked/BlockedActivity.kt | 4 +- .../feature/blocked/BlockedActivityModule.kt | 2 +- .../QKSMS/feature/blocked/BlockedViewModel.kt | 2 +- .../feature/compose/AttachmentAdapter.kt | 2 +- .../QKSMS/feature/compose/ChipsAdapter.kt | 2 +- .../QKSMS/feature/compose/ComposeActivity.kt | 12 +- .../feature/compose/ComposeActivityModule.kt | 2 +- .../moez/QKSMS/feature/compose/ComposeView.kt | 2 +- .../QKSMS/feature/compose/ComposeViewModel.kt | 2 +- .../feature/compose/ComposeWindowCallback.kt | 2 +- .../QKSMS/feature/compose/MessagesAdapter.kt | 2 +- .../ConversationInfoActivity.kt | 8 +- .../ConversationInfoActivityModule.kt | 2 +- .../ConversationInfoViewModel.kt | 2 +- .../ConversationMediaAdapter.kt | 2 +- .../ConversationRecipientAdapter.kt | 2 +- .../GridSpacingItemDecoration.kt | 2 +- .../ConversationItemTouchCallback.kt | 4 +- .../QKSMS/feature/gallery/GalleryActivity.kt | 4 +- .../feature/gallery/GalleryActivityModule.kt | 2 +- .../QKSMS/feature/gallery/GalleryViewModel.kt | 2 +- .../moez/QKSMS/feature/main/MainActivity.kt | 18 +- .../QKSMS/feature/main/MainActivityModule.kt | 2 +- .../moez/QKSMS/feature/main/MainViewModel.kt | 2 +- .../NotificationPrefsActivity.kt | 4 +- .../NotificationPrefsActivityModule.kt | 2 +- .../NotificationPrefsViewModel.kt | 2 +- .../moez/QKSMS/feature/plus/PlusActivity.kt | 4 +- .../QKSMS/feature/plus/PlusActivityModule.kt | 2 +- .../moez/QKSMS/feature/plus/PlusViewModel.kt | 2 +- .../QKSMS/feature/qkreply/QkReplyActivity.kt | 8 +- .../feature/qkreply/QkReplyActivityModule.kt | 2 +- .../QKSMS/feature/qkreply/QkReplyViewModel.kt | 2 +- .../feature/settings/SettingsActivity.kt | 8 +- .../settings/SettingsActivityModule.kt | 2 +- .../feature/settings/SettingsViewModel.kt | 2 +- .../feature/settings/about/AboutActivity.kt | 4 +- .../settings/about/AboutActivityModule.kt | 2 +- .../feature/settings/about/AboutViewModel.kt | 2 +- .../feature/themepicker/HSVPickerView.kt | 2 +- .../feature/themepicker/ThemePagerAdapter.kt | 2 +- .../themepicker/ThemePickerActivity.kt | 8 +- .../themepicker/ThemePickerActivityModule.kt | 2 +- .../themepicker/ThemePickerViewModel.kt | 2 +- .../com/moez/QKSMS/injection/AppModule.kt | 2 +- .../com/moez/QKSMS/injection/ViewModelKey.kt | 2 +- .../src/main/res/layout/about_activity.xml | 8 +- .../src/main/res/layout/blocked_activity.xml | 12 +- .../src/main/res/layout/blocked_list_item.xml | 4 +- .../src/main/res/layout/compose_activity.xml | 24 +- .../res/layout/conversation_info_activity.xml | 16 +- .../res/layout/conversation_list_item.xml | 4 +- .../conversation_recipient_list_item.xml | 4 +- .../src/main/res/layout/drawer_view.xml | 4 +- .../src/main/res/layout/gallery_activity.xml | 4 +- .../src/main/res/layout/main_activity.xml | 22 +- .../main/res/layout/message_list_item_in.xml | 8 +- .../main/res/layout/message_list_item_out.xml | 8 +- .../main/res/layout/mms_vcard_list_item.xml | 4 +- .../layout/notification_prefs_activity.xml | 8 +- .../src/main/res/layout/qkreply_activity.xml | 10 +- .../main/res/layout/qksms_plus_activity.xml | 22 +- .../src/main/res/layout/search_list_item.xml | 6 +- .../src/main/res/layout/settings_activity.xml | 8 +- .../main/res/layout/theme_picker_activity.xml | 6 +- .../src/main/res/layout/theme_picker_hsv.xml | 6 +- presentation/src/main/res/layout/toolbar.xml | 4 +- 108 files changed, 1042 insertions(+), 239 deletions(-) create mode 100644 presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/AndroidLifecycleScopeProvider.java create mode 100644 presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/AutodisposeAndroidLifecycle.kt create mode 100644 presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/DrawerLayoutDrawerOpenedObservable.java create mode 100644 presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/LifecycleEventsObservable.java create mode 100644 presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/RealmRecyclerViewAdapter.java create mode 100644 presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/RxDrawerLayout.java create mode 100644 presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/drawerOpen.kt diff --git a/build.gradle b/build.gradle index 20442c98..f00d284d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,15 +1,16 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { + ext.androidx_version = '1.0.0-alpha3' ext.autodispose_version = '0.5.1' - ext.constraintlayout_version = '1.1.0-beta5' + ext.constraintlayout_version = '1.1.0' ext.dagger_version = "2.16" ext.exoplayer_version = "2.8.1" ext.glide_version = "4.8.0-20180619.011009-9" ext.glide_compiler_version = "4.8.0-20180619.011013-9" ext.kotlin_version = '1.2.31' ext.ktx_version = "0.2" - ext.lifecycle_version = '1.1.0' + ext.lifecycle_version = '2.0.0-alpha1' ext.mockito_version = '2.18.3' ext.realm_version = '4.3.1' ext.realm_adapters_version = '2.1.0' @@ -18,7 +19,6 @@ buildscript { ext.rxjava_version = '2.1.4' ext.rxkotlin_version = '2.1.0' ext.rx_preferences_version = '2.0.0-RC3' - ext.support_version = '28.0.0-alpha1' ext.timber_version = '4.5.1' ext.abiCodes = ['armeabi-v7a': 1, 'arm64-v8a': 2] diff --git a/data/build.gradle b/data/build.gradle index 1c9fe8c0..fae52d9e 100644 --- a/data/build.gradle +++ b/data/build.gradle @@ -23,9 +23,9 @@ android { dependencies { - // support - implementation "com.android.support:appcompat-v7:$support_version" - implementation "com.android.support:exifinterface:$support_version" + // androidx + implementation "androidx.appcompat:appcompat:$androidx_version" + implementation "androidx.exifinterface:exifinterface:$androidx_version" // dagger implementation "com.google.dagger:dagger:$dagger_version" diff --git a/data/src/main/java/com/moez/QKSMS/manager/PermissionManagerImpl.kt b/data/src/main/java/com/moez/QKSMS/manager/PermissionManagerImpl.kt index e4c50338..1a82dc32 100644 --- a/data/src/main/java/com/moez/QKSMS/manager/PermissionManagerImpl.kt +++ b/data/src/main/java/com/moez/QKSMS/manager/PermissionManagerImpl.kt @@ -22,7 +22,7 @@ import android.Manifest import android.content.Context import android.content.pm.PackageManager.PERMISSION_GRANTED import android.provider.Telephony -import android.support.v4.content.ContextCompat +import androidx.core.content.ContextCompat import javax.inject.Inject class PermissionManagerImpl @Inject constructor(private val context: Context) : PermissionManager { diff --git a/data/src/main/java/com/moez/QKSMS/receiver/DefaultSmsChangedReceiver.kt b/data/src/main/java/com/moez/QKSMS/receiver/DefaultSmsChangedReceiver.kt index 6ed41a82..feeb1412 100644 --- a/data/src/main/java/com/moez/QKSMS/receiver/DefaultSmsChangedReceiver.kt +++ b/data/src/main/java/com/moez/QKSMS/receiver/DefaultSmsChangedReceiver.kt @@ -23,7 +23,7 @@ import android.content.Context import android.content.Intent import android.os.Build import android.provider.Telephony -import android.support.annotation.RequiresApi +import androidx.annotation.RequiresApi import com.moez.QKSMS.interactor.SyncMessages import com.moez.QKSMS.util.Preferences import dagger.android.AndroidInjection diff --git a/data/src/main/java/com/moez/QKSMS/receiver/RemoteMessagingReceiver.kt b/data/src/main/java/com/moez/QKSMS/receiver/RemoteMessagingReceiver.kt index 0722f19f..69123039 100644 --- a/data/src/main/java/com/moez/QKSMS/receiver/RemoteMessagingReceiver.kt +++ b/data/src/main/java/com/moez/QKSMS/receiver/RemoteMessagingReceiver.kt @@ -21,7 +21,7 @@ package com.moez.QKSMS.receiver import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import android.support.v4.app.RemoteInput +import androidx.core.app.RemoteInput import com.moez.QKSMS.compat.SubscriptionManagerCompat import com.moez.QKSMS.interactor.MarkRead import com.moez.QKSMS.interactor.SendMessage diff --git a/data/src/main/java/com/moez/QKSMS/repository/ImageRepostoryImpl.kt b/data/src/main/java/com/moez/QKSMS/repository/ImageRepostoryImpl.kt index 71d81d1a..718f7db0 100644 --- a/data/src/main/java/com/moez/QKSMS/repository/ImageRepostoryImpl.kt +++ b/data/src/main/java/com/moez/QKSMS/repository/ImageRepostoryImpl.kt @@ -10,7 +10,7 @@ import android.graphics.Matrix import android.net.Uri import android.provider.MediaStore import android.provider.MediaStore.Images -import android.support.media.ExifInterface +import androidx.exifinterface.media.ExifInterface import com.moez.QKSMS.util.tryOrNull import javax.inject.Inject diff --git a/domain/src/main/java/com/moez/QKSMS/model/Attachment.kt b/domain/src/main/java/com/moez/QKSMS/model/Attachment.kt index d6a62413..6e952f9e 100644 --- a/domain/src/main/java/com/moez/QKSMS/model/Attachment.kt +++ b/domain/src/main/java/com/moez/QKSMS/model/Attachment.kt @@ -21,7 +21,7 @@ package com.moez.QKSMS.model import android.content.Context import android.net.Uri import android.os.Build -import android.support.v13.view.inputmethod.InputContentInfoCompat +import androidx.core.view.inputmethod.InputContentInfoCompat data class Attachment(private val uri: Uri? = null, private val inputContent: InputContentInfoCompat? = null) { diff --git a/gradle.properties b/gradle.properties index 3cc4d730..bb91abfe 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,6 +13,8 @@ org.gradle.jvmargs=-Xmx1536m # https://blog.gradle.org/introducing-gradle-build-cache org.gradle.caching=true +android.useAndroidX=true +android.enableJetifier=true # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit diff --git a/presentation/build.gradle b/presentation/build.gradle index d6c29dd2..fc67dfe0 100644 --- a/presentation/build.gradle +++ b/presentation/build.gradle @@ -15,7 +15,7 @@ android { targetSdkVersion 28 versionCode 174 versionName "3.3.3" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" buildConfigField "String", "BUGSNAG_API_KEY", "\"${System.getenv("BUGSNAG_API_KEY")}\"" } @@ -84,14 +84,14 @@ configurations { dependencies { // lifecycle - implementation "android.arch.lifecycle:extensions:$lifecycle_version" - implementation "android.arch.lifecycle:common-java8:$lifecycle_version" + implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" + implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" - // support - implementation "com.android.support:appcompat-v7:$support_version" - implementation "com.android.support.constraint:constraint-layout:$constraintlayout_version" - implementation "com.android.support:design:$support_version" - implementation "com.android.support:support-emoji-appcompat:$support_version" + // androidx + implementation "androidx.appcompat:appcompat:$androidx_version" + implementation "androidx.constraintlayout:constraintlayout:$constraintlayout_version" + implementation "com.google.android.material:material:$androidx_version" + implementation "androidx.emoji:emoji-appcompat:$androidx_version" // glide implementation "com.github.bumptech.glide:glide:$glide_version" @@ -139,11 +139,11 @@ dependencies { implementation "io.reactivex.rxjava2:rxkotlin:$rxkotlin_version" // testing - androidTestImplementation("com.android.support.test.espresso:espresso-core:2.2.2", { + androidTestImplementation("androidx.test.espresso:espresso-core:3.1.0-alpha3", { exclude group: "com.android.support", module: "support-annotations" }) androidTestImplementation "org.mockito:mockito-android:$mockito_version" - testImplementation "com.android.support.test:runner:1.0.1" + testImplementation "androidx.test:runner:1.1.0-alpha3" testImplementation "junit:junit:4.12" testImplementation "org.mockito:mockito-core:$mockito_version" diff --git a/presentation/src/androidTest/java/com/moez/QKSMS/feature/main/MainViewModelTest.kt b/presentation/src/androidTest/java/com/moez/QKSMS/feature/main/MainViewModelTest.kt index ec3a7823..6169a928 100644 --- a/presentation/src/androidTest/java/com/moez/QKSMS/feature/main/MainViewModelTest.kt +++ b/presentation/src/androidTest/java/com/moez/QKSMS/feature/main/MainViewModelTest.kt @@ -1,6 +1,6 @@ package com.moez.QKSMS.feature.main -import android.support.test.runner.AndroidJUnit4 +import androidx.test.runner.AndroidJUnit4 import org.junit.Test import org.junit.runner.RunWith diff --git a/presentation/src/main/java/com/moez/QKSMS/common/MenuItemAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/common/MenuItemAdapter.kt index 949ead55..e8241fad 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/MenuItemAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/MenuItemAdapter.kt @@ -20,10 +20,10 @@ package com.moez.QKSMS.common import android.content.Context import android.content.res.ColorStateList -import android.support.annotation.ArrayRes -import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.ViewGroup +import androidx.annotation.ArrayRes +import androidx.recyclerview.widget.RecyclerView import com.jakewharton.rxbinding2.view.clicks import com.moez.QKSMS.R import com.moez.QKSMS.common.base.QkAdapter diff --git a/presentation/src/main/java/com/moez/QKSMS/common/QKApplication.kt b/presentation/src/main/java/com/moez/QKSMS/common/QKApplication.kt index 0f74d3cd..e6f30de2 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/QKApplication.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/QKApplication.kt @@ -22,9 +22,9 @@ import android.app.Activity import android.app.Application import android.app.Service import android.content.BroadcastReceiver -import android.support.text.emoji.EmojiCompat -import android.support.text.emoji.FontRequestEmojiCompatConfig -import android.support.v4.provider.FontRequest +import androidx.emoji.text.EmojiCompat +import androidx.emoji.text.FontRequestEmojiCompatConfig +import androidx.core.provider.FontRequest import com.akaita.java.rxjava2debug.RxJava2Debug import com.bugsnag.android.Bugsnag import com.bugsnag.android.Configuration diff --git a/presentation/src/main/java/com/moez/QKSMS/common/QkDialog.kt b/presentation/src/main/java/com/moez/QKSMS/common/QkDialog.kt index 0cca5f26..ec1c72d8 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/QkDialog.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/QkDialog.kt @@ -2,10 +2,10 @@ package com.moez.QKSMS.common import android.app.Activity import android.content.Context -import android.support.annotation.StringRes -import android.support.v7.app.AlertDialog -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.RecyclerView +import androidx.annotation.StringRes +import androidx.appcompat.app.AlertDialog +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.moez.QKSMS.common.util.extensions.dpToPx import com.moez.QKSMS.common.util.extensions.setPadding import com.moez.QKSMS.injection.appComponent diff --git a/presentation/src/main/java/com/moez/QKSMS/common/ViewModelFactory.kt b/presentation/src/main/java/com/moez/QKSMS/common/ViewModelFactory.kt index 3f90e5ce..a7dc0bae 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/ViewModelFactory.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/ViewModelFactory.kt @@ -1,7 +1,7 @@ package com.moez.QKSMS.common -import android.arch.lifecycle.ViewModel -import android.arch.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider import javax.inject.Inject import javax.inject.Provider diff --git a/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/AndroidLifecycleScopeProvider.java b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/AndroidLifecycleScopeProvider.java new file mode 100644 index 00000000..79692732 --- /dev/null +++ b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/AndroidLifecycleScopeProvider.java @@ -0,0 +1,166 @@ +/* + * Copyright (C) 2017 Moez Bhatti + * + * This file is part of QKSMS. + * + * QKSMS is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * QKSMS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with QKSMS. If not, see . + */ + +package com.moez.QKSMS.common.androidxcompat; + +import androidx.lifecycle.Lifecycle; +import androidx.lifecycle.LifecycleOwner; +import com.uber.autodispose.LifecycleEndedException; +import com.uber.autodispose.LifecycleScopeProvider; +import io.reactivex.Observable; +import io.reactivex.functions.Function; + +/** + * A {@link LifecycleScopeProvider} that can provide scoping for Android {@link Lifecycle} and + * {@link LifecycleOwner} classes. + *

+ *


+ *   AutoDispose.autoDisposable(AndroidLifecycleScopeProvider.from(lifecycleOwner))
+ * 
+ */ +public final class AndroidLifecycleScopeProvider + implements LifecycleScopeProvider { + + private static final Function DEFAULT_CORRESPONDING_EVENTS = + new Function() { + @Override public Lifecycle.Event apply(Lifecycle.Event lastEvent) throws Exception { + switch (lastEvent) { + case ON_CREATE: + return Lifecycle.Event.ON_DESTROY; + case ON_START: + return Lifecycle.Event.ON_STOP; + case ON_RESUME: + return Lifecycle.Event.ON_PAUSE; + case ON_PAUSE: + return Lifecycle.Event.ON_STOP; + case ON_STOP: + case ON_DESTROY: + default: + throw new LifecycleEndedException("Lifecycle has ended! Last event was " + lastEvent); + } + } + }; + + private final Function boundaryResolver; + + /** + * Creates a {@link AndroidLifecycleScopeProvider} for Android LifecycleOwners. + * + * @param owner the owner to scope for. + * @return a {@link AndroidLifecycleScopeProvider} against this owner. + */ + public static AndroidLifecycleScopeProvider from(LifecycleOwner owner) { + return from(owner.getLifecycle()); + } + + /** + * Creates a {@link AndroidLifecycleScopeProvider} for Android LifecycleOwners. + * + * @param owner the owner to scope for. + * @param untilEvent the event until the scope is valid. + * @return a {@link AndroidLifecycleScopeProvider} against this owner. + */ + public static AndroidLifecycleScopeProvider from( + LifecycleOwner owner, + Lifecycle.Event untilEvent) { + return from(owner.getLifecycle(), untilEvent); + } + + /** + * Creates a {@link AndroidLifecycleScopeProvider} for Android Lifecycles. + * + * @param lifecycle the lifecycle to scope for. + * @return a {@link AndroidLifecycleScopeProvider} against this lifecycle. + */ + public static AndroidLifecycleScopeProvider from(Lifecycle lifecycle) { + return from(lifecycle, DEFAULT_CORRESPONDING_EVENTS); + } + + /** + * Creates a {@link AndroidLifecycleScopeProvider} for Android Lifecycles. + * + * @param lifecycle the lifecycle to scope for. + * @param untilEvent the event until the scope is valid. + * @return a {@link AndroidLifecycleScopeProvider} against this lifecycle. + */ + public static AndroidLifecycleScopeProvider from( + Lifecycle lifecycle, + Lifecycle.Event untilEvent) { + return from(lifecycle, new UntilEventFunction(untilEvent)); + } + + /** + * Creates a {@link AndroidLifecycleScopeProvider} for Android Lifecycles. + * + * @param owner the owner to scope for. + * @param boundaryResolver function that resolves the event boundary. + * @return a {@link AndroidLifecycleScopeProvider} against this owner. + */ + public static AndroidLifecycleScopeProvider from( + LifecycleOwner owner, + Function boundaryResolver) { + return from(owner.getLifecycle(), boundaryResolver); + } + + /** + * Creates a {@link AndroidLifecycleScopeProvider} for Android Lifecycles. + * + * @param lifecycle the lifecycle to scope for. + * @param boundaryResolver function that resolves the event boundary. + * @return a {@link AndroidLifecycleScopeProvider} against this lifecycle. + */ + public static AndroidLifecycleScopeProvider from( + Lifecycle lifecycle, + Function boundaryResolver) { + return new AndroidLifecycleScopeProvider(lifecycle, boundaryResolver); + } + + private final LifecycleEventsObservable lifecycleObservable; + + private AndroidLifecycleScopeProvider(Lifecycle lifecycle, + Function boundaryResolver) { + this.lifecycleObservable = new LifecycleEventsObservable(lifecycle); + this.boundaryResolver = boundaryResolver; + } + + @Override public Observable lifecycle() { + return lifecycleObservable; + } + + @Override public Function correspondingEvents() { + return boundaryResolver; + } + + @Override public Lifecycle.Event peekLifecycle() { + lifecycleObservable.backfillEvents(); + return lifecycleObservable.getValue(); + } + + private static class UntilEventFunction implements Function { + private final Lifecycle.Event untilEvent; + + UntilEventFunction(Lifecycle.Event untilEvent) { + this.untilEvent = untilEvent; + } + + @Override public Lifecycle.Event apply(Lifecycle.Event event) throws Exception { + return untilEvent; + } + } +} \ No newline at end of file diff --git a/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/AutodisposeAndroidLifecycle.kt b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/AutodisposeAndroidLifecycle.kt new file mode 100644 index 00000000..55aeb902 --- /dev/null +++ b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/AutodisposeAndroidLifecycle.kt @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2017 Moez Bhatti + * + * This file is part of QKSMS. + * + * QKSMS is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * QKSMS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with QKSMS. If not, see . + */ +package com.moez.QKSMS.common.androidxcompat + +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.Lifecycle.Event +import androidx.lifecycle.LifecycleOwner +import com.uber.autodispose.LifecycleScopeProvider +import io.reactivex.annotations.CheckReturnValue +import io.reactivex.functions.Function + +/** + * Extension that returns a [LifecycleScopeProvider] for this [LifecycleOwner]. + */ +@CheckReturnValue +inline fun LifecycleOwner.scope(): LifecycleScopeProvider<*> = AndroidLifecycleScopeProvider.from(this) + +/** + * Extension that returns a [LifecycleScopeProvider] for this [LifecycleOwner]. + * + * @param untilEvent the event until the scope is valid. + */ +@CheckReturnValue +inline fun LifecycleOwner.scope(untilEvent: Lifecycle.Event): LifecycleScopeProvider<*> + = AndroidLifecycleScopeProvider.from(this, untilEvent) + +/** + * Extension that returns a [LifecycleScopeProvider] for this [LifecycleOwner]. + * + * @param boundaryResolver function that resolves the event boundary. + */ +@CheckReturnValue +inline fun LifecycleOwner.scope(boundaryResolver: Function): LifecycleScopeProvider<*> + = AndroidLifecycleScopeProvider.from(this, boundaryResolver) + +/** + * Extension that returns a [LifecycleScopeProvider] for this [Lifecycle]. + */ +@CheckReturnValue +inline fun Lifecycle.scope(): LifecycleScopeProvider<*> = AndroidLifecycleScopeProvider.from(this) + +/** + * Extension that returns a [LifecycleScopeProvider] for this [Lifecycle]. + * + * @param untilEvent the event until the scope is valid. + */ +@CheckReturnValue +inline fun Lifecycle.scope(untilEvent: Lifecycle.Event): LifecycleScopeProvider<*> + = AndroidLifecycleScopeProvider.from(this, untilEvent) + +/** + * Extension that returns a [LifecycleScopeProvider] for this [Lifecycle]. + * + * @param boundaryResolver function that resolves the event boundary. + */ +@CheckReturnValue +inline fun Lifecycle.scope(boundaryResolver: Function): LifecycleScopeProvider<*> + = AndroidLifecycleScopeProvider.from(this, boundaryResolver) \ No newline at end of file diff --git a/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/DrawerLayoutDrawerOpenedObservable.java b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/DrawerLayoutDrawerOpenedObservable.java new file mode 100644 index 00000000..370fed64 --- /dev/null +++ b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/DrawerLayoutDrawerOpenedObservable.java @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2017 Moez Bhatti + * + * This file is part of QKSMS. + * + * QKSMS is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * QKSMS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with QKSMS. If not, see . + */ +package com.moez.QKSMS.common.androidxcompat; + +import android.view.View; +import androidx.drawerlayout.widget.DrawerLayout; +import com.jakewharton.rxbinding2.InitialValueObservable; +import io.reactivex.Observer; +import io.reactivex.android.MainThreadDisposable; + +import static com.jakewharton.rxbinding2.internal.Preconditions.checkMainThread; + +final class DrawerLayoutDrawerOpenedObservable extends InitialValueObservable { + private final DrawerLayout view; + private final int gravity; + + DrawerLayoutDrawerOpenedObservable(DrawerLayout view, int gravity) { + this.view = view; + this.gravity = gravity; + } + + @Override protected void subscribeListener(Observer observer) { + if (!checkMainThread(observer)) { + return; + } + Listener listener = new Listener(view, gravity, observer); + observer.onSubscribe(listener); + view.addDrawerListener(listener); + } + + @Override protected Boolean getInitialValue() { + return view.isDrawerOpen(gravity); + } + + static final class Listener extends MainThreadDisposable implements DrawerLayout.DrawerListener { + private final DrawerLayout view; + private final int gravity; + private final Observer observer; + + Listener(DrawerLayout view, int gravity, Observer observer) { + this.view = view; + this.gravity = gravity; + this.observer = observer; + } + + @Override public void onDrawerSlide(View drawerView, float slideOffset) { + + } + + @Override public void onDrawerOpened(View drawerView) { + if (!isDisposed()) { + int drawerGravity = ((DrawerLayout.LayoutParams) drawerView.getLayoutParams()).gravity; + if (drawerGravity == gravity) { + observer.onNext(true); + } + } + } + + @Override public void onDrawerClosed(View drawerView) { + if (!isDisposed()) { + int drawerGravity = ((DrawerLayout.LayoutParams) drawerView.getLayoutParams()).gravity; + if (drawerGravity == gravity) { + observer.onNext(false); + } + } + } + + @Override public void onDrawerStateChanged(int newState) { + + } + + @Override protected void onDispose() { + view.removeDrawerListener(this); + } + } +} \ No newline at end of file diff --git a/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/LifecycleEventsObservable.java b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/LifecycleEventsObservable.java new file mode 100644 index 00000000..c11ca095 --- /dev/null +++ b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/LifecycleEventsObservable.java @@ -0,0 +1,124 @@ +/* + * Copyright (C) 2017 Moez Bhatti + * + * This file is part of QKSMS. + * + * QKSMS is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * QKSMS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with QKSMS. If not, see . + */ + +package com.moez.QKSMS.common.androidxcompat; + +import androidx.annotation.Nullable; +import androidx.annotation.RestrictTo; +import androidx.lifecycle.Lifecycle; +import androidx.lifecycle.Lifecycle.Event; +import androidx.lifecycle.LifecycleObserver; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.OnLifecycleEvent; +import io.reactivex.Observable; +import io.reactivex.Observer; +import io.reactivex.android.MainThreadDisposable; +import io.reactivex.subjects.BehaviorSubject; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; +import static androidx.lifecycle.Lifecycle.Event.ON_CREATE; +import static androidx.lifecycle.Lifecycle.Event.ON_DESTROY; +import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; +import static androidx.lifecycle.Lifecycle.Event.ON_START; +import static com.uber.autodispose.android.internal.AutoDisposeAndroidUtil.isMainThread; + +@RestrictTo(LIBRARY) class LifecycleEventsObservable extends Observable { + + private final Lifecycle lifecycle; + private final BehaviorSubject eventsObservable = BehaviorSubject.create(); + + @SuppressWarnings("CheckReturnValue") LifecycleEventsObservable(Lifecycle lifecycle) { + this.lifecycle = lifecycle; + } + + Event getValue() { + return eventsObservable.getValue(); + } + + /** + * Backfill if already created for boundary checking. We do a trick here for corresponding events + * where we pretend something is created upon initialized state so that it assumes the + * corresponding event is DESTROY. + */ + void backfillEvents() { + @Nullable Lifecycle.Event correspondingEvent; + switch (lifecycle.getCurrentState()) { + case INITIALIZED: + correspondingEvent = ON_CREATE; + break; + case CREATED: + correspondingEvent = ON_START; + break; + case STARTED: + case RESUMED: + correspondingEvent = ON_RESUME; + break; + case DESTROYED: + default: + correspondingEvent = ON_DESTROY; + break; + } + eventsObservable.onNext(correspondingEvent); + } + + @Override protected void subscribeActual(Observer observer) { + ArchLifecycleObserver archObserver = + new ArchLifecycleObserver(lifecycle, observer, eventsObservable); + observer.onSubscribe(archObserver); + if (!isMainThread()) { + observer.onError( + new IllegalStateException("Lifecycles can only be bound to on the main thread!")); + return; + } + lifecycle.addObserver(archObserver); + if (archObserver.isDisposed()) { + lifecycle.removeObserver(archObserver); + } + } + + static final class ArchLifecycleObserver extends MainThreadDisposable + implements LifecycleObserver { + private final Lifecycle lifecycle; + private final Observer observer; + private final BehaviorSubject eventsObservable; + + ArchLifecycleObserver(Lifecycle lifecycle, Observer observer, + BehaviorSubject eventsObservable) { + this.lifecycle = lifecycle; + this.observer = observer; + this.eventsObservable = eventsObservable; + } + + @Override protected void onDispose() { + lifecycle.removeObserver(this); + } + + @OnLifecycleEvent(Event.ON_ANY) + void onStateChange(@SuppressWarnings("unused") LifecycleOwner owner, Event event) { + if (!isDisposed()) { + if (!(event == ON_CREATE && eventsObservable.getValue() == event)) { + // Due to the INITIALIZED->ON_CREATE mapping trick we do in backfill(), + // we fire this conditionally to avoid duplicate CREATE events. + eventsObservable.onNext(event); + } + observer.onNext(event); + } + } + } +} \ No newline at end of file diff --git a/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/RealmRecyclerViewAdapter.java b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/RealmRecyclerViewAdapter.java new file mode 100644 index 00000000..008b29bb --- /dev/null +++ b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/RealmRecyclerViewAdapter.java @@ -0,0 +1,228 @@ +/* + * Copyright (C) 2017 Moez Bhatti + * + * This file is part of QKSMS. + * + * QKSMS is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * QKSMS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with QKSMS. If not, see . + */ + +package com.moez.QKSMS.common.androidxcompat; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; +import io.realm.OrderedCollectionChangeSet; +import io.realm.OrderedRealmCollection; +import io.realm.OrderedRealmCollectionChangeListener; +import io.realm.RealmList; +import io.realm.RealmModel; +import io.realm.RealmResults; + +/** + * The RealmBaseRecyclerAdapter class is an abstract utility class for binding RecyclerView UI elements to Realm data. + *

+ * This adapter will automatically handle any updates to its data and call {@code notifyDataSetChanged()}, + * {@code notifyItemInserted()}, {@code notifyItemRemoved()} or {@code notifyItemRangeChanged(} as appropriate. + *

+ * The RealmAdapter will stop receiving updates if the Realm instance providing the {@link OrderedRealmCollection} is + * closed. + * + * @param type of {@link RealmModel} stored in the adapter. + * @param type of RecyclerView.ViewHolder used in the adapter. + */ +public abstract class RealmRecyclerViewAdapter + extends RecyclerView.Adapter { + + private final boolean hasAutoUpdates; + private final boolean updateOnModification; + private final OrderedRealmCollectionChangeListener listener; + @Nullable + private OrderedRealmCollection adapterData; + + private OrderedRealmCollectionChangeListener createListener() { + return new OrderedRealmCollectionChangeListener() { + @Override + public void onChange(Object collection, OrderedCollectionChangeSet changeSet) { + // null Changes means the async query returns the first time. + if (changeSet == null) { + notifyDataSetChanged(); + return; + } + // For deletions, the adapter has to be notified in reverse order. + OrderedCollectionChangeSet.Range[] deletions = changeSet.getDeletionRanges(); + for (int i = deletions.length - 1; i >= 0; i--) { + OrderedCollectionChangeSet.Range range = deletions[i]; + notifyItemRangeRemoved(range.startIndex, range.length); + } + + OrderedCollectionChangeSet.Range[] insertions = changeSet.getInsertionRanges(); + for (OrderedCollectionChangeSet.Range range : insertions) { + notifyItemRangeInserted(range.startIndex, range.length); + } + + if (!updateOnModification) { + return; + } + + OrderedCollectionChangeSet.Range[] modifications = changeSet.getChangeRanges(); + for (OrderedCollectionChangeSet.Range range : modifications) { + notifyItemRangeChanged(range.startIndex, range.length); + } + } + }; + } + + /** + * This is equivalent to {@code RealmRecyclerViewAdapter(data, autoUpdate, true)}. + * + * @see #RealmRecyclerViewAdapter(OrderedRealmCollection, boolean, boolean) + */ + public RealmRecyclerViewAdapter(@Nullable OrderedRealmCollection data, boolean autoUpdate) { + this(data, autoUpdate, true); + } + + /** + * @param data collection data to be used by this adapter. + * @param autoUpdate when it is {@code false}, the adapter won't be automatically updated when collection data + * changes. + * @param updateOnModification when it is {@code true}, this adapter will be updated when deletions, insertions or + * modifications happen to the collection data. When it is {@code false}, only + * deletions and insertions will trigger the updates. This param will be ignored if + * {@code autoUpdate} is {@code false}. + */ + public RealmRecyclerViewAdapter(@Nullable OrderedRealmCollection data, boolean autoUpdate, + boolean updateOnModification) { + if (data != null && !data.isManaged()) + throw new IllegalStateException("Only use this adapter with managed RealmCollection, " + + "for un-managed lists you can just use the BaseRecyclerViewAdapter"); + this.adapterData = data; + this.hasAutoUpdates = autoUpdate; + this.listener = hasAutoUpdates ? createListener() : null; + this.updateOnModification = updateOnModification; + } + + @Override + public void onAttachedToRecyclerView(final RecyclerView recyclerView) { + super.onAttachedToRecyclerView(recyclerView); + if (hasAutoUpdates && isDataValid()) { + //noinspection ConstantConditions + addListener(adapterData); + } + } + + @Override + public void onDetachedFromRecyclerView(final RecyclerView recyclerView) { + super.onDetachedFromRecyclerView(recyclerView); + if (hasAutoUpdates && isDataValid()) { + //noinspection ConstantConditions + removeListener(adapterData); + } + } + + /** + * Returns the current ID for an item. Note that item IDs are not stable so you cannot rely on the item ID being the + * same after notifyDataSetChanged() or {@link #updateData(OrderedRealmCollection)} has been called. + * + * @param index position of item in the adapter. + * @return current item ID. + */ + @Override + public long getItemId(final int index) { + return index; + } + + @Override + public int getItemCount() { + //noinspection ConstantConditions + return isDataValid() ? adapterData.size() : 0; + } + + /** + * Returns the item associated with the specified position. + * Can return {@code null} if provided Realm instance by {@link OrderedRealmCollection} is closed. + * + * @param index index of the item. + * @return the item at the specified position, {@code null} if adapter data is not valid. + */ + @SuppressWarnings("WeakerAccess") + @Nullable + public T getItem(int index) { + //noinspection ConstantConditions + return isDataValid() ? adapterData.get(index) : null; + } + + /** + * Returns data associated with this adapter. + * + * @return adapter data. + */ + @Nullable + public OrderedRealmCollection getData() { + return adapterData; + } + + /** + * Updates the data associated to the Adapter. Useful when the query has been changed. + * If the query does not change you might consider using the automaticUpdate feature. + * + * @param data the new {@link OrderedRealmCollection} to display. + */ + @SuppressWarnings("WeakerAccess") + public void updateData(@Nullable OrderedRealmCollection data) { + if (hasAutoUpdates) { + if (isDataValid()) { + //noinspection ConstantConditions + removeListener(adapterData); + } + if (data != null) { + addListener(data); + } + } + + this.adapterData = data; + notifyDataSetChanged(); + } + + private void addListener(@NonNull OrderedRealmCollection data) { + if (data instanceof RealmResults) { + RealmResults results = (RealmResults) data; + //noinspection unchecked + results.addChangeListener(listener); + } else if (data instanceof RealmList) { + RealmList list = (RealmList) data; + //noinspection unchecked + list.addChangeListener(listener); + } else { + throw new IllegalArgumentException("RealmCollection not supported: " + data.getClass()); + } + } + + private void removeListener(@NonNull OrderedRealmCollection data) { + if (data instanceof RealmResults) { + RealmResults results = (RealmResults) data; + //noinspection unchecked + results.removeChangeListener(listener); + } else if (data instanceof RealmList) { + RealmList list = (RealmList) data; + //noinspection unchecked + list.removeChangeListener(listener); + } else { + throw new IllegalArgumentException("RealmCollection not supported: " + data.getClass()); + } + } + + private boolean isDataValid() { + return adapterData != null && adapterData.isValid(); + } +} diff --git a/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/RxDrawerLayout.java b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/RxDrawerLayout.java new file mode 100644 index 00000000..06a9a7e8 --- /dev/null +++ b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/RxDrawerLayout.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2017 Moez Bhatti + * + * This file is part of QKSMS. + * + * QKSMS is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * QKSMS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with QKSMS. If not, see . + */ +package com.moez.QKSMS.common.androidxcompat; + +import androidx.annotation.CheckResult; +import androidx.annotation.NonNull; +import androidx.drawerlayout.widget.DrawerLayout; +import com.jakewharton.rxbinding2.InitialValueObservable; +import io.reactivex.functions.Consumer; + +import static com.jakewharton.rxbinding2.internal.Preconditions.checkNotNull; + +public final class RxDrawerLayout { + /** + * Create an observable of the open state of the drawer of {@code view}. + *

+ * Warning: The created observable keeps a strong reference to {@code view}. Unsubscribe + * to free this reference. + *

+ * Note: A value will be emitted immediately on subscribe. + */ + @CheckResult + @NonNull + public static InitialValueObservable drawerOpen( + @NonNull DrawerLayout view, int gravity) { + checkNotNull(view, "view == null"); + return new DrawerLayoutDrawerOpenedObservable(view, gravity); + } + + /** + * An action which sets whether the drawer with {@code gravity} of {@code view} is open. + *

+ * Warning: The created observable keeps a strong reference to {@code view}. Unsubscribe + * to free this reference. + */ + @CheckResult @NonNull public static Consumer open( + @NonNull final DrawerLayout view, final int gravity) { + checkNotNull(view, "view == null"); + return new Consumer() { + @Override public void accept(Boolean aBoolean) { + if (aBoolean) { + view.openDrawer(gravity); + } else { + view.closeDrawer(gravity); + } + } + }; + } + + private RxDrawerLayout() { + throw new AssertionError("No instances."); + } +} \ No newline at end of file diff --git a/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/drawerOpen.kt b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/drawerOpen.kt new file mode 100644 index 00000000..a3d9508e --- /dev/null +++ b/presentation/src/main/java/com/moez/QKSMS/common/androidxcompat/drawerOpen.kt @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2017 Moez Bhatti + * + * This file is part of QKSMS. + * + * QKSMS is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * QKSMS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with QKSMS. If not, see . + */ +@file:Suppress("NOTHING_TO_INLINE") + +package com.moez.QKSMS.common.androidxcompat + +import androidx.annotation.CheckResult +import androidx.drawerlayout.widget.DrawerLayout +import com.jakewharton.rxbinding2.InitialValueObservable +import io.reactivex.functions.Consumer +import kotlin.Int +import kotlin.Suppress + +/** + * Create an observable of the open state of the drawer of `view`. + * + * *Warning:* The created observable keeps a strong reference to `view`. Unsubscribe + * to free this reference. + * + * *Note:* A value will be emitted immediately on subscribe. + */ +@CheckResult +inline fun DrawerLayout.drawerOpen(gravity: Int): InitialValueObservable = RxDrawerLayout.drawerOpen(this, gravity) + +/** + * An action which sets whether the drawer with `gravity` of `view` is open. + * + * *Warning:* The created observable keeps a strong reference to `view`. Unsubscribe + * to free this reference. + */ +@CheckResult +inline fun DrawerLayout.open(gravity: Int): Consumer = RxDrawerLayout.open(this, gravity) \ No newline at end of file diff --git a/presentation/src/main/java/com/moez/QKSMS/common/base/FlowableAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/common/base/FlowableAdapter.kt index 5dc6c09e..1a71d516 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/base/FlowableAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/base/FlowableAdapter.kt @@ -18,8 +18,8 @@ */ package com.moez.QKSMS.common.base -import android.support.annotation.CallSuper -import android.support.v7.widget.RecyclerView +import androidx.annotation.CallSuper +import androidx.recyclerview.widget.RecyclerView import io.reactivex.Flowable import io.reactivex.disposables.Disposable diff --git a/presentation/src/main/java/com/moez/QKSMS/common/base/QkActivity.kt b/presentation/src/main/java/com/moez/QKSMS/common/base/QkActivity.kt index 8e1d0c55..379224fd 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/base/QkActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/base/QkActivity.kt @@ -20,9 +20,9 @@ package com.moez.QKSMS.common.base import android.annotation.SuppressLint import android.os.Bundle -import android.support.v7.app.AppCompatActivity import android.view.Menu import android.view.MenuItem +import androidx.appcompat.app.AppCompatActivity import io.reactivex.subjects.BehaviorSubject import io.reactivex.subjects.Subject import kotlinx.android.synthetic.main.toolbar.* diff --git a/presentation/src/main/java/com/moez/QKSMS/common/base/QkAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/common/base/QkAdapter.kt index 43406026..28dc06e2 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/base/QkAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/base/QkAdapter.kt @@ -18,9 +18,9 @@ */ package com.moez.QKSMS.common.base -import android.support.v7.util.DiffUtil -import android.support.v7.widget.RecyclerView import android.view.View +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.RecyclerView import com.moez.QKSMS.common.util.extensions.setVisible import io.reactivex.subjects.BehaviorSubject import io.reactivex.subjects.Subject diff --git a/presentation/src/main/java/com/moez/QKSMS/common/base/QkRealmAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/common/base/QkRealmAdapter.kt index e20e3331..ee3af158 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/base/QkRealmAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/base/QkRealmAdapter.kt @@ -1,14 +1,14 @@ package com.moez.QKSMS.common.base -import android.support.v7.widget.RecyclerView import android.view.View +import androidx.recyclerview.widget.RecyclerView +import com.moez.QKSMS.common.androidxcompat.RealmRecyclerViewAdapter import com.moez.QKSMS.common.util.extensions.setVisible import io.reactivex.subjects.BehaviorSubject import io.reactivex.subjects.Subject import io.realm.OrderedRealmCollection import io.realm.RealmList import io.realm.RealmModel -import io.realm.RealmRecyclerViewAdapter import io.realm.RealmResults abstract class QkRealmAdapter : RealmRecyclerViewAdapter(null, true) { diff --git a/presentation/src/main/java/com/moez/QKSMS/common/base/QkThemedActivity.kt b/presentation/src/main/java/com/moez/QKSMS/common/base/QkThemedActivity.kt index 6d836ff5..7c4c3b01 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/base/QkThemedActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/base/QkThemedActivity.kt @@ -20,16 +20,16 @@ package com.moez.QKSMS.common.base import android.annotation.SuppressLint import android.app.ActivityManager -import android.arch.lifecycle.Lifecycle import android.graphics.BitmapFactory import android.os.Build import android.os.Bundle import android.view.View +import androidx.lifecycle.Lifecycle import com.moez.QKSMS.R +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.util.Colors import com.moez.QKSMS.common.util.extensions.resolveThemeColor import com.moez.QKSMS.util.Preferences -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import io.reactivex.Observable import io.reactivex.rxkotlin.Observables diff --git a/presentation/src/main/java/com/moez/QKSMS/common/base/QkView.kt b/presentation/src/main/java/com/moez/QKSMS/common/base/QkView.kt index 2f4d73a3..6d36be43 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/base/QkView.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/base/QkView.kt @@ -18,7 +18,7 @@ */ package com.moez.QKSMS.common.base -import android.arch.lifecycle.LifecycleOwner +import androidx.lifecycle.LifecycleOwner interface QkView : LifecycleOwner { diff --git a/presentation/src/main/java/com/moez/QKSMS/common/base/QkViewHolder.kt b/presentation/src/main/java/com/moez/QKSMS/common/base/QkViewHolder.kt index a2fbdf56..accb7d0e 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/base/QkViewHolder.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/base/QkViewHolder.kt @@ -18,7 +18,7 @@ */ package com.moez.QKSMS.common.base -import android.support.v7.widget.RecyclerView import android.view.View +import androidx.recyclerview.widget.RecyclerView class QkViewHolder(view: View) : RecyclerView.ViewHolder(view) \ No newline at end of file diff --git a/presentation/src/main/java/com/moez/QKSMS/common/base/QkViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/common/base/QkViewModel.kt index f5dbbfa5..e73b4a25 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/base/QkViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/base/QkViewModel.kt @@ -18,9 +18,9 @@ */ package com.moez.QKSMS.common.base -import android.arch.lifecycle.ViewModel -import android.support.annotation.CallSuper -import com.uber.autodispose.android.lifecycle.scope +import androidx.annotation.CallSuper +import androidx.lifecycle.ViewModel +import com.moez.QKSMS.common.androidxcompat.scope import com.uber.autodispose.kotlin.autoDisposable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable diff --git a/presentation/src/main/java/com/moez/QKSMS/common/util/FontProvider.kt b/presentation/src/main/java/com/moez/QKSMS/common/util/FontProvider.kt index f914a17a..22909278 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/util/FontProvider.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/util/FontProvider.kt @@ -20,7 +20,7 @@ package com.moez.QKSMS.common.util import android.content.Context import android.graphics.Typeface -import android.support.v4.content.res.ResourcesCompat +import androidx.core.content.res.ResourcesCompat import com.moez.QKSMS.R import timber.log.Timber import javax.inject.Inject diff --git a/presentation/src/main/java/com/moez/QKSMS/common/util/LiveRealmData.kt b/presentation/src/main/java/com/moez/QKSMS/common/util/LiveRealmData.kt index 5a7cf488..cd3a4b3b 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/util/LiveRealmData.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/util/LiveRealmData.kt @@ -18,7 +18,7 @@ */ package com.moez.QKSMS.common.util -import android.arch.lifecycle.LiveData +import androidx.lifecycle.LiveData import io.realm.RealmChangeListener import io.realm.RealmModel import io.realm.RealmResults diff --git a/presentation/src/main/java/com/moez/QKSMS/common/util/NotificationManagerImpl.kt b/presentation/src/main/java/com/moez/QKSMS/common/util/NotificationManagerImpl.kt index 04565d2c..0f5d547f 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/util/NotificationManagerImpl.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/util/NotificationManagerImpl.kt @@ -28,10 +28,10 @@ import android.content.Intent import android.graphics.Color 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 android.support.v4.app.TaskStackBuilder +import androidx.core.app.NotificationCompat +import androidx.core.app.NotificationManagerCompat +import androidx.core.app.RemoteInput +import androidx.core.app.TaskStackBuilder import android.telephony.PhoneNumberUtils import com.moez.QKSMS.R import com.moez.QKSMS.common.util.extensions.dpToPx diff --git a/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/AdapterExtensions.kt b/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/AdapterExtensions.kt index e6c4b15d..50a808db 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/AdapterExtensions.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/AdapterExtensions.kt @@ -18,8 +18,8 @@ */ package com.moez.QKSMS.common.util.extensions -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.RecyclerView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView fun RecyclerView.Adapter<*>.autoScrollToStart(recyclerView: RecyclerView) { registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() { diff --git a/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/ContextExtensions.kt b/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/ContextExtensions.kt index a6523a71..844a2f97 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/ContextExtensions.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/ContextExtensions.kt @@ -20,8 +20,8 @@ package com.moez.QKSMS.common.util.extensions import android.app.Activity import android.content.Context -import android.support.annotation.StringRes -import android.support.v4.content.ContextCompat +import androidx.annotation.StringRes +import androidx.core.content.ContextCompat import android.util.TypedValue import android.view.inputmethod.InputMethodManager import android.widget.Toast diff --git a/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/ViewExtensions.kt b/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/ViewExtensions.kt index 18f55584..65b2f030 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/ViewExtensions.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/ViewExtensions.kt @@ -23,7 +23,6 @@ import android.content.Context import android.content.res.ColorStateList import android.graphics.PorterDuff import android.os.Build -import android.support.v7.widget.RecyclerView import android.view.MotionEvent import android.view.View import android.view.ViewGroup @@ -31,6 +30,7 @@ import android.view.inputmethod.InputMethodManager import android.widget.EditText import android.widget.ImageView import android.widget.ProgressBar +import androidx.recyclerview.widget.RecyclerView var ViewGroup.animateLayoutChanges: Boolean get() = layoutTransition != null diff --git a/presentation/src/main/java/com/moez/QKSMS/common/widget/GroupAvatarView.kt b/presentation/src/main/java/com/moez/QKSMS/common/widget/GroupAvatarView.kt index 0c656621..0021a7e4 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/widget/GroupAvatarView.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/widget/GroupAvatarView.kt @@ -20,9 +20,9 @@ package com.moez.QKSMS.common.widget import android.content.Context import android.os.Build -import android.support.constraint.ConstraintLayout import android.util.AttributeSet import android.view.View +import androidx.constraintlayout.widget.ConstraintLayout import com.moez.QKSMS.R import com.moez.QKSMS.model.Recipient import kotlinx.android.synthetic.main.group_avatar_view.view.* diff --git a/presentation/src/main/java/com/moez/QKSMS/common/widget/PagerTitleView.kt b/presentation/src/main/java/com/moez/QKSMS/common/widget/PagerTitleView.kt index 0aa306ab..1a79f9a0 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/widget/PagerTitleView.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/widget/PagerTitleView.kt @@ -20,11 +20,11 @@ package com.moez.QKSMS.common.widget import android.content.Context import android.content.res.ColorStateList -import android.support.v4.view.ViewPager import android.util.AttributeSet import android.view.LayoutInflater import android.widget.LinearLayout import android.widget.TextView +import androidx.viewpager.widget.ViewPager import com.moez.QKSMS.R import com.moez.QKSMS.common.util.Colors import com.moez.QKSMS.common.util.extensions.forEach diff --git a/presentation/src/main/java/com/moez/QKSMS/common/widget/PreferenceView.kt b/presentation/src/main/java/com/moez/QKSMS/common/widget/PreferenceView.kt index 338c3a79..71c077ab 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/widget/PreferenceView.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/widget/PreferenceView.kt @@ -19,7 +19,7 @@ package com.moez.QKSMS.common.widget import android.content.Context -import android.support.v7.widget.LinearLayoutCompat +import androidx.appcompat.widget.LinearLayoutCompat import android.util.AttributeSet import android.view.Gravity import android.view.View diff --git a/presentation/src/main/java/com/moez/QKSMS/common/widget/QkEditText.kt b/presentation/src/main/java/com/moez/QKSMS/common/widget/QkEditText.kt index ae6d7788..81aa79d6 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/widget/QkEditText.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/widget/QkEditText.kt @@ -20,9 +20,9 @@ package com.moez.QKSMS.common.widget import android.content.Context import android.os.Build -import android.support.v13.view.inputmethod.EditorInfoCompat -import android.support.v13.view.inputmethod.InputConnectionCompat -import android.support.v13.view.inputmethod.InputContentInfoCompat +import androidx.core.view.inputmethod.EditorInfoCompat +import androidx.core.view.inputmethod.InputConnectionCompat +import androidx.core.view.inputmethod.InputContentInfoCompat import android.util.AttributeSet import android.view.KeyEvent import android.view.inputmethod.EditorInfo diff --git a/presentation/src/main/java/com/moez/QKSMS/common/widget/QkSwitch.kt b/presentation/src/main/java/com/moez/QKSMS/common/widget/QkSwitch.kt index ecccc212..69c302f3 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/widget/QkSwitch.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/widget/QkSwitch.kt @@ -20,7 +20,7 @@ package com.moez.QKSMS.common.widget import android.content.Context import android.content.res.ColorStateList -import android.support.v7.widget.SwitchCompat +import androidx.appcompat.widget.SwitchCompat import android.util.AttributeSet import com.moez.QKSMS.R import com.moez.QKSMS.common.util.Colors diff --git a/presentation/src/main/java/com/moez/QKSMS/common/widget/QkTextView.kt b/presentation/src/main/java/com/moez/QKSMS/common/widget/QkTextView.kt index 3a10bbe4..f6e7970c 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/widget/QkTextView.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/widget/QkTextView.kt @@ -19,7 +19,7 @@ package com.moez.QKSMS.common.widget import android.content.Context -import android.support.text.emoji.widget.EmojiAppCompatTextView +import androidx.emoji.widget.EmojiAppCompatTextView import android.util.AttributeSet import com.moez.QKSMS.common.util.TextViewStyler import com.moez.QKSMS.injection.appComponent diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/blocked/BlockedActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/blocked/BlockedActivity.kt index e6c87d0a..f53cfc86 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/blocked/BlockedActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/blocked/BlockedActivity.kt @@ -19,8 +19,8 @@ package com.moez.QKSMS.feature.blocked import android.app.AlertDialog -import android.arch.lifecycle.ViewModelProvider -import android.arch.lifecycle.ViewModelProviders +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders import android.os.Bundle import com.jakewharton.rxbinding2.view.clicks import com.moez.QKSMS.R diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/blocked/BlockedActivityModule.kt b/presentation/src/main/java/com/moez/QKSMS/feature/blocked/BlockedActivityModule.kt index 6641ebd2..a14be852 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/blocked/BlockedActivityModule.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/blocked/BlockedActivityModule.kt @@ -1,6 +1,6 @@ package com.moez.QKSMS.feature.blocked -import android.arch.lifecycle.ViewModel +import androidx.lifecycle.ViewModel import com.moez.QKSMS.injection.ViewModelKey import dagger.Module import dagger.Provides diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/blocked/BlockedViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/feature/blocked/BlockedViewModel.kt index 72864cca..a90c48f4 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/blocked/BlockedViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/blocked/BlockedViewModel.kt @@ -20,12 +20,12 @@ package com.moez.QKSMS.feature.blocked import android.content.Context import com.moez.QKSMS.common.Navigator +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkViewModel import com.moez.QKSMS.interactor.MarkUnblocked import com.moez.QKSMS.repository.ConversationRepository import com.moez.QKSMS.util.Preferences import com.moez.QKSMS.util.tryOrNull -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import io.reactivex.rxkotlin.plusAssign import io.reactivex.rxkotlin.withLatestFrom diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/AttachmentAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/AttachmentAdapter.kt index 769aacd4..c2b73801 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/AttachmentAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/AttachmentAdapter.kt @@ -19,9 +19,9 @@ package com.moez.QKSMS.feature.compose import android.content.Context -import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import com.jakewharton.rxbinding2.view.clicks import com.moez.QKSMS.R diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ChipsAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ChipsAdapter.kt index e4026bb1..b3523f6d 100755 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ChipsAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ChipsAdapter.kt @@ -19,7 +19,7 @@ package com.moez.QKSMS.feature.compose import android.content.Context -import android.support.v7.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt index 22d827c3..4badcfc1 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt @@ -20,8 +20,8 @@ package com.moez.QKSMS.feature.compose import android.Manifest import android.app.Activity -import android.arch.lifecycle.ViewModelProvider -import android.arch.lifecycle.ViewModelProviders +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders import android.content.ContentValues import android.content.Intent import android.graphics.PorterDuff @@ -29,15 +29,16 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.provider.MediaStore -import android.support.v4.app.ActivityCompat -import android.support.v7.app.AlertDialog -import android.support.v7.widget.LinearLayoutManager +import androidx.core.app.ActivityCompat +import androidx.appcompat.app.AlertDialog +import androidx.recyclerview.widget.LinearLayoutManager import android.view.Menu import android.view.MenuItem import com.google.android.flexbox.FlexboxLayoutManager import com.jakewharton.rxbinding2.view.clicks import com.jakewharton.rxbinding2.widget.textChanges import com.moez.QKSMS.R +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkThemedActivity import com.moez.QKSMS.common.util.extensions.autoScrollToStart import com.moez.QKSMS.common.util.extensions.resolveThemeColor @@ -49,7 +50,6 @@ import com.moez.QKSMS.common.util.extensions.showKeyboard import com.moez.QKSMS.model.Attachment import com.moez.QKSMS.model.Contact import com.moez.QKSMS.model.Message -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import dagger.android.AndroidInjection import io.reactivex.Observable diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivityModule.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivityModule.kt index 94dac041..dad32847 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivityModule.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivityModule.kt @@ -1,6 +1,6 @@ package com.moez.QKSMS.feature.compose -import android.arch.lifecycle.ViewModel +import androidx.lifecycle.ViewModel import android.content.Intent import android.net.Uri import com.moez.QKSMS.injection.ViewModelKey diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeView.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeView.kt index 89d0b5bd..d71e2773 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeView.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeView.kt @@ -19,7 +19,7 @@ package com.moez.QKSMS.feature.compose import android.net.Uri -import android.support.v13.view.inputmethod.InputContentInfoCompat +import androidx.core.view.inputmethod.InputContentInfoCompat import com.moez.QKSMS.common.base.QkView import com.moez.QKSMS.model.Attachment import com.moez.QKSMS.model.Contact diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt index f47fbc0f..bc9a4a98 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt @@ -24,6 +24,7 @@ import android.telephony.SmsMessage import android.view.inputmethod.EditorInfo import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkViewModel import com.moez.QKSMS.common.util.ClipboardUtils import com.moez.QKSMS.common.util.MessageDetailsFormatter @@ -52,7 +53,6 @@ import com.moez.QKSMS.repository.ConversationRepository import com.moez.QKSMS.repository.MessageRepository import com.moez.QKSMS.util.ActiveSubscriptionObservable import com.moez.QKSMS.util.tryOrNull -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeWindowCallback.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeWindowCallback.kt index efe22d71..88e16eb8 100755 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeWindowCallback.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeWindowCallback.kt @@ -21,7 +21,7 @@ package com.moez.QKSMS.feature.compose import android.app.Activity import android.graphics.Rect import android.os.Build -import android.support.annotation.RequiresApi +import androidx.annotation.RequiresApi import android.view.ActionMode import android.view.KeyEvent import android.view.Menu diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/MessagesAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/MessagesAdapter.kt index d111690c..7eee90b0 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/MessagesAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/MessagesAdapter.kt @@ -21,7 +21,6 @@ package com.moez.QKSMS.feature.compose import android.animation.ObjectAnimator import android.content.Context import android.graphics.Typeface -import android.support.v7.widget.RecyclerView import android.telephony.PhoneNumberUtils import android.text.Spannable import android.text.SpannableStringBuilder @@ -31,6 +30,7 @@ import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.ProgressBar +import androidx.recyclerview.widget.RecyclerView import com.jakewharton.rxbinding2.view.clicks import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoActivity.kt index 559936a6..81106231 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoActivity.kt @@ -18,14 +18,15 @@ */ package com.moez.QKSMS.feature.conversationinfo -import android.arch.lifecycle.ViewModelProvider -import android.arch.lifecycle.ViewModelProviders +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders import android.os.Bundle -import android.support.v7.app.AlertDialog +import androidx.appcompat.app.AlertDialog import android.text.InputFilter import com.jakewharton.rxbinding2.view.clicks import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkThemedActivity import com.moez.QKSMS.common.util.extensions.animateLayoutChanges import com.moez.QKSMS.common.util.extensions.dpToPx @@ -33,7 +34,6 @@ import com.moez.QKSMS.common.util.extensions.resolveThemeColor import com.moez.QKSMS.common.util.extensions.scrapViews import com.moez.QKSMS.common.util.extensions.setVisible import com.moez.QKSMS.common.widget.QkEditText -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import dagger.android.AndroidInjection import io.reactivex.subjects.PublishSubject diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoActivityModule.kt b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoActivityModule.kt index 2dea21a0..cc551efb 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoActivityModule.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoActivityModule.kt @@ -1,6 +1,6 @@ package com.moez.QKSMS.feature.conversationinfo -import android.arch.lifecycle.ViewModel +import androidx.lifecycle.ViewModel import com.moez.QKSMS.injection.ViewModelKey import dagger.Module import dagger.Provides diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoViewModel.kt index 23891e6c..cc2a175b 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoViewModel.kt @@ -19,6 +19,7 @@ package com.moez.QKSMS.feature.conversationinfo import com.moez.QKSMS.common.Navigator +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkViewModel import com.moez.QKSMS.extensions.asObservable import com.moez.QKSMS.interactor.DeleteConversations @@ -29,7 +30,6 @@ import com.moez.QKSMS.interactor.MarkUnblocked import com.moez.QKSMS.model.Conversation import com.moez.QKSMS.repository.ConversationRepository import com.moez.QKSMS.repository.MessageRepository -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import io.reactivex.rxkotlin.plusAssign import io.reactivex.rxkotlin.withLatestFrom diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationMediaAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationMediaAdapter.kt index 31166dba..6786a40a 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationMediaAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationMediaAdapter.kt @@ -19,7 +19,7 @@ package com.moez.QKSMS.feature.conversationinfo import android.content.Context -import android.support.v7.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationRecipientAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationRecipientAdapter.kt index 6edd5592..2076b37a 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationRecipientAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationRecipientAdapter.kt @@ -18,7 +18,7 @@ */ package com.moez.QKSMS.feature.conversationinfo -import android.support.v7.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView import android.view.LayoutInflater import android.view.ViewGroup import com.moez.QKSMS.R diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/GridSpacingItemDecoration.kt b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/GridSpacingItemDecoration.kt index 2f779ce4..6c4b4e71 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/GridSpacingItemDecoration.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/GridSpacingItemDecoration.kt @@ -20,8 +20,8 @@ package com.moez.QKSMS.feature.conversationinfo import android.content.Context import android.graphics.Rect -import android.support.v7.widget.RecyclerView import android.view.View +import androidx.recyclerview.widget.RecyclerView import com.moez.QKSMS.common.util.extensions.dpToPx import javax.inject.Inject diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/conversations/ConversationItemTouchCallback.kt b/presentation/src/main/java/com/moez/QKSMS/feature/conversations/ConversationItemTouchCallback.kt index 13d0aa3a..4cfcf31c 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/conversations/ConversationItemTouchCallback.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/conversations/ConversationItemTouchCallback.kt @@ -22,9 +22,9 @@ import android.content.Context import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.Paint -import android.support.v7.widget.RecyclerView -import android.support.v7.widget.helper.ItemTouchHelper import androidx.graphics.drawable.toBitmap +import androidx.recyclerview.widget.ItemTouchHelper +import androidx.recyclerview.widget.RecyclerView import com.moez.QKSMS.R import com.moez.QKSMS.common.util.extensions.dpToPx import io.reactivex.subjects.PublishSubject diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivity.kt index ef56d0ee..fec9b61d 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivity.kt @@ -18,8 +18,8 @@ */ package com.moez.QKSMS.feature.gallery -import android.arch.lifecycle.ViewModelProvider -import android.arch.lifecycle.ViewModelProviders +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders import android.net.Uri import android.os.Bundle import android.transition.ChangeBounds diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivityModule.kt b/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivityModule.kt index 9e33fb30..7f466ba3 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivityModule.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivityModule.kt @@ -1,6 +1,6 @@ package com.moez.QKSMS.feature.gallery -import android.arch.lifecycle.ViewModel +import androidx.lifecycle.ViewModel import android.content.Intent import com.moez.QKSMS.injection.ViewModelKey import dagger.Module diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryViewModel.kt index c949e4df..14be3add 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryViewModel.kt @@ -21,13 +21,13 @@ package com.moez.QKSMS.feature.gallery import android.content.Context import android.content.Intent import com.moez.QKSMS.R +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkViewModel import com.moez.QKSMS.common.util.extensions.makeToast import com.moez.QKSMS.extensions.mapNotNull import com.moez.QKSMS.interactor.SaveImage import com.moez.QKSMS.repository.ConversationRepository import com.moez.QKSMS.repository.MessageRepository -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import io.reactivex.Flowable import io.reactivex.rxkotlin.plusAssign diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/main/MainActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/main/MainActivity.kt index 2e964a3d..b5831c5d 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/main/MainActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/main/MainActivity.kt @@ -20,24 +20,25 @@ package com.moez.QKSMS.feature.main import android.Manifest import android.app.AlertDialog -import android.arch.lifecycle.ViewModelProvider -import android.arch.lifecycle.ViewModelProviders import android.content.res.ColorStateList import android.os.Bundle -import android.support.design.widget.Snackbar -import android.support.v4.app.ActivityCompat -import android.support.v7.app.ActionBarDrawerToggle -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.helper.ItemTouchHelper import android.view.Gravity import android.view.Menu import android.view.MenuItem import android.view.View -import com.jakewharton.rxbinding2.support.v4.widget.drawerOpen +import androidx.appcompat.app.ActionBarDrawerToggle +import androidx.core.app.ActivityCompat +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders +import androidx.recyclerview.widget.ItemTouchHelper +import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.snackbar.Snackbar import com.jakewharton.rxbinding2.view.clicks import com.jakewharton.rxbinding2.widget.textChanges import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator +import com.moez.QKSMS.common.androidxcompat.drawerOpen +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkThemedActivity import com.moez.QKSMS.common.util.extensions.autoScrollToStart import com.moez.QKSMS.common.util.extensions.dismissKeyboard @@ -49,7 +50,6 @@ import com.moez.QKSMS.common.util.extensions.setVisible import com.moez.QKSMS.feature.conversations.ConversationItemTouchCallback import com.moez.QKSMS.feature.conversations.ConversationsAdapter import com.moez.QKSMS.repository.SyncRepository -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import dagger.android.AndroidInjection import io.reactivex.Observable diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/main/MainActivityModule.kt b/presentation/src/main/java/com/moez/QKSMS/feature/main/MainActivityModule.kt index 8d02ac5a..2be9e13b 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/main/MainActivityModule.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/main/MainActivityModule.kt @@ -1,6 +1,6 @@ package com.moez.QKSMS.feature.main -import android.arch.lifecycle.ViewModel +import androidx.lifecycle.ViewModel import com.moez.QKSMS.injection.ViewModelKey import dagger.Module import dagger.Provides diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/main/MainViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/feature/main/MainViewModel.kt index 996dc144..424df908 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/main/MainViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/main/MainViewModel.kt @@ -20,6 +20,7 @@ package com.moez.QKSMS.feature.main import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkViewModel import com.moez.QKSMS.extensions.removeAccents import com.moez.QKSMS.interactor.DeleteConversations @@ -37,7 +38,6 @@ import com.moez.QKSMS.model.SyncLog import com.moez.QKSMS.repository.ConversationRepository import com.moez.QKSMS.repository.MessageRepository import com.moez.QKSMS.repository.SyncRepository -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/notificationprefs/NotificationPrefsActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/notificationprefs/NotificationPrefsActivity.kt index d0b07f23..d3d1d7f0 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/notificationprefs/NotificationPrefsActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/notificationprefs/NotificationPrefsActivity.kt @@ -19,8 +19,8 @@ package com.moez.QKSMS.feature.notificationprefs import android.app.Activity -import android.arch.lifecycle.ViewModelProvider -import android.arch.lifecycle.ViewModelProviders +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders import android.content.Intent import android.media.RingtoneManager import android.net.Uri diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/notificationprefs/NotificationPrefsActivityModule.kt b/presentation/src/main/java/com/moez/QKSMS/feature/notificationprefs/NotificationPrefsActivityModule.kt index ab673c3d..0762c17d 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/notificationprefs/NotificationPrefsActivityModule.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/notificationprefs/NotificationPrefsActivityModule.kt @@ -1,6 +1,6 @@ package com.moez.QKSMS.feature.notificationprefs -import android.arch.lifecycle.ViewModel +import androidx.lifecycle.ViewModel import android.content.Intent import com.moez.QKSMS.injection.ViewModelKey import dagger.Module diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/notificationprefs/NotificationPrefsViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/feature/notificationprefs/NotificationPrefsViewModel.kt index 8ab583d4..7c5c69ed 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/notificationprefs/NotificationPrefsViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/notificationprefs/NotificationPrefsViewModel.kt @@ -25,11 +25,11 @@ import android.net.Uri import com.f2prateek.rx.preferences2.Preference import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkViewModel import com.moez.QKSMS.extensions.mapNotNull import com.moez.QKSMS.repository.ConversationRepository import com.moez.QKSMS.util.Preferences -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import io.reactivex.Flowable import io.reactivex.rxkotlin.plusAssign diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/plus/PlusActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/plus/PlusActivity.kt index a0122355..99978ff7 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/plus/PlusActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/plus/PlusActivity.kt @@ -18,8 +18,8 @@ */ package com.moez.QKSMS.feature.plus -import android.arch.lifecycle.ViewModelProvider -import android.arch.lifecycle.ViewModelProviders +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders import android.graphics.Typeface import android.os.Bundle import com.jakewharton.rxbinding2.view.clicks diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/plus/PlusActivityModule.kt b/presentation/src/main/java/com/moez/QKSMS/feature/plus/PlusActivityModule.kt index a521cfda..8497cb5f 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/plus/PlusActivityModule.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/plus/PlusActivityModule.kt @@ -1,6 +1,6 @@ package com.moez.QKSMS.feature.plus -import android.arch.lifecycle.ViewModel +import androidx.lifecycle.ViewModel import com.moez.QKSMS.injection.ViewModelKey import dagger.Module import dagger.Provides diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/plus/PlusViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/feature/plus/PlusViewModel.kt index 2069cf8a..289e099c 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/plus/PlusViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/plus/PlusViewModel.kt @@ -19,10 +19,10 @@ package com.moez.QKSMS.feature.plus import com.moez.QKSMS.common.Navigator +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkViewModel import com.moez.QKSMS.common.util.BillingManager import com.moez.QKSMS.manager.AnalyticsManager -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import io.reactivex.Observable import io.reactivex.rxkotlin.plusAssign diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivity.kt index 6f404ee9..cfc0cc32 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivity.kt @@ -18,11 +18,11 @@ */ package com.moez.QKSMS.feature.qkreply -import android.arch.lifecycle.ViewModelProvider -import android.arch.lifecycle.ViewModelProviders +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders import android.os.Build import android.os.Bundle -import android.support.v7.widget.LinearLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager import android.view.Menu import android.view.MenuItem import android.view.ViewGroup @@ -31,6 +31,7 @@ import android.view.WindowManager import com.jakewharton.rxbinding2.view.clicks import com.jakewharton.rxbinding2.widget.textChanges import com.moez.QKSMS.R +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkThemedActivity import com.moez.QKSMS.common.util.extensions.autoScrollToStart import com.moez.QKSMS.common.util.extensions.resolveThemeColor @@ -38,7 +39,6 @@ import com.moez.QKSMS.common.util.extensions.setBackgroundTint import com.moez.QKSMS.common.util.extensions.setTint import com.moez.QKSMS.common.util.extensions.setVisible import com.moez.QKSMS.feature.compose.MessagesAdapter -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import dagger.android.AndroidInjection import io.reactivex.subjects.PublishSubject diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivityModule.kt b/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivityModule.kt index 6342b128..d702fbc1 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivityModule.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivityModule.kt @@ -1,6 +1,6 @@ package com.moez.QKSMS.feature.qkreply -import android.arch.lifecycle.ViewModel +import androidx.lifecycle.ViewModel import com.moez.QKSMS.injection.ViewModelKey import dagger.Module import dagger.Provides diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyViewModel.kt index 5fdd648d..b02647fe 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyViewModel.kt @@ -21,6 +21,7 @@ package com.moez.QKSMS.feature.qkreply import android.telephony.SmsMessage import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkViewModel import com.moez.QKSMS.compat.SubscriptionManagerCompat import com.moez.QKSMS.extensions.asObservable @@ -32,7 +33,6 @@ import com.moez.QKSMS.model.Message import com.moez.QKSMS.repository.ConversationRepository import com.moez.QKSMS.repository.MessageRepository import com.moez.QKSMS.util.ActiveSubscriptionObservable -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import io.reactivex.rxkotlin.Observables import io.reactivex.rxkotlin.plusAssign diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsActivity.kt index 54226c83..9476c98e 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsActivity.kt @@ -20,22 +20,22 @@ package com.moez.QKSMS.feature.settings import android.app.ProgressDialog import android.app.TimePickerDialog -import android.arch.lifecycle.ViewModelProvider -import android.arch.lifecycle.ViewModelProviders +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders import android.os.Bundle -import android.support.design.widget.Snackbar +import com.google.android.material.snackbar.Snackbar import android.text.format.DateFormat import com.jakewharton.rxbinding2.view.clicks import com.moez.QKSMS.BuildConfig import com.moez.QKSMS.R import com.moez.QKSMS.common.QkDialog +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkThemedActivity import com.moez.QKSMS.common.util.extensions.animateLayoutChanges import com.moez.QKSMS.common.util.extensions.setBackgroundTint import com.moez.QKSMS.common.util.extensions.setVisible import com.moez.QKSMS.common.widget.PreferenceView import com.moez.QKSMS.util.Preferences -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import dagger.android.AndroidInjection import io.reactivex.subjects.PublishSubject diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsActivityModule.kt b/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsActivityModule.kt index 76e572ac..d25a34b5 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsActivityModule.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsActivityModule.kt @@ -1,6 +1,6 @@ package com.moez.QKSMS.feature.settings -import android.arch.lifecycle.ViewModel +import androidx.lifecycle.ViewModel import com.moez.QKSMS.injection.ViewModelKey import dagger.Module import dagger.Provides diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsViewModel.kt index c6735b14..7c729204 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsViewModel.kt @@ -21,6 +21,7 @@ package com.moez.QKSMS.feature.settings import android.content.Context import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkViewModel import com.moez.QKSMS.common.util.BillingManager import com.moez.QKSMS.common.util.Colors @@ -28,7 +29,6 @@ import com.moez.QKSMS.common.util.DateFormatter import com.moez.QKSMS.interactor.SyncMessages import com.moez.QKSMS.util.NightModeManager import com.moez.QKSMS.util.Preferences -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import io.reactivex.rxkotlin.plusAssign import io.reactivex.rxkotlin.withLatestFrom diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/settings/about/AboutActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/settings/about/AboutActivity.kt index 14a222b1..6d7893f7 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/settings/about/AboutActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/settings/about/AboutActivity.kt @@ -1,7 +1,7 @@ package com.moez.QKSMS.feature.settings.about -import android.arch.lifecycle.ViewModelProvider -import android.arch.lifecycle.ViewModelProviders +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders import android.os.Bundle import com.jakewharton.rxbinding2.view.clicks import com.moez.QKSMS.BuildConfig diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/settings/about/AboutActivityModule.kt b/presentation/src/main/java/com/moez/QKSMS/feature/settings/about/AboutActivityModule.kt index 8b59bcc5..995f0139 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/settings/about/AboutActivityModule.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/settings/about/AboutActivityModule.kt @@ -1,6 +1,6 @@ package com.moez.QKSMS.feature.settings.about -import android.arch.lifecycle.ViewModel +import androidx.lifecycle.ViewModel import com.moez.QKSMS.injection.ViewModelKey import dagger.Module import dagger.Provides diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/settings/about/AboutViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/feature/settings/about/AboutViewModel.kt index 97236bc7..85aed358 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/settings/about/AboutViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/settings/about/AboutViewModel.kt @@ -2,8 +2,8 @@ package com.moez.QKSMS.feature.settings.about import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkViewModel -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import javax.inject.Inject diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/HSVPickerView.kt b/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/HSVPickerView.kt index ce791afb..aec322ca 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/HSVPickerView.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/HSVPickerView.kt @@ -21,10 +21,10 @@ package com.moez.QKSMS.feature.themepicker import android.content.Context import android.graphics.Color import android.graphics.drawable.GradientDrawable -import android.support.constraint.ConstraintLayout import android.util.AttributeSet import android.view.MotionEvent import android.view.View +import androidx.constraintlayout.widget.ConstraintLayout import com.moez.QKSMS.R import com.moez.QKSMS.common.util.extensions.setBackgroundTint import com.moez.QKSMS.common.util.extensions.setTint diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePagerAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePagerAdapter.kt index ffd9ed3d..9ad5e6a5 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePagerAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePagerAdapter.kt @@ -19,9 +19,9 @@ package com.moez.QKSMS.feature.themepicker import android.content.Context -import android.support.v4.view.PagerAdapter import android.view.View import android.view.ViewGroup +import androidx.viewpager.widget.PagerAdapter import com.moez.QKSMS.R import javax.inject.Inject diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePickerActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePickerActivity.kt index b8687150..85653675 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePickerActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePickerActivity.kt @@ -18,11 +18,11 @@ */ package com.moez.QKSMS.feature.themepicker -import android.arch.lifecycle.ViewModelProvider -import android.arch.lifecycle.ViewModelProviders import android.os.Bundle -import android.support.design.widget.Snackbar -import android.support.v7.widget.LinearLayoutManager +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders +import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.snackbar.Snackbar import com.jakewharton.rxbinding2.view.clicks import com.moez.QKSMS.R import com.moez.QKSMS.common.base.QkThemedActivity diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePickerActivityModule.kt b/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePickerActivityModule.kt index 109ac128..f18e4667 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePickerActivityModule.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePickerActivityModule.kt @@ -1,6 +1,6 @@ package com.moez.QKSMS.feature.themepicker -import android.arch.lifecycle.ViewModel +import androidx.lifecycle.ViewModel import com.moez.QKSMS.injection.ViewModelKey import dagger.Module import dagger.Provides diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePickerViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePickerViewModel.kt index a46eaefc..67daf053 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePickerViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/themepicker/ThemePickerViewModel.kt @@ -20,11 +20,11 @@ package com.moez.QKSMS.feature.themepicker import com.f2prateek.rx.preferences2.Preference import com.moez.QKSMS.common.Navigator +import com.moez.QKSMS.common.androidxcompat.scope import com.moez.QKSMS.common.base.QkViewModel import com.moez.QKSMS.common.util.BillingManager import com.moez.QKSMS.common.util.Colors import com.moez.QKSMS.util.Preferences -import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable import io.reactivex.rxkotlin.Observables import io.reactivex.rxkotlin.withLatestFrom diff --git a/presentation/src/main/java/com/moez/QKSMS/injection/AppModule.kt b/presentation/src/main/java/com/moez/QKSMS/injection/AppModule.kt index 9fa721ab..dcc2fa32 100644 --- a/presentation/src/main/java/com/moez/QKSMS/injection/AppModule.kt +++ b/presentation/src/main/java/com/moez/QKSMS/injection/AppModule.kt @@ -19,7 +19,7 @@ package com.moez.QKSMS.injection import android.app.Application -import android.arch.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProvider import android.content.ContentResolver import android.content.Context import android.preference.PreferenceManager diff --git a/presentation/src/main/java/com/moez/QKSMS/injection/ViewModelKey.kt b/presentation/src/main/java/com/moez/QKSMS/injection/ViewModelKey.kt index 7b575c18..39da828e 100644 --- a/presentation/src/main/java/com/moez/QKSMS/injection/ViewModelKey.kt +++ b/presentation/src/main/java/com/moez/QKSMS/injection/ViewModelKey.kt @@ -1,6 +1,6 @@ package com.moez.QKSMS.injection -import android.arch.lifecycle.ViewModel +import androidx.lifecycle.ViewModel import dagger.MapKey import kotlin.reflect.KClass diff --git a/presentation/src/main/res/layout/about_activity.xml b/presentation/src/main/res/layout/about_activity.xml index 2696bea5..1eb01762 100644 --- a/presentation/src/main/res/layout/about_activity.xml +++ b/presentation/src/main/res/layout/about_activity.xml @@ -16,14 +16,14 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - @@ -33,7 +33,7 @@ style="@style/ToolbarText" tools:text="@string/about_title" /> - + - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/blocked_activity.xml b/presentation/src/main/res/layout/blocked_activity.xml index e8c5a7f9..4116f734 100644 --- a/presentation/src/main/res/layout/blocked_activity.xml +++ b/presentation/src/main/res/layout/blocked_activity.xml @@ -17,7 +17,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - - - + - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/blocked_list_item.xml b/presentation/src/main/res/layout/blocked_list_item.xml index e0721ca5..e5177cc1 100644 --- a/presentation/src/main/res/layout/blocked_list_item.xml +++ b/presentation/src/main/res/layout/blocked_list_item.xml @@ -17,7 +17,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/compose_activity.xml b/presentation/src/main/res/layout/compose_activity.xml index ab2f3bde..3be581bc 100644 --- a/presentation/src/main/res/layout/compose_activity.xml +++ b/presentation/src/main/res/layout/compose_activity.xml @@ -17,7 +17,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - - - - - - - - + - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/conversation_info_activity.xml b/presentation/src/main/res/layout/conversation_info_activity.xml index 38d50203..a85d3870 100644 --- a/presentation/src/main/res/layout/conversation_info_activity.xml +++ b/presentation/src/main/res/layout/conversation_info_activity.xml @@ -17,7 +17,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - - @@ -111,18 +111,18 @@ android:layout_marginTop="8dp" android:background="?android:attr/divider" /> - - + - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/conversation_list_item.xml b/presentation/src/main/res/layout/conversation_list_item.xml index 4e143580..75ec2e3a 100644 --- a/presentation/src/main/res/layout/conversation_list_item.xml +++ b/presentation/src/main/res/layout/conversation_list_item.xml @@ -17,7 +17,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/conversation_recipient_list_item.xml b/presentation/src/main/res/layout/conversation_recipient_list_item.xml index b178a62e..374cf04b 100644 --- a/presentation/src/main/res/layout/conversation_recipient_list_item.xml +++ b/presentation/src/main/res/layout/conversation_recipient_list_item.xml @@ -17,7 +17,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/drawer_view.xml b/presentation/src/main/res/layout/drawer_view.xml index 44d97ce9..d134c61d 100644 --- a/presentation/src/main/res/layout/drawer_view.xml +++ b/presentation/src/main/res/layout/drawer_view.xml @@ -141,7 +141,7 @@ android:layout_height="0dp" android:layout_weight="1" /> - - + \ No newline at end of file diff --git a/presentation/src/main/res/layout/gallery_activity.xml b/presentation/src/main/res/layout/gallery_activity.xml index edaccf7a..a7f3f5e9 100644 --- a/presentation/src/main/res/layout/gallery_activity.xml +++ b/presentation/src/main/res/layout/gallery_activity.xml @@ -35,7 +35,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> - - + \ No newline at end of file diff --git a/presentation/src/main/res/layout/main_activity.xml b/presentation/src/main/res/layout/main_activity.xml index 54ab8df2..cea0a849 100644 --- a/presentation/src/main/res/layout/main_activity.xml +++ b/presentation/src/main/res/layout/main_activity.xml @@ -17,19 +17,19 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - - - + - - - - - - + - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/message_list_item_in.xml b/presentation/src/main/res/layout/message_list_item_in.xml index 57bdfa68..a455b5d5 100644 --- a/presentation/src/main/res/layout/message_list_item_in.xml +++ b/presentation/src/main/res/layout/message_list_item_in.xml @@ -17,7 +17,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/message_list_item_out.xml b/presentation/src/main/res/layout/message_list_item_out.xml index cae899f3..122da3cb 100644 --- a/presentation/src/main/res/layout/message_list_item_out.xml +++ b/presentation/src/main/res/layout/message_list_item_out.xml @@ -17,7 +17,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/mms_vcard_list_item.xml b/presentation/src/main/res/layout/mms_vcard_list_item.xml index d9bcd5ad..1695ad30 100644 --- a/presentation/src/main/res/layout/mms_vcard_list_item.xml +++ b/presentation/src/main/res/layout/mms_vcard_list_item.xml @@ -17,7 +17,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/notification_prefs_activity.xml b/presentation/src/main/res/layout/notification_prefs_activity.xml index ecc39dd6..6a06da46 100644 --- a/presentation/src/main/res/layout/notification_prefs_activity.xml +++ b/presentation/src/main/res/layout/notification_prefs_activity.xml @@ -16,14 +16,14 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - @@ -33,7 +33,7 @@ style="@style/ToolbarText" tools:text="Notifications" /> - + - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/qkreply_activity.xml b/presentation/src/main/res/layout/qkreply_activity.xml index 138b5d1d..c61f41eb 100644 --- a/presentation/src/main/res/layout/qkreply_activity.xml +++ b/presentation/src/main/res/layout/qkreply_activity.xml @@ -16,7 +16,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - - - + - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/qksms_plus_activity.xml b/presentation/src/main/res/layout/qksms_plus_activity.xml index b4becc78..9b41c4f6 100644 --- a/presentation/src/main/res/layout/qksms_plus_activity.xml +++ b/presentation/src/main/res/layout/qksms_plus_activity.xml @@ -17,18 +17,18 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - - - - + - + - @@ -102,7 +102,7 @@ - - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/search_list_item.xml b/presentation/src/main/res/layout/search_list_item.xml index fae6eb50..407c06a5 100644 --- a/presentation/src/main/res/layout/search_list_item.xml +++ b/presentation/src/main/res/layout/search_list_item.xml @@ -16,7 +16,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/settings_activity.xml b/presentation/src/main/res/layout/settings_activity.xml index e6cea7f3..331809b2 100644 --- a/presentation/src/main/res/layout/settings_activity.xml +++ b/presentation/src/main/res/layout/settings_activity.xml @@ -16,7 +16,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - - - + - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/theme_picker_activity.xml b/presentation/src/main/res/layout/theme_picker_activity.xml index 0c1c73cf..dedd3ec9 100644 --- a/presentation/src/main/res/layout/theme_picker_activity.xml +++ b/presentation/src/main/res/layout/theme_picker_activity.xml @@ -40,12 +40,12 @@ android:layout_height="0dp" android:layout_weight="1"> - - @@ -56,7 +56,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> - + - - - \ No newline at end of file + \ No newline at end of file diff --git a/presentation/src/main/res/layout/toolbar.xml b/presentation/src/main/res/layout/toolbar.xml index e218b030..3d34c56d 100644 --- a/presentation/src/main/res/layout/toolbar.xml +++ b/presentation/src/main/res/layout/toolbar.xml @@ -17,7 +17,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with QKSMS. If not, see . --> - @@ -27,4 +27,4 @@ style="@style/ToolbarText" tools:text="Conversations" /> - \ No newline at end of file + \ No newline at end of file