Browse Source

proper status bar coloring for multi select mode, cleanup logging

Andy Scherzinger 8 years ago
parent
commit
ecf1f9e3da

+ 0 - 1
res/layout/toolbar_standard.xml

@@ -38,7 +38,6 @@
         android:layout_width="match_parent"
         android:layout_height="4dp"
         android:layout_margin="0dp"
-        android:background="@color/primary"
         android:indeterminate="false"
         android:indeterminateOnly="false"
         android:padding="0dp"

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

@@ -19,11 +19,11 @@
 
 package com.owncloud.android.ui.activity;
 
-import android.accounts.AccountManagerFuture;
+import android.graphics.PorterDuff;
 import android.os.Bundle;
+import android.support.annotation.ColorInt;
 import android.support.v4.content.ContextCompat;
 import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
 import android.support.v7.widget.Toolbar;
 import android.view.View;
 import android.widget.ProgressBar;
@@ -118,4 +118,16 @@ public abstract class ToolbarActivity extends BaseActivity {
     public void setIndeterminate(boolean indeterminate) {
         mProgressBar.setIndeterminate(indeterminate);
     }
+
+    /**
+     * Set the background to to progress bar of the toolbar. The resource should refer to
+     * a Drawable object or 0 to remove the background.#
+     *
+     * @param color The identifier of the color.
+     * @attr ref android.R.styleable#View_background
+     */
+    public void setProgressBarBackgroundColor(@ColorInt int color) {
+        mProgressBar.setBackgroundColor(color);
+        mProgressBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);
+    }
 }

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

@@ -36,7 +36,6 @@ import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.Window;
 import android.widget.AbsListView;
 import android.widget.AdapterView;
 import android.widget.ListView;
@@ -64,6 +63,7 @@ import com.owncloud.android.ui.dialog.RenameFileDialogFragment;
 import com.owncloud.android.ui.preview.PreviewImageFragment;
 import com.owncloud.android.ui.preview.PreviewMediaFragment;
 import com.owncloud.android.ui.preview.PreviewTextFragment;
+import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.FileStorageUtils;
 
 import java.io.File;
@@ -99,8 +99,10 @@ public class OCFileListFragment extends ExtendedListFragment {
     private FileListListAdapter mAdapter;
     private boolean mJustFolders;
 
-    private int mStatusBarColorActionMode;
-    private int mStatusBarColor;
+    private int mSystemBarActionModeColor;
+    private int mSystemBarColor;
+    private int mProgressBarActionModeColor;
+    private int mProgressBarColor;
 
     private boolean mHideFab = true;
     private boolean miniFabClicked = false;
@@ -110,7 +112,10 @@ public class OCFileListFragment extends ExtendedListFragment {
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setHasOptionsMenu(true);
-        mStatusBarColorActionMode = getResources().getColor(R.color.action_mode_status_bar_background);
+        mSystemBarActionModeColor = getResources().getColor(R.color.action_mode_status_bar_background);
+        mSystemBarColor = getResources().getColor(R.color.primary_dark);
+        mProgressBarActionModeColor = getResources().getColor(R.color.action_mode_background);
+        mProgressBarColor = getResources().getColor(R.color.primary);
     }
 
     /**
@@ -119,7 +124,7 @@ public class OCFileListFragment extends ExtendedListFragment {
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
-        Log_OC.e(TAG, "onAttach");
+        Log_OC.i(TAG, "onAttach");
         try {
             mContainerActivity = (FileFragment.ContainerActivity) context;
 
@@ -166,7 +171,7 @@ public class OCFileListFragment extends ExtendedListFragment {
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
-        Log_OC.e(TAG, "onActivityCreated() start");
+        Log_OC.i(TAG, "onActivityCreated() start");
 
         if (savedInstanceState != null) {
             mFile = savedInstanceState.getParcelable(KEY_FILE);
@@ -321,7 +326,7 @@ public class OCFileListFragment extends ExtendedListFragment {
         // only record if it hasn't been done already at some other time
         if(!miniFabClicked) {
             final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
-            sp.edit().putLong(KEY_FAB_EVER_CLICKED, 1).commit();
+            sp.edit().putLong(KEY_FAB_EVER_CLICKED, 1).apply();
             miniFabClicked = true;
         }
     }
@@ -362,11 +367,8 @@ public class OCFileListFragment extends ExtendedListFragment {
                 mode.invalidate();
 
                 //set gray color
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-                    Window w = getActivity().getWindow();
-                    mStatusBarColor = w.getStatusBarColor();
-                    w.setStatusBarColor(mStatusBarColorActionMode);
-                }
+                DisplayUtils.colorStatusBar(getActivity(), mSystemBarActionModeColor);
+                DisplayUtils.colorToolbarProgressBar(getActivity(), mProgressBarActionModeColor);
 
                 // hide FAB in multi selection mode
                 setFabEnabled(false);
@@ -391,6 +393,7 @@ public class OCFileListFragment extends ExtendedListFragment {
                     getActivity()
                 );
                 mf.filter(menu);
+
                 return true;
             }
 
@@ -404,9 +407,8 @@ public class OCFileListFragment extends ExtendedListFragment {
                 mActiveActionMode = null;
 
                 // reset to previous color
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-                    getActivity().getWindow().setStatusBarColor(mStatusBarColor);
-                }
+                DisplayUtils.colorStatusBar(getActivity(), mSystemBarColor);
+                DisplayUtils.colorToolbarProgressBar(getActivity(), mProgressBarColor);
 
                 // show FAB on multi selection mode exit
                 if(!mHideFab) {

+ 27 - 3
src/com/owncloud/android/utils/DisplayUtils.java

@@ -32,15 +32,15 @@ import android.graphics.Point;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
 import android.os.Build;
+import android.support.annotation.ColorInt;
 import android.support.design.widget.Snackbar;
+import android.support.v4.app.FragmentActivity;
 import android.support.v4.content.ContextCompat;
 import android.text.format.DateUtils;
 import android.view.Display;
 import android.view.View;
-import android.widget.ImageView;
 import android.widget.ProgressBar;
 import android.widget.SeekBar;
-import android.widget.TextView;
 
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
@@ -49,11 +49,11 @@ import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.TextDrawable;
+import com.owncloud.android.ui.activity.ToolbarActivity;
 
 import java.math.BigDecimal;
 import java.net.IDN;
 import java.text.DateFormat;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
@@ -289,6 +289,30 @@ public class DisplayUtils {
         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 interface AvatarGenerationListener {
         void avatarGenerated(Drawable avatarDrawable, Object callContext);
         boolean shouldCallGeneratedCallback(String tag, Object callContext);