فهرست منبع

Merge pull request #2550 from nextcloud/whiteTheming

White theming
Andy Scherzinger 6 سال پیش
والد
کامیت
431386db85
23فایلهای تغییر یافته به همراه168 افزوده شده و 78 حذف شده
  1. 1 1
      src/main/java/com/owncloud/android/files/services/FileDownloader.java
  2. 1 1
      src/main/java/com/owncloud/android/files/services/FileUploader.java
  3. 1 1
      src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java
  4. 10 2
      src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java
  5. 9 4
      src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java
  6. 2 3
      src/main/java/com/owncloud/android/ui/activity/FileActivity.java
  7. 1 1
      src/main/java/com/owncloud/android/ui/activity/FingerprintActivity.java
  8. 9 3
      src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java
  9. 6 10
      src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java
  10. 10 10
      src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.java
  11. 29 6
      src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
  12. 2 2
      src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java
  13. 31 3
      src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java
  14. 3 4
      src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java
  15. 4 6
      src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java
  16. 1 1
      src/main/java/com/owncloud/android/ui/adapter/AccountListAdapter.java
  17. 14 0
      src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java
  18. 1 1
      src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java
  19. 1 1
      src/main/java/com/owncloud/android/ui/fragment/OCFileListBottomSheetDialog.java
  20. 7 5
      src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java
  21. 1 1
      src/main/java/com/owncloud/android/utils/MimeTypeUtil.java
  22. 23 11
      src/main/java/com/owncloud/android/utils/ThemeUtils.java
  23. 1 1
      src/main/res/menu/upload_files_picker.xml

+ 1 - 1
src/main/java/com/owncloud/android/files/services/FileDownloader.java

@@ -132,7 +132,7 @@ public class FileDownloader extends Service
                 .setContentText(getApplicationContext().getResources().getString(R.string.foreground_service_download))
                 .setSmallIcon(R.drawable.notification_icon)
                 .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.notification_icon))
-                .setColor(ThemeUtils.primaryColor(getApplicationContext()));
+                .setColor(ThemeUtils.primaryColor(getApplicationContext(), true));
 
         if ((android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)) {
             builder.setChannelId(NotificationUtils.NOTIFICATION_CHANNEL_DOWNLOAD);

+ 1 - 1
src/main/java/com/owncloud/android/files/services/FileUploader.java

@@ -468,7 +468,7 @@ public class FileUploader extends Service
                 .setContentText(getApplicationContext().getResources().getString(R.string.foreground_service_upload))
                 .setSmallIcon(R.drawable.notification_icon)
                 .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.notification_icon))
-                .setColor(ThemeUtils.primaryColor(getApplicationContext()));
+                .setColor(ThemeUtils.primaryColor(getApplicationContext(), true));
 
         if ((android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)) {
             builder.setChannelId(NotificationUtils.NOTIFICATION_CHANNEL_UPLOAD);

+ 1 - 1
src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java

@@ -518,7 +518,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
     private NotificationCompat.Builder createNotificationBuilder() {
         NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getContext());
         notificationBuilder.setSmallIcon(R.drawable.notification_icon).setAutoCancel(true);
-        notificationBuilder.setColor(ThemeUtils.primaryColor(getContext()));
+        notificationBuilder.setColor(ThemeUtils.primaryColor(getContext(), true));
         return notificationBuilder;
     }
     

+ 10 - 2
src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

@@ -30,6 +30,7 @@ import android.accounts.AccountManagerFuture;
 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;
@@ -39,6 +40,7 @@ import android.support.design.widget.NavigationView;
 import android.support.v4.view.GravityCompat;
 import android.support.v4.widget.DrawerLayout;
 import android.support.v7.app.ActionBarDrawerToggle;
+import android.support.v7.graphics.drawable.DrawerArrowDrawable;
 import android.text.Html;
 import android.text.TextUtils;
 import android.view.Menu;
