Эх сурвалжийг харах

Merge pull request #5933 from nextcloud/newAppBarColor

New design (UI) - appbar color
Tobias Kaminsky 5 жил өмнө
parent
commit
f1743e96b3
41 өөрчлөгдсөн 194 нэмэгдсэн , 301 устгасан
  1. 1 1
      src/main/java/com/nextcloud/client/logger/ui/LogsActivity.kt
  2. 5 11
      src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java
  3. 5 5
      src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java
  4. 4 6
      src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java
  5. 3 9
      src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
  6. 4 23
      src/main/java/com/owncloud/android/ui/activity/SettingsActivity.java
  7. 15 31
      src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java
  8. 1 2
      src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java
  9. 0 1
      src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java
  10. 1 1
      src/main/java/com/owncloud/android/ui/asynctasks/PhotoSearchTask.java
  11. 1 11
      src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java
  12. 3 3
      src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java
  13. 1 1
      src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java
  14. 4 15
      src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java
  15. 2 3
      src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactsBackupFragment.java
  16. 0 5
      src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.java
  17. 78 68
      src/main/java/com/owncloud/android/utils/ThemeUtils.java
  18. BIN
      src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_1.png
  19. BIN
      src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_2.png
  20. BIN
      src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_3.png
  21. BIN
      src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_4.png
  22. BIN
      src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_5.png
  23. BIN
      src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_6.png
  24. BIN
      src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_7.png
  25. BIN
      src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_8.png
  26. BIN
      src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_1.png
  27. BIN
      src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_2.png
  28. BIN
      src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_3.png
  29. BIN
      src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_4.png
  30. BIN
      src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_5.png
  31. BIN
      src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_6.png
  32. BIN
      src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_7.png
  33. BIN
      src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_8.png
  34. 0 19
      src/main/res/drawable/actionbar_progress_horizontal.xml
  35. 0 13
      src/main/res/drawable/actionbar_progress_indeterminate_horizontal.xml
  36. 1 1
      src/main/res/layout/drawer.xml
  37. 14 16
      src/main/res/layout/toolbar_standard.xml
  38. 6 2
      src/main/res/values-night/colors.xml
  39. 6 19
      src/main/res/values-v21/styles.xml
  40. 6 2
      src/main/res/values/colors.xml
  41. 33 33
      src/main/res/values/styles.xml

+ 1 - 1
src/main/java/com/nextcloud/client/logger/ui/LogsActivity.kt

@@ -88,7 +88,7 @@ class LogsActivity : ToolbarActivity() {
         (menu.findItem(R.id.action_search).actionView as SearchView).apply {
             setOnQueryTextListener(searchBoxListener)
 
-            ThemeUtils.themeSearchView(this, true, context)
+            ThemeUtils.themeSearchView(this, context)
         }
         return super.onCreateOptionsMenu(menu)
     }

+ 5 - 11
src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

@@ -30,7 +30,6 @@ import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Configuration;
-import android.graphics.PorterDuff;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.LayerDrawable;
@@ -288,13 +287,13 @@ public abstract class DrawerActivity extends ToolbarActivity
             }
         };
 
-        // proper coloring of drawer menu icon
-        mDrawerToggle.getDrawerArrowDrawable().setColor(ThemeUtils.toolbarTextColor(this));
-
         // Set the drawer toggle as the DrawerListener
         mDrawerLayout.addDrawerListener(mDrawerToggle);
         mDrawerToggle.setDrawerIndicatorEnabled(true);
         mDrawerToggle.setDrawerSlideAnimationEnabled(true);
