瀏覽代碼

move theming to ThemeUtils

AndyScherzinger 7 年之前
父節點
當前提交
28a19bb004
共有 39 個文件被更改,包括 501 次插入450 次删除
  1. 3 3
      src/main/java/com/owncloud/android/media/MediaControlView.java
  2. 2 2
      src/main/java/com/owncloud/android/media/MediaService.java
  3. 2 2
      src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java
  4. 9 8
      src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java
  5. 4 3
      src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java
  6. 5 5
      src/main/java/com/owncloud/android/ui/activity/FingerprintActivity.java
  7. 3 3
      src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java
  8. 2 1
      src/main/java/com/owncloud/android/ui/activity/FolderSyncActivity.java
  9. 2 1
      src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java
  10. 2 1
      src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java
  11. 9 8
      src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java
  12. 10 10
      src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.java
  13. 12 11
      src/main/java/com/owncloud/android/ui/activity/Preferences.java
  14. 2 2
      src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
  15. 9 9
      src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java
  16. 3 3
      src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java
  17. 2 1
      src/main/java/com/owncloud/android/ui/adapter/AccountListAdapter.java
  18. 2 1
      src/main/java/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java
  19. 3 2
      src/main/java/com/owncloud/android/ui/adapter/FileListListAdapter.java
  20. 3 3
      src/main/java/com/owncloud/android/ui/adapter/FolderSyncAdapter.java
  21. 4 4
      src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java
  22. 2 2
      src/main/java/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.java
  23. 2 2
      src/main/java/com/owncloud/android/ui/dialog/LoadingDialog.java
  24. 4 4
      src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java
  25. 4 4
      src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java
  26. 4 4
      src/main/java/com/owncloud/android/ui/dialog/SortingOrderDialogFragment.java
  27. 8 7
      src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.java
  28. 8 8
      src/main/java/com/owncloud/android/ui/fragment/EditShareFragment.java
  29. 14 13
      src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java
  30. 2 1
      src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java
  31. 13 12
      src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java
  32. 10 9
      src/main/java/com/owncloud/android/ui/fragment/ShareFileFragment.java
  33. 4 4
      src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java
  34. 5 4
      src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactsBackupFragment.java
  35. 2 2
      src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java
  36. 2 2
      src/main/java/com/owncloud/android/ui/preview/FileDownloadFragment.java
  37. 2 288
      src/main/java/com/owncloud/android/utils/DisplayUtils.java
  38. 1 1
      src/main/java/com/owncloud/android/utils/MimeTypeUtil.java
  39. 321 0
      src/main/java/com/owncloud/android/utils/ThemeUtils.java

+ 3 - 3
src/main/java/com/owncloud/android/media/MediaControlView.java

@@ -39,7 +39,7 @@ import android.widget.SeekBar.OnSeekBarChangeListener;
 import android.widget.TextView;
 
 import com.owncloud.android.R;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.util.Formatter;
 import java.util.Locale;
@@ -223,10 +223,10 @@ public class MediaControlView extends FrameLayout /* implements OnLayoutChangeLi
         if (mProgress != null) {
             if (mProgress instanceof SeekBar) {
                 SeekBar seeker = (SeekBar) mProgress;
-                DisplayUtils.colorPreLollipopHorizontalSeekBar(seeker);
+                ThemeUtils.colorPreLollipopHorizontalSeekBar(seeker);
                 seeker.setOnSeekBarChangeListener(this);
             } else {
-                DisplayUtils.colorPreLollipopHorizontalProgressBar(mProgress);
+                ThemeUtils.colorPreLollipopHorizontalProgressBar(mProgress);
             }
             mProgress.setMax(1000);
         }

+ 2 - 2
src/main/java/com/owncloud/android/media/MediaService.java

@@ -42,7 +42,7 @@ import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.io.IOException;
 
@@ -229,7 +229,7 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
 
         mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
         mNotificationBuilder = new NotificationCompat.Builder(this);
-        mNotificationBuilder.setColor(DisplayUtils.primaryColor());
+        mNotificationBuilder.setColor(ThemeUtils.primaryColor());
         mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
         mBinder = new MediaServiceBinder(this);
     }

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

@@ -46,7 +46,7 @@ import com.owncloud.android.operations.RefreshFolderOperation;
 import com.owncloud.android.operations.UpdateOCVersionOperation;
 import com.owncloud.android.ui.activity.ErrorsWhileCopyingHandlerActivity;
 import com.owncloud.android.utils.DataHolderUtil;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import org.apache.jackrabbit.webdav.DavException;
 
@@ -508,7 +508,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(DisplayUtils.primaryColor());
+        notificationBuilder.setColor(ThemeUtils.primaryColor());
         return notificationBuilder;
     }
     

+ 9 - 8
src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

@@ -75,6 +75,7 @@ import com.owncloud.android.ui.events.MenuItemClickEvent;
 import com.owncloud.android.ui.events.SearchEvent;
 import com.owncloud.android.ui.fragment.OCFileListFragment;
 import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 import com.owncloud.android.utils.svg.MenuSimpleTarget;
 
 import org.greenrobot.eventbus.EventBus;
@@ -253,7 +254,7 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
         // Set the drawer toggle as the DrawerListener
         mDrawerLayout.addDrawerListener(mDrawerToggle);
         mDrawerToggle.setDrawerIndicatorEnabled(true);
-        mDrawerToggle.getDrawerArrowDrawable().setColor(DisplayUtils.fontColor());
+        mDrawerToggle.getDrawerArrowDrawable().setColor(ThemeUtils.fontColor());
     }
 
     /**
@@ -265,7 +266,7 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
         mAccountEndAccountAvatar = (ImageView) findNavigationViewChildById(R.id.drawer_account_end);
 
         mAccountChooserToggle = (ImageView) findNavigationViewChildById(R.id.drawer_account_chooser_toogle);
-        mAccountChooserToggle.setColorFilter(DisplayUtils.fontColor());
+        mAccountChooserToggle.setColorFilter(ThemeUtils.fontColor());
 
         if (getResources().getBoolean(R.bool.allow_profile_click)) {
             mAccountChooserToggle.setImageResource(R.drawable.ic_down);
@@ -290,7 +291,7 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
         mQuotaProgressBar = (ProgressBar) findQuotaViewById(R.id.drawer_quota_ProgressBar);
         mQuotaTextPercentage = (TextView) findQuotaViewById(R.id.drawer_quota_percentage);
         mQuotaTextLink = (TextView) findQuotaViewById(R.id.drawer_quota_link);
-        DisplayUtils.colorPreLollipopHorizontalProgressBar(mQuotaProgressBar);
+        ThemeUtils.colorPreLollipopHorizontalProgressBar(mQuotaProgressBar);
     }
 
     /**
@@ -722,11 +723,11 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
             TextView username = (TextView) findNavigationViewChildById(R.id.drawer_username);
             TextView usernameFull = (TextView) findNavigationViewChildById(R.id.drawer_username_full);
             usernameFull.setText(account.name);
-            usernameFull.setTextColor(DisplayUtils.fontColor());
+            usernameFull.setTextColor(ThemeUtils.fontColor());
             try {
                 OwnCloudAccount oca = new OwnCloudAccount(account, this);
                 username.setText(oca.getDisplayName());
-                username.setTextColor(DisplayUtils.fontColor());
+                username.setTextColor(ThemeUtils.fontColor());
             } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) {
                 Log_OC.w(TAG, "Couldn't read display name of account fallback to account name");
                 username.setText(AccountUtils.getAccountUsername(account.name));
@@ -802,7 +803,7 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
      */
     private void setQuotaInformation(long usedSpace, long totalSpace, int relative) {
         mQuotaProgressBar.setProgress(relative);
-        DisplayUtils.colorHorizontalProgressBar(mQuotaProgressBar, DisplayUtils.getRelativeInfoColor(this, relative));
+        ThemeUtils.colorHorizontalProgressBar(mQuotaProgressBar, DisplayUtils.getRelativeInfoColor(this, relative));
 
         updateQuotaLink();
 
@@ -902,9 +903,9 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
                 }
             }
 
-            DisplayUtils.tintDrawable(item.getIcon(), DisplayUtils.primaryColor());
+            ThemeUtils.tintDrawable(item.getIcon(), ThemeUtils.primaryColor());
 
-            String colorHex = DisplayUtils.colorToHexString(DisplayUtils.primaryColor());
+            String colorHex = ThemeUtils.colorToHexString(ThemeUtils.primaryColor());
             item.setTitle(Html.fromHtml("<font color='" + colorHex + "'>" + item.getTitle() + "</font>"));
 
             mCheckedMenuItem = menuItemId;

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

@@ -104,6 +104,7 @@ import com.owncloud.android.utils.ErrorMessageAdapter;
 import com.owncloud.android.utils.MimeTypeUtil;
 import com.owncloud.android.utils.PermissionUtil;
 import com.owncloud.android.utils.PushUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
@@ -249,7 +250,7 @@ public class FileDisplayActivity extends HookActivity
                             }
                         });
 