@@ -718,12 +720,18 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
     protected void updateActionBarTitleAndHomeButton(OCFile chosenFile) {
         super.updateActionBarTitleAndHomeButton(chosenFile);
 
-        /// set home button properties
+        // set home button properties
         if (mDrawerToggle != null && chosenFile != null) {
             mDrawerToggle.setDrawerIndicatorEnabled(isRoot(chosenFile));
         } else if (mDrawerToggle != null){
             mDrawerToggle.setDrawerIndicatorEnabled(false);
         }
+
+        if (mDrawerToggle != null) {
+            DrawerArrowDrawable icon = mDrawerToggle.getDrawerArrowDrawable();
+            icon.setColorFilter(ThemeUtils.fontColor(this), PorterDuff.Mode.SRC_ATOP);
+            mDrawerToggle.setDrawerArrowDrawable(icon);
+        }
     }
 
     /**
@@ -1059,7 +1067,7 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
                 String background = capability.getServerBackground();
                 CapabilityBooleanType backgroundDefault = capability.getServerBackgroundDefault();
                 CapabilityBooleanType backgroundPlain = capability.getServerBackgroundPlain();
-                int primaryColor = ThemeUtils.primaryColor(getAccount(), this);
+                int primaryColor = ThemeUtils.primaryColor(getAccount(), false, this);
 
                 if (backgroundDefault.isTrue() && backgroundPlain.isTrue()) {
                     // use only solid color

+ 9 - 4
src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java

@@ -25,6 +25,7 @@ import android.annotation.SuppressLint;
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v4.widget.DrawerLayout;
+import android.support.v7.app.ActionBar;
 import android.view.MenuItem;
 import android.view.Window;
 import android.webkit.WebChromeClient;
@@ -37,6 +38,7 @@ import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.io.InputStream;
 
@@ -72,7 +74,7 @@ public class ExternalSiteWebView extends FileActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.externalsite_webview);
 
-        webview = (WebView) findViewById(R.id.webView);
+        webview = findViewById(R.id.webView);
         final WebSettings webSettings = webview.getSettings();
 
         webview.setFocusable(true);
@@ -89,8 +91,11 @@ public class ExternalSiteWebView extends FileActivity {
             setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
         }
 
-        getSupportActionBar().setTitle(title);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+        ActionBar actionBar = getSupportActionBar();
+        if (actionBar != null) {
+            ThemeUtils.setColoredTitle(actionBar, title, this);
+            actionBar.setDisplayHomeAsUpEnabled(true);
+        }
 
         // enable zoom
         webSettings.setSupportZoom(true);
@@ -115,7 +120,7 @@ public class ExternalSiteWebView extends FileActivity {
         webSettings.setJavaScriptEnabled(true);
         webSettings.setDomStorageEnabled(true);
 
-        final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
+        final ProgressBar progressBar = findViewById(R.id.progressBar);
 
         webview.setWebChromeClient(new WebChromeClient() {
             public void onProgressChanged(WebView view, int progress) {

+ 2 - 3
src/main/java/com/owncloud/android/ui/activity/FileActivity.java

@@ -76,6 +76,7 @@ import com.owncloud.android.ui.helpers.FileOperationsHelper;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.ErrorMessageAdapter;
 import com.owncloud.android.utils.FilesSyncHelper;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.util.concurrent.ExecutionException;
 
@@ -155,9 +156,7 @@ public abstract class FileActivity extends DrawerActivity
             mFileOperationsHelper.setOpIdWaitingFor(
                     savedInstanceState.getLong(KEY_WAITING_FOR_OP_ID, Long.MAX_VALUE)
                     );
-            if (getSupportActionBar() != null) {
-                getSupportActionBar().setTitle(savedInstanceState.getString(KEY_ACTION_BAR_TITLE));
-            }
+            ThemeUtils.setColoredTitle(getSupportActionBar(), savedInstanceState.getString(KEY_ACTION_BAR_TITLE), this);
         } else {
             account = getIntent().getParcelableExtra(FileActivity.EXTRA_ACCOUNT);
             mFile = getIntent().getParcelableExtra(FileActivity.EXTRA_FILE);

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

@@ -99,7 +99,7 @@ public class FingerprintActivity extends AppCompatActivity {
 
         Toolbar toolbar = findViewById(R.id.toolbar);
         toolbar.setTitleTextColor(ThemeUtils.fontColor(this));
-        toolbar.setBackground(new ColorDrawable(ThemeUtils.primaryColor(this)));
+        toolbar.setBackground(new ColorDrawable(ThemeUtils.primaryColor(this, false)));
     }
 
     private void startFingerprint() {

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

@@ -28,6 +28,7 @@ import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.res.Resources.NotFoundException;
 import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.Parcelable;
 import android.support.v4.app.Fragment;
@@ -131,7 +132,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
 
         if (getSupportActionBar() != null) {
             getSupportActionBar().setDisplayShowTitleEnabled(true);
-            getSupportActionBar().setTitle(caption);
+            ThemeUtils.setColoredTitle(getSupportActionBar(), caption, this);
         }
 
         setIndeterminate(mSyncInProgress);
@@ -382,7 +383,12 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
             boolean atRoot = (currentDir == null || currentDir.getParentId() == 0);
             actionBar.setDisplayHomeAsUpEnabled(!atRoot);
             actionBar.setHomeButtonEnabled(!atRoot);
-            actionBar.setTitle(atRoot ? caption : currentDir.getFileName());
+
+            Drawable backArrow = getResources().getDrawable(R.drawable.ic_arrow_back);
+
+            actionBar.setHomeAsUpIndicator(ThemeUtils.tintDrawable(backArrow, ThemeUtils.fontColor(this)));
+
+            ThemeUtils.setColoredTitle(getSupportActionBar(), atRoot ? caption : currentDir.getFileName(), this);
         }
     }
 
@@ -393,7 +399,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
         mCancelBtn = findViewById(R.id.folder_picker_btn_cancel);
         mCancelBtn.setOnClickListener(this);
         mChooseBtn = findViewById(R.id.folder_picker_btn_choose);
-        mChooseBtn.getBackground().setColorFilter(ThemeUtils.primaryColor(this), PorterDuff.Mode.SRC_ATOP);
+        mChooseBtn.getBackground().setColorFilter(ThemeUtils.primaryColor(this, true), PorterDuff.Mode.SRC_ATOP);
         mChooseBtn.setOnClickListener(this);
     }
     

+ 6 - 10
src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java

@@ -52,10 +52,7 @@ public class ParticipateActivity extends FileActivity {
         // setup drawer
         setupDrawer(R.id.nav_participate);
 
-        if (getSupportActionBar() != null) {
-            getSupportActionBar().setTitle(ThemeUtils.getColoredTitle(getString(R.string.drawer_participate),
-                    ThemeUtils.fontColor(this)));
-        }
+        ThemeUtils.setColoredTitle(getSupportActionBar(), R.string.drawer_participate, this);
 
         setupContent();
     }
@@ -68,21 +65,21 @@ public class ParticipateActivity extends FileActivity {
         contributeIrcView.setMovementMethod(LinkMovementMethod.getInstance());
         contributeIrcView.setText(Html.fromHtml(getString(R.string.participate_contribute_irc_text) + " " +
                 getString(R.string.participate_contribute_irc_text_link,
-                        ThemeUtils.colorToHexString(ThemeUtils.primaryColor(this)),
+                        ThemeUtils.colorToHexString(ThemeUtils.primaryColor(this, true)),
                         getString(R.string.irc_weblink))));
 
         TextView contributeForumView = findViewById(R.id.participate_contribute_forum_text);
         contributeForumView.setMovementMethod(LinkMovementMethod.getInstance());
         contributeForumView.setText(Html.fromHtml(getString(R.string.participate_contribute_forum_text) + " " +
                 getString(R.string.participate_contribute_forum_text_link,
-                        ThemeUtils.colorToHexString(ThemeUtils.primaryColor(this)),
+                        ThemeUtils.colorToHexString(ThemeUtils.primaryColor(this, true)),
                         getString(R.string.help_link), getString(R.string.participate_contribute_forum_forum))));
 
         TextView contributeTranslationView = findViewById(R.id.participate_contribute_translate_text);
         contributeTranslationView.setMovementMethod(LinkMovementMethod.getInstance());
         contributeTranslationView.setText(Html.fromHtml(
                 getString(R.string.participate_contribute_translate_link,
-                        ThemeUtils.colorToHexString(ThemeUtils.primaryColor(this)),
+                        ThemeUtils.colorToHexString(ThemeUtils.primaryColor(this, true)),
                         getString(R.string.translation_link),
                         getString(R.string.participate_contribute_translate_translate)) + " " +
                         getString(R.string.participate_contribute_translate_text)));
@@ -92,12 +89,11 @@ public class ParticipateActivity extends FileActivity {
         contributeGithubView.setText(Html.fromHtml(
                 getString(R.string.participate_contribute_github_text,
                         getString(R.string.participate_contribute_github_text_link,
-                                ThemeUtils.colorToHexString(ThemeUtils.primaryColor(this)),
+                                ThemeUtils.colorToHexString(ThemeUtils.primaryColor(this, true)),
                                 getString(R.string.contributing_link)))));
 
         AppCompatButton reportButton = findViewById(R.id.participate_testing_report);
-        reportButton.getBackground().setColorFilter(ThemeUtils.primaryColor(this), PorterDuff.Mode.SRC_ATOP);
-        reportButton.setTextColor(ThemeUtils.fontColor(this));
+        reportButton.getBackground().setColorFilter(ThemeUtils.primaryAccentColor(this), PorterDuff.Mode.SRC_ATOP);
         reportButton.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {

+ 10 - 10
src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.java

@@ -90,31 +90,31 @@ public class PassCodeActivity extends AppCompatActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.passcodelock);
 
-        int primaryColor = ThemeUtils.primaryColor(this);
+        int elementColor = ThemeUtils.elementColor(this);
 
         mBCancel = findViewById(R.id.cancel);
-        mBCancel.getBackground().setColorFilter(primaryColor, PorterDuff.Mode.SRC_ATOP);
+        mBCancel.getBackground().setColorFilter(elementColor, PorterDuff.Mode.SRC_ATOP);
 
         mPassCodeHdr = findViewById(R.id.header);
         mPassCodeHdrExplanation = findViewById(R.id.explanation);
 
         mPassCodeEditTexts[0] = findViewById(R.id.txt0);
-        mPassCodeEditTexts[0].setTextColor(primaryColor);
-        mPassCodeEditTexts[0].getBackground().setColorFilter(primaryColor, PorterDuff.Mode.SRC_ATOP);
+        mPassCodeEditTexts[0].setTextColor(elementColor);
+        mPassCodeEditTexts[0].getBackground().setColorFilter(elementColor, PorterDuff.Mode.SRC_ATOP);
         mPassCodeEditTexts[0].requestFocus();
         getWindow().setSoftInputMode(android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
 
         mPassCodeEditTexts[1] = findViewById(R.id.txt1);
-        mPassCodeEditTexts[1].setTextColor(primaryColor);
-        mPassCodeEditTexts[1].getBackground().setColorFilter(primaryColor, PorterDuff.Mode.SRC_ATOP);
+        mPassCodeEditTexts[1].setTextColor(elementColor);
+        mPassCodeEditTexts[1].getBackground().setColorFilter(elementColor, PorterDuff.Mode.SRC_ATOP);
 
         mPassCodeEditTexts[2] = findViewById(R.id.txt2);
-        mPassCodeEditTexts[2].setTextColor(primaryColor);
-        mPassCodeEditTexts[2].getBackground().setColorFilter(primaryColor, PorterDuff.Mode.SRC_ATOP);
+        mPassCodeEditTexts[2].setTextColor(elementColor);
+        mPassCodeEditTexts[2].getBackground().setColorFilter(elementColor, PorterDuff.Mode.SRC_ATOP);
 
         mPassCodeEditTexts[3] = findViewById(R.id.txt3);
-        mPassCodeEditTexts[3].setTextColor(primaryColor);
-        mPassCodeEditTexts[3].getBackground().setColorFilter(primaryColor, PorterDuff.Mode.SRC_ATOP);
+        mPassCodeEditTexts[3].setTextColor(elementColor);
+        mPassCodeEditTexts[3].getBackground().setColorFilter(elementColor, PorterDuff.Mode.SRC_ATOP);
 
         if (ACTION_CHECK.equals(getIntent().getAction())) {
             /// this is a pass code request; the user has to input the right value

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

@@ -48,9 +48,11 @@ import android.support.v4.app.DialogFragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.content.ContextCompat;
 import android.support.v4.graphics.drawable.DrawableCompat;
+import android.support.v4.view.MenuItemCompat;
 import android.support.v7.app.ActionBar;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.app.AlertDialog.Builder;
+import android.support.v7.widget.SearchView;
 import android.text.format.DateFormat;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -723,9 +725,9 @@ public class ReceiveExternalFilesActivity extends FileActivity
 
         if (actionBar != null) {
             if ("".equals(current_dir)) {
-                actionBar.setTitle(getString(R.string.uploader_top_message));
+                ThemeUtils.setColoredTitle(actionBar, R.string.uploader_top_message, this);
             } else {
-                actionBar.setTitle(current_dir);
+                ThemeUtils.setColoredTitle(actionBar, current_dir, this);
             }
 
             actionBar.setDisplayHomeAsUpEnabled(notRoot);
@@ -766,18 +768,25 @@ public class ReceiveExternalFilesActivity extends FileActivity
             }
             Button btnChooseFolder = findViewById(R.id.uploader_choose_folder);
                 btnChooseFolder.setOnClickListener(this);
-            btnChooseFolder.getBackground().setColorFilter(ThemeUtils.primaryColor(getAccount(), this),
+            btnChooseFolder.getBackground().setColorFilter(ThemeUtils.primaryColor(getAccount(), true, this),
                         PorterDuff.Mode.SRC_ATOP);
+            btnChooseFolder.setTextColor(ThemeUtils.fontColor(this));
 
             if (getSupportActionBar() != null) {
                 getSupportActionBar().setBackgroundDrawable(new ColorDrawable(
-                        ThemeUtils.primaryColor(getAccount(), this)));
+                        ThemeUtils.primaryColor(getAccount(), false, this)));
             }
 
             ThemeUtils.colorStatusBar(this, ThemeUtils.primaryDarkColor(getAccount(), this));
 
-            ThemeUtils.colorToolbarProgressBar(this, ThemeUtils.primaryColor(getAccount(), 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)));
+            }
+            
             Button btnNewFolder = findViewById(R.id.uploader_cancel);
                 btnNewFolder.setOnClickListener(this);
 
@@ -802,7 +811,7 @@ public class ReceiveExternalFilesActivity extends FileActivity
                 mEmptyListHeadline.setText(headline);
                 mEmptyListMessage.setText(message);
 
-                mEmptyListIcon.setImageDrawable(ThemeUtils.tintDrawable(icon, ThemeUtils.primaryColor(this)));
+                mEmptyListIcon.setImageDrawable(ThemeUtils.tintDrawable(icon, ThemeUtils.primaryColor(this, true)));
 
                 mEmptyListIcon.setVisibility(View.VISIBLE);
                 mEmptyListProgress.setVisibility(View.GONE);
@@ -1023,6 +1032,20 @@ public class ReceiveExternalFilesActivity extends FileActivity
             switchAccountMenu.setVisible(false);
         }
 
+        // tint search event
+        final MenuItem item = menu.findItem(R.id.action_search);
+        SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
+
+        // hacky as no default way is provided
+        int fontColor = ThemeUtils.fontColor(this);
+        EditText editText = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
+        editText.setHintTextColor(fontColor);
+        editText.setTextColor(fontColor);
+        ImageView searchClose = searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
+        searchClose.setColorFilter(ThemeUtils.fontColor(this));
+        ImageView searchButton = searchView.findViewById(android.support.v7.appcompat.R.id.search_button);
+        searchButton.setColorFilter(ThemeUtils.fontColor(this));
+
         return true;
     }
 

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

@@ -55,7 +55,7 @@ public abstract class ToolbarActivity extends BaseActivity {
      * want to use the toolbar.
      */
     protected void setupToolbar(boolean useBackgroundImage) {
-        int primaryColor = ThemeUtils.primaryColor(this);
+        int primaryColor = ThemeUtils.primaryColor(this, false);
         int primaryDarkColor = ThemeUtils.primaryDarkColor(this);
         int fontColor = ThemeUtils.fontColor(this);
 
@@ -67,7 +67,7 @@ public abstract class ToolbarActivity extends BaseActivity {
             mProgressBar.setIndeterminateDrawable(
                     ContextCompat.getDrawable(this, R.drawable.actionbar_progress_indeterminate_horizontal));
 
-            ThemeUtils.colorToolbarProgressBar(this, ThemeUtils.primaryColor(this));
+            ThemeUtils.colorToolbarProgressBar(this, ThemeUtils.primaryColor(this, false));
         }
 
         mPreviewImage = findViewById(R.id.preview_image);

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

@@ -21,9 +21,12 @@
 package com.owncloud.android.ui.activity;
 
 import android.accounts.Account;
+import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.content.Intent;
+import android.content.res.ColorStateList;
 import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Environment;
@@ -33,8 +36,11 @@ import android.support.v4.app.DialogFragment;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentTransaction;
+import android.support.v4.view.MenuItemCompat;
 import android.support.v7.app.ActionBar;
 import android.support.v7.widget.AppCompatButton;
+import android.support.v7.widget.AppCompatSpinner;
+import android.support.v7.widget.SearchView;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
@@ -42,6 +48,8 @@ import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
 import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
 import android.widget.Spinner;
 import android.widget.TextView;
 
@@ -184,6 +192,12 @@ 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);
+
+        if (actionBar != null) {
+            actionBar.setHomeAsUpIndicator(ThemeUtils.tintDrawable(backArrow, ThemeUtils.fontColor(this)));
+        }
+
         // wait dialog
         if (mCurrentDialog != null) {
             mCurrentDialog.dismiss();
@@ -221,6 +235,16 @@ public class UploadFilesActivity extends FileActivity implements
         MenuItem switchView = menu.findItem(R.id.action_switch_view);
         switchView.setTitle(isGridView() ? R.string.action_switch_list_view : R.string.action_switch_grid_view);
 
+        int fontColor = ThemeUtils.fontColor(this);
+        final MenuItem item = menu.findItem(R.id.action_search);
+        SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
+        EditText editText = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
+        editText.setHintTextColor(fontColor);
+        editText.setTextColor(fontColor);
+        ImageView searchClose = searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
+        searchClose.setColorFilter(fontColor);
+
+
         return super.onCreateOptionsMenu(menu);
     }
 