+        Drawable backArrow = getResources().getDrawable(R.drawable.ic_arrow_back);
+        mDrawerToggle.setHomeAsUpIndicator(ThemeUtils.tintDrawable(backArrow, ThemeUtils.appBarPrimaryFontColor(this)));
+        mDrawerToggle.getDrawerArrowDrawable().setColor(ThemeUtils.appBarPrimaryFontColor(this));
     }
 
     /**
@@ -775,17 +774,12 @@ public abstract class DrawerActivity extends ToolbarActivity
         super.updateActionBarTitleAndHomeButton(chosenFile);
 
         // set home button properties
-        if (mDrawerToggle != null && chosenFile != null) {
-            if (isRoot(chosenFile)) {
+        if (mDrawerToggle != null) {
+            if (chosenFile != null && isRoot(chosenFile)) {
                 mDrawerToggle.setDrawerIndicatorEnabled(true);
             } else {
                 mDrawerToggle.setDrawerIndicatorEnabled(false);
-                Drawable upArrow = getResources().getDrawable(R.drawable.ic_arrow_back);
-                upArrow.setColorFilter(ThemeUtils.fontColor(this), PorterDuff.Mode.SRC_ATOP);
-                mDrawerToggle.setHomeAsUpIndicator(upArrow);
             }
-        } else if (mDrawerToggle != null) {
-            mDrawerToggle.setDrawerIndicatorEnabled(false);
         }
     }
 

+ 5 - 5
src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -328,7 +328,7 @@ public class FileDisplayActivity extends FileActivity
             syncAndUpdateFolder(true);
         }
 
-        setIndeterminate(mSyncInProgress);
+        showProgressBar(mSyncInProgress);
         // always AFTER setContentView(...) in onCreate(); to work around bug in its implementation
 
         upgradeNotificationForInstantUpload();
@@ -783,7 +783,7 @@ public class FileDisplayActivity extends FileActivity
         searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
         searchMenuItem.setVisible(false);
 
-        ThemeUtils.themeSearchView(searchView, true, this);
+        ThemeUtils.themeSearchView(searchView, this);
 
         // populate list of menu items to show/hide when drawer is opened/closed
         mDrawerMenuItemstoShowHideList = new ArrayList<>(4);
@@ -1394,7 +1394,7 @@ public class FileDisplayActivity extends FileActivity
                         DataHolderUtil.getInstance().delete(intent.getStringExtra(FileSyncAdapter.EXTRA_RESULT));
 
                         Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress);
-                        setIndeterminate(mSyncInProgress);
+                        showProgressBar(mSyncInProgress);
 
                         setBackgroundText();
                     }
@@ -1513,7 +1513,7 @@ public class FileDisplayActivity extends FileActivity
                     }
                 }
 
-                setIndeterminate(false);
+                showProgressBar(false);
 
             } finally {
                 if (intent != null) {
@@ -2227,7 +2227,7 @@ public class FileDisplayActivity extends FileActivity
                                         null
                                 );
 
-                                setIndeterminate(true);
+                                showProgressBar(true);
 
                                 setBackgroundText();
 

+ 4 - 6
src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java

@@ -152,7 +152,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
             ThemeUtils.setColoredTitle(getSupportActionBar(), caption, this);
         }
 
-        setIndeterminate(mSyncInProgress);
+        showProgressBar(mSyncInProgress);
         // always AFTER setContentView(...) ; to work around bug in its implementation
 
         // sets message for empty list of folders
@@ -263,7 +263,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
                                                                             getApplicationContext());
 
         refreshFolderOperation.execute(getAccount(), this, null, null);
-        setIndeterminate(true);
+        showProgressBar(true);
         setBackgroundText();
     }
 
@@ -402,9 +402,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
             actionBar.setDisplayHomeAsUpEnabled(!atRoot);
             actionBar.setHomeButtonEnabled(!atRoot);
 
-            Drawable backArrow = getResources().getDrawable(R.drawable.ic_arrow_back);
-
-            actionBar.setHomeAsUpIndicator(ThemeUtils.tintDrawable(backArrow, ThemeUtils.fontColor(this)));
+            ThemeUtils.tintBackButton(actionBar, this);
 
             ThemeUtils.setColoredTitle(getSupportActionBar(), atRoot ? caption : currentDir.getFileName(), this);
         }
@@ -550,7 +548,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
                     DataHolderUtil.getInstance().delete(intent.getStringExtra(FileSyncAdapter.EXTRA_RESULT));
                     Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress);
 
-                    setIndeterminate(mSyncInProgress);
+                    showProgressBar(mSyncInProgress);
 
                     setBackgroundText();
                 }

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

@@ -780,15 +780,9 @@ public class ReceiveExternalFilesActivity extends FileActivity
                         ThemeUtils.primaryColor(getAccount(), false, this)));
             }
 
-            ThemeUtils.colorStatusBar(this, ThemeUtils.primaryColor(getAccount(), false, this));
+            ThemeUtils.colorStatusBar(this);
 
-            ThemeUtils.colorToolbarProgressBar(this, ThemeUtils.primaryColor(getAccount(), false, this));
-
-            Drawable backArrow = getResources().getDrawable(R.drawable.ic_arrow_back);
-
-            if (actionBar != null) {
-                actionBar.setHomeAsUpIndicator(ThemeUtils.tintDrawable(backArrow, ThemeUtils.fontColor(this)));
-            }
+            ThemeUtils.tintBackButton(actionBar, this);
 
             Button btnNewFolder = findViewById(R.id.uploader_cancel);
             btnNewFolder.setTextColor(ThemeUtils.primaryColor(this, true));
@@ -1042,7 +1036,7 @@ public class ReceiveExternalFilesActivity extends FileActivity
         newFolderMenuItem.setEnabled(mFile.canWrite());
 
         // hacky as no default way is provided
-        ThemeUtils.themeSearchView(searchView, true, this);
+        ThemeUtils.themeSearchView(searchView, this);
 
         return true;
     }

+ 4 - 23
src/main/java/com/owncloud/android/ui/activity/SettingsActivity.java

@@ -746,31 +746,12 @@ public class SettingsActivity extends ThemedPreferenceActivity
         ActionBar actionBar = getDelegate().getSupportActionBar();
 
         if (actionBar != null) {
-            actionBar.setDisplayHomeAsUpEnabled(true);
             ThemeUtils.setColoredTitle(actionBar, getString(R.string.actionbar_settings), this);
-            actionBar.setBackgroundDrawable(new ColorDrawable(ThemeUtils.primaryColor(this)));
-
-            Drawable backArrow = getResources().getDrawable(R.drawable.ic_arrow_back);
-            actionBar.setHomeAsUpIndicator(ThemeUtils.tintDrawable(backArrow,
-                                                                   ThemeUtils.toolbarTextColor(this)));
-        }
+            ThemeUtils.colorStatusBar(this);
+            actionBar.setBackgroundDrawable(new ColorDrawable(ThemeUtils.primaryAppbarColor(this)));
 
-        Window window = getWindow();
-        if (window != null) {
-            window.getDecorView().setBackgroundDrawable(new ColorDrawable(ResourcesCompat
-                    .getColor(getResources(), R.color.bg_default, null)));
-
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-                window.setStatusBarColor(ThemeUtils.primaryColor(this));
-            }
-
-            // For adding content description tag to a title field in the action bar
-            int actionBarTitleId = getResources().getIdentifier("action_bar_title", "id", "android");
-            View actionBarTitle = window.getDecorView().findViewById(actionBarTitleId);
-
-            if (actionBarTitle != null) {
-                actionBarTitle.setContentDescription(getString(R.string.actionbar_settings));
-            }
+            actionBar.setDisplayHomeAsUpEnabled(true);
+            ThemeUtils.tintBackButton(actionBar, this);
         }
     }
 

+ 15 - 31
src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java

@@ -38,11 +38,9 @@ import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.utils.ThemeUtils;
 
-import androidx.annotation.ColorInt;
 import androidx.annotation.StringRes;
 import androidx.appcompat.app.ActionBar;
 import androidx.appcompat.widget.Toolbar;
-import androidx.core.content.ContextCompat;
 
 /**
  * Base class providing toolbar registration functionality, see {@link #setupToolbar()}.
@@ -64,33 +62,29 @@ public abstract class ToolbarActivity extends BaseActivity {
      * want to use the toolbar.
      */
     protected void setupToolbar(boolean useBackgroundImage) {
-        int primaryColor = ThemeUtils.primaryColor(this, false);
-        int toolbarTextColor = ThemeUtils.toolbarTextColor(this);
+        int primaryColor = ThemeUtils.primaryAppbarColor(this);
+        int fontColor = ThemeUtils.appBarPrimaryFontColor(this);
 
         Toolbar toolbar = findViewById(R.id.toolbar);
         setSupportActionBar(toolbar);
 
-        mProgressBar = findViewById(R.id.progressBar);
-        if (mProgressBar != null) {
-            mProgressBar.setIndeterminateDrawable(
-                    ContextCompat.getDrawable(this, R.drawable.actionbar_progress_indeterminate_horizontal));
+        mProgressBar = findViewById(R.id.toolbar_progressBar);
+        setProgressBarBackgroundColor();
 
-            ThemeUtils.colorToolbarProgressBar(this, primaryColor);
-        }
         mInfoBox = findViewById(R.id.info_box);
         mInfoBoxMessage = findViewById(R.id.info_box_message);
 
         mPreviewImage = findViewById(R.id.preview_image);
         mPreviewImageContainer = findViewById(R.id.preview_image_frame);
 
-        ThemeUtils.colorStatusBar(this, primaryColor);
+        ThemeUtils.colorStatusBar(this);
 
         if (toolbar.getOverflowIcon() != null) {
-            ThemeUtils.tintDrawable(toolbar.getOverflowIcon(), toolbarTextColor);
+            ThemeUtils.tintDrawable(toolbar.getOverflowIcon(), fontColor);
         }
 
         if (toolbar.getNavigationIcon() != null) {
-            ThemeUtils.tintDrawable(toolbar.getNavigationIcon(), toolbarTextColor);
+            ThemeUtils.tintDrawable(toolbar.getNavigationIcon(), fontColor);
         }
 
         if (!useBackgroundImage) {
@@ -166,25 +160,14 @@ public abstract class ToolbarActivity extends BaseActivity {
         mInfoBox.setVisibility(View.GONE);
     }
 
-    /**
-     * Change the indeterminate mode for the toolbar's progress bar.
-     *
-     * @param indeterminate <code>true</code> to enable the indeterminate mode
-     */
-    public void setIndeterminate(boolean indeterminate) {
-        if (mProgressBar != null) {
-            mProgressBar.setIndeterminate(indeterminate);
-        }
-    }
-
     /**
      * Change the visibility for the toolbar's progress bar.
      *
-     * @param visibility visibility of the progress bar
+     * @param isVisible visibility of the progress bar
      */
-    public void setProgressBarVisibility(int visibility) {
+    public void showProgressBar(boolean isVisible) {
         if (mProgressBar != null) {
-            mProgressBar.setVisibility(visibility);
+            mProgressBar.setVisibility(isVisible? View.VISIBLE : View.GONE);
         }
     }
 
@@ -232,10 +215,11 @@ public abstract class ToolbarActivity extends BaseActivity {
      * Set the background to to progress bar of the toolbar. The resource should refer to
      * a Drawable object or 0 to remove the background.#
      *
-     * @param color The identifier of the color.
      */
-    public void setProgressBarBackgroundColor(@ColorInt int color) {
-        mProgressBar.setBackgroundColor(color);
-        mProgressBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);
+    private void setProgressBarBackgroundColor() {
+        if (mProgressBar != null) {
+            mProgressBar.setBackgroundColor(ThemeUtils.primaryAppbarColor(this));
+            mProgressBar.getIndeterminateDrawable().setColorFilter(ThemeUtils.primaryColor(this), PorterDuff.Mode.SRC_IN);
+        }
     }
 }

+ 1 - 2
src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java

@@ -212,8 +212,7 @@ public class UploadFilesActivity extends FileActivity implements
             actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
             actionBar.setListNavigationCallbacks(mDirectories, this);
 
-            Drawable backArrow = getResources().getDrawable(R.drawable.ic_arrow_back);
-            actionBar.setHomeAsUpIndicator(ThemeUtils.tintDrawable(backArrow, ThemeUtils.fontColor(this)));
+            ThemeUtils.tintBackButton(actionBar, this);
         }
 
         // wait dialog

+ 0 - 1
src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java

@@ -442,7 +442,6 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
                             } else if (sharee.getShareType().equals(ShareType.CIRCLE)) {
                                 avatar.setImageResource(R.drawable.ic_circles);
                                 ThemeUtils.setIconColor(avatar.getDrawable());
-
                             } else if (sharee.getUserId().contains("@")) {
                                 showFederatedShareAvatar(sharee.getUserId(), avatarRadius, resources, avatar);
                             } else {

+ 1 - 1
src/main/java/com/owncloud/android/ui/asynctasks/PhotoSearchTask.java

@@ -119,7 +119,7 @@ public class PhotoSearchTask extends AsyncTask<Void, Void, RemoteOperationResult
             final ToolbarActivity fileDisplayActivity = (ToolbarActivity) photoFragment.getActivity();
 
             if (fileDisplayActivity != null) {
-                fileDisplayActivity.setIndeterminate(false);
+                fileDisplayActivity.showProgressBar(false);
             }
 
             if (!result.isSuccess() && !isCancelled()) {

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

@@ -196,7 +196,7 @@ public class ExtendedListFragment extends Fragment implements
         closeButton = searchView.findViewById(androidx.appcompat.R.id.search_close_btn);
         searchView.setOnQueryTextListener(this);
         searchView.setOnCloseListener(this);
-        ThemeUtils.themeSearchView(searchView, true, requireContext());
+        ThemeUtils.themeSearchView(searchView, requireContext());
 
         SearchView.SearchAutoComplete theTextArea = searchView.findViewById(R.id.search_src_text);
         theTextArea.setHighlightColor(ThemeUtils.primaryAccentColor(getContext()));
@@ -268,17 +268,7 @@ public class ExtendedListFragment extends Fragment implements
             }
         });
 
