From f2b5b0d646a649c437312b4378bc5d5160b3c511 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Sun, 3 May 2020 04:05:38 +0300 Subject: [PATCH] Cherry-picked 2cf1e366. --- app/build.gradle | 20 +-- .../keylesspalace/tusky/AccountActivity.kt | 2 +- .../tusky/EditProfileActivity.kt | 18 +-- .../com/keylesspalace/tusky/ListsActivity.kt | 8 +- .../tusky/adapter/NotificationsAdapter.java | 5 +- .../tusky/adapter/StatusBaseViewHolder.java | 4 +- .../components/compose/ComposeActivity.kt | 15 +-- .../components/compose/view/TootButton.kt | 6 +- .../tusky/components/search/SearchActivity.kt | 1 - .../components/search/SearchViewModel.kt | 6 +- .../fragments/SearchStatusesFragment.kt | 1 + .../preference/AccountPreferencesFragment.kt | 10 +- .../preference/PreferencesFragment.kt | 14 +-- .../tusky/util/CustomEmojiHelper.java | 5 +- .../tusky/util/ViewDataUtils.java | 1 - .../tusky/view/BezelImageView.java | 2 - app/src/main/res/layout/activity_main.xml | 104 +++++++++------- .../res/layout/material_drawer_header.xml | 115 ++++++++++++++---- .../main/res/values-night/theme_colors.xml | 2 + app/src/main/res/values/colors.xml | 4 +- app/src/main/res/values/styles.xml | 28 +++-- app/src/main/res/values/theme_colors.xml | 2 + .../com/keylesspalace/tusky/FilterTest.kt | 2 +- 23 files changed, 240 insertions(+), 135 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8853c836..d539414c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,7 +22,7 @@ def buildnum = { android { compileSdkVersion 29 - //ndkVersion "20.1.5948944" + ndkVersion "20.1.5948944" defaultConfig { applicationId APP_ID minSdkVersion 21 @@ -108,11 +108,12 @@ project.tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { } ext.lifecycleVersion = "2.2.0" -ext.roomVersion = '2.2.4' -ext.retrofitVersion = '2.7.1' -ext.okhttpVersion = '4.3.1' -ext.glideVersion = '4.10.0' -ext.daggerVersion = '2.26' +ext.roomVersion = '2.2.5' +ext.retrofitVersion = '2.8.1' +ext.okhttpVersion = '4.4.0' +ext.glideVersion = '4.11.0' +ext.daggerVersion = '2.27' +ext.materialdrawerVersion = '8.0.1' // if libraries are changed here, they should also be changed in LicenseActivity dependencies { @@ -174,10 +175,9 @@ dependencies { implementation "com.github.chrisbanes:PhotoView:2.3.0" - implementation("com.mikepenz:materialdrawer:6.1.2@aar") { - transitive = true - } - implementation "com.mikepenz:google-material-typeface:3.0.1.3.original@aar" + implementation "com.mikepenz:materialdrawer:$materialdrawerVersion" + implementation "com.mikepenz:materialdrawer-iconics:$materialdrawerVersion" + implementation 'com.mikepenz:google-material-typeface:3.0.1.4.original-kotlin@aar' implementation "com.theartofdev.edmodo:android-image-cropper:2.8.0" diff --git a/app/src/main/java/com/keylesspalace/tusky/AccountActivity.kt b/app/src/main/java/com/keylesspalace/tusky/AccountActivity.kt index a4903c61..2dc528bf 100644 --- a/app/src/main/java/com/keylesspalace/tusky/AccountActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/AccountActivity.kt @@ -141,7 +141,7 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidI */ private fun loadResources() { toolbarColor = ThemeUtils.getColor(this, R.attr.colorSurface) - statusBarColorTransparent = ContextCompat.getColor(this, R.color.header_background_filter) + statusBarColorTransparent = ContextCompat.getColor(this, R.color.transparent_statusbar_background) statusBarColorOpaque = ThemeUtils.getColor(this, R.attr.colorPrimaryDark) avatarSize = resources.getDimension(R.dimen.account_activity_avatar_size) titleVisibleHeight = resources.getDimensionPixelSize(R.dimen.account_activity_scroll_title_visible_height) diff --git a/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.kt b/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.kt index 58da33df..22d25f09 100644 --- a/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.kt @@ -17,26 +17,26 @@ package com.keylesspalace.tusky import android.Manifest import android.app.Activity -import androidx.lifecycle.LiveData -import androidx.lifecycle.Observer import android.content.Intent import android.content.pm.PackageManager import android.graphics.Bitmap import android.graphics.Color import android.net.Uri import android.os.Bundle -import com.google.android.material.snackbar.Snackbar -import androidx.core.app.ActivityCompat -import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import android.view.Menu import android.view.MenuItem import android.view.View import android.widget.ImageView import androidx.activity.viewModels +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat +import androidx.lifecycle.LiveData +import androidx.lifecycle.Observer +import androidx.recyclerview.widget.LinearLayoutManager import com.bumptech.glide.Glide import com.bumptech.glide.load.resource.bitmap.FitCenter import com.bumptech.glide.load.resource.bitmap.RoundedCorners +import com.google.android.material.snackbar.Snackbar import com.keylesspalace.tusky.adapter.AccountFieldEditAdapter import com.keylesspalace.tusky.di.Injectable import com.keylesspalace.tusky.di.ViewModelFactory @@ -44,8 +44,10 @@ import com.keylesspalace.tusky.entity.Account import com.keylesspalace.tusky.entity.Instance import com.keylesspalace.tusky.util.* import com.keylesspalace.tusky.viewmodel.EditProfileViewModel -import com.mikepenz.google_material_typeface_library.GoogleMaterial import com.mikepenz.iconics.IconicsDrawable +import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial +import com.mikepenz.iconics.utils.colorInt +import com.mikepenz.iconics.utils.sizeDp import com.theartofdev.edmodo.cropper.CropImage import kotlinx.android.synthetic.main.activity_edit_profile.* import kotlinx.android.synthetic.main.toolbar_basic.* @@ -103,7 +105,7 @@ class EditProfileActivity : BaseActivity(), Injectable { fieldList.layoutManager = LinearLayoutManager(this) fieldList.adapter = accountFieldEditAdapter - val plusDrawable = IconicsDrawable(this, GoogleMaterial.Icon.gmd_add).sizeDp(12).color(Color.WHITE) + val plusDrawable = IconicsDrawable(this, GoogleMaterial.Icon.gmd_add).apply { sizeDp = 12; colorInt = Color.WHITE } addFieldButton.setCompoundDrawablesRelativeWithIntrinsicBounds(plusDrawable, null, null, null) diff --git a/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt b/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt index 54aca897..73ffc106 100644 --- a/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt @@ -39,8 +39,12 @@ import com.keylesspalace.tusky.util.* import com.keylesspalace.tusky.viewmodel.ListsViewModel import com.keylesspalace.tusky.viewmodel.ListsViewModel.Event.* import com.keylesspalace.tusky.viewmodel.ListsViewModel.LoadingState.* -import com.mikepenz.google_material_typeface_library.GoogleMaterial import com.mikepenz.iconics.IconicsDrawable +import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial +import com.mikepenz.iconics.utils.color +import com.mikepenz.iconics.utils.colorInt +import com.mikepenz.iconics.utils.sizeDp +import com.mikepenz.iconics.utils.toIconicsColor import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider.from import com.uber.autodispose.autoDispose import dagger.android.DispatchingAndroidInjector @@ -235,7 +239,7 @@ class ListsActivity : BaseActivity(), Injectable, HasAndroidInjector { .apply { val context = nameTextView.context val iconColor = ThemeUtils.getColor(context, android.R.attr.textColorTertiary) - val icon = IconicsDrawable(context, GoogleMaterial.Icon.gmd_list).sizeDp(20).color(iconColor) + val icon = IconicsDrawable(context, GoogleMaterial.Icon.gmd_list).apply { sizeDp = 20; colorInt = iconColor } nameTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(icon, null, null, null) } diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java b/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java index 8d4b4227..639b1406 100644 --- a/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java +++ b/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java @@ -54,13 +54,14 @@ import com.keylesspalace.tusky.util.StatusDisplayOptions; import com.keylesspalace.tusky.util.TimestampUtils; import com.keylesspalace.tusky.viewdata.NotificationViewData; import com.keylesspalace.tusky.viewdata.StatusViewData; -import com.mikepenz.iconics.utils.Utils; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Locale; +import at.connyduck.sparkbutton.helpers.Utils; + public class NotificationsAdapter extends RecyclerView.Adapter { public interface AdapterDataSource { @@ -146,7 +147,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter { view.setLayoutParams( new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, - Utils.convertDpToPx(parent.getContext(), 24) + Utils.dpToPx(parent.getContext(), 24) ) ); return new RecyclerView.ViewHolder(view) { diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java index 69818f09..746b1e84 100644 --- a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java +++ b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java @@ -55,7 +55,6 @@ import com.keylesspalace.tusky.viewdata.PollOptionViewData; import com.keylesspalace.tusky.viewdata.PollViewData; import com.keylesspalace.tusky.viewdata.PollViewDataKt; import com.keylesspalace.tusky.viewdata.StatusViewData; -import com.mikepenz.iconics.utils.Utils; import java.text.NumberFormat; import java.text.SimpleDateFormat; @@ -65,6 +64,7 @@ import java.util.Locale; import java.util.Objects; import at.connyduck.sparkbutton.SparkButton; +import at.connyduck.sparkbutton.helpers.Utils; import kotlin.collections.CollectionsKt; import static com.keylesspalace.tusky.viewdata.PollViewDataKt.buildDescription; @@ -315,7 +315,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder { avatarRadius = avatarRadius48dp; } else { - int padding = Utils.convertDpToPx(avatar.getContext(), 12); + int padding = Utils.dpToPx(avatar.getContext(), 12); avatar.setPaddingRelative(0, 0, padding, padding); avatarInset.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt index bf3d1155..c6638f87 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt @@ -67,7 +67,6 @@ import com.keylesspalace.tusky.adapter.OnEmojiSelectedListener import com.keylesspalace.tusky.components.compose.dialog.makeCaptionDialog import com.keylesspalace.tusky.components.compose.dialog.showAddPollDialog import com.keylesspalace.tusky.components.compose.view.ComposeOptionsListener -import com.keylesspalace.tusky.components.compose.view.ComposeScheduleView import com.keylesspalace.tusky.db.AccountEntity import com.keylesspalace.tusky.di.Injectable import com.keylesspalace.tusky.di.ViewModelFactory @@ -76,8 +75,10 @@ import com.keylesspalace.tusky.entity.Emoji import com.keylesspalace.tusky.entity.NewPoll import com.keylesspalace.tusky.entity.Status import com.keylesspalace.tusky.util.* -import com.mikepenz.google_material_typeface_library.GoogleMaterial import com.mikepenz.iconics.IconicsDrawable +import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial +import com.mikepenz.iconics.utils.colorInt +import com.mikepenz.iconics.utils.sizeDp import kotlinx.android.parcel.Parcelize import kotlinx.android.synthetic.main.activity_compose.* import java.io.File @@ -271,7 +272,7 @@ class ComposeActivity : BaseActivity(), if (replyingStatusAuthor != null) { composeReplyView.show() composeReplyView.text = getString(R.string.replying_to, replyingStatusAuthor) - val arrowDownIcon = IconicsDrawable(this, GoogleMaterial.Icon.gmd_arrow_drop_down).sizeDp(12) + val arrowDownIcon = IconicsDrawable(this, GoogleMaterial.Icon.gmd_arrow_drop_down).apply { sizeDp = 12 } ThemeUtils.setDrawableTint(this, arrowDownIcon, android.R.attr.textColorTertiary) composeReplyView.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, arrowDownIcon, null) @@ -284,7 +285,7 @@ class ComposeActivity : BaseActivity(), composeReplyView.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, arrowDownIcon, null) } else { composeReplyContentView.show() - val arrowUpIcon = IconicsDrawable(this, GoogleMaterial.Icon.gmd_arrow_drop_up).sizeDp(12) + val arrowUpIcon = IconicsDrawable(this, GoogleMaterial.Icon.gmd_arrow_drop_up).apply { sizeDp = 12 } ThemeUtils.setDrawableTint(this, arrowUpIcon, android.R.attr.textColorTertiary) composeReplyView.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, arrowUpIcon, null) @@ -452,13 +453,13 @@ class ComposeActivity : BaseActivity(), val textColor = ThemeUtils.getColor(this, android.R.attr.textColorTertiary) - val cameraIcon = IconicsDrawable(this, GoogleMaterial.Icon.gmd_camera_alt).color(textColor).sizeDp(18) + val cameraIcon = IconicsDrawable(this, GoogleMaterial.Icon.gmd_camera_alt).apply { colorInt = textColor; sizeDp = 18 } actionPhotoTake.setCompoundDrawablesRelativeWithIntrinsicBounds(cameraIcon, null, null, null) - val imageIcon = IconicsDrawable(this, GoogleMaterial.Icon.gmd_image).color(textColor).sizeDp(18) + val imageIcon = IconicsDrawable(this, GoogleMaterial.Icon.gmd_image).apply { colorInt = textColor; sizeDp = 18 } actionPhotoPick.setCompoundDrawablesRelativeWithIntrinsicBounds(imageIcon, null, null, null) - val pollIcon = IconicsDrawable(this, GoogleMaterial.Icon.gmd_poll).color(textColor).sizeDp(18) + val pollIcon = IconicsDrawable(this, GoogleMaterial.Icon.gmd_poll).apply { colorInt = textColor; sizeDp = 18 } addPollTextActionTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(pollIcon, null, null, null) actionPhotoTake.setOnClickListener { initiateCameraApp() } diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/TootButton.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/TootButton.kt index c641f345..f7ba7ee6 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/TootButton.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/TootButton.kt @@ -21,8 +21,10 @@ import android.util.AttributeSet import com.google.android.material.button.MaterialButton import com.keylesspalace.tusky.R import com.keylesspalace.tusky.entity.Status -import com.mikepenz.google_material_typeface_library.GoogleMaterial import com.mikepenz.iconics.IconicsDrawable +import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial +import com.mikepenz.iconics.utils.colorInt +import com.mikepenz.iconics.utils.sizeDp class TootButton @JvmOverloads constructor( @@ -59,7 +61,7 @@ class TootButton Status.Visibility.PRIVATE, Status.Visibility.DIRECT -> { setText(R.string.action_send) - IconicsDrawable(context, GoogleMaterial.Icon.gmd_lock).sizeDp(18).color(Color.WHITE) + IconicsDrawable(context, GoogleMaterial.Icon.gmd_lock).apply { sizeDp = 18; colorInt = Color.WHITE } } else -> { null diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/SearchActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/SearchActivity.kt index db31e49f..8b8d1ef4 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/search/SearchActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/search/SearchActivity.kt @@ -121,7 +121,6 @@ class SearchActivity : BottomSheetActivity(), HasAndroidInjector { override fun androidInjector() = androidInjector companion object { - @JvmStatic fun getIntent(context: Context) = Intent(context, SearchActivity::class.java) } } diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/SearchViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/SearchViewModel.kt index 02825b17..cf87fab1 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/search/SearchViewModel.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/search/SearchViewModel.kt @@ -196,6 +196,10 @@ class SearchViewModel @Inject constructor( fun muteAccount(accountId: String) { timelineCases.mute(accountId) } + + fun muteConversation(status: Status, isMute: Boolean) { + timelineCases.muteStatus(status, isMute) + } fun pinAccount(status: Status, isPin: Boolean) { timelineCases.pin(status, isPin) @@ -217,4 +221,4 @@ class SearchViewModel @Inject constructor( companion object { private const val TAG = "SearchViewModel" } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt index 52939029..b8d59bf8 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt @@ -49,6 +49,7 @@ import com.keylesspalace.tusky.components.search.adapter.SearchStatusesAdapter import com.keylesspalace.tusky.db.AccountEntity import com.keylesspalace.tusky.entity.Attachment import com.keylesspalace.tusky.entity.Status +import com.keylesspalace.tusky.entity.Status.Mention import com.keylesspalace.tusky.interfaces.AccountSelectionListener import com.keylesspalace.tusky.interfaces.StatusActionListener import com.keylesspalace.tusky.util.CardViewMode diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/preference/AccountPreferencesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/fragment/preference/AccountPreferencesFragment.kt index c87d146f..574c32b0 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/preference/AccountPreferencesFragment.kt +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/preference/AccountPreferencesFragment.kt @@ -36,8 +36,10 @@ import com.keylesspalace.tusky.entity.Status import com.keylesspalace.tusky.network.MastodonApi import com.keylesspalace.tusky.util.ThemeUtils import com.keylesspalace.tusky.util.NotificationHelper -import com.mikepenz.google_material_typeface_library.GoogleMaterial import com.mikepenz.iconics.IconicsDrawable +import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial +import com.mikepenz.iconics.utils.colorInt +import com.mikepenz.iconics.utils.sizeRes import retrofit2.Call import retrofit2.Callback import retrofit2.Response @@ -74,8 +76,6 @@ class AccountPreferencesFragment : PreferenceFragmentCompat(), private lateinit var publicFiltersPreference: Preference private lateinit var threadFiltersPreference: Preference - private val iconSize by lazy { resources.getDimensionPixelSize(R.dimen.preference_icon_size) } - override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResource(R.xml.account_preferences) @@ -95,9 +95,9 @@ class AccountPreferencesFragment : PreferenceFragmentCompat(), publicFiltersPreference = requirePreference("publicFilters") threadFiltersPreference = requirePreference("threadFilters") - notificationPreference.icon = IconicsDrawable(notificationPreference.context, GoogleMaterial.Icon.gmd_notifications).sizePx(iconSize).color(ThemeUtils.getColor(notificationPreference.context, R.attr.iconColor)) + notificationPreference.icon = IconicsDrawable(notificationPreference.context, GoogleMaterial.Icon.gmd_notifications).apply { sizeRes = R.dimen.preference_icon_size; colorInt = ThemeUtils.getColor(notificationPreference.context, R.attr.iconColor) } mutedUsersPreference.icon = getTintedIcon(R.drawable.ic_mute_24dp) - blockedUsersPreference.icon = IconicsDrawable(blockedUsersPreference.context, GoogleMaterial.Icon.gmd_block).sizePx(iconSize).color(ThemeUtils.getColor(blockedUsersPreference.context, R.attr.iconColor)) + blockedUsersPreference.icon = IconicsDrawable(blockedUsersPreference.context, GoogleMaterial.Icon.gmd_block).apply { sizeRes = R.dimen.preference_icon_size; colorInt = ThemeUtils.getColor(blockedUsersPreference.context, R.attr.iconColor) } mutedDomainsPreference.icon = getTintedIcon(R.drawable.ic_mute_24dp) notificationPreference.onPreferenceClickListener = this diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/preference/PreferencesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/fragment/preference/PreferencesFragment.kt index d7550103..825275a1 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/preference/PreferencesFragment.kt +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/preference/PreferencesFragment.kt @@ -22,8 +22,10 @@ import com.keylesspalace.tusky.PreferencesActivity import com.keylesspalace.tusky.R import com.keylesspalace.tusky.util.ThemeUtils import com.keylesspalace.tusky.util.getNonNullString -import com.mikepenz.google_material_typeface_library.GoogleMaterial import com.mikepenz.iconics.IconicsDrawable +import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial +import com.mikepenz.iconics.utils.colorInt +import com.mikepenz.iconics.utils.sizeRes fun PreferenceFragmentCompat.requirePreference(key: String): Preference { return findPreference(key)!! @@ -31,20 +33,18 @@ fun PreferenceFragmentCompat.requirePreference(key: String): Preference { class PreferencesFragment : PreferenceFragmentCompat() { - private val iconSize by lazy {resources.getDimensionPixelSize(R.dimen.preference_icon_size)} - override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResource(R.xml.preferences) val themePreference: Preference = requirePreference("appTheme") - themePreference.icon = IconicsDrawable(themePreference.context, GoogleMaterial.Icon.gmd_palette).sizePx(iconSize).color(ThemeUtils.getColor(themePreference.context, R.attr.iconColor)) + themePreference.icon = IconicsDrawable(themePreference.context, GoogleMaterial.Icon.gmd_palette).apply { sizeRes = R.dimen.preference_icon_size; colorInt = ThemeUtils.getColor(themePreference.context, R.attr.iconColor) } val emojiPreference: Preference = requirePreference("emojiCompat") - emojiPreference.icon = IconicsDrawable(emojiPreference.context, GoogleMaterial.Icon.gmd_sentiment_satisfied).sizePx(iconSize).color(ThemeUtils.getColor(emojiPreference.context, R.attr.iconColor)) + emojiPreference.icon = IconicsDrawable(emojiPreference.context, GoogleMaterial.Icon.gmd_sentiment_satisfied).apply { sizeRes = R.dimen.preference_icon_size; colorInt = ThemeUtils.getColor(themePreference.context, R.attr.iconColor) } val textSizePreference: Preference = requirePreference("statusTextSize") - textSizePreference.icon = IconicsDrawable(textSizePreference.context, GoogleMaterial.Icon.gmd_format_size).sizePx(iconSize).color(ThemeUtils.getColor(textSizePreference.context, R.attr.iconColor)) + textSizePreference.icon = IconicsDrawable(textSizePreference.context, GoogleMaterial.Icon.gmd_format_size).apply { sizeRes = R.dimen.preference_icon_size; colorInt = ThemeUtils.getColor(themePreference.context, R.attr.iconColor) } val timelineFilterPreferences: Preference = requirePreference("timelineFilterPreferences") timelineFilterPreferences.setOnPreferenceClickListener { @@ -67,7 +67,7 @@ class PreferencesFragment : PreferenceFragmentCompat() { } val languagePreference: Preference = requirePreference("language") - languagePreference.icon = IconicsDrawable(languagePreference.context, GoogleMaterial.Icon.gmd_translate).sizePx(iconSize).color(ThemeUtils.getColor(languagePreference.context, R.attr.iconColor)) + languagePreference.icon = IconicsDrawable(languagePreference.context, GoogleMaterial.Icon.gmd_translate).apply { sizeRes = R.dimen.preference_icon_size; colorInt = ThemeUtils.getColor(themePreference.context, R.attr.iconColor) } val botIndicatorPreference = requirePreference("showBotOverlay") diff --git a/app/src/main/java/com/keylesspalace/tusky/util/CustomEmojiHelper.java b/app/src/main/java/com/keylesspalace/tusky/util/CustomEmojiHelper.java index 4b47ab42..4b4db640 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/CustomEmojiHelper.java +++ b/app/src/main/java/com/keylesspalace/tusky/util/CustomEmojiHelper.java @@ -49,6 +49,7 @@ public class CustomEmojiHelper { * @param view a reference to the a view the emojis will be shown in (should be the TextView, but parents of the TextView are also acceptable) * @return the text with the shortcodes replaced by EmojiSpans */ + @NonNull public static Spanned emojifyText(@NonNull Spanned text, @Nullable List emojis, @NonNull final View view) { if (emojis != null && !emojis.isEmpty()) { @@ -75,6 +76,7 @@ public class CustomEmojiHelper { return text; } + @NonNull public static Spanned emojifyString(@NonNull String string, @Nullable List emojis, @NonNull final View ciew) { return emojifyText(new SpannedString(string), emojis, ciew); } @@ -82,7 +84,8 @@ public class CustomEmojiHelper { public static class EmojiSpan extends ReplacementSpan { - private @Nullable Drawable imageDrawable; + @Nullable + private Drawable imageDrawable; private WeakReference viewWeakReference; EmojiSpan(View view) { diff --git a/app/src/main/java/com/keylesspalace/tusky/util/ViewDataUtils.java b/app/src/main/java/com/keylesspalace/tusky/util/ViewDataUtils.java index 174c874a..6733f552 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/ViewDataUtils.java +++ b/app/src/main/java/com/keylesspalace/tusky/util/ViewDataUtils.java @@ -86,7 +86,6 @@ public final class ViewDataUtils { alwaysOpenSpoiler ), notification.getEmoji() - ) ); } } diff --git a/app/src/main/java/com/keylesspalace/tusky/view/BezelImageView.java b/app/src/main/java/com/keylesspalace/tusky/view/BezelImageView.java index af1ac1cc..c31b37e7 100644 --- a/app/src/main/java/com/keylesspalace/tusky/view/BezelImageView.java +++ b/app/src/main/java/com/keylesspalace/tusky/view/BezelImageView.java @@ -21,7 +21,6 @@ import android.util.AttributeSet; import android.view.View; import android.view.ViewOutlineProvider; - /** * override BezelImageView from MaterialDrawer library to provide custom outline */ @@ -39,7 +38,6 @@ public class BezelImageView extends com.mikepenz.materialdrawer.view.BezelImageV super(context, attrs, defStyle); } - @Override protected void onSizeChanged(int w, int h, int old_w, int old_h) { setOutlineProvider(new CustomOutline(w, h)); diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 4ea46117..168e41b7 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,57 +1,71 @@ - + android:fitsSystemWindows="true"> - - - - - - - - - - - + tools:context="com.keylesspalace.tusky.MainActivity"> - + + + + + + + + + + + + + + + + + + + android:layout_height="match_parent" + android:layout_gravity="start" + android:fitsSystemWindows="true" /> - + - diff --git a/app/src/main/res/layout/material_drawer_header.xml b/app/src/main/res/layout/material_drawer_header.xml index 070409ff..2b6d3b88 100644 --- a/app/src/main/res/layout/material_drawer_header.xml +++ b/app/src/main/res/layout/material_drawer_header.xml @@ -1,10 +1,12 @@ - - + + android:clickable="true" + tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"> + app:layout_constraintTop_toBottomOf="@+id/material_drawer_statusbar_guideline" + app:materialDrawerMaskDrawable="@drawable/materialdrawer_shape_large" /> + + + + + + + + - + diff --git a/app/src/main/res/values-night/theme_colors.xml b/app/src/main/res/values-night/theme_colors.xml index f30787f6..3e4d032c 100644 --- a/app/src/main/res/values-night/theme_colors.xml +++ b/app/src/main/res/values-night/theme_colors.xml @@ -19,6 +19,8 @@ @color/tusky_orange + @color/header_background_filter_dark + false \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 7f777269..e94159b2 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -27,7 +27,9 @@ #8c2b90d9 #8f000000 - #44000000 + #44000000 + #66FFFFFF + #44000000 #121419 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 2e89c601..e9214e55 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -67,14 +67,8 @@ @color/textColorDisabled - @color/colorBackground - @color/textColorSecondary - @color/iconColor - @color/textColorTertiary - @color/textColorTertiary - ?attr/dividerColor - @color/white - @color/white + @style/TuskyDrawerStyle + @style/TuskyDrawerHeaderStyle @style/TuskyDialog @style/TuskyButton.TextButton @@ -141,17 +135,27 @@ @color/tusky_grey_40 @color/tusky_grey_40 - @color/black - @color/tusky_grey_80 @color/tusky_grey_40 + + + diff --git a/app/src/main/res/values/theme_colors.xml b/app/src/main/res/values/theme_colors.xml index df8dfc0d..b0e77046 100644 --- a/app/src/main/res/values/theme_colors.xml +++ b/app/src/main/res/values/theme_colors.xml @@ -19,6 +19,8 @@ @color/tusky_orange_light + @color/header_background_filter_light + true \ No newline at end of file diff --git a/app/src/test/java/com/keylesspalace/tusky/FilterTest.kt b/app/src/test/java/com/keylesspalace/tusky/FilterTest.kt index 965eda67..0332ca87 100644 --- a/app/src/test/java/com/keylesspalace/tusky/FilterTest.kt +++ b/app/src/test/java/com/keylesspalace/tusky/FilterTest.kt @@ -110,7 +110,7 @@ class FilterTest { activity.supportFragmentManager.beginTransaction() - .replace(R.id.activity_main, fragment, "fragment") + .replace(R.id.mainDrawerLayout, fragment, "fragment") .commit() fragment.reloadFilters(false)