Przeglądaj źródła

Tint a bunch of drawables and toolbars with new utils

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
Álvaro Brey 2 lat temu
rodzic
commit
efaad0a6da
18 zmienionych plików z 71 dodań i 65 usunięć
  1. 1 1
      app/build.gradle
  2. 3 2
      app/src/main/java/com/nextcloud/client/logger/ui/LogsActivity.kt
  3. 1 1
      app/src/main/java/com/owncloud/android/ui/AvatarGroupLayout.java
  4. 2 2
      app/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.kt
  5. 1 4
      app/src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java
  6. 3 6
      app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
  7. 3 3
      app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java
  8. 1 1
      app/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java
  9. 1 4
      app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt
  10. 2 3
      app/src/main/java/com/owncloud/android/ui/adapter/SyncedFolderAdapter.java
  11. 1 2
      app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java
  12. 1 0
      app/src/main/java/com/owncloud/android/ui/fragment/FeatureFragment.java
  13. 1 4
      app/src/main/java/com/owncloud/android/ui/fragment/UnifiedSearchFragment.kt
  14. 1 5
      app/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/BackupFragment.java
  15. 0 14
      app/src/main/java/com/owncloud/android/utils/theme/ThemeDrawableUtils.java
  16. 0 10
      app/src/main/java/com/owncloud/android/utils/theme/ThemeToolbarUtils.java
  17. 47 1
      app/src/main/java/com/owncloud/android/utils/theme/newm3/FilesSpecificViewThemeUtils.kt
  18. 2 2
      app/src/main/java/com/owncloud/android/utils/theme/newm3/ViewThemeUtils.kt

+ 1 - 1
app/build.gradle