-        int fontColor = ThemeUtils.fontColor(getContext());
-
         LinearLayout searchBar = searchView.findViewById(R.id.search_bar);
-        TextView searchBadge = searchView.findViewById(R.id.search_badge);
-
-        searchBadge.setTextColor(fontColor);
-        searchBadge.setHintTextColor(fontColor);
-
-        ImageView searchButton = searchView.findViewById(R.id.search_button);
-        searchButton.setImageDrawable(ThemeUtils.tintDrawable(R.drawable.ic_search, fontColor));
-
         searchBar.setLayoutTransition(new LayoutTransition());
     }
 

+ 3 - 3
src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java

@@ -241,7 +241,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     private void activatePreviewImage() {
         if (activity != null) {
             activity.setPreviewImageVisibility(View.VISIBLE);
-            activity.setProgressBarVisibility(View.GONE);
+            activity.showProgressBar(false);
             ThemeUtils.setStatusBarColor(activity, activity.getResources().getColor(R.color.background_color_inverse));
             if (activity.getSupportActionBar() != null) {
                 activity.getSupportActionBar().setTitle(null);
@@ -376,9 +376,9 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
         leaveTransferProgress();
 
         if(activity != null) {
-            activity.setPreviewImageVisibility(View.GONE);
-            activity.setProgressBarVisibility(View.VISIBLE);
             activity.setupToolbar();
+            activity.setPreviewImageVisibility(View.GONE);
+            activity.showProgressBar(true);
         }
 
         super.onStop();

+ 1 - 1
src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java

@@ -245,7 +245,7 @@ public class FileDetailSharingFragment extends Fragment implements ShareeListAda
             FileDetailSharingFragmentHelper.setupSearchView(
                 (SearchManager) fileDisplayActivity.getSystemService(Context.SEARCH_SERVICE), searchView,
                 fileDisplayActivity.getComponentName());
-            ThemeUtils.themeSearchView(searchView, false, requireContext());
+            ThemeUtils.themeSearchView(searchView, requireContext());
         } else {
             searchView.setVisibility(View.GONE);
             shareByLinkContainer.setVisibility(View.GONE);

+ 4 - 15
src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -179,11 +179,6 @@ public class OCFileListFragment extends ExtendedListFragment implements
     protected boolean mOnlyFoldersClickable;
     protected boolean mFileSelectable;
 
-    protected int mSystemBarActionModeColor;
-    protected int mSystemBarColor;
-    protected int mProgressBarActionModeColor;
-    protected int mProgressBarColor;
-
     protected boolean mHideFab = true;
     protected ActionMode mActiveActionMode;
     protected OCFileListFragment.MultiChoiceModeListener mMultiChoiceModeListener;
@@ -209,10 +204,6 @@ public class OCFileListFragment extends ExtendedListFragment implements
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setHasOptionsMenu(true);
-        mSystemBarActionModeColor = getResources().getColor(R.color.action_mode_status_bar_background);
-        mSystemBarColor = ThemeUtils.primaryColor(getContext());
-        mProgressBarActionModeColor = getResources().getColor(R.color.action_mode_background);
-        mProgressBarColor = ThemeUtils.primaryColor(getContext());
         mMultiChoiceModeListener = new MultiChoiceModeListener();
 
         if (savedInstanceState != null) {
@@ -633,9 +624,8 @@ public class OCFileListFragment extends ExtendedListFragment implements
             inflater.inflate(R.menu.item_file, menu);
             mode.invalidate();
 
-            //set gray color
-            ThemeUtils.colorStatusBar(getActivity(), mSystemBarActionModeColor);
-            ThemeUtils.colorToolbarProgressBar(getActivity(), mProgressBarActionModeColor);
+            //set actionMode color
+            ThemeUtils.colorStatusBar(getActivity(), ThemeUtils.actionModeColor(requireContext()));
 
             // hide FAB in multi selection mode
             setFabVisible(false);
@@ -690,8 +680,7 @@ public class OCFileListFragment extends ExtendedListFragment implements
             // reset to previous color
             final FragmentActivity activity = getActivity();
             if (activity != null) {
-                ThemeUtils.colorStatusBar(activity, mSystemBarColor);
-                ThemeUtils.colorToolbarProgressBar(activity, mProgressBarColor);
+                ThemeUtils.colorStatusBar(activity);
             }
 
             // show FAB on multi selection mode exit
@@ -1571,7 +1560,7 @@ public class OCFileListFragment extends ExtendedListFragment implements
                                 @Override
                                 public void run() {
                                     if (fileDisplayActivity != null) {
-                                        fileDisplayActivity.setIndeterminate(false);
+                                        fileDisplayActivity.showProgressBar(false);
                                     }
                                 }
                             });

+ 2 - 3
src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactsBackupFragment.java

@@ -133,10 +133,9 @@ public class ContactsBackupFragment extends FileFragment implements DatePickerDi
 
         if (actionBar != null) {
             ThemeUtils.setColoredTitle(actionBar, getString(R.string.actionbar_contacts), getContext());
-            actionBar.setDisplayHomeAsUpEnabled(true);
 
-            Drawable backArrow = getResources().getDrawable(R.drawable.ic_arrow_back);
-            actionBar.setHomeAsUpIndicator(ThemeUtils.tintDrawable(backArrow, ThemeUtils.fontColor(getContext())));
+            actionBar.setDisplayHomeAsUpEnabled(true);
+            ThemeUtils.tintBackButton(actionBar, getContext());
         }
 
         arbitraryDataProvider = new ArbitraryDataProvider(getContext().getContentResolver());

+ 0 - 5
src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.java

@@ -224,11 +224,6 @@ public class TrashbinActivity extends FileActivity implements
             trashbinPresenter.enterFolder(file.getRemotePath());
 
             mDrawerToggle.setDrawerIndicatorEnabled(false);
-
-            Toolbar toolbar = findViewById(R.id.toolbar);
-            if (toolbar != null && toolbar.getNavigationIcon() != null) {
-                ThemeUtils.tintDrawable(toolbar.getNavigationIcon(), ThemeUtils.fontColor(this));
-            }
         }
     }
 