@@ -370,11 +394,15 @@ public class UploadFilesActivity extends FileActivity implements
             super(ctx, view);
         }
 
+        @SuppressLint("RestrictedApi")
         public @NonNull View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
             View v = super.getView(position, convertView, parent);
-    
-            ((TextView) v).setTextColor(getResources().getColorStateList(
-                    android.R.color.white));
+
+            int color = ThemeUtils.fontColor(getContext());
+            ColorStateList colorStateList = ColorStateList.valueOf(color);
+
+            ((AppCompatSpinner) parent).setSupportBackgroundTintList(colorStateList);
+            ((TextView) v).setTextColor(colorStateList);
             return v;
         }
     

+ 3 - 4
src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java

@@ -58,6 +58,7 @@ import com.owncloud.android.ui.adapter.UploadListAdapter;
 import com.owncloud.android.ui.decoration.MediaGridItemDecoration;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.FilesSyncHelper;
+import com.owncloud.android.utils.ThemeUtils;
 
 import butterknife.BindString;
 import butterknife.BindView;
@@ -138,7 +139,7 @@ public class UploadListActivity extends FileActivity {
         setupContent();
 
         if (getSupportActionBar() != null) {
-            getSupportActionBar().setTitle(getString(R.string.uploads_view_title));
+            ThemeUtils.setColoredTitle(getSupportActionBar(), R.string.uploads_view_title, this);
         }
 
         BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation_view);