@@ -355,7 +355,7 @@ dependencies {
     gplayImplementation "com.google.firebase:firebase-messaging:23.0.7"
 
     // TODO change back to tag before merging
-    implementation 'com.github.nextcloud.android-common:ui:b5bc27b552'
+    implementation 'com.github.nextcloud.android-common:ui:98fe013'
 }
 
 configurations.all {

+ 3 - 2
app/src/main/java/com/nextcloud/client/logger/ui/LogsActivity.kt

@@ -82,9 +82,10 @@ class LogsActivity : ToolbarActivity() {
 
         setupToolbar()
         supportActionBar?.setDisplayHomeAsUpEnabled(true)
-        supportActionBar?.apply { themeToolbarUtils.setColoredTitle(this, getString(R.string.logs_title), baseContext) }
 
-        themeToolbarUtils.tintBackButton(supportActionBar, baseContext)
+        supportActionBar?.let {
+            viewThemeUtils.files.themeActionBar(this, it, R.string.logs_title)
+        }
     }
 
     override fun onCreateOptionsMenu(menu: Menu): Boolean {

+ 1 - 1
app/src/main/java/com/owncloud/android/ui/AvatarGroupLayout.java

@@ -112,7 +112,7 @@ public class AvatarGroupLayout extends RelativeLayout implements DisplayUtils.Av
 
             if (avatarCount == 0 && sharees.size() > MAX_AVATAR_COUNT) {
                 avatar.setImageResource(R.drawable.ic_people);
-                themeDrawableUtils.setIconColor(avatar.getDrawable());
+                viewThemeUtils.platform.tintTextDrawable(context, avatar.getDrawable());
             } else {
                 sharee = sharees.get(avatarCount);
                 switch (sharee.getShareType()) {

+ 2 - 2
app/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.kt

@@ -342,8 +342,8 @@ open class FolderPickerActivity :
             val atRoot = currentDir == null || currentDir.parentId == 0L
             actionBar.setDisplayHomeAsUpEnabled(!atRoot)
             actionBar.setHomeButtonEnabled(!atRoot)
-            themeToolbarUtils.tintBackButton(actionBar, this)
-            themeToolbarUtils.setColoredTitle(supportActionBar, if (atRoot) caption else currentDir!!.fileName, this)
+            val title = if (atRoot) caption ?: "" else currentDir!!.fileName
+            viewThemeUtils.files.themeActionBar(this, actionBar, title)
         }
     }
 

+ 1 - 4
app/src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java

@@ -131,12 +131,9 @@ public class ManageAccountsActivity extends FileActivity implements UserListAdap
         if (actionBar != null) {
             actionBar.setDisplayHomeAsUpEnabled(true);
             actionBar.setDisplayShowHomeEnabled(true);
+            viewThemeUtils.files.themeActionBar(this, actionBar, R.string.prefs_manage_accounts);
         }
 
-        // set title Action bar
-        updateActionBarTitleAndHomeButtonByString(getResources().getString(R.string.prefs_manage_accounts));
-        themeToolbarUtils.tintBackButton(actionBar, this);
-
         List<User> users = accountManager.getAllUsers();
         originalUsers = toAccountNames(users);
 

+ 3 - 6
app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java

@@ -730,9 +730,9 @@ public class ReceiveExternalFilesActivity extends FileActivity
 
         if (actionBar != null) {
             if (TextUtils.isEmpty(current_dir)) {
-                themeToolbarUtils.setColoredTitle(actionBar, R.string.uploader_top_message, this);
+                viewThemeUtils.files.themeActionBar(this, actionBar, R.string.uploader_top_message);
             } else {
-                themeToolbarUtils.setColoredTitle(actionBar, current_dir, this);
+                viewThemeUtils.files.themeActionBar(this, actionBar, current_dir);
             }
 
             actionBar.setDisplayHomeAsUpEnabled(notRoot);
@@ -787,8 +787,6 @@ public class ReceiveExternalFilesActivity extends FileActivity
 
             viewThemeUtils.platform.themeStatusBar(this);
 
-            themeToolbarUtils.tintBackButton(actionBar, this);
-
             Button btnNewFolder = binding.uploaderCancel;
             btnNewFolder.setTextColor(themeColorUtils.primaryColor(this, true));
             btnNewFolder.setOnClickListener(this);
@@ -815,8 +813,7 @@ public class ReceiveExternalFilesActivity extends FileActivity
             if (mEmptyListContainer != null && mEmptyListMessage != null) {
                 mEmptyListHeadline.setText(headline);
                 mEmptyListMessage.setText(message);
-                mEmptyListIcon.setImageDrawable(
-                    themeDrawableUtils.tintDrawable(icon, themeColorUtils.primaryColor(this, true)));
+                mEmptyListIcon.setImageDrawable(viewThemeUtils.platform.tintPrimaryDrawable(this, icon));
                 mEmptyListIcon.setVisibility(View.VISIBLE);
                 mEmptyListMessage.setVisibility(View.VISIBLE);
             }

+ 3 - 3
app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java

@@ -221,7 +221,7 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
             actionBar.setDisplayHomeAsUpEnabled(mCurrentDir != null);
             actionBar.setDisplayShowTitleEnabled(false);
 
-            themeToolbarUtils.tintBackButton(actionBar, this);
+            viewThemeUtils.files.themeActionBar(this, actionBar);
         }
 
         showToolbarSpinner();
@@ -296,7 +296,7 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
         final MenuItem item = menu.findItem(R.id.action_search);
         mSearchView = (SearchView) MenuItemCompat.getActionView(item);
         themeToolbarUtils.themeSearchView(mSearchView, this);
-        themeDrawableUtils.tintDrawable(menu.findItem(R.id.action_choose_storage_path).getIcon(), fontColor);
+        viewThemeUtils.platform.tintTextDrawable(this, menu.findItem(R.id.action_choose_storage_path).getIcon());
 
         mSearchView.setOnSearchClickListener(v -> mToolbarSpinner.setVisibility(View.GONE));
 
@@ -464,7 +464,7 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
                 selectAll.setIcon(R.drawable.ic_select_none);
             } else {
                 selectAll.setIcon(
-                    themeDrawableUtils.tintDrawable(R.drawable.ic_select_all, themeColorUtils.primaryColor(this)));
+                    viewThemeUtils.platform.tintPrimaryDrawable(this, R.drawable.ic_select_all));
             }
             updateUploadButtonActive();
         }

+ 1 - 1
app/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java

@@ -134,7 +134,7 @@ public class UserInfoActivity extends DrawerActivity implements Injectable {
         if (actionBar != null) {
             actionBar.setDisplayHomeAsUpEnabled(true);
             actionBar.setDisplayShowHomeEnabled(true);
-            themeToolbarUtils.tintBackButton(actionBar, this);
+            viewThemeUtils.files.themeActionBar(this, actionBar);
         }
 
         binding.userinfoList.setAdapter(

+ 1 - 4
app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt

@@ -163,10 +163,7 @@ class OCFileListDelegate(
                     .getColor(R.color.selected_item_background)
             )
             gridViewHolder.checkbox.setImageDrawable(
-                themeDrawableUtils.tintDrawable(
-                    R.drawable.ic_checkbox_marked,
-                    themeColorUtils.primaryColor(context)
-                )
+                viewThemeUtils.platform.tintPrimaryDrawable(context, R.drawable.ic_checkbox_marked)
             )
         } else {
             gridViewHolder.itemLayout.setBackgroundColor(context.resources.getColor(R.color.bg_default))

+ 2 - 3
app/src/main/java/com/owncloud/android/ui/adapter/SyncedFolderAdapter.java

@@ -460,9 +460,8 @@ public class SyncedFolderAdapter extends SectionedRecyclerViewAdapter<SectionedV
     private void setSyncButtonActiveIcon(ImageButton syncStatusButton, boolean enabled) {
         if (enabled) {
             syncStatusButton.setImageDrawable(
-                themeDrawableUtils.tintDrawable(
-                    R.drawable.ic_cloud_sync_on,
-                    themeColorUtils.primaryColor(context, true)));
+                viewThemeUtils.platform.tintPrimaryDrawable(context, R.drawable.ic_cloud_sync_on)
+                                             );
         } else {
             syncStatusButton.setImageResource(R.drawable.ic_cloud_sync_off);
         }

+ 1 - 2
app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java

@@ -590,8 +590,7 @@ public class ExtendedListFragment extends Fragment implements
                     if (tintIcon) {
                         if (getContext() != null) {
                             mEmptyListIcon.setImageDrawable(
-                                themeDrawableUtils.tintDrawable(icon,
-                                                                themeColorUtils.primaryColor(getContext(), true)));
+                                viewThemeUtils.platform.tintPrimaryDrawable(getContext(), icon));
                         }
                     } else {
                         mEmptyListIcon.setImageResource(icon);

+ 1 - 0
app/src/main/java/com/owncloud/android/ui/fragment/FeatureFragment.java

@@ -17,6 +17,7 @@ import com.nextcloud.client.di.Injectable;
 import com.owncloud.android.R;
 import com.owncloud.android.features.FeatureItem;
 import com.owncloud.android.utils.theme.ThemeDrawableUtils;
+import com.owncloud.android.utils.theme.newm3.ViewThemeUtils;
 
 import javax.inject.Inject;
 

+ 1 - 4
app/src/main/java/com/owncloud/android/ui/fragment/UnifiedSearchFragment.kt

@@ -131,10 +131,7 @@ class UnifiedSearchFragment : Fragment(), Injectable, UnifiedSearchListInterface
                     binding.emptyList.emptyListViewText.text =
                         requireContext().getString(R.string.file_list_empty_unified_search_no_results)
                     binding.emptyList.emptyListIcon.setImageDrawable(
-                        themeDrawableUtils.tintDrawable(
-                            R.drawable.ic_search_grey,
-                            themeColorUtils.primaryColor(context, true)
-                        )
+                        viewThemeUtils.platform.tintPrimaryDrawable(requireContext(), R.drawable.ic_search_grey)
                     )
                 }
             }

+ 1 - 5
app/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/BackupFragment.java

@@ -53,7 +53,6 @@ import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.MimeTypeUtil;
 import com.owncloud.android.utils.PermissionUtil;
 import com.owncloud.android.utils.theme.ThemeColorUtils;
-import com.owncloud.android.utils.theme.ThemeToolbarUtils;
 import com.owncloud.android.utils.theme.ThemeUtils;
 import com.owncloud.android.utils.theme.newm3.ViewThemeUtils;
 
@@ -90,7 +89,6 @@ public class BackupFragment extends FileFragment implements DatePickerDialog.OnD
 
     @Inject BackgroundJobManager backgroundJobManager;
     @Inject ThemeColorUtils themeColorUtils;
-    @Inject ThemeToolbarUtils themeToolbarUtils;
     @Inject ThemeUtils themeUtils;
 
     @Inject ArbitraryDataProvider arbitraryDataProvider;
@@ -154,10 +152,8 @@ public class BackupFragment extends FileFragment implements DatePickerDialog.OnD
         ActionBar actionBar = contactsPreferenceActivity != null ? contactsPreferenceActivity.getSupportActionBar() : null;
 
         if (actionBar != null) {
-            themeToolbarUtils.setColoredTitle(actionBar, getString(R.string.backup_title), getContext());
-
             actionBar.setDisplayHomeAsUpEnabled(true);
-            themeToolbarUtils.tintBackButton(actionBar, getContext());
+            viewThemeUtils.files.themeActionBar(requireContext(), actionBar, R.string.backup_title);
         }
 
 

+ 0 - 14
app/src/main/java/com/owncloud/android/utils/theme/ThemeDrawableUtils.java

@@ -23,13 +23,11 @@
 package com.owncloud.android.utils.theme;
 
 import android.content.Context;
-import android.graphics.Color;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
 
 import androidx.annotation.DrawableRes;
 import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatDelegate;
 import androidx.core.content.res.ResourcesCompat;
 import androidx.core.graphics.drawable.DrawableCompat;
 
@@ -58,16 +56,4 @@ public final class ThemeDrawableUtils {
 
         return null;
     }
-
-    public void setIconColor(Drawable drawable) {
-        int color;
-
-        if (AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES) {
-            color = Color.WHITE;
-        } else {
-            color = Color.BLACK;
-        }
-
-        tintDrawable(drawable, color);
-    }
 }

+ 0 - 10
app/src/main/java/com/owncloud/android/utils/theme/ThemeToolbarUtils.java

@@ -58,16 +58,6 @@ public class ThemeToolbarUtils {
         this.viewThemeUtils = viewThemeUtils;
     }
 
-    /**
-     * For activities that do not use drawer, e.g. Settings, this can be used to correctly tint back button based on
-     * theme
-     *
-     * @param supportActionBar the back button's action bar
-     */
-    public void tintBackButton(@Nullable ActionBar supportActionBar, Context context) {
-        tintBackButton(supportActionBar, context, themeColorUtils.appBarPrimaryFontColor(context));
-    }
-
     public void tintBackButton(@Nullable ActionBar supportActionBar, Context context, @ColorInt int color) {
         if (supportActionBar == null) {
             return;

+ 47 - 1
app/src/main/java/com/owncloud/android/utils/theme/newm3/FilesSpecificViewThemeUtils.kt

@@ -32,10 +32,13 @@ import android.text.style.ForegroundColorSpan
 import android.widget.ImageView
 import androidx.annotation.DrawableRes
 import androidx.annotation.Px
+import androidx.annotation.StringRes
+import androidx.appcompat.app.ActionBar
 import androidx.core.content.res.ResourcesCompat
 import com.nextcloud.android.common.ui.theme.MaterialSchemes
 import com.nextcloud.android.common.ui.theme.ViewThemeUtilsBase
 import com.nextcloud.android.common.ui.theme.utils.AndroidViewThemeUtils
+import com.nextcloud.android.common.ui.theme.utils.AndroidXViewThemeUtils
 import com.nextcloud.utils.view.FastScrollPopupBackground
 import com.owncloud.android.R
 import com.owncloud.android.lib.common.utils.Log_OC
@@ -46,7 +49,8 @@ import javax.inject.Inject
 
 class FilesSpecificViewThemeUtils @Inject constructor(
     schemes: MaterialSchemes,
-    private val androidViewThemeUtils: AndroidViewThemeUtils
+    private val androidViewThemeUtils: AndroidViewThemeUtils,
+    private val androidXViewThemeUtils: AndroidXViewThemeUtils
 ) : ViewThemeUtilsBase(schemes) {
     // not ported to common lib because PreferenceCategory is deprecated
     fun themePreferenceCategory(category: PreferenceCategory) {
@@ -127,6 +131,48 @@ class FilesSpecificViewThemeUtils @Inject constructor(
         return androidViewThemeUtils.tintPrimaryDrawable(context, thumbDrawable)!!
     }
 
+    /**
+     * Sets title and colors the actionbar, the title and the back arrow
+     */
+    // TODO move back arrow resource to lib and use lib method directly?
+    fun themeActionBar(context: Context, actionBar: ActionBar, title: String) {
+        val backArrow = ResourcesCompat.getDrawable(
+            context.resources,
+            R.drawable.ic_arrow_back,
+            null
+        )!!
+        androidXViewThemeUtils.themeActionBar(
+            context,
+            actionBar,
+            title,
+            backArrow
+        )
+    }
+
+    /**
+     * Sets title and colors the actionbar, the title and the back arrow
+     */
+    fun themeActionBar(context: Context, actionBar: ActionBar, @StringRes titleRes: Int) {
+        val title = context.getString(titleRes)
+        themeActionBar(
+            context,
+            actionBar,
+            title
+        )
+    }
+
+    /**
+     * Colors actionbar background and back arrow but not the title
+     */
+    fun themeActionBar(context: Context, actionBar: ActionBar) {
+        val backArrow = ResourcesCompat.getDrawable(
+            context.resources,
+            R.drawable.ic_arrow_back,
+            null
+        )!!
+        androidXViewThemeUtils.themeActionBar(context, actionBar, backArrow)
+    }
+
     companion object {
         private val TAG = FilesSpecificViewThemeUtils::class.simpleName
 

+ 2 - 2
app/src/main/java/com/owncloud/android/utils/theme/newm3/ViewThemeUtils.kt

@@ -44,11 +44,11 @@ class ViewThemeUtils @Inject constructor(
     val material = MaterialViewThemeUtils(schemes, colorUtil)
 
     @JvmField
-    val androidx = AndroidXViewThemeUtils(schemes)
+    val androidx = AndroidXViewThemeUtils(schemes, platform)
 
     @JvmField
     val dialog = DialogViewThemeUtils(schemes)
 
     @JvmField
-    val files = FilesSpecificViewThemeUtils(schemes, platform)
+    val files = FilesSpecificViewThemeUtils(schemes, platform, androidx)
 }