+ 78 - 68
src/main/java/com/owncloud/android/utils/ThemeUtils.java

@@ -53,7 +53,6 @@ import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.status.OCCapability;
-import com.owncloud.android.ui.activity.ToolbarActivity;
 
 import java.lang.reflect.Field;
 
@@ -70,7 +69,6 @@ import androidx.core.content.res.ResourcesCompat;
 import androidx.core.graphics.ColorUtils;
 import androidx.core.graphics.drawable.DrawableCompat;
 import androidx.core.widget.CompoundButtonCompat;
-import androidx.fragment.app.FragmentActivity;
 import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -150,8 +148,7 @@ public final class ThemeUtils {
     }
 
     public static int getNeutralGrey(Context context) {
-        return darkTheme(context) ? context.getResources().getColor(R.color.fg_contrast) :
-                                    Color.GRAY;
+        return darkTheme(context) ? context.getResources().getColor(R.color.fg_contrast) : Color.GRAY;
     }
 
     public static int elementColor(Context context) {
@@ -188,9 +185,10 @@ public final class ThemeUtils {
     }
 
     /**
-     * returns the font color based on the server side theming and uses black/white as a fallback based on replaceWhite.
+     * returns the font color based on the server side theming and uses black/white as a fallback based on
+     * replaceWhite.
      *
-     * @param context the context
+     * @param context      the context
      * @param replaceWhite FLAG to return white/black if server side color isn't available
      * @return int font color to use
      */
@@ -203,10 +201,6 @@ public final class ThemeUtils {
             }
         }
 
-        return toolbarTextColor(context);
-    }
-
-    public static int toolbarTextColor(Context context) {
         try {
             return Color.parseColor(getCapability(context).getServerTextColor());
         } catch (Exception e) {
@@ -224,17 +218,19 @@ public final class ThemeUtils {
 
     /**
      * Tests if light color is set
-     * @return  true if primaryColor is lighter than MAX_LIGHTNESS
+     *
+     * @param color the color
+     * @return true if primaryColor is lighter than MAX_LIGHTNESS
      */
-    public static boolean lightTheme(Context context) {
-        int primaryColor = primaryColor(context);
-        float[] hsl = colorToHSL(primaryColor);
+    public static boolean lightTheme(int color) {
+        float[] hsl = colorToHSL(color);
 
         return hsl[INDEX_LUMINATION] >= MAX_LIGHTNESS;
     }
 
     /**
      * Tests if dark color is set
+     *
      * @return true if dark theme -> e.g.use light font color, darker accent color
      */
     public static boolean darkTheme(Context context) {
@@ -244,6 +240,22 @@ public final class ThemeUtils {
         return hsl[INDEX_LUMINATION] <= 0.55;
     }
 
+    public static int primaryAppbarColor(Context context) {
+        return ContextCompat.getColor(context, R.color.appbar);
+    }
+
+    public static int appBarPrimaryFontColor(Context context) {
+        return ContextCompat.getColor(context, R.color.fontAppbar);
+    }
+
+    public static int appBarSecondaryFontColor(Context context) {
+        return ContextCompat.getColor(context, R.color.fontSecondaryAppbar);
+    }
+
+    public static int actionModeColor(Context context) {
+        return ContextCompat.getColor(context, R.color.action_mode_background);
+    }
+
     /**
      * Set color of title to white/black depending on background color
      *
@@ -256,7 +268,7 @@ public final class ThemeUtils {
                 actionBar.setTitle(title);
             } else {
                 Spannable text = new SpannableString(title);
-                text.setSpan(new ForegroundColorSpan(toolbarTextColor(context)),
+                text.setSpan(new ForegroundColorSpan(appBarPrimaryFontColor(context)),
                              0,
                              text.length(),
                              Spannable.SPAN_INCLUSIVE_INCLUSIVE);
@@ -281,7 +293,7 @@ public final class ThemeUtils {
                 actionBar.setSubtitle(title);
             } else {
                 Spannable text = new SpannableString(title);
-                text.setSpan(new ForegroundColorSpan(fontColor(context)),
+                text.setSpan(new ForegroundColorSpan(appBarSecondaryFontColor(context)),
                              0,
                              text.length(),
                              Spannable.SPAN_INCLUSIVE_INCLUSIVE);
@@ -302,7 +314,7 @@ public final class ThemeUtils {
         }
 
         Drawable backArrow = context.getResources().getDrawable(R.drawable.ic_arrow_back);
-        supportActionBar.setHomeAsUpIndicator(ThemeUtils.tintDrawable(backArrow, ThemeUtils.fontColor(context)));
+        supportActionBar.setHomeAsUpIndicator(ThemeUtils.tintDrawable(backArrow, ThemeUtils.appBarPrimaryFontColor(context)));
     }
 
     public static Spanned getColoredTitle(String title, int color) {
@@ -340,7 +352,7 @@ public final class ThemeUtils {
      * Adjust lightness of given color
      *
      * @param lightnessDelta values -1..+1
-     * @param color original color
+     * @param color          original color
      * @param threshold      0..1 as maximum value, -1 to disable
      * @return color adjusted by lightness
      */
@@ -448,38 +460,33 @@ public final class ThemeUtils {
      * @param fragmentActivity fragment activity
      * @param color            the color
      */
-    public static void colorStatusBar(FragmentActivity fragmentActivity, @ColorInt int color) {
+    public static void colorStatusBar(Activity fragmentActivity, @ColorInt int color) {
         Window window = fragmentActivity.getWindow();
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && window != null) {
+        boolean isLightTheme = lightTheme(color);
+        if (window != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             window.setStatusBarColor(color);
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                 View decor = window.getDecorView();
-                if (lightTheme(fragmentActivity.getApplicationContext())) {
+                if (isLightTheme) {
                     decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
                 } else {
                     decor.setSystemUiVisibility(0);
                 }
+            } else if (isLightTheme) {
+                window.setStatusBarColor(Color.BLACK);
             }
         }
     }
 
-    /**
-     * Sets the color of the progressbar to {@code color} within the given toolbar.
-     *
-     * @param activity         the toolbar activity instance
-     * @param progressBarColor the color to be used for the toolbar's progress bar
-     */
-    public static void colorToolbarProgressBar(FragmentActivity activity, int progressBarColor) {
-        if (activity instanceof ToolbarActivity) {
-            ((ToolbarActivity) activity).setProgressBarBackgroundColor(progressBarColor);
-        }
+    public static void colorStatusBar(Activity fragmentActivity) {
+        colorStatusBar(fragmentActivity, primaryAppbarColor(fragmentActivity));
     }
 
     /**
      * Sets the color of the  TextInputLayout to {@code color} for hint text and box stroke.
      *
      * @param textInputLayout the TextInputLayout instance
-     * @param color the color to be used for the hint text and box stroke
+     * @param color           the color to be used for the hint text and box stroke
      */
     public static void colorTextInputLayout(TextInputLayout textInputLayout, int color) {
         textInputLayout.setBoxStrokeColor(color);
@@ -496,7 +503,7 @@ public final class ThemeUtils {
     }
 
     public static void themeDialogActionButton(MaterialButton button) {
-        if (button == null ) {
+        if (button == null) {
             return;
         }
 
@@ -505,8 +512,8 @@ public final class ThemeUtils {
         int disabledColor = ContextCompat.getColor(context, R.color.disabled_text);
         button.setTextColor(new ColorStateList(
             new int[][]{
-                new int[] { android.R.attr.state_enabled}, // enabled
-                new int[] {-android.R.attr.state_enabled}, // disabled
+                new int[]{android.R.attr.state_enabled}, // enabled
+                new int[]{-android.R.attr.state_enabled}, // disabled
             },
             new int[]{
                 accentColor,
@@ -516,7 +523,9 @@ public final class ThemeUtils {
     }
 
     public static void themeEditText(Context context, EditText editText, boolean themedBackground) {
-        if (editText == null) { return; }
+        if (editText == null) {
+            return;
+        }
 
         int color = ContextCompat.getColor(context, R.color.text_color);
 
@@ -528,6 +537,10 @@ public final class ThemeUtils {
             }
         }
 
+        setEditTextColor(context, editText, color);
+    }
+
+    private static void setEditTextColor(Context context, EditText editText, int color) {
         editText.setTextColor(color);
         editText.setHighlightColor(context.getResources().getColor(R.color.fg_contrast));
         setEditTextCursorColor(editText, color);
@@ -538,14 +551,14 @@ public final class ThemeUtils {
      * Theme search view
      *
      * @param searchView       searchView to be changed
-     * @param themedBackground true if background is themed, e.g. on action bar; false if background is white
      * @param context          the app's context
      */
-    public static void themeSearchView(SearchView searchView, boolean themedBackground, Context context) {
+    public static void themeSearchView(SearchView searchView, Context context) {
         // hacky as no default way is provided
-        int fontColor = ThemeUtils.fontColor(context, !darkTheme(context));
+        int fontColor = appBarPrimaryFontColor(context);
         SearchView.SearchAutoComplete editText = searchView.findViewById(R.id.search_src_text);
-        themeEditText(context, editText, themedBackground);
+        setEditTextColor(context, editText, fontColor);
+        editText.setHintTextColor(appBarSecondaryFontColor(context));
 
         ImageView closeButton = searchView.findViewById(androidx.appcompat.R.id.search_close_btn);
         closeButton.setColorFilter(fontColor);
@@ -560,14 +573,14 @@ public final class ThemeUtils {
 
     public static void tintCheckbox(AppCompatCheckBox checkBox, int color) {
         CompoundButtonCompat.setButtonTintList(checkBox, new ColorStateList(
-                new int[][]{
-                        new int[]{-android.R.attr.state_checked},
-                        new int[]{android.R.attr.state_checked},
-                },
-                new int[]{
-                        Color.GRAY,
-                        color
-                }
+            new int[][]{
+                new int[]{-android.R.attr.state_checked},
+                new int[]{android.R.attr.state_checked},
+            },
+            new int[]{
+                Color.GRAY,
+                color
+            }
         ));
     }
 
@@ -584,13 +597,13 @@ public final class ThemeUtils {
 
         // setting the thumb color
         DrawableCompat.setTintList(switchView.getThumbDrawable(), new ColorStateList(
-                new int[][]{new int[]{android.R.attr.state_checked}, new int[]{}},
-                new int[]{color, Color.WHITE}));
+            new int[][]{new int[]{android.R.attr.state_checked}, new int[]{}},
+            new int[]{color, Color.WHITE}));
 
         // setting the track color
         DrawableCompat.setTintList(switchView.getTrackDrawable(), new ColorStateList(
-                new int[][]{new int[]{android.R.attr.state_checked}, new int[]{}},
-                new int[]{trackColor, MainApp.getAppContext().getResources().getColor(R.color.switch_track_color_unchecked)}));
+            new int[][]{new int[]{android.R.attr.state_checked}, new int[]{}},
+            new int[]{trackColor, MainApp.getAppContext().getResources().getColor(R.color.switch_track_color_unchecked)}));
     }
 
     public static Drawable tintDrawable(@DrawableRes int id, int color) {
@@ -616,10 +629,10 @@ public final class ThemeUtils {
     }
 
     public static void tintFloatingActionButton(FloatingActionButton button, @DrawableRes int
-            drawable, Context context) {
+        drawable, Context context) {
         button.setBackgroundTintList(ColorStateList.valueOf(ThemeUtils.primaryColor(context)));
         button.setRippleColor(ThemeUtils.primaryDarkColor(context));
-        button.setImageDrawable(ThemeUtils.tintDrawable(drawable, ThemeUtils.toolbarTextColor(context)));
+        button.setImageDrawable(ThemeUtils.tintDrawable(drawable, ThemeUtils.fontColor(context)));
     }
 
     private static OCCapability getCapability(Context context) {
@@ -645,20 +658,21 @@ public final class ThemeUtils {
     }
 
     public static Drawable setIconColor(Drawable drawable) {
-        int color = Color.BLACK;
+        int color;
         if (AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES) {
             color = Color.WHITE;
+        } else {
+            color = Color.BLACK;
         }
         return tintDrawable(drawable, color);
     }
 
     /**
-     * Lifted from SO.
-     * FindBugs surpressed because of lack of public API to alter the cursor color.
+     * Lifted from SO. FindBugs surpressed because of lack of public API to alter the cursor color.
      *
-     * @param editText  TextView to be styled
-     * @param color     The desired cursor colour
-     * @see             <a href="https://stackoverflow.com/a/52564925">StackOverflow url</a>
+     * @param editText TextView to be styled
+     * @param color    The desired cursor colour
+     * @see <a href="https://stackoverflow.com/a/52564925">StackOverflow url</a>
      */
     @SuppressFBWarnings
     public static void setEditTextCursorColor(EditText editText, int color) {
@@ -709,15 +723,11 @@ public final class ThemeUtils {
 
 
     /**
-     * Set the color of the handles when you select text in a
-     * {@link android.widget.EditText} or other view that extends {@link TextView}.
-     * FindBugs surpressed because of lack of public API to alter the {@link TextView} handles color.
-     *
-     * @param view
-     *     The {@link TextView} or a {@link View} that extends {@link TextView}.
-     * @param color
-     *     The color to set for the text handles
+     * Set the color of the handles when you select text in a {@link android.widget.EditText} or other view that extends
+     * {@link TextView}. FindBugs surpressed because of lack of public API to alter the {@link TextView} handles color.
      *
+     * @param view  The {@link TextView} or a {@link View} that extends {@link TextView}.
+     * @param color The color to set for the text handles
      * @see <a href="https://gist.github.com/jaredrummler/2317620559d10ac39b8218a1152ec9d4">External reference</a>
      */
     @SuppressFBWarnings

BIN
src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_1.png


BIN
src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_2.png


BIN
src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_3.png


BIN
src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_4.png


BIN
src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_5.png


BIN
src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_6.png


BIN
src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_7.png


BIN
src/main/res/drawable-night-xxhdpi/owncloud_progressbar_indeterminate_8.png


BIN
src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_1.png


BIN
src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_2.png


BIN
src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_3.png


BIN
src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_4.png


BIN
src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_5.png


BIN
src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_6.png


BIN
src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_7.png


BIN
src/main/res/drawable-xxhdpi/owncloud_progressbar_indeterminate_8.png


+ 0 - 19
src/main/res/drawable/actionbar_progress_horizontal.xml

@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <item
-        android:id="@android:id/background"
-        android:drawable="@color/primary" />
-    <item android:id="@android:id/secondaryProgress">
-        <scale
-            android:drawable="@color/primary"
-            android:scaleWidth="100%" />
-    </item>
-    <item android:id="@android:id/progress">
-        <scale
-            android:drawable="@color/primary"
-            android:scaleWidth="100%" />
-    </item>
-
-</layer-list>

+ 0 - 13
src/main/res/drawable/actionbar_progress_indeterminate_horizontal.xml

@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<animation-list
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:oneshot="false">
-    <item android:drawable="@drawable/owncloud_progressbar_indeterminate_1" android:duration="50" />
-    <item android:drawable="@drawable/owncloud_progressbar_indeterminate_2" android:duration="50" />
-    <item android:drawable="@drawable/owncloud_progressbar_indeterminate_3" android:duration="50" />
-    <item android:drawable="@drawable/owncloud_progressbar_indeterminate_4" android:duration="50" />
-    <item android:drawable="@drawable/owncloud_progressbar_indeterminate_5" android:duration="50" />
-    <item android:drawable="@drawable/owncloud_progressbar_indeterminate_6" android:duration="50" />
-    <item android:drawable="@drawable/owncloud_progressbar_indeterminate_7" android:duration="50" />
-    <item android:drawable="@drawable/owncloud_progressbar_indeterminate_8" android:duration="50" />
-</animation-list>

+ 1 - 1
src/main/res/layout/drawer.xml

@@ -28,7 +28,7 @@
         android:layout_gravity="start"
         android:layout_weight="1"
         android:fitsSystemWindows="true"
-        android:background="@color/bg_default"
+        android:background="@color/appbar"
         android:theme="@style/NavigationView_ItemTextAppearance"
         app:headerLayout="@layout/drawer_header"
         app:menu="@menu/partial_drawer_entries">

+ 14 - 16
src/main/res/layout/toolbar_standard.xml

@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
+<?xml version="1.0" encoding="utf-8"?><!--
   Nextcloud Android client application
 
   Copyright (C) 2016 Andy Scherzinger
@@ -21,12 +20,12 @@
 -->
 <com.google.android.material.appbar.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/appbar"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    xmlns:tools="http://schemas.android.com/tools"
-    tools:viewBindingIgnore="true"
-    android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar">
+    android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"
+    tools:viewBindingIgnore="true">
 
     <RelativeLayout
         android:layout_width="match_parent"
@@ -52,24 +51,23 @@
         </FrameLayout>
 
         <androidx.appcompat.widget.Toolbar
-            android:id="@id/toolbar"
+            android:id="@+id/toolbar"
             android:layout_width="match_parent"
             android:layout_height="?attr/actionBarSize"
             app:popupTheme="@style/Theme.AppCompat.DayNight.NoActionBar" />
 
         <ProgressBar
-            android:id="@+id/progressBar"
-            style="@style/Widget.ownCloud.TopProgressBar"
+            android:id="@+id/toolbar_progressBar"
+            style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/standard_quarter_margin"
-            android:layout_below="@+id/toolbar"
-            android:layout_margin="@dimen/zero"
-            android:indeterminate="false"
-            android:indeterminateOnly="false"
-            android:padding="@dimen/zero"
-            android:visibility="visible" />
+            android:layout_height="wrap_content"
+            android:layout_below="@id/toolbar"
+            android:layout_marginTop="-7dp"
+            android:layout_marginBottom="-7dp"
+            android:indeterminate="true"
+            android:visibility="gone" />
     </RelativeLayout>
 
-    <include layout="@layout/info_box"/>
+    <include layout="@layout/info_box" />
 
 </com.google.android.material.appbar.AppBarLayout>

+ 6 - 2
src/main/res/values-night/colors.xml

@@ -32,8 +32,8 @@
     <color name="bg_elevation_one">#2D2D2D</color>
 
     <!-- Multiselect backgrounds -->
-    <color name="action_mode_status_bar_background">#ECECEC</color>
-    <color name="selected_item_background">#757575</color>
+    <color name="action_mode_background">@color/appbar</color>
+    <color name="selected_item_background">#373535</color>
 
     <color name="filelist_icon_background">#222222</color>
 
@@ -42,4 +42,8 @@
     <color name="switch_thumb_color_unchecked">#2a2a2a</color>
     <color name="switch_track_color_unchecked">#B3FFFFFF</color>
     <color name="drawer_active_item_background">@color/white</color>
+
+    <!-- App bar -->
+    <color name="appbar">#1E1E1E</color>
+    <color name="fontAppbar">@android:color/white</color>
 </resources>

+ 6 - 19
src/main/res/values-v21/styles.xml

@@ -18,18 +18,14 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
     <!-- General ownCloud app style -->
-    <style name="Theme.ownCloud" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
-        <item name="android:textColorSecondary">@color/secondary_text_color</item>
-        <item name="colorSecondary">@color/secondary_text_color</item>
+    <style name="Theme.ownCloud" parent="BaseTheme.ownCloud">
+        <item name="android:actionModeBackground">@color/action_mode_background</item>
         <item name="android:datePickerDialogTheme">@style/FallbackDatePickerDialogTheme</item>
     </style>
 
-    <style name="FallbackThemingTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
+    <style name="FallbackThemingTheme" parent="FallbackThemingThemeBase">
+        <item name="android:actionModeBackground">@color/action_mode_background</item>
         <item name="android:datePickerDialogTheme">@style/FallbackDatePickerDialogTheme</item>
-        <item name="android:textColor">@color/text_color</item>
-        <item name="android:textColorSecondary">@color/secondary_text_color</item>
-        <item name="colorSecondary">@color/secondary_text_color</item>
-        <item name="android:alertDialogTheme">@style/FallbackTheming.Dialog</item>
     </style>
 
     <style name="FallbackDatePickerDialogTheme" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
@@ -55,18 +51,9 @@
         <item name="android:windowBackground">@color/bg_default</item>
     </style>
 
-    <style name="Theme.ownCloud.Toolbar">
+    <style name="Theme.ownCloud.Toolbar" parent="BaseTheme.ownCloud.Toolbar">
+        <item name="android:actionModeBackground">@color/action_mode_background</item>
         <item name="android:windowDrawsSystemBarBackgrounds">true</item>
-        <item name="windowNoTitle">true</item>
-        <item name="windowActionBar">false</item>
-        <item name="colorPrimary">@color/primary</item>
-        <item name="colorPrimaryDark">@color/primary_dark</item>
-        <item name="colorAccent">@color/color_accent</item>
-        <item name="android:alertDialogTheme">@style/Theme.ownCloud.Dialog</item>
-        <item name="alertDialogTheme">@style/ownCloud.AlertDialog</item>
-        <item name="searchViewStyle">@style/ownCloud.SearchView</item>
-        <item name="windowActionModeOverlay">true</item>
-        <item name="android:windowBackground">@color/bg_default</item>
     </style>
 
     <style name="Theme.ownCloud.Toolbar.Drawer">

+ 6 - 2
src/main/res/values/colors.xml

@@ -71,8 +71,7 @@
     <color name="color_dark_transparent">#40162233</color>
 
     <!-- Multiselect backgrounds -->
-    <color name="action_mode_background">#757575</color>
-    <color name="action_mode_status_bar_background">#616161</color>
+    <color name="action_mode_background">@color/fontAppbar</color>
     <color name="selected_item_background">#ECECEC</color>
 
     <color name="drawer_menu_icon">#757575</color>
@@ -85,4 +84,9 @@
     <color name="themed_fg">#FFFFFF</color>
     <color name="themed_fg_inverse">#000000</color>
     <color name="themed_bg">#222222</color>
+
+    <!-- App bar -->
+    <color name="appbar">@android:color/white</color>
+    <color name="fontAppbar">#666666</color>
+    <color name="fontSecondaryAppbar">#A5A5A5</color>
 </resources>

+ 33 - 33
src/main/res/values/styles.xml

@@ -20,35 +20,38 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
 	<!-- General ownCloud app style -->
-	<style name="Theme.ownCloud" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
-    	<item name="android:actionBarStyle">@style/Theme.ownCloud.Widget.ActionBar</item>
+	<style name="BaseTheme.ownCloud" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
     	<item name="actionBarStyle">@style/Theme.ownCloud.Widget.ActionBar</item>
-        <item name="actionModeBackground">@color/action_mode_background</item>
+    	<item name="android:actionBarStyle">@style/Theme.ownCloud.Widget.ActionBar</item>
         <item name="actionBarPopupTheme">@style/ThemeOverlay.AppTheme.PopupMenu</item>
-        <item name="colorPrimary">@color/primary</item>
-        <item name="colorPrimaryDark">@color/primary_dark</item>
-        <item name="colorAccent">@color/color_accent</item>
-        <item name="android:alertDialogTheme">@style/ownCloud.AlertDialog</item>
+        <item name="actionModeBackground">@color/action_mode_background</item>
         <item name="alertDialogTheme">@style/ownCloud.AlertDialog</item>
-        <item name="searchViewStyle">@style/ownCloud.SearchView</item>
+        <item name="android:alertDialogTheme">@style/ownCloud.AlertDialog</item>
         <item name="android:textColor">@color/text_color</item>
+        <item name="android:textColorHint">@color/secondary_text_color</item>
         <item name="android:textColorSecondary">@color/secondary_text_color</item>
+        <item name="colorAccent">@color/color_accent</item>
+        <item name="colorPrimary">@color/primary</item>
+        <item name="colorPrimaryDark">@color/primary_dark</item>
         <item name="colorSecondary">@color/secondary_text_color</item>
-        <item name="android:textColorHint">@color/secondary_text_color</item>
+        <item name="searchViewStyle">@style/ownCloud.SearchView</item>
     </style>
 
-	<style name="FallbackThemingTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
-		<item name="colorPrimary">#424242</item>
-		<item name="colorPrimaryDark">#212121</item>
-		<item name="colorAccent">#757575</item>
+    <style name="Theme.ownCloud" parent="BaseTheme.ownCloud" />
+
+    <style name="FallbackThemingThemeBase" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
+        <item name="actionModeBackground">@color/action_mode_background</item>
+        <item name="android:alertDialogTheme">@style/FallbackTheming.Dialog</item>
         <item name="android:textAllCaps">false</item>
         <item name="android:textColor">@color/text_color</item>
-        <item name="android:alertDialogTheme">@style/FallbackTheming.Dialog</item>
-        <item name="dialogTheme">@style/FallbackTheming.Dialog</item>
-        <item name="android:windowBackground">@color/bg_default</item>
         <item name="android:textColorSecondary">@color/secondary_text_color</item>
+        <item name="android:windowBackground">@color/bg_default</item>
+        <item name="colorSecondary">@color/secondary_text_color</item>
+        <item name="dialogTheme">@style/FallbackTheming.Dialog</item>
     </style>
 
+    <style name="FallbackThemingTheme" parent="FallbackThemingThemeBase" />
+
 	<style name="FallbackDatePickerDialogTheme" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
         <item name="colorPrimary">@color/bg_default</item>
         <item name="android:textAllCaps">false</item>
@@ -72,19 +75,22 @@
 	</style>
 
 	<!-- separate action bar style for activities without an action bar -->
-	<style name="Theme.ownCloud.Toolbar" parent="Theme.MaterialComponents.DayNight.NoActionBar">
-		<item name="windowNoTitle">true</item>
-		<item name="windowActionBar">false</item>
-		<item name="colorPrimary">@color/primary</item>
-		<item name="colorPrimaryDark">@color/primary_dark</item>
-		<item name="colorAccent">@color/color_accent</item>
-		<item name="android:alertDialogTheme">@style/Theme.ownCloud.Dialog</item>
-		<item name="alertDialogTheme">@style/ownCloud.AlertDialog</item>
-		<item name="android:windowBackground">@color/bg_default</item>
-		<item name="searchViewStyle">@style/ownCloud.SearchView</item>
-		<item name="windowActionModeOverlay">true</item>
+    <style name="BaseTheme.ownCloud.Toolbar" parent="Theme.MaterialComponents.DayNight.NoActionBar">
+        <item name="actionModeBackground">@color/action_mode_background</item>
+        <item name="alertDialogTheme">@style/ownCloud.AlertDialog</item>
+        <item name="android:alertDialogTheme">@style/Theme.ownCloud.Dialog</item>
+        <item name="android:windowBackground">@color/bg_default</item>
+        <item name="colorAccent">@color/color_accent</item>
+        <item name="colorPrimary">@color/primary</item>
+        <item name="colorPrimaryDark">@color/primary_dark</item>
+        <item name="searchViewStyle">@style/ownCloud.SearchView</item>
+        <item name="windowActionBar">false</item>
+        <item name="windowActionModeOverlay">true</item>
+        <item name="windowNoTitle">true</item>
     </style>
 
+    <style name="Theme.ownCloud.Toolbar" parent="BaseTheme.ownCloud.Toolbar" />
+
 	<!-- separate style for Drawer activities needed for v21+ theming -->
 	<style name="Theme.ownCloud.Toolbar.Drawer" parent="Theme.ownCloud.Toolbar">
 	</style>
@@ -199,12 +205,6 @@
         <item name="android:textColorHint">@color/secondary_text_color</item>
 	</style>
 
-	<!-- Progress bar -->
-	<style name="Widget.ownCloud.TopProgressBar" parent="@style/Widget.AppCompat.ProgressBar.Horizontal">
-		<item name="android:progressDrawable">@drawable/actionbar_progress_horizontal</item>
-		<item name="android:indeterminateDrawable">@drawable/actionbar_progress_indeterminate_horizontal</item>
-	</style>
-
 	<style name="Theme.ownCloud.Fullscreen" parent="@style/Theme.MaterialComponents.DayNight">
         <item name="android:windowFullscreen">true</item>
 		<item name="colorAccent">@color/color_accent</item>