@@ -381,9 +382,7 @@ public class UploadListActivity extends FileActivity {
     protected void onAccountSet(boolean stateWasRecovered) {
         super.onAccountSet(stateWasRecovered);
 
-        if (getSupportActionBar() != null) {
-            getSupportActionBar().setTitle(getString(R.string.uploads_view_title));
-        }
+        ThemeUtils.setColoredTitle(getSupportActionBar(), R.string.uploads_view_title, this);
 
         if (mAccountWasSet) {
             setAccountInDrawer(getAccount());

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

@@ -147,7 +147,7 @@ public class UserInfoActivity extends FileActivity {
         setupToolbar(useBackgroundImage);
         updateActionBarTitleAndHomeButtonByString("");
 
-        mUserInfoList.setAdapter(new UserInfoAdapter(null, ThemeUtils.primaryColor(getAccount(), this)));
+        mUserInfoList.setAdapter(new UserInfoAdapter(null, ThemeUtils.primaryColor(getAccount(), true, this)));
         mUserInfoList.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
 
         if (userInfo != null) {
@@ -223,7 +223,7 @@ public class UserInfoActivity extends FileActivity {
                 ImageView backgroundImageView = appBar.findViewById(R.id.drawer_header_background);
 
                 String background = getStorageManager().getCapability(account.name).getServerBackground();
-                int primaryColor = ThemeUtils.primaryColor(getAccount(), this);
+                int primaryColor = ThemeUtils.primaryColor(getAccount(), false, this);
 
                 if (URLUtil.isValidUrl(background)) {
                     // background image
@@ -265,7 +265,7 @@ public class UserInfoActivity extends FileActivity {
         DisplayUtils.setAvatar(account, UserInfoActivity.this, mCurrentAccountAvatarRadiusDimension, getResources(),
                 getStorageManager(), avatar, this);
 
-        int tint = ThemeUtils.primaryColor(account, this);
+        int tint = ThemeUtils.primaryColor(account, true, this);
 
         if (!TextUtils.isEmpty(userInfo.getDisplayName())) {
             fullName.setText(userInfo.getDisplayName());
@@ -300,9 +300,7 @@ public class UserInfoActivity extends FileActivity {
         return result;
     }
 
-    private void addToListIfNeeded(List<UserInfoDetailsItem> info,
-                                   @DrawableRes int icon,
-                                   String text,
+    private void addToListIfNeeded(List<UserInfoDetailsItem> info, @DrawableRes int icon, String text,
                                    @StringRes int contentDescriptionInt) {
         if (!TextUtils.isEmpty(text))
             info.add(new UserInfoDetailsItem(icon, text, getResources().getString(contentDescriptionInt)));

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

@@ -121,7 +121,7 @@ public class AccountListAdapter extends ArrayAdapter<AccountListItem> implements
 
         TextView userName = actionView.findViewById(R.id.user_name);
         userName.setText(R.string.prefs_add_account);
-        userName.setTextColor(ThemeUtils.primaryColor(getContext()));
+        userName.setTextColor(ThemeUtils.primaryColor(getContext(), true));
 
         ((ImageView) actionView.findViewById(R.id.user_icon)).setImageResource(R.drawable.ic_account_plus);
 

+ 14 - 0
src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java

@@ -26,6 +26,7 @@ package com.owncloud.android.ui.dialog;
  *  Triggers the removal according to the user response.
  */
 
+import android.app.AlertDialog;
 import android.app.Dialog;
 import android.os.Bundle;
 
@@ -33,6 +34,7 @@ import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.ui.activity.ComponentsGetter;
 import com.owncloud.android.ui.dialog.ConfirmationDialogFragment.ConfirmationDialogFragmentListener;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -110,6 +112,18 @@ implements ConfirmationDialogFragmentListener {
         return newInstance(list);
     }
 
+    @Override
+    public void onStart() {
+        super.onStart();
+
+        int color = ThemeUtils.primaryAccentColor(getActivity());
+
+        android.support.v7.app.AlertDialog alertDialog = (android.support.v7.app.AlertDialog) getDialog();
+
+        alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(color);
+        alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(color);
+        alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL).setTextColor(color);
+    }
     
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {

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

@@ -638,7 +638,7 @@ public class ExtendedListFragment extends Fragment
 
                     if (tintIcon) {
                         mEmptyListIcon.setImageDrawable(ThemeUtils.tintDrawable(icon,
-                                ThemeUtils.primaryColor(getContext())));
+                                ThemeUtils.primaryColor(getContext(), true)));
                     } else {
                         mEmptyListIcon.setImageResource(icon);
                     }

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

@@ -73,7 +73,7 @@ public class OCFileListBottomSheetDialog extends BottomSheetDialog {
 
         unbinder = ButterKnife.bind(this, view);
 
-        int primaryColor = ThemeUtils.primaryColor(getContext());
+        int primaryColor = ThemeUtils.primaryColor(getContext(), true);
         ThemeUtils.tintDrawable(iconUploadFiles.getDrawable(), primaryColor);
         ThemeUtils.tintDrawable(iconUploadFromApp.getDrawable(), primaryColor);
         ThemeUtils.tintDrawable(iconMakeDir.getDrawable(), primaryColor);

+ 7 - 5
src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java

@@ -171,12 +171,14 @@ public class ContactListFragment extends FileFragment {
 
         ContactsPreferenceActivity contactsPreferenceActivity = (ContactsPreferenceActivity) getActivity();
 
-        ActionBar actionBar = contactsPreferenceActivity.getSupportActionBar();
-        if (actionBar != null) {
-            actionBar.setTitle(R.string.actionbar_contacts_restore);
-            actionBar.setDisplayHomeAsUpEnabled(true);
+        if (contactsPreferenceActivity != null) {
+            ActionBar actionBar = contactsPreferenceActivity.getSupportActionBar();
+            if (actionBar != null) {
+                ThemeUtils.setColoredTitle(actionBar, R.string.actionbar_contacts_restore, getContext());
+                actionBar.setDisplayHomeAsUpEnabled(true);
+            }
+            contactsPreferenceActivity.setDrawerIndicatorEnabled(false);
         }
-        contactsPreferenceActivity.setDrawerIndicatorEnabled(false);
 
         recyclerView = view.findViewById(R.id.contactlist_recyclerview);
 

+ 1 - 1
src/main/java/com/owncloud/android/utils/MimeTypeUtil.java

@@ -103,7 +103,7 @@ public class MimeTypeUtil {
             Drawable icon = ContextCompat.getDrawable(context, iconId);
 
             if (R.drawable.file_zip == iconId) {
-                ThemeUtils.tintDrawable(icon, ThemeUtils.elementColor(account, context));
+                ThemeUtils.tintDrawable(icon, ThemeUtils.primaryColor(account, true, context));
             }
 
             return icon;

+ 23 - 11
src/main/java/com/owncloud/android/utils/ThemeUtils.java

@@ -32,6 +32,7 @@ import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.support.annotation.ColorInt;
 import android.support.annotation.DrawableRes;
+import android.support.annotation.Nullable;
 import android.support.design.widget.FloatingActionButton;
 import android.support.design.widget.Snackbar;
 import android.support.v4.app.FragmentActivity;
@@ -92,14 +93,23 @@ public class ThemeUtils {
     }
 
     public static int primaryColor(Context context) {
-        return primaryColor(null, context);
+        return primaryColor(context, false);
     }
 
-    public static int primaryColor(Account account, Context context) {
+    public static int primaryColor(Context context, boolean replaceWhite) {
+        return primaryColor(null, replaceWhite, context);
+    }
+
+    public static int primaryColor(Account account, boolean replaceWhite, Context context) {
         OCCapability capability = getCapability(account, context);
 
         try {
-            return Color.parseColor(capability.getServerColor());
+            int color = Color.parseColor(capability.getServerColor());
+            if (replaceWhite && Color.WHITE == color) {
+                return Color.GRAY;
+            } else {
+                return color;
+            }
         } catch (Exception e) {
             return context.getResources().getColor(R.color.primary);
         }
@@ -171,7 +181,7 @@ public class ThemeUtils {
      * @param actionBar actionBar to be used
      * @param title     title to be shown
      */
-    public static void setColoredTitle(ActionBar actionBar, String title, Context context) {
+    public static void setColoredTitle(@Nullable ActionBar actionBar, String title, Context context) {
         if (actionBar != null) {
             if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) {
                 actionBar.setTitle(title);
@@ -193,13 +203,15 @@ public class ThemeUtils {
      * @param actionBar actionBar to be used
      * @param titleId   title to be shown
      */
-    public static void setColoredTitle(ActionBar actionBar, int titleId, Context context) {
-        if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) {
-            actionBar.setTitle(titleId);
-        } else {
-            String colorHex = colorToHexString(fontColor(context));
-            String title = context.getString(titleId);
-            actionBar.setTitle(Html.fromHtml("<font color='" + colorHex + "'>" + title + "</font>"));
+    public static void setColoredTitle(@Nullable ActionBar actionBar, int titleId, Context context) {
+        if (actionBar != null) {
+            if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) {
+                actionBar.setTitle(titleId);
+            } else {
+                String colorHex = colorToHexString(fontColor(context));
+                String title = context.getString(titleId);
+                actionBar.setTitle(Html.fromHtml("<font color='" + colorHex + "'>" + title + "</font>"));
+            }
         }
     }
 

+ 1 - 1
src/main/res/menu/upload_files_picker.xml

@@ -24,7 +24,7 @@
           android:title="@string/actionbar_search"
           android:contentDescription="@string/actionbar_search"
           app:actionViewClass="android.support.v7.widget.SearchView"
-          app:showAsAction="ifRoom|collapseActionView"/>
+          app:showAsAction="ifRoom"/>
     <item
         android:id="@+id/action_select_all"
         android:checkable="true"