From fc7b02d9870260ae344c01e28b71b5ca40444e45 Mon Sep 17 00:00:00 2001 From: Konrad Pozniak Date: Tue, 1 Sep 2020 16:49:30 +0200 Subject: [PATCH] use current user's avatar as drawer toggle (#1919) * use current user's avatar as drawer toggle * avoid hardcoded 36dp * remove unused import --- .../com/keylesspalace/tusky/MainActivity.kt | 46 +++++++++++-------- app/src/main/res/values/dimens.xml | 2 + 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt index 32222251d..9ba9119d4 100644 --- a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt @@ -19,7 +19,6 @@ import android.content.Context import android.content.DialogInterface import android.content.Intent import android.content.res.ColorStateList -import android.content.res.Configuration import android.graphics.Color import android.graphics.drawable.Drawable import android.net.Uri @@ -29,7 +28,6 @@ import android.view.KeyEvent import android.view.MenuItem import android.view.View import android.widget.ImageView -import androidx.appcompat.app.ActionBarDrawerToggle import androidx.appcompat.app.AlertDialog import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.content.ContextCompat @@ -40,6 +38,10 @@ import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.viewpager2.widget.MarginPageTransformer import com.bumptech.glide.Glide +import com.bumptech.glide.load.resource.bitmap.RoundedCorners +import com.bumptech.glide.request.target.CustomTarget +import com.bumptech.glide.request.target.FixedSizeDrawable +import com.bumptech.glide.request.transition.Transition import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout.OnTabSelectedListener @@ -91,7 +93,6 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje lateinit var conversationRepository: ConversationsRepository private lateinit var header: AccountHeaderView - private lateinit var drawerToggle: ActionBarDrawerToggle private var notificationTabPosition = 0 private var onTabSelectedListener: OnTabSelectedListener? = null @@ -169,6 +170,9 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje val hideTopToolbar = preferences.getBoolean(PrefKeys.HIDE_TOP_TOOLBAR, false) mainToolbar.visible(!hideTopToolbar) + val navIconSize = resources.getDimensionPixelSize(R.dimen.avatar_toolbar_nav_icon_size) + mainToolbar.navigationIcon = FixedSizeDrawable(getDrawable(R.drawable.avatar_default), navIconSize, navIconSize) + mainToolbar.menu.add(R.string.action_search).apply { setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM) icon = IconicsDrawable(this@MainActivity, GoogleMaterial.Icon.gmd_search).apply { @@ -261,8 +265,6 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje public override fun onPostCreate(savedInstanceState: Bundle?) { super.onPostCreate(savedInstanceState) - drawerToggle.syncState() - if (intent != null) { val statusUrl = intent.getStringExtra(STATUS_URL) if (statusUrl != null) { @@ -288,7 +290,9 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje private fun setupDrawer(savedInstanceState: Bundle?, addSearchButton: Boolean) { - drawerToggle = ActionBarDrawerToggle(this, mainDrawerLayout, mainToolbar, com.mikepenz.materialdrawer.R.string.material_drawer_open, com.mikepenz.materialdrawer.R.string.material_drawer_close) + mainToolbar.setNavigationOnClickListener { + mainDrawerLayout.open() + } header = AccountHeaderView(this).apply { headerBackgroundScaleType = ImageView.ScaleType.CENTER_CROP @@ -446,18 +450,6 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje EmojiCompat.get().registerInitCallback(emojiInitCallback) } - override fun onConfigurationChanged(newConfig: Configuration) { - super.onConfigurationChanged(newConfig) - drawerToggle.onConfigurationChanged(newConfig) - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - if (drawerToggle.onOptionsItemSelected(item)) { - return true - } - return super.onOptionsItemSelected(item) - } - override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(mainDrawer.saveInstanceState(outState)) } @@ -619,6 +611,24 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje .load(me.header) .into(header.accountHeaderBackground) + val navIconSize = resources.getDimensionPixelSize(R.dimen.avatar_toolbar_nav_icon_size) + + Glide.with(this) + .asDrawable() + .override(navIconSize) + .load(me.avatar) + .transform( + RoundedCorners(resources.getDimensionPixelSize(R.dimen.avatar_radius_36dp)) + ) + .into(object : CustomTarget(){ + override fun onResourceReady(resource: Drawable, transition: Transition?) { + mainToolbar.navigationIcon = resource + } + override fun onLoadCleared(placeholder: Drawable?) { + mainToolbar.navigationIcon = placeholder + } + }) + accountManager.updateActiveAccount(me) NotificationHelper.createNotificationChannelsForAccount(accountManager.activeAccount!!, this) diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 243b10bc0..dd4f599ca 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -50,4 +50,6 @@ 108dp 16dp + + 36dp