-                DisplayUtils.colorSnackbar(this, snackbar);
+                ThemeUtils.colorSnackbar(this, snackbar);
 
                 snackbar.show();
             } else {
@@ -663,12 +664,12 @@ public class FileDisplayActivity extends HookActivity
         searchView = (SearchView) MenuItemCompat.getActionView(item);
 
         // hacky as no default way is provided
-        int fontColor = DisplayUtils.fontColor();
+        int fontColor = ThemeUtils.fontColor();
         EditText editText = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
         editText.setHintTextColor(fontColor);
         editText.setTextColor(fontColor);
         ImageView searchClose = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
-        searchClose.setColorFilter(DisplayUtils.fontColor());
+        searchClose.setColorFilter(ThemeUtils.fontColor());
 
         // populate list of menu items to show/hide when drawer is opened/closed
         mDrawerMenuItemstoShowHideList = new ArrayList<>(4);

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

@@ -51,7 +51,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.AnalyticsUtils;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.io.IOException;
 import java.security.InvalidAlgorithmParameterException;
@@ -99,12 +99,12 @@ public class FingerprintActivity extends AppCompatActivity {
         setContentView(R.layout.fingerprintlock);
 
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-            getWindow().setStatusBarColor(DisplayUtils.primaryDarkColor());
+            getWindow().setStatusBarColor(ThemeUtils.primaryDarkColor());
         }
 
         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
-        toolbar.setTitleTextColor(DisplayUtils.fontColor());
-        toolbar.setBackground(new ColorDrawable(DisplayUtils.primaryColor()));
+        toolbar.setTitleTextColor(ThemeUtils.fontColor());
+        toolbar.setBackground(new ColorDrawable(ThemeUtils.primaryColor()));
     }
 
     private void startFingerprint() {
@@ -163,7 +163,7 @@ public class FingerprintActivity extends AppCompatActivity {
         AnalyticsUtils.setCurrentScreenName(this, SCREEN_NAME, TAG);
         startFingerprint();
         ImageView imageView = (ImageView)findViewById(R.id.fingerprinticon);
-        imageView.setImageDrawable(DisplayUtils.tintDrawable(R.drawable.ic_fingerprint, DisplayUtils.primaryColor()));
+        imageView.setImageDrawable(ThemeUtils.tintDrawable(R.drawable.ic_fingerprint, ThemeUtils.primaryColor()));
     }
 
     @Override

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

@@ -55,8 +55,8 @@ import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.ui.fragment.OCFileListFragment;
 import com.owncloud.android.utils.AnalyticsUtils;
 import com.owncloud.android.utils.DataHolderUtil;
-import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.ErrorMessageAdapter;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.util.ArrayList;
 
@@ -105,7 +105,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
         if (getIntent().getStringExtra(EXTRA_ACTION) != null) {
             caption = getIntent().getStringExtra(EXTRA_ACTION);
         } else {
-            caption = DisplayUtils.getDefaultDisplayNameForRootFolder();
+            caption = ThemeUtils.getDefaultDisplayNameForRootFolder();
         }
         getSupportActionBar().setTitle(caption);
 
@@ -369,7 +369,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
         mCancelBtn = (Button) findViewById(R.id.folder_picker_btn_cancel);
         mCancelBtn.setOnClickListener(this);
         mChooseBtn = (Button) findViewById(R.id.folder_picker_btn_choose);
-        mChooseBtn.getBackground().setColorFilter(DisplayUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
+        mChooseBtn.getBackground().setColorFilter(ThemeUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
         mChooseBtn.setOnClickListener(this);
     }
     

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

@@ -53,6 +53,7 @@ import com.owncloud.android.ui.dialog.SyncedFolderPreferencesDialogFragment;
 import com.owncloud.android.ui.dialog.parcel.SyncedFolderParcelable;
 import com.owncloud.android.utils.AnalyticsUtils;
 import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -111,7 +112,7 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte
 
         setupContent();
 
-        DisplayUtils.setColoredTitle(getSupportActionBar(), getString(R.string.drawer_folder_sync));
+        ThemeUtils.setColoredTitle(getSupportActionBar(), getString(R.string.drawer_folder_sync));
         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
     }
 

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

@@ -53,6 +53,7 @@ import com.owncloud.android.ui.adapter.AccountListItem;
 import com.owncloud.android.ui.helpers.FileOperationsHelper;
 import com.owncloud.android.utils.AnalyticsUtils;
 import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import org.parceler.Parcels;
 
@@ -90,7 +91,7 @@ public class ManageAccountsActivity extends FileActivity
         super.onCreate(savedInstanceState);
 
         mTintedCheck = DrawableCompat.wrap(ContextCompat.getDrawable(this, R.drawable.ic_account_circle_white_18dp));
-        int tint = DisplayUtils.primaryColor();
+        int tint = ThemeUtils.primaryColor();
         DrawableCompat.setTint(mTintedCheck, tint);
 
         setContentView(R.layout.accounts_layout);

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

@@ -54,6 +54,7 @@ import com.owncloud.android.lib.resources.notifications.models.Notification;
 import com.owncloud.android.ui.adapter.NotificationListAdapter;
 import com.owncloud.android.utils.AnalyticsUtils;
 import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.io.IOException;
 import java.util.List;
@@ -119,7 +120,7 @@ public class NotificationsActivity extends FileActivity {
 
         // setup drawer
         setupDrawer(R.id.nav_notifications);
-        DisplayUtils.setColoredTitle(getSupportActionBar(), getString(R.string.drawer_item_notifications));
+        ThemeUtils.setColoredTitle(getSupportActionBar(), getString(R.string.drawer_item_notifications));
 
         swipeListRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
             @Override

+ 9 - 8
src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java

@@ -35,6 +35,7 @@ import android.widget.TextView;
 import com.owncloud.android.R;
 import com.owncloud.android.utils.AnalyticsUtils;
 import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 /**
  * Activity providing information about ways to participate in the app's development.
@@ -57,8 +58,8 @@ public class ParticipateActivity extends FileActivity {
         setupDrawer(R.id.nav_participate);
 
         if (getSupportActionBar() != null) {
-            getSupportActionBar().setTitle(DisplayUtils.getColoredTitle(getString(R.string.drawer_participate),
-                    DisplayUtils.fontColor()));
+            getSupportActionBar().setTitle(ThemeUtils.getColoredTitle(getString(R.string.drawer_participate),
+                    ThemeUtils.fontColor()));
         }
 
         setupContent();
@@ -78,33 +79,33 @@ public class ParticipateActivity extends FileActivity {
         contributeIrcView.setMovementMethod(LinkMovementMethod.getInstance());
         contributeIrcView.setText(Html.fromHtml(
                 getString(R.string.participate_contribute_irc_text,
-                        DisplayUtils.colorToHexString(DisplayUtils.primaryColor()),
+                        ThemeUtils.colorToHexString(ThemeUtils.primaryColor()),
                         getString(R.string.irc_weblink))));
 
         TextView contributeForumView = (TextView) findViewById(R.id.participate_contribute_forum_text);
         contributeForumView.setMovementMethod(LinkMovementMethod.getInstance());
         contributeForumView.setText(Html.fromHtml(
                 getString(R.string.participate_contribute_forum_text,
-                        DisplayUtils.colorToHexString(DisplayUtils.primaryColor()),
+                        ThemeUtils.colorToHexString(ThemeUtils.primaryColor()),
                         getString(R.string.help_link))));
 
         TextView contributeTranslationView = (TextView) findViewById(R.id.participate_contribute_translate_text);
         contributeTranslationView.setMovementMethod(LinkMovementMethod.getInstance());
         contributeTranslationView.setText(Html.fromHtml(
                 getString(R.string.participate_contribute_translate_text,
-                        DisplayUtils.colorToHexString(DisplayUtils.primaryColor()),
+                        ThemeUtils.colorToHexString(ThemeUtils.primaryColor()),
                         getString(R.string.translation_link))));
 
         TextView contributeGithubView = (TextView) findViewById(R.id.participate_contribute_github_text);
         contributeGithubView.setMovementMethod(LinkMovementMethod.getInstance());
         contributeGithubView.setText(Html.fromHtml(
                 getString(R.string.participate_contribute_github_text,
-                        DisplayUtils.colorToHexString(DisplayUtils.primaryColor()),
+                        ThemeUtils.colorToHexString(ThemeUtils.primaryColor()),
                 getString(R.string.contributing_link))));
 
         AppCompatButton reportButton = (AppCompatButton) findViewById(R.id.participate_testing_report);
-        reportButton.getBackground().setColorFilter(DisplayUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
-        reportButton.setTextColor(DisplayUtils.fontColor());
+        reportButton.getBackground().setColorFilter(ThemeUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
+        reportButton.setTextColor(ThemeUtils.fontColor());
         reportButton.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {

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

@@ -42,7 +42,7 @@ import android.widget.Toast;
 import com.owncloud.android.R;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.utils.AnalyticsUtils;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.util.Arrays;
 
@@ -94,29 +94,29 @@ public class PassCodeActivity extends AppCompatActivity {
         setContentView(R.layout.passcodelock);
         
         mBCancel = (Button) findViewById(R.id.cancel);
-        mBCancel.getBackground().setColorFilter(DisplayUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
+        mBCancel.getBackground().setColorFilter(ThemeUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
 
         mPassCodeHdr = (TextView) findViewById(R.id.header);
         mPassCodeHdrExplanation = (TextView) findViewById(R.id.explanation);
 
         mPassCodeEditTexts[0] = (EditText) findViewById(R.id.txt0);
-        mPassCodeEditTexts[0].setTextColor(DisplayUtils.primaryColor());
-        mPassCodeEditTexts[0].getBackground().setColorFilter(DisplayUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
+        mPassCodeEditTexts[0].setTextColor(ThemeUtils.primaryColor());
+        mPassCodeEditTexts[0].getBackground().setColorFilter(ThemeUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
         mPassCodeEditTexts[0].requestFocus();
         getWindow().setSoftInputMode(
                 android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
 
         mPassCodeEditTexts[1] = (EditText) findViewById(R.id.txt1);
-        mPassCodeEditTexts[1].setTextColor(DisplayUtils.primaryColor());
-        mPassCodeEditTexts[1].getBackground().setColorFilter(DisplayUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
+        mPassCodeEditTexts[1].setTextColor(ThemeUtils.primaryColor());
+        mPassCodeEditTexts[1].getBackground().setColorFilter(ThemeUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
 
         mPassCodeEditTexts[2] = (EditText) findViewById(R.id.txt2);
-        mPassCodeEditTexts[2].setTextColor(DisplayUtils.primaryColor());
-        mPassCodeEditTexts[2].getBackground().setColorFilter(DisplayUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
+        mPassCodeEditTexts[2].setTextColor(ThemeUtils.primaryColor());
+        mPassCodeEditTexts[2].getBackground().setColorFilter(ThemeUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
 
         mPassCodeEditTexts[3] = (EditText) findViewById(R.id.txt3);
-        mPassCodeEditTexts[3].setTextColor(DisplayUtils.primaryColor());
-        mPassCodeEditTexts[3].getBackground().setColorFilter(DisplayUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
+        mPassCodeEditTexts[3].setTextColor(ThemeUtils.primaryColor());
+        mPassCodeEditTexts[3].getBackground().setColorFilter(ThemeUtils.primaryColor(), PorterDuff.Mode.SRC_ATOP);
 
         if (ACTION_CHECK.equals(getIntent().getAction())) {
             /// this is a pass code request; the user has to input the right value

+ 12 - 11
src/main/java/com/owncloud/android/ui/activity/Preferences.java

@@ -74,6 +74,7 @@ import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.utils.AnalyticsUtils;
 import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.io.IOException;
 
@@ -136,7 +137,7 @@ public class Preferences extends PreferenceActivity
     @Override
     public void onCreate(Bundle savedInstanceState) {
 
-        if (DisplayUtils.themingEnabled()) {
+        if (ThemeUtils.themingEnabled()) {
             setTheme(R.style.FallbackThemingTheme);
         }
 
@@ -147,17 +148,17 @@ public class Preferences extends PreferenceActivity
 
         ActionBar actionBar = getSupportActionBar();
         actionBar.setDisplayHomeAsUpEnabled(true);
-        DisplayUtils.setColoredTitle(actionBar, getString(R.string.actionbar_settings));
-        actionBar.setBackgroundDrawable(new ColorDrawable(DisplayUtils.primaryColor()));
+        ThemeUtils.setColoredTitle(actionBar, getString(R.string.actionbar_settings));
+        actionBar.setBackgroundDrawable(new ColorDrawable(ThemeUtils.primaryColor()));
 
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-            getWindow().setStatusBarColor(DisplayUtils.primaryDarkColor());
+            getWindow().setStatusBarColor(ThemeUtils.primaryDarkColor());
         }
 
         Drawable backArrow = getResources().getDrawable(R.drawable.ic_arrow_back);
-        actionBar.setHomeAsUpIndicator(DisplayUtils.tintDrawable(backArrow, DisplayUtils.fontColor()));
+        actionBar.setHomeAsUpIndicator(ThemeUtils.tintDrawable(backArrow, ThemeUtils.fontColor()));
 
-        int accentColor = DisplayUtils.primaryAccentColor();
+        int accentColor = ThemeUtils.primaryAccentColor();
 
         // retrieve user's base uri
         setupBaseUri();
@@ -185,12 +186,12 @@ public class Preferences extends PreferenceActivity
 
         // General
         PreferenceCategory preferenceCategoryGeneral = (PreferenceCategory) findPreference("general");
-        preferenceCategoryGeneral.setTitle(DisplayUtils.getColoredTitle(getString(R.string.prefs_category_general),
+        preferenceCategoryGeneral.setTitle(ThemeUtils.getColoredTitle(getString(R.string.prefs_category_general),
                 accentColor));
 
         // Synced folders
         PreferenceCategory preferenceCategoryFolderSync = (PreferenceCategory) findPreference("folder_sync");
-        preferenceCategoryFolderSync.setTitle(DisplayUtils.getColoredTitle(getString(R.string.drawer_folder_sync),
+        preferenceCategoryFolderSync.setTitle(ThemeUtils.getColoredTitle(getString(R.string.drawer_folder_sync),
                 accentColor));
         PreferenceScreen preferenceScreen = (PreferenceScreen) findPreference("preference_screen");
 
@@ -235,7 +236,7 @@ public class Preferences extends PreferenceActivity
         }
 
         PreferenceCategory preferenceCategoryDetails = (PreferenceCategory) findPreference("details");
-        preferenceCategoryDetails.setTitle(DisplayUtils.getColoredTitle(getString(R.string.prefs_category_details),
+        preferenceCategoryDetails.setTitle(ThemeUtils.getColoredTitle(getString(R.string.prefs_category_details),
                 accentColor));
 
         boolean fPassCodeEnabled = getResources().getBoolean(R.bool.passcode_enabled);
@@ -335,7 +336,7 @@ public class Preferences extends PreferenceActivity
         }
 
         PreferenceCategory preferenceCategoryMore = (PreferenceCategory) findPreference("more");
-        preferenceCategoryMore.setTitle(DisplayUtils.getColoredTitle(getString(R.string.prefs_category_more),
+        preferenceCategoryMore.setTitle(ThemeUtils.getColoredTitle(getString(R.string.prefs_category_more),
                 accentColor));
 
         boolean calendarContactsEnabled = getResources().getBoolean(R.bool.davdroid_integration_enabled);
@@ -606,7 +607,7 @@ public class Preferences extends PreferenceActivity
 
         // About category
         PreferenceCategory preferenceCategoryAbout = (PreferenceCategory) findPreference("about");
-        preferenceCategoryAbout.setTitle(DisplayUtils.getColoredTitle(getString(R.string.prefs_category_about),
+        preferenceCategoryAbout.setTitle(ThemeUtils.getColoredTitle(getString(R.string.prefs_category_about),
                 accentColor));
 
         /* About App */

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

@@ -86,9 +86,9 @@ import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
 import com.owncloud.android.ui.fragment.TaskRetainerFragment;
 import com.owncloud.android.ui.helpers.UriUploader;
 import com.owncloud.android.utils.DataHolderUtil;
-import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.ErrorMessageAdapter;
 import com.owncloud.android.utils.FileStorageUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.io.File;
 import java.io.FileWriter;
@@ -295,7 +295,7 @@ public class ReceiveExternalFilesActivity extends FileActivity
 
             mTintedCheck = DrawableCompat.wrap(ContextCompat.getDrawable(parent,
                     R.drawable.ic_account_circle_white_18dp));
-            int tint = DisplayUtils.primaryColor();
+            int tint = ThemeUtils.primaryColor();
             DrawableCompat.setTint(mTintedCheck, tint);
 
             mAccountListAdapter = new AccountListAdapter(parent, getAccountListItems(parent), mTintedCheck);

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

@@ -33,7 +33,7 @@ import android.widget.ProgressBar;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 /**
  * Base class providing toolbar registration functionality, see {@link #setupToolbar()}.
@@ -59,21 +59,21 @@ public abstract class ToolbarActivity extends BaseActivity {
             mProgressBar.setIndeterminateDrawable(
                     ContextCompat.getDrawable(this, R.drawable.actionbar_progress_indeterminate_horizontal));
 
-            DisplayUtils.colorToolbarProgressBar(this, DisplayUtils.primaryColor());
+            ThemeUtils.colorToolbarProgressBar(this, ThemeUtils.primaryColor());
         }
 
-        DisplayUtils.colorStatusBar(this, DisplayUtils.primaryDarkColor());
+        ThemeUtils.colorStatusBar(this, ThemeUtils.primaryDarkColor());
 
         if (toolbar.getOverflowIcon() != null) {
-            DisplayUtils.tintDrawable(toolbar.getOverflowIcon(), DisplayUtils.fontColor());
+            ThemeUtils.tintDrawable(toolbar.getOverflowIcon(), ThemeUtils.fontColor());
         }
 
         if (toolbar.getNavigationIcon() != null) {
-            DisplayUtils.tintDrawable(toolbar.getNavigationIcon(), DisplayUtils.fontColor());
+            ThemeUtils.tintDrawable(toolbar.getNavigationIcon(), ThemeUtils.fontColor());
         }
 
         if (!useBackgroundImage) {
-            toolbar.setBackgroundColor(DisplayUtils.primaryColor());
+            toolbar.setBackgroundColor(ThemeUtils.primaryColor());
         }
     }
 
@@ -85,7 +85,7 @@ public abstract class ToolbarActivity extends BaseActivity {
      * Updates title bar and home buttons (state and icon).
      */
     protected void updateActionBarTitleAndHomeButton(OCFile chosenFile) {
-        String title = DisplayUtils.getDefaultDisplayNameForRootFolder();    // default
+        String title = ThemeUtils.getDefaultDisplayNameForRootFolder();    // default
         boolean inRoot;
 
         // choose the appropriate title
@@ -112,7 +112,7 @@ public abstract class ToolbarActivity extends BaseActivity {
 
         // set & color the chosen title
         ActionBar actionBar = getSupportActionBar();
-        DisplayUtils.setColoredTitle(actionBar, titleToSet);
+        ThemeUtils.setColoredTitle(actionBar, titleToSet);
 
         // set home button properties
         if (actionBar != null) {
@@ -122,7 +122,7 @@ public abstract class ToolbarActivity extends BaseActivity {
 
         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
         if (toolbar.getNavigationIcon() != null) {
-            DisplayUtils.tintDrawable(toolbar.getNavigationIcon(), DisplayUtils.fontColor());
+            ThemeUtils.tintDrawable(toolbar.getNavigationIcon(), ThemeUtils.fontColor());
         }
     }
 

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

@@ -53,8 +53,8 @@ import com.owncloud.android.ui.dialog.SortingOrderDialogFragment;
 import com.owncloud.android.ui.fragment.ExtendedListFragment;
 import com.owncloud.android.ui.fragment.LocalFileListFragment;
 import com.owncloud.android.utils.AnalyticsUtils;
-import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.FileStorageUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.io.File;
 
@@ -137,7 +137,7 @@ public class UploadFilesActivity extends FileActivity implements
         mCancelBtn = (Button) findViewById(R.id.upload_files_btn_cancel);
         mCancelBtn.setOnClickListener(this);
         mUploadBtn = (AppCompatButton) findViewById(R.id.upload_files_btn_upload);
-        mUploadBtn.getBackground().setColorFilter(DisplayUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
+        mUploadBtn.getBackground().setColorFilter(ThemeUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
         mUploadBtn.setOnClickListener(this);
 
         int localBehaviour = PreferenceManager.getUploaderBehaviour(this);
@@ -357,7 +357,7 @@ public class UploadFilesActivity extends FileActivity implements
         if(checked) {
             selectAll.setIcon(R.drawable.ic_select_none);
         } else {
-            selectAll.setIcon(DisplayUtils.tintDrawable(R.drawable.ic_select_all, DisplayUtils.primaryColor()));
+            selectAll.setIcon(ThemeUtils.tintDrawable(R.drawable.ic_select_all, ThemeUtils.primaryColor()));
         }
     }
 

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

@@ -35,6 +35,7 @@ import com.owncloud.android.lib.common.OwnCloudAccount;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.activity.BaseActivity;
 import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.util.List;
 
@@ -108,7 +109,7 @@ public class AccountListAdapter extends ArrayAdapter<AccountListItem> implements
 
         TextView userName = (TextView) actionView.findViewById(R.id.user_name);
         userName.setText(R.string.prefs_add_account);
-        userName.setTextColor(DisplayUtils.primaryColor());
+        userName.setTextColor(ThemeUtils.primaryColor());
 
         ((ImageView) actionView.findViewById(R.id.user_icon)).setImageResource(R.drawable.ic_account_plus);
 

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

@@ -50,6 +50,7 @@ import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.MimeTypeUtil;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.io.File;
 import java.lang.ref.WeakReference;
@@ -713,7 +714,7 @@ public class ExpandableUploadListAdapter extends BaseExpandableListAdapter imple
         TextView tv = (TextView) convertView.findViewById(R.id.uploadListGroupName);
         tv.setText(String.format(mParentActivity.getString(R.string.uploads_view_group_header),
                 group.getGroupName(), group.getGroupItemCount()));
-        tv.setTextColor(DisplayUtils.primaryAccentColor());
+        tv.setTextColor(ThemeUtils.primaryAccentColor());
         return convertView;
     }
 

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

@@ -65,6 +65,7 @@ import com.owncloud.android.ui.interfaces.OCFileListFragmentInterface;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.FileStorageUtils;
 import com.owncloud.android.utils.MimeTypeUtil;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -338,8 +339,8 @@ public class FileListListAdapter extends BaseAdapter {
                     ) {
                 if (parentList.isItemChecked(position)) {
                     view.setBackgroundColor(mContext.getResources().getColor(R.color.selected_item_background));
-                    checkBoxV.setImageDrawable(DisplayUtils.tintDrawable(R.drawable.ic_checkbox_marked,
-                            DisplayUtils.primaryColor()));
+                    checkBoxV.setImageDrawable(ThemeUtils.tintDrawable(R.drawable.ic_checkbox_marked,
+                            ThemeUtils.primaryColor()));
                 } else {
                     view.setBackgroundColor(Color.WHITE);
                     checkBoxV.setImageResource(R.drawable.ic_checkbox_blank_outline);

+ 3 - 3
src/main/java/com/owncloud/android/ui/adapter/FolderSyncAdapter.java

@@ -35,7 +35,7 @@ import com.afollestad.sectionedrecyclerview.SectionedRecyclerViewAdapter;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.SyncedFolderDisplayItem;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -195,8 +195,8 @@ public class FolderSyncAdapter extends SectionedRecyclerViewAdapter<FolderSyncAd
 
     private void setSyncButtonActiveIcon(ImageButton syncStatusButton, boolean enabled) {
         if(enabled) {
-            syncStatusButton.setImageDrawable(DisplayUtils.tintDrawable(R.drawable.ic_cloud_sync_on,
-                    DisplayUtils.primaryColor()));
+            syncStatusButton.setImageDrawable(ThemeUtils.tintDrawable(R.drawable.ic_cloud_sync_on,
+                    ThemeUtils.primaryColor()));
         } else {
             syncStatusButton.setImageResource(R.drawable.ic_cloud_sync_off);
         }

+ 4 - 4
src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java

@@ -37,7 +37,7 @@ import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.resources.files.FileUtils;
 import com.owncloud.android.ui.activity.ComponentsGetter;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 /**
  *  Dialog to input the name for a new folder to create.  
@@ -72,7 +72,7 @@ public class CreateFolderDialogFragment
     public void onStart() {
         super.onStart();
 
-        int color = DisplayUtils.primaryAccentColor();
+        int color = ThemeUtils.primaryAccentColor();
 
         AlertDialog alertDialog = (AlertDialog) getDialog();
 
@@ -82,7 +82,7 @@ public class CreateFolderDialogFragment
     
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
-        int accentColor = DisplayUtils.primaryAccentColor();
+        int accentColor = ThemeUtils.primaryAccentColor();
         mParentFolder = getArguments().getParcelable(ARG_PARENT_FOLDER);
         
         // Inflate the layout for the dialog
@@ -100,7 +100,7 @@ public class CreateFolderDialogFragment
         builder.setView(v)
                .setPositiveButton(R.string.common_ok, this)
                .setNegativeButton(R.string.common_cancel, this)
-                .setTitle(DisplayUtils.getColoredTitle(getResources().getString(R.string.uploader_info_dirname),
+                .setTitle(ThemeUtils.getColoredTitle(getResources().getString(R.string.uploader_info_dirname),
                         accentColor));
         Dialog d = builder.create();
         d.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

+ 2 - 2
src/main/java/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.java

@@ -29,7 +29,7 @@ import android.view.KeyEvent;
 import android.widget.ProgressBar;
 
 import com.owncloud.android.R;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 
 public class IndeterminateProgressDialog extends DialogFragment {
@@ -68,7 +68,7 @@ public class IndeterminateProgressDialog extends DialogFragment {
             @Override
             public void onShow(DialogInterface dialog) {
                 ProgressBar v = (ProgressBar) progressDialog.findViewById(android.R.id.progress);
-                v.getIndeterminateDrawable().setColorFilter(DisplayUtils.primaryAccentColor(),
+                v.getIndeterminateDrawable().setColorFilter(ThemeUtils.primaryAccentColor(),
                         android.graphics.PorterDuff.Mode.MULTIPLY);
 
             }

+ 2 - 2
src/main/java/com/owncloud/android/ui/dialog/LoadingDialog.java

@@ -30,7 +30,7 @@ import android.widget.ProgressBar;
 import android.widget.TextView;
 
 import com.owncloud.android.R;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 public class LoadingDialog extends DialogFragment {
 
@@ -63,7 +63,7 @@ public class LoadingDialog extends DialogFragment {
         // set progress wheel color
         ProgressBar progressBar  = (ProgressBar) v.findViewById(R.id.loadingBar);
         progressBar.getIndeterminateDrawable().setColorFilter(
-                DisplayUtils.primaryAccentColor(), PorterDuff.Mode.SRC_IN);
+                ThemeUtils.primaryAccentColor(), PorterDuff.Mode.SRC_IN);
         
         return v;
     }

+ 4 - 4
src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java

@@ -43,7 +43,7 @@ import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.resources.files.FileUtils;
 import com.owncloud.android.ui.activity.ComponentsGetter;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 
 /**
@@ -77,7 +77,7 @@ public class RenameFileDialogFragment
     public void onStart() {
         super.onStart();
 
-        int color = DisplayUtils.primaryAccentColor();
+        int color = ThemeUtils.primaryAccentColor();
 
         AlertDialog alertDialog = (AlertDialog) getDialog();
 
@@ -87,7 +87,7 @@ public class RenameFileDialogFragment
 
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
-        int accentColor = DisplayUtils.primaryAccentColor();
+        int accentColor = ThemeUtils.primaryAccentColor();
         mTargetFile = getArguments().getParcelable(ARG_TARGET_FILE);
 
         // Inflate the layout for the dialog
@@ -114,7 +114,7 @@ public class RenameFileDialogFragment
         builder.setView(v)
                .setPositiveButton(R.string.common_ok, this)
                .setNegativeButton(R.string.common_cancel, this)
-                .setTitle(DisplayUtils.getColoredTitle(getResources().getString(R.string.rename_dialog_title),
+                .setTitle(ThemeUtils.getColoredTitle(getResources().getString(R.string.rename_dialog_title),
                         accentColor));
         Dialog d = builder.create();
         d.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

+ 4 - 4
src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java

@@ -34,7 +34,7 @@ import android.widget.Toast;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.ui.activity.FileActivity;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 /**
  * Dialog to input the password for sharing a file/folder.
@@ -53,8 +53,8 @@ public class SharePasswordDialogFragment extends DialogFragment
         super.onStart();
 
         AlertDialog alertDialog = (AlertDialog) getDialog();
-        alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(DisplayUtils.primaryAccentColor());
-        alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(DisplayUtils.primaryAccentColor());
+        alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(ThemeUtils.primaryAccentColor());
+        alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(ThemeUtils.primaryAccentColor());
     }
 
     public static final String PASSWORD_FRAGMENT = "PASSWORD_FRAGMENT";
@@ -91,7 +91,7 @@ public class SharePasswordDialogFragment extends DialogFragment
 
         // Setup layout
         EditText inputText = ((EditText)v.findViewById(R.id.share_password));
-        inputText.getBackground().setColorFilter(DisplayUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
+        inputText.getBackground().setColorFilter(ThemeUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
         inputText.setText("");
         inputText.requestFocus();
 

+ 4 - 4
src/main/java/com/owncloud/android/ui/dialog/SortingOrderDialogFragment.java

@@ -35,7 +35,7 @@ import android.widget.TextView;
 
 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;
 
 /**
  * Dialog to show and choose the sorting order for the file listing.
@@ -124,7 +124,7 @@ public class SortingOrderDialogFragment extends DialogFragment {
         mSortBySizeAscendingButton = (ImageButton) view.findViewById(R.id.sortBySizeAscending);
         mSortBySizeDescendingButton = (ImageButton) view.findViewById(R.id.sortBySizeDescending);
         mCancel = (AppCompatButton) view.findViewById(R.id.cancel);
-        mCancel.setTextColor(DisplayUtils.primaryAccentColor());
+        mCancel.setTextColor(ThemeUtils.primaryAccentColor());
 
         mSortByNameAscendingText = (TextView) view.findViewById(R.id.sortByNameAZText);
         mSortByNameDescendingText = (TextView) view.findViewById(R.id.sortByNameZAText);
@@ -200,8 +200,8 @@ public class SortingOrderDialogFragment extends DialogFragment {
      * @param textView    the text view, the text color to be set
      */
     private void colorActiveSortingIconAndText(ImageButton imageButton, TextView textView) {
-        int color = DisplayUtils.primaryAccentColor();
-        DisplayUtils.colorImageButton(imageButton, color);
+        int color = ThemeUtils.primaryAccentColor();
+        ThemeUtils.colorImageButton(imageButton, color);
         textView.setTextColor(color);
         textView.setTypeface(Typeface.DEFAULT_BOLD);
     }

+ 8 - 7
src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.java

@@ -45,6 +45,7 @@ import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.activity.FolderPickerActivity;
 import com.owncloud.android.ui.dialog.parcel.SyncedFolderParcelable;
 import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 /**
  * Dialog to show the preferences/configuration of a synced folder allowing the user to change the different parameters.
@@ -125,26 +126,26 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment {
      * @param view the parent view
      */
     private void setupDialogElements(View view) {
-        int accentColor = DisplayUtils.primaryAccentColor();
+        int accentColor = ThemeUtils.primaryAccentColor();
 
         // find/saves UI elements
         mEnabledSwitch = (SwitchCompat) view.findViewById(R.id.sync_enabled);
-        DisplayUtils.tintSwitch(mEnabledSwitch, accentColor);
+        ThemeUtils.tintSwitch(mEnabledSwitch, accentColor);
 
         mLocalFolderPath = (TextView) view.findViewById(R.id.folder_sync_settings_local_folder_path);
 
         mRemoteFolderSummary = (TextView) view.findViewById(R.id.remote_folder_summary);
 
         mUploadOnWifiCheckbox = (AppCompatCheckBox) view.findViewById(R.id.setting_instant_upload_on_wifi_checkbox);
-        DisplayUtils.tintCheckbox(mUploadOnWifiCheckbox, accentColor);
+        ThemeUtils.tintCheckbox(mUploadOnWifiCheckbox, accentColor);
 
         mUploadOnChargingCheckbox = (AppCompatCheckBox) view.findViewById(
                 R.id.setting_instant_upload_on_charging_checkbox);
-        DisplayUtils.tintCheckbox(mUploadOnChargingCheckbox, accentColor);
+        ThemeUtils.tintCheckbox(mUploadOnChargingCheckbox, accentColor);
 
         mUploadUseSubfoldersCheckbox = (AppCompatCheckBox) view.findViewById(
                 R.id.setting_instant_upload_path_use_subfolders_checkbox);
-        DisplayUtils.tintCheckbox(mUploadUseSubfoldersCheckbox, accentColor);
+        ThemeUtils.tintCheckbox(mUploadUseSubfoldersCheckbox, accentColor);
 
         mUploadBehaviorSummary = (TextView) view.findViewById(R.id.setting_instant_behaviour_summary);
 
@@ -253,9 +254,9 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment {
                     @Override
                     public void onClick(View v) {
                         AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
-                        builder.setTitle(DisplayUtils.getColoredTitle(
+                        builder.setTitle(ThemeUtils.getColoredTitle(
                                 getResources().getString(R.string.prefs_instant_behaviour_dialogTitle),
-                                DisplayUtils.primaryAccentColor()))
+                                ThemeUtils.primaryAccentColor()))
                                 .setSingleChoiceItems(getResources().getTextArray(R.array.pref_behaviour_entries),
                                         mSyncedFolder.getUploadActionInteger(),
                                         new

+ 8 - 8
src/main/java/com/owncloud/android/ui/fragment/EditShareFragment.java

@@ -46,7 +46,7 @@ import com.owncloud.android.lib.resources.shares.ShareType;
 import com.owncloud.android.lib.resources.status.OwnCloudVersion;
 import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.utils.AnalyticsUtils;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 public class EditShareFragment extends Fragment {
 
@@ -136,7 +136,7 @@ public class EditShareFragment extends Fragment {
                 getResources().getString(R.string.share_with_edit_title, mShare.getSharedWithDisplayName()));
 
         View headerDivider = view.findViewById(R.id.share_header_divider);
-        headerDivider.getBackground().setColorFilter(DisplayUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
+        headerDivider.getBackground().setColorFilter(ThemeUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
 
         // Setup layout
         refreshUiFromState(view);
@@ -160,10 +160,10 @@ public class EditShareFragment extends Fragment {
             boolean isNotReshareableFederatedSupported = (serverVersion != null &&
                     serverVersion.isNotReshareableFederatedSupported());
 
-            int accentColor = DisplayUtils.primaryAccentColor();
+            int accentColor = ThemeUtils.primaryAccentColor();
 
             SwitchCompat shareSwitch = (SwitchCompat) editShareView.findViewById(R.id.canShareSwitch);
-            DisplayUtils.tintSwitch(shareSwitch, accentColor, true);
+            ThemeUtils.tintSwitch(shareSwitch, accentColor, true);
 
             if (isFederated) {
                 shareSwitch.setVisibility(View.INVISIBLE);
@@ -171,7 +171,7 @@ public class EditShareFragment extends Fragment {
             shareSwitch.setChecked((sharePermissions & OCShare.SHARE_PERMISSION_FLAG) > 0);
 
             SwitchCompat switchCompat = (SwitchCompat) editShareView.findViewById(R.id.canEditSwitch);
-            DisplayUtils.tintSwitch(switchCompat, accentColor, true);
+            ThemeUtils.tintSwitch(switchCompat, accentColor, true);
             int anyUpdatePermission = OCShare.CREATE_PERMISSION_FLAG | OCShare.UPDATE_PERMISSION_FLAG |
                     OCShare.DELETE_PERMISSION_FLAG;
             boolean canEdit = (sharePermissions & anyUpdatePermission) > 0;
@@ -185,17 +185,17 @@ public class EditShareFragment extends Fragment {
                 AppCompatCheckBox checkBox = (AppCompatCheckBox) editShareView.findViewById(R.id.canEditCreateCheckBox);
                 checkBox.setChecked((sharePermissions & OCShare.CREATE_PERMISSION_FLAG) > 0);
                 checkBox.setVisibility((canEdit) ? View.VISIBLE : View.GONE);
-                DisplayUtils.tintCheckbox(checkBox, accentColor);
+                ThemeUtils.tintCheckbox(checkBox, accentColor);
 
                 checkBox = (AppCompatCheckBox) editShareView.findViewById(R.id.canEditChangeCheckBox);
                 checkBox.setChecked((sharePermissions & OCShare.UPDATE_PERMISSION_FLAG) > 0);
                 checkBox.setVisibility((canEdit) ? View.VISIBLE : View.GONE);
-                DisplayUtils.tintCheckbox(checkBox, accentColor);
+                ThemeUtils.tintCheckbox(checkBox, accentColor);
 
                 checkBox = (AppCompatCheckBox) editShareView.findViewById(R.id.canEditDeleteCheckBox);
                 checkBox.setChecked((sharePermissions & OCShare.DELETE_PERMISSION_FLAG) > 0);
                 checkBox.setVisibility((canEdit) ? View.VISIBLE : View.GONE);
-                DisplayUtils.tintCheckbox(checkBox, accentColor);
+                ThemeUtils.tintCheckbox(checkBox, accentColor);
             }
 
             setPermissionsListening(editShareView, true);

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

@@ -76,6 +76,7 @@ import com.owncloud.android.ui.adapter.FileListListAdapter;
 import com.owncloud.android.ui.adapter.LocalFileListAdapter;
 import com.owncloud.android.ui.events.SearchEvent;
 import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import org.greenrobot.eventbus.EventBus;
 import org.parceler.Parcel;
@@ -290,7 +291,7 @@ public class ExtendedListFragment extends Fragment
             }
         });
 
-        int fontColor = DisplayUtils.fontColor();
+        int fontColor = ThemeUtils.fontColor();
 
         LinearLayout searchBar = (LinearLayout) searchView.findViewById(R.id.search_bar);
         TextView searchBadge = (TextView) searchView.findViewById(R.id.search_badge);
@@ -299,7 +300,7 @@ public class ExtendedListFragment extends Fragment
         searchBadge.setHintTextColor(fontColor);
 
         ImageView searchButton = (ImageView) searchView.findViewById(R.id.search_button);
-        searchButton.setImageDrawable(DisplayUtils.tintDrawable(R.drawable.ic_search, fontColor));
+        searchButton.setImageDrawable(ThemeUtils.tintDrawable(R.drawable.ic_search, fontColor));
 
         searchBar.setLayoutTransition(new LayoutTransition());
     }
@@ -437,9 +438,9 @@ public class ExtendedListFragment extends Fragment
         mListView.setEmptyView(mRefreshEmptyLayout);
         mGridView.setEmptyView(mRefreshEmptyLayout);
 
-        int primaryColor = DisplayUtils.primaryColor();
-        int primaryColorDark = DisplayUtils.primaryDarkColor();
-        int fontColor = DisplayUtils.fontColor();
+        int primaryColor = ThemeUtils.primaryColor();
+        int primaryColorDark = ThemeUtils.primaryDarkColor();
+        int fontColor = ThemeUtils.fontColor();
 
         mFabMain = (FloatingActionsMenu) v.findViewById(R.id.fab_main);
 
@@ -451,17 +452,17 @@ public class ExtendedListFragment extends Fragment
         mFabUpload = (FloatingActionButton) v.findViewById(R.id.fab_upload);
         mFabUpload.setColorNormal(primaryColor);
         mFabUpload.setColorPressed(primaryColorDark);
-        mFabUpload.setIconDrawable(DisplayUtils.tintDrawable(R.drawable.ic_action_upload, fontColor));
+        mFabUpload.setIconDrawable(ThemeUtils.tintDrawable(R.drawable.ic_action_upload, fontColor));
 
         mFabMkdir = (FloatingActionButton) v.findViewById(R.id.fab_mkdir);
         mFabMkdir.setColorNormal(primaryColor);
         mFabMkdir.setColorPressed(primaryColorDark);
-        mFabMkdir.setIconDrawable(DisplayUtils.tintDrawable(R.drawable.ic_action_create_dir, fontColor));
+        mFabMkdir.setIconDrawable(ThemeUtils.tintDrawable(R.drawable.ic_action_create_dir, fontColor));
 
         mFabUploadFromApp = (FloatingActionButton) v.findViewById(R.id.fab_upload_from_app);
         mFabUploadFromApp.setColorNormal(primaryColor);
         mFabUploadFromApp.setColorPressed(primaryColorDark);
-        mFabUploadFromApp.setIconDrawable(DisplayUtils.tintDrawable(R.drawable.ic_import, fontColor));
+        mFabUploadFromApp.setIconDrawable(ThemeUtils.tintDrawable(R.drawable.ic_import, fontColor));
 
         boolean searchSupported = AccountUtils.hasSearchSupport(AccountUtils.
                 getCurrentOwnCloudAccount(MainApp.getAppContext()));
@@ -540,7 +541,7 @@ public class ExtendedListFragment extends Fragment
         mEmptyListHeadline = (TextView) view.findViewById(R.id.empty_list_view_headline);
         mEmptyListIcon = (ImageView) view.findViewById(R.id.empty_list_icon);
         mEmptyListProgress = (ProgressBar) view.findViewById(R.id.empty_list_progress);
-        mEmptyListProgress.getIndeterminateDrawable().setColorFilter(DisplayUtils.primaryColor(),
+        mEmptyListProgress.getIndeterminateDrawable().setColorFilter(ThemeUtils.primaryColor(),
                 PorterDuff.Mode.SRC_IN);
     }
 
@@ -771,7 +772,7 @@ public class ExtendedListFragment extends Fragment
                     mEmptyListMessage.setText(message);
 
                     if (tintIcon) {
-                        mEmptyListIcon.setImageDrawable(DisplayUtils.tintDrawable(icon, DisplayUtils.primaryColor()));
+                        mEmptyListIcon.setImageDrawable(ThemeUtils.tintDrawable(icon, ThemeUtils.primaryColor()));
                     }
 
                     mEmptyListIcon.setVisibility(View.VISIBLE);
@@ -866,9 +867,9 @@ public class ExtendedListFragment extends Fragment
     }
 
     protected void onCreateSwipeToRefresh(SwipeRefreshLayout refreshLayout) {
-        int primaryColor = DisplayUtils.primaryColor();
-        int darkColor = DisplayUtils.primaryDarkColor();
-        int accentColor = DisplayUtils.primaryAccentColor();
+        int primaryColor = ThemeUtils.primaryColor();
+        int darkColor = ThemeUtils.primaryDarkColor();
+        int accentColor = ThemeUtils.primaryAccentColor();
 
         // Colors in animations
         // TODO change this to use darker and lighter color, again.

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

@@ -53,6 +53,7 @@ import com.owncloud.android.ui.dialog.RenameFileDialogFragment;
 import com.owncloud.android.utils.AnalyticsUtils;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.MimeTypeUtil;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.lang.ref.WeakReference;
 
@@ -143,7 +144,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
         if (mLayout == R.layout.file_details_fragment) {
             mView.findViewById(R.id.fdFavorite).setOnClickListener(this);
             ProgressBar progressBar = (ProgressBar)mView.findViewById(R.id.fdProgressBar);
-            DisplayUtils.colorPreLollipopHorizontalProgressBar(progressBar);
+            ThemeUtils.colorPreLollipopHorizontalProgressBar(progressBar);
             mProgressListener = new ProgressListener(progressBar);
             mView.findViewById(R.id.fdCancelBtn).setOnClickListener(this);
         }

+ 13 - 12
src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -94,6 +94,7 @@ import com.owncloud.android.utils.AnalyticsUtils;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.FileStorageUtils;
 import com.owncloud.android.utils.MimeTypeUtil;
+import com.owncloud.android.utils.ThemeUtils;
 
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
@@ -175,9 +176,9 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
         super.onCreate(savedInstanceState);
         setHasOptionsMenu(true);
         mSystemBarActionModeColor = getResources().getColor(R.color.action_mode_status_bar_background);
-        mSystemBarColor = DisplayUtils.primaryDarkColor();
-        mProgressBarActionModeColor = DisplayUtils.primaryDarkColor();
-        mProgressBarColor = DisplayUtils.primaryColor();
+        mSystemBarColor = ThemeUtils.primaryDarkColor();
+        mProgressBarActionModeColor = ThemeUtils.primaryDarkColor();
+        mProgressBarColor = ThemeUtils.primaryColor();
         mMultiChoiceModeListener = new MultiChoiceModeListener();
 
         if (savedInstanceState != null) {
@@ -593,8 +594,8 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
             mode.invalidate();
 
             //set gray color
-            DisplayUtils.colorStatusBar(getActivity(), mSystemBarActionModeColor);
-            DisplayUtils.colorToolbarProgressBar(getActivity(), mProgressBarActionModeColor);
+            ThemeUtils.colorStatusBar(getActivity(), mSystemBarActionModeColor);
+            ThemeUtils.colorToolbarProgressBar(getActivity(), mProgressBarActionModeColor);
 
             // hide FAB in multi selection mode
             setFabEnabled(false);
@@ -641,8 +642,8 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
             mActiveActionMode = null;
 
             // reset to previous color
-            DisplayUtils.colorStatusBar(getActivity(), mSystemBarColor);
-            DisplayUtils.colorToolbarProgressBar(getActivity(), mProgressBarColor);
+            ThemeUtils.colorStatusBar(getActivity(), mSystemBarColor);
+            ThemeUtils.colorToolbarProgressBar(getActivity(), mProgressBarColor);
 
             // show FAB on multi selection mode exit
             if (!mHideFab && !searchFragment) {
@@ -1315,7 +1316,7 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
                     setTitle(R.string.drawer_item_shared);
                     break;
                 default:
-                    setTitle(DisplayUtils.getDefaultDisplayNameForRootFolder());
+                    setTitle(ThemeUtils.getDefaultDisplayNameForRootFolder());
                     break;
             }
         }
@@ -1377,7 +1378,7 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
         menuItemAddRemoveValue = MenuItemAddRemove.ADD_GRID_AND_SORT_WITH_SEARCH;
         if (getActivity() != null) {
             getActivity().invalidateOptionsMenu();
-            setTitle(DisplayUtils.getDefaultDisplayNameForRootFolder());
+            setTitle(ThemeUtils.getDefaultDisplayNameForRootFolder());
         }
 
         getActivity().getIntent().removeExtra(OCFileListFragment.SEARCH_EVENT);
@@ -1534,19 +1535,19 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
             @Override
             public void run() {
                 if (getActivity() != null && ((FileDisplayActivity) getActivity()).getSupportActionBar() != null) {
-                    DisplayUtils.setColoredTitle(((FileDisplayActivity) getActivity()).getSupportActionBar(),
+                    ThemeUtils.setColoredTitle(((FileDisplayActivity) getActivity()).getSupportActionBar(),
                             title, getContext());
                 }
             }
         });
     }
 
-    private void setTitle(@StringRes final String title) {
+    private void setTitle(final String title) {
         getActivity().runOnUiThread(new Runnable() {
             @Override
             public void run() {
                 if (getActivity() != null && ((FileDisplayActivity) getActivity()).getSupportActionBar() != null) {
-                    DisplayUtils.setColoredTitle(((FileDisplayActivity) getActivity()).getSupportActionBar(), title);
+                    ThemeUtils.setColoredTitle(((FileDisplayActivity) getActivity()).getSupportActionBar(), title);
                 }
             }
         });

+ 10 - 9
src/main/java/com/owncloud/android/ui/fragment/ShareFileFragment.java

@@ -60,6 +60,7 @@ import com.owncloud.android.ui.dialog.SharePasswordDialogFragment;
 import com.owncloud.android.utils.AnalyticsUtils;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.MimeTypeUtil;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -193,11 +194,11 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
         Log_OC.d(TAG, "onCreateView");
 
         // use grey as fallback for elements where custom theming is not available
-        if (DisplayUtils.themingEnabled()) {
+        if (ThemeUtils.themingEnabled()) {
             getContext().getTheme().applyStyle(R.style.FallbackThemingTheme, true);
         }
 
-        int accentColor = DisplayUtils.primaryAccentColor();
+        int accentColor = ThemeUtils.primaryAccentColor();
 
         // Inflate the layout for this fragment
         View view = inflater.inflate(R.layout.share_file_layout, container, false);
@@ -224,7 +225,7 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
         fileNameHeader.setText(getResources().getString(R.string.share_file, mFile.getFileName()));
 
         View headerDivider = view.findViewById(R.id.share_header_divider);
-        headerDivider.getBackground().setColorFilter(DisplayUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
+        headerDivider.getBackground().setColorFilter(ThemeUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
 
         // Size
         TextView size = (TextView) view.findViewById(R.id.shareFileSize);
@@ -282,7 +283,7 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
     private void initShareViaLinkListener(View shareView) {
         mOnShareViaLinkSwitchCheckedChangeListener = new OnShareViaLinkListener();
         SwitchCompat shareViaLinkSwitch = (SwitchCompat) shareView.findViewById(R.id.shareViaLinkSectionSwitch);
-        DisplayUtils.tintSwitch(shareViaLinkSwitch, DisplayUtils.primaryAccentColor(), true);
+        ThemeUtils.tintSwitch(shareViaLinkSwitch, ThemeUtils.primaryAccentColor(), true);
         shareViaLinkSwitch.setOnCheckedChangeListener(mOnShareViaLinkSwitchCheckedChangeListener);
     }
 
@@ -346,7 +347,7 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
         SwitchCompat expirationSwitch = (SwitchCompat) shareView.findViewById(R.id.shareViaLinkExpirationSwitch);
         expirationSwitch.setOnCheckedChangeListener(mOnExpirationDateInteractionListener);
 
-        DisplayUtils.tintSwitch(expirationSwitch, DisplayUtils.primaryAccentColor());
+        ThemeUtils.tintSwitch(expirationSwitch, ThemeUtils.primaryAccentColor());
 
         shareView.findViewById(R.id.shareViaLinkExpirationLabel).
                 setOnClickListener(mOnExpirationDateInteractionListener);
@@ -425,7 +426,7 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
 
         SwitchCompat passwordSwitch = (SwitchCompat) shareView.findViewById(R.id.shareViaLinkPasswordSwitch);
         passwordSwitch.setOnCheckedChangeListener(mOnPasswordInteractionListener);
-        DisplayUtils.tintSwitch(passwordSwitch, DisplayUtils.primaryAccentColor());
+        ThemeUtils.tintSwitch(passwordSwitch, ThemeUtils.primaryAccentColor());
 
         shareView.findViewById(R.id.shareViaLinkPasswordLabel).setOnClickListener(mOnPasswordInteractionListener);
 
@@ -490,7 +491,7 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
 
         SwitchCompat permissionSwitch = (SwitchCompat) shareView.findViewById(R.id.shareViaLinkEditPermissionSwitch);
         permissionSwitch.setOnCheckedChangeListener(mOnEditPermissionInteractionListener);
-        DisplayUtils.tintSwitch(permissionSwitch, DisplayUtils.primaryAccentColor());
+        ThemeUtils.tintSwitch(permissionSwitch, ThemeUtils.primaryAccentColor());
     }
 
     /**
@@ -504,7 +505,7 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
 
         SwitchCompat permissionSwitch = (SwitchCompat) shareView.findViewById(R.id.shareViaLinkFileListingPermissionSwitch);
         permissionSwitch.setOnCheckedChangeListener(mOnHideFileListingPermissionInteractionListener);
-        DisplayUtils.tintSwitch(permissionSwitch, DisplayUtils.primaryAccentColor());
+        ThemeUtils.tintSwitch(permissionSwitch, ThemeUtils.primaryAccentColor());
     }
 
     /**
@@ -748,7 +749,7 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
 
             // GetLink button
             AppCompatButton getLinkButton = getGetLinkButton();
-            getLinkButton.getBackground().setColorFilter(DisplayUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
+            getLinkButton.getBackground().setColorFilter(ThemeUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
             getLinkButton.setVisibility(View.VISIBLE);
             getLinkButton.setOnClickListener(new View.OnClickListener() {
                 @Override

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

@@ -73,8 +73,8 @@ import com.owncloud.android.ui.activity.ContactsPreferenceActivity;
 import com.owncloud.android.ui.events.VCardToggleEvent;
 import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.utils.BitmapUtils;
-import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.PermissionUtil;
+import com.owncloud.android.utils.ThemeUtils;
 
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
@@ -220,7 +220,7 @@ public class ContactListFragment extends FileFragment {
             }
         });
 
-        restoreContacts.setTextColor(DisplayUtils.primaryAccentColor());
+        restoreContacts.setTextColor(ThemeUtils.primaryAccentColor());
 
         return view;
     }
@@ -625,7 +625,7 @@ class ContactListAdapter extends RecyclerView.Adapter<ContactListFragment.Contac
 
                 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                     holder.getName().getCheckMarkDrawable()
-                            .setColorFilter(DisplayUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
+                            .setColorFilter(ThemeUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
                 }
             } else {
                 holder.getName().setChecked(false);
@@ -668,7 +668,7 @@ class ContactListAdapter extends RecyclerView.Adapter<ContactListFragment.Contac
                     if (holder.getName().isChecked()) {
                         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                             holder.getName().getCheckMarkDrawable()
-                                    .setColorFilter(DisplayUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
+                                    .setColorFilter(ThemeUtils.primaryAccentColor(), PorterDuff.Mode.SRC_ATOP);
                         }
 
                         if (!checkedVCards.contains(verifiedPosition)) {

+ 5 - 4
src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactsBackupFragment.java

@@ -55,6 +55,7 @@ import com.owncloud.android.ui.activity.ContactsPreferenceActivity;
 import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.PermissionUtil;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.util.Calendar;
 import java.util.Collections;
@@ -106,7 +107,7 @@ public class ContactsBackupFragment extends FileFragment implements DatePickerDi
     public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 
         // use grey as fallback for elements where custom theming is not available
-        if (DisplayUtils.themingEnabled()) {
+        if (ThemeUtils.themingEnabled()) {
             getContext().getTheme().applyStyle(R.style.FallbackThemingTheme, true);
         }
         View view = inflater.inflate(R.layout.contacts_backup_fragment, null);
@@ -123,7 +124,7 @@ public class ContactsBackupFragment extends FileFragment implements DatePickerDi
 
         arbitraryDataProvider = new ArbitraryDataProvider(getContext().getContentResolver());
 
-        DisplayUtils.tintSwitch(backupSwitch, DisplayUtils.primaryAccentColor());
+        ThemeUtils.tintSwitch(backupSwitch, ThemeUtils.primaryAccentColor());
         backupSwitch.setChecked(arbitraryDataProvider.getBooleanValue(account, PREFERENCE_CONTACTS_AUTOMATIC_BACKUP));
 
         onCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() {
@@ -160,7 +161,7 @@ public class ContactsBackupFragment extends FileFragment implements DatePickerDi
             calendarPickerOpen = true;
         }
 
-        int accentColor = DisplayUtils.primaryAccentColor();
+        int accentColor = ThemeUtils.primaryAccentColor();
         contactsDatePickerBtn.getBackground().setColorFilter(accentColor, PorterDuff.Mode.SRC_ATOP);
         view.findViewById(R.id.contacts_backup_now).getBackground()
                 .setColorFilter(accentColor, PorterDuff.Mode.SRC_ATOP);
@@ -353,7 +354,7 @@ public class ContactsBackupFragment extends FileFragment implements DatePickerDi
                             }
                         });
 
-                DisplayUtils.colorSnackbar(contactsPreferenceActivity, snackbar);
+                ThemeUtils.colorSnackbar(contactsPreferenceActivity, snackbar);
 
                 snackbar.show();
 

+ 2 - 2
src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java

@@ -26,7 +26,7 @@ import android.os.HandlerThread;
 import android.os.Process;
 import android.support.v4.app.NotificationCompat;
 
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.util.Random;
 
@@ -51,7 +51,7 @@ public class NotificationUtils {
      */
     public static NotificationCompat.Builder newNotificationBuilder(Context context) {
         return new NotificationCompat.Builder(context).
-                setColor(DisplayUtils.primaryColor());
+                setColor(ThemeUtils.primaryColor());
     }
 
     @SuppressFBWarnings("DMI")

+ 2 - 2
src/main/java/com/owncloud/android/ui/preview/FileDownloadFragment.java

@@ -35,7 +35,7 @@ import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.fragment.FileFragment;
-import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ThemeUtils;
 
 import java.lang.ref.WeakReference;
 
@@ -138,7 +138,7 @@ public class FileDownloadFragment extends FileFragment implements OnClickListene
         mView = inflater.inflate(R.layout.file_download_fragment, container, false);
         
         ProgressBar progressBar = (ProgressBar)mView.findViewById(R.id.progressBar);
-        DisplayUtils.colorPreLollipopHorizontalProgressBar(progressBar);
+        ThemeUtils.colorPreLollipopHorizontalProgressBar(progressBar);
         mProgressListener = new ProgressListener(progressBar);
 
         (mView.findViewById(R.id.cancelBtn)).setOnClickListener(this);

+ 2 - 288
src/main/java/com/owncloud/android/utils/DisplayUtils.java

@@ -29,41 +29,23 @@ import android.annotation.TargetApi;
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
-import android.content.res.ColorStateList;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.Color;
 import android.graphics.Point;
-import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.PictureDrawable;
 import android.net.Uri;
 import android.os.Build;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
 import android.support.annotation.NonNull;
 import android.support.design.widget.BottomNavigationView;
-import android.support.design.widget.Snackbar;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.content.res.ResourcesCompat;
-import android.support.v4.graphics.ColorUtils;
-import android.support.v4.graphics.drawable.DrawableCompat;
-import android.support.v7.app.ActionBar;
-import android.support.v7.widget.AppCompatCheckBox;
-import android.support.v7.widget.SwitchCompat;
-import android.text.Html;
 import android.text.Spannable;
 import android.text.SpannableStringBuilder;
-import android.text.Spanned;
 import android.text.format.DateUtils;
 import android.text.style.StyleSpan;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
-import android.widget.ImageButton;
-import android.widget.ProgressBar;
-import android.widget.SeekBar;
 
 import com.bumptech.glide.GenericRequestBuilder;
 import com.bumptech.glide.Glide;
@@ -81,10 +63,8 @@ import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.lib.common.OwnCloudAccount;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.files.SearchOperation;
-import com.owncloud.android.lib.resources.status.OCCapability;
 import com.owncloud.android.ui.TextDrawable;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
-import com.owncloud.android.ui.activity.ToolbarActivity;
 import com.owncloud.android.ui.events.MenuItemClickEvent;
 import com.owncloud.android.ui.events.SearchEvent;
 import com.owncloud.android.ui.fragment.OCFileListFragment;
@@ -332,8 +312,8 @@ public class DisplayUtils {
      */
     public static int getRelativeInfoColor(Context context, int relative) {
         if (relative < RELATIVE_THRESHOLD_WARNING) {
-            if (DisplayUtils.colorToHexString(DisplayUtils.primaryColor()).equalsIgnoreCase(
-                    DisplayUtils.colorToHexString(context.getResources().getColor(R.color.primary)))) {
+            if (ThemeUtils.colorToHexString(ThemeUtils.primaryColor()).equalsIgnoreCase(
+                    ThemeUtils.colorToHexString(context.getResources().getColor(R.color.primary)))) {
                 return context.getResources().getColor(R.color.infolevel_info);
             } else {
                 return Color.GRAY;
@@ -401,81 +381,6 @@ public class DisplayUtils {
         return size;
     }
 
-    /**
-     * sets the coloring of the given progress bar to color_accent.
-     *
-     * @param progressBar the progress bar to be colored
-     */
-    public static void colorPreLollipopHorizontalProgressBar(ProgressBar progressBar) {
-        if (progressBar != null && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
-            colorHorizontalProgressBar(progressBar, DisplayUtils.primaryAccentColor());
-        }
-    }
-
-    /**
-     * sets the tinting of the given ImageButton's icon to color_accent.
-     *
-     * @param imageButton the image button who's icon should be colored
-     */
-    public static void colorImageButton(ImageButton imageButton, @ColorInt int color) {
-        if (imageButton != null) {
-            imageButton.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
-        }
-    }
-
-    /**
-     * sets the coloring of the given progress bar to color_accent.
-     *
-     * @param progressBar the progress bar to be colored
-     * @param color       the color to be used
-     */
-    public static void colorHorizontalProgressBar(ProgressBar progressBar, @ColorInt int color) {
-        if (progressBar != null) {
-            progressBar.getIndeterminateDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);
-            progressBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);
-        }
-    }
-
-    /**
-     * sets the coloring of the given seek bar to color_accent.
-     *
-     * @param seekBar the seek bar to be colored
-     */
-    public static void colorPreLollipopHorizontalSeekBar(SeekBar seekBar) {
-        if (seekBar != null && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
-            colorPreLollipopHorizontalProgressBar(seekBar);
-
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
-                int color = DisplayUtils.primaryAccentColor();
-                seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
-                seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
-            }
-        }
-    }
-
-    /**
-     * set the Nextcloud standard colors for the snackbar.
-     *
-     * @param context  the context relevant for setting the color according to the context's theme
-     * @param snackbar the snackbar to be colored
-     */
-    public static void colorSnackbar(Context context, Snackbar snackbar) {
-        // Changing action button text color
-        snackbar.setActionTextColor(ContextCompat.getColor(context, R.color.white));
-    }
-
-    /**
-     * Sets the color of the status bar to {@code color} on devices with OS version lollipop or higher.
-     *
-     * @param fragmentActivity fragment activity
-     * @param color            the color
-     */
-    public static void colorStatusBar(FragmentActivity fragmentActivity, @ColorInt int color) {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-            fragmentActivity.getWindow().setStatusBarColor(color);
-        }
-    }
-
     /**
      * styling of given spanText within a given text.
      *
@@ -491,18 +396,6 @@ public class DisplayUtils {
         return sb;
     }
 
-    /**
-     * 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 interface AvatarGenerationListener {
         void avatarGenerated(Drawable avatarDrawable, Object callContext);
 
@@ -702,183 +595,4 @@ public class DisplayUtils {
         }
         return text.toString();
     }
-
-    private static OCCapability getCapability() {
-        Account account = AccountUtils.getCurrentOwnCloudAccount(MainApp.getAppContext());
-
-        if (account != null) {
-            Context context = MainApp.getAppContext();
-
-            FileDataStorageManager storageManager = new FileDataStorageManager(account, context.getContentResolver());
-            return storageManager.getCapability(account.name);
-        } else {
-            return new OCCapability();
-        }
-    }
-
-    public static void tintCheckbox(AppCompatCheckBox checkBox, int color) {
-        checkBox.setSupportButtonTintList(new ColorStateList(
-                new int[][]{
-                        new int[]{-android.R.attr.state_checked},
-                        new int[]{android.R.attr.state_checked},
-                },
-                new int[]{
-                        Color.GRAY,
-                        color
-                }
-        ));
-    }
-
-    public static void tintSwitch(SwitchCompat switchView, int color) {
-        tintSwitch(switchView, color, false);
-    }
-
-    public static void tintSwitch(SwitchCompat switchView, int color, boolean colorText) {
-        if (colorText) {
-            switchView.setTextColor(color);
-        }
-
-        int trackColor = Color.argb(77, Color.red(color), Color.green(color), Color.blue(color));
-
-        // 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}));
-
-        // setting the track color
-        DrawableCompat.setTintList(switchView.getTrackDrawable(), new ColorStateList(
-                new int[][]{new int[]{android.R.attr.state_checked}, new int[]{}},
-                new int[]{trackColor, Color.parseColor("#4D000000")}));
-    }
-
-    public static Drawable tintDrawable(@DrawableRes int id, int color) {
-        Drawable drawable = ResourcesCompat.getDrawable(MainApp.getAppContext().getResources(), id, null);
-
-        return tintDrawable(drawable, color);
-    }
-
-    public static Drawable tintDrawable(Drawable drawable, int color) {
-        Drawable wrap = DrawableCompat.wrap(drawable);
-        wrap.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
-
-        return wrap;
-    }
-
-    public static String getDefaultDisplayNameForRootFolder() {
-        OCCapability capability = getCapability();
-
-        if (capability.getServerSlogan() == null || capability.getServerSlogan().isEmpty()) {
-            return MainApp.getAppContext().getResources().getString(R.string.default_display_name_for_root_folder);
-        } else {
-            return capability.getServerSlogan();
-        }
-    }
-
-    public static int adjustLightness(float lightnessDelta, int color) {
-        float[] hsl = new float[3];
-        ColorUtils.RGBToHSL(Color.red(color), Color.green(color), Color.blue(color), hsl);
-
-        hsl[2] += lightnessDelta;
-
-        return ColorUtils.HSLToColor(hsl);
-    }
-
-    /**
-     * @return int font color to use
-     * adapted from https://github.com/nextcloud/server/blob/master/apps/theming/lib/Util.php#L90-L102
-     */
-    public static int fontColor() {
-        if (darkTheme()) {
-            return Color.WHITE;
-        } else {
-            return Color.BLACK;
-        }
-    }
-
-    /**
-     * Tests if dark color is set
-     * @return true if dark theme -> e.g.use light font color, darker accent color
-     */
-    public static boolean darkTheme() {
-        int primaryColor = primaryColor();
-
-        int red = Color.red(primaryColor);
-        int green = Color.green(primaryColor);
-        int blue = Color.blue(primaryColor);
-
-        return ((0.299 * red + 0.587 * green + 0.114 * blue) / 255) <= 0.5;
-    }
-
-    public static String colorToHexString(int color) {
-        return String.format("#%06X", 0xFFFFFF & color);
-    }
-
-    public static int primaryAccentColor() {
-        OCCapability capability = getCapability();
-
-        try {
-            float adjust;
-            if (darkTheme()){
-                adjust = +0.1f;
-            } else {
-                adjust = -0.1f;
-            }
-            return adjustLightness(adjust, Color.parseColor(capability.getServerColor()));
-        } catch (Exception e) {
-            return MainApp.getAppContext().getResources().getColor(R.color.color_accent);
-        }
-    }
-
-    public static int primaryDarkColor() {
-        OCCapability capability = getCapability();
-
-        try {
-            return adjustLightness(-0.2f, Color.parseColor(capability.getServerColor()));
-        } catch (Exception e) {
-            return MainApp.getAppContext().getResources().getColor(R.color.primary_dark);
-        }
-    }
-
-    public static int primaryColor() {
-        OCCapability capability = getCapability();
-
-        try {
-            return Color.parseColor(capability.getServerColor());
-        } catch (Exception e) {
-            return MainApp.getAppContext().getResources().getColor(R.color.primary);
-        }
-    }
-
-    public static boolean themingEnabled() {
-        return getCapability().getServerColor() != null && !getCapability().getServerColor().isEmpty();
-    }
-
-    /**
-     * Set color of title to white/black depending on background color
-     *
-     * @param actionBar actionBar to be used
-     * @param title     title to be shown
-     */
-    public static void setColoredTitle(ActionBar actionBar, String title) {
-        String colorHex = DisplayUtils.colorToHexString(DisplayUtils.fontColor());
-        actionBar.setTitle(Html.fromHtml("<font color='" + colorHex + "'>" + title + "</font>"));
-    }
-
-    public static Spanned getColoredTitle(String title, int color) {
-        String colorHex = DisplayUtils.colorToHexString(color);
-        return Html.fromHtml("<font color='" + colorHex + "'>" + title + "</font>");
-    }
-
-    /**
-     * Set color of title to white/black depending on background color
-     *
-     * @param actionBar actionBar to be used
-     * @param titleId   title to be shown
-     */
-    public static void setColoredTitle(ActionBar actionBar, int titleId, Context context) {
-        String colorHex = DisplayUtils.colorToHexString(DisplayUtils.fontColor());
-        String title = context.getString(titleId);
-        actionBar.setTitle(Html.fromHtml("<font color='" + colorHex + "'>" + title + "</font>"));
-    }
-
 }

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

@@ -106,7 +106,7 @@ public class MimeTypeUtil {
             drawableId = R.drawable.ic_menu_archive;
         }
 
-        return DisplayUtils.tintDrawable(drawableId, DisplayUtils.primaryColor());
+        return ThemeUtils.tintDrawable(drawableId, ThemeUtils.primaryColor());
     }
 
     public static Drawable getDefaultFolderIcon() {

+ 321 - 0
src/main/java/com/owncloud/android/utils/ThemeUtils.java

@@ -0,0 +1,321 @@
+/**
+ * ownCloud Android client application
+ *
+ * @author David A. Velasco
+ * Copyright (C) 2015 ownCloud Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.owncloud.android.utils;
+
+import android.accounts.Account;
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.graphics.Color;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.support.annotation.ColorInt;
+import android.support.annotation.DrawableRes;
+import android.support.design.widget.Snackbar;
+import android.support.v4.app.FragmentActivity;
+import android.support.v4.content.ContextCompat;
+import android.support.v4.content.res.ResourcesCompat;
+import android.support.v4.graphics.ColorUtils;
+import android.support.v4.graphics.drawable.DrawableCompat;
+import android.support.v7.app.ActionBar;
+import android.support.v7.widget.AppCompatCheckBox;
+import android.support.v7.widget.SwitchCompat;
+import android.text.Html;
+import android.text.Spanned;
+import android.widget.ImageButton;
+import android.widget.ProgressBar;
+import android.widget.SeekBar;
+
+import com.owncloud.android.MainApp;
+import com.owncloud.android.R;
+import com.owncloud.android.authentication.AccountUtils;
+import com.owncloud.android.datamodel.FileDataStorageManager;
+import com.owncloud.android.lib.resources.status.OCCapability;
+import com.owncloud.android.ui.activity.ToolbarActivity;
+
+/**
+ * Utility class with methods for client side theming.
+ */
+public class ThemeUtils {
+
+    public static int primaryAccentColor() {
+        OCCapability capability = getCapability();
+
+        try {
+            float adjust;
+            if (darkTheme()){
+                adjust = +0.1f;
+            } else {
+                adjust = -0.1f;
+            }
+            return adjustLightness(adjust, Color.parseColor(capability.getServerColor()));
+        } catch (Exception e) {
+            return MainApp.getAppContext().getResources().getColor(R.color.color_accent);
+        }
+    }
+
+    public static int primaryDarkColor() {
+        OCCapability capability = getCapability();
+
+        try {
+            return adjustLightness(-0.2f, Color.parseColor(capability.getServerColor()));
+        } catch (Exception e) {
+            return MainApp.getAppContext().getResources().getColor(R.color.primary_dark);
+        }
+    }
+
+    public static int primaryColor() {
+        OCCapability capability = getCapability();
+
+        try {
+            return Color.parseColor(capability.getServerColor());
+        } catch (Exception e) {
+            return MainApp.getAppContext().getResources().getColor(R.color.primary);
+        }
+    }
+
+    public static boolean themingEnabled() {
+        return getCapability().getServerColor() != null && !getCapability().getServerColor().isEmpty();
+    }
+
+    /**
+     * @return int font color to use
+     * adapted from https://github.com/nextcloud/server/blob/master/apps/theming/lib/Util.php#L90-L102
+     */
+    public static int fontColor() {
+        if (darkTheme()) {
+            return Color.WHITE;
+        } else {
+            return Color.BLACK;
+        }
+    }
+
+    /**
+     * Tests if dark color is set
+     * @return true if dark theme -> e.g.use light font color, darker accent color
+     */
+    public static boolean darkTheme() {
+        int primaryColor = primaryColor();
+
+        int red = Color.red(primaryColor);
+        int green = Color.green(primaryColor);
+        int blue = Color.blue(primaryColor);
+
+        return ((0.299 * red + 0.587 * green + 0.114 * blue) / 255) <= 0.5;
+    }
+
+    /**
+     * Set color of title to white/black depending on background color
+     *
+     * @param actionBar actionBar to be used
+     * @param title     title to be shown
+     */
+    public static void setColoredTitle(ActionBar actionBar, String title) {
+        String colorHex = colorToHexString(fontColor());
+        actionBar.setTitle(Html.fromHtml("<font color='" + colorHex + "'>" + title + "</font>"));
+    }
+
+    public static Spanned getColoredTitle(String title, int color) {
+        String colorHex = colorToHexString(color);
+        return Html.fromHtml("<font color='" + colorHex + "'>" + title + "</font>");
+    }
+
+    /**
+     * Set color of title to white/black depending on background color
+     *
+     * @param actionBar actionBar to be used
+     * @param titleId   title to be shown
+     */
+    public static void setColoredTitle(ActionBar actionBar, int titleId, Context context) {
+        String colorHex = colorToHexString(fontColor());
+        String title = context.getString(titleId);
+        actionBar.setTitle(Html.fromHtml("<font color='" + colorHex + "'>" + title + "</font>"));
+    }
+
+    public static String getDefaultDisplayNameForRootFolder() {
+        OCCapability capability = getCapability();
+
+        if (capability.getServerSlogan() == null || capability.getServerSlogan().isEmpty()) {
+            return MainApp.getAppContext().getResources().getString(R.string.default_display_name_for_root_folder);
+        } else {
+            return capability.getServerSlogan();
+        }
+    }
+
+    public static int adjustLightness(float lightnessDelta, int color) {
+        float[] hsl = new float[3];
+        ColorUtils.RGBToHSL(Color.red(color), Color.green(color), Color.blue(color), hsl);
+
+        hsl[2] += lightnessDelta;
+
+        return ColorUtils.HSLToColor(hsl);
+    }
+
+    /**
+     * sets the coloring of the given progress bar to color_accent.
+     *
+     * @param progressBar the progress bar to be colored
+     */
+    public static void colorPreLollipopHorizontalProgressBar(ProgressBar progressBar) {
+        if (progressBar != null && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
+            colorHorizontalProgressBar(progressBar, ThemeUtils.primaryAccentColor());
+        }
+    }
+
+    /**
+     * sets the tinting of the given ImageButton's icon to color_accent.
+     *
+     * @param imageButton the image button who's icon should be colored
+     */
+    public static void colorImageButton(ImageButton imageButton, @ColorInt int color) {
+        if (imageButton != null) {
+            imageButton.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
+        }
+    }
+
+    /**
+     * sets the coloring of the given progress bar to color_accent.
+     *
+     * @param progressBar the progress bar to be colored
+     * @param color       the color to be used
+     */
+    public static void colorHorizontalProgressBar(ProgressBar progressBar, @ColorInt int color) {
+        if (progressBar != null) {
+            progressBar.getIndeterminateDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);
+            progressBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);
+        }
+    }
+
+    /**
+     * sets the coloring of the given seek bar to color_accent.
+     *
+     * @param seekBar the seek bar to be colored
+     */
+    public static void colorPreLollipopHorizontalSeekBar(SeekBar seekBar) {
+        if (seekBar != null && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
+            colorPreLollipopHorizontalProgressBar(seekBar);
+
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+                int color = ThemeUtils.primaryAccentColor();
+                seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
+                seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
+            }
+        }
+    }
+
+    /**
+     * set the Nextcloud standard colors for the snackbar.
+     *
+     * @param context  the context relevant for setting the color according to the context's theme
+     * @param snackbar the snackbar to be colored
+     */
+    public static void colorSnackbar(Context context, Snackbar snackbar) {
+        // Changing action button text color
+        snackbar.setActionTextColor(ContextCompat.getColor(context, R.color.white));
+    }
+
+    /**
+     * Sets the color of the status bar to {@code color} on devices with OS version lollipop or higher.
+     *
+     * @param fragmentActivity fragment activity
+     * @param color            the color
+     */
+    public static void colorStatusBar(FragmentActivity fragmentActivity, @ColorInt int color) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+            fragmentActivity.getWindow().setStatusBarColor(color);
+        }
+    }
+
+    /**
+     * 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 tintCheckbox(AppCompatCheckBox checkBox, int color) {
+        checkBox.setSupportButtonTintList(new ColorStateList(
+                new int[][]{
+                        new int[]{-android.R.attr.state_checked},
+                        new int[]{android.R.attr.state_checked},
+                },
+                new int[]{
+                        Color.GRAY,
+                        color
+                }
+        ));
+    }
+
+    public static void tintSwitch(SwitchCompat switchView, int color) {
+        tintSwitch(switchView, color, false);
+    }
+
+    public static void tintSwitch(SwitchCompat switchView, int color, boolean colorText) {
+        if (colorText) {
+            switchView.setTextColor(color);
+        }
+
+        int trackColor = Color.argb(77, Color.red(color), Color.green(color), Color.blue(color));
+
+        // 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}));
+
+        // setting the track color
+        DrawableCompat.setTintList(switchView.getTrackDrawable(), new ColorStateList(
+                new int[][]{new int[]{android.R.attr.state_checked}, new int[]{}},
+                new int[]{trackColor, Color.parseColor("#4D000000")}));
+    }
+
+    public static Drawable tintDrawable(@DrawableRes int id, int color) {
+        Drawable drawable = ResourcesCompat.getDrawable(MainApp.getAppContext().getResources(), id, null);
+
+        return tintDrawable(drawable, color);
+    }
+
+    public static Drawable tintDrawable(Drawable drawable, int color) {
+        Drawable wrap = DrawableCompat.wrap(drawable);
+        wrap.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
+
+        return wrap;
+    }
+
+    public static String colorToHexString(int color) {
+        return String.format("#%06X", 0xFFFFFF & color);
+    }
+
+    private static OCCapability getCapability() {
+        Account account = AccountUtils.getCurrentOwnCloudAccount(MainApp.getAppContext());
+
+        if (account != null) {
+            Context context = MainApp.getAppContext();
+
+            FileDataStorageManager storageManager = new FileDataStorageManager(account, context.getContentResolver());
+            return storageManager.getCapability(account.name);
+        } else {
+            return new OCCapability();
+        }
+    }
+}