Browse Source

Centralize theming of search bar

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
tobiasKaminsky 5 năm trước cách đây
mục cha
commit
e884625240

+ 1 - 1
src/main/AndroidManifest.xml

@@ -318,7 +318,7 @@
         <activity android:name=".ui.activity.ConflictsResolveActivity"/>
         <activity android:name=".ui.activity.ErrorsWhileCopyingHandlerActivity"/>
 
-        <activity android:name="com.nextcloud.client.logger.ui.LogsActivity"/>
+        <activity android:name="com.nextcloud.client.logger.ui.LogsActivity" />
 
         <activity android:name="com.nextcloud.client.errorhandling.ShowErrorActivity"
             android:theme="@style/Theme.ownCloud.Toolbar"

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

@@ -77,15 +77,18 @@ class LogsActivity : ToolbarActivity() {
         vm.load()
 
         setupToolbar()
-        title = getText(R.string.logs_title)
         supportActionBar?.setDisplayHomeAsUpEnabled(true)
+        supportActionBar?.apply { ThemeUtils.setColoredTitle(this, getString(R.string.logs_title), baseContext) }
+
+        ThemeUtils.tintBackButton(supportActionBar, baseContext);
     }
 
     override fun onCreateOptionsMenu(menu: Menu): Boolean {
         menuInflater.inflate(R.menu.logs_menu, menu)
         (menu.findItem(R.id.action_search).actionView as SearchView).apply {
             setOnQueryTextListener(searchBoxListener)
-            ThemeUtils.themeSearchView(context, this, true)
+
+            ThemeUtils.themeSearchView(this, true, context)
         }
         return super.onCreateOptionsMenu(menu)
     }

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

@@ -53,8 +53,6 @@ import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewTreeObserver;
-import android.widget.EditText;
-import android.widget.ImageView;
 
 import com.google.android.material.snackbar.Snackbar;
 import com.nextcloud.client.appinfo.AppInfo;
@@ -797,13 +795,7 @@ public class FileDisplayActivity extends FileActivity
         searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
         searchMenuItem.setVisible(false);
 
-        // hacky as no default way is provided
-        int fontColor = ThemeUtils.fontColor(this);
-        EditText editText = searchView.findViewById(androidx.appcompat.R.id.search_src_text);
-        editText.setHintTextColor(fontColor);
-        editText.setTextColor(fontColor);
-        ImageView searchClose = searchView.findViewById(androidx.appcompat.R.id.search_close_btn);
-        searchClose.setColorFilter(ThemeUtils.fontColor(this));
+        ThemeUtils.themeSearchView(searchView, true, this);
 
         // populate list of menu items to show/hide when drawer is opened/closed
         mDrawerMenuItemstoShowHideList = new ArrayList<>(4);

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

@@ -1074,14 +1074,7 @@ public class ReceiveExternalFilesActivity extends FileActivity
         newFolderMenuItem.setEnabled(mFile.canWrite());
 
         // hacky as no default way is provided
-        int fontColor = ThemeUtils.fontColor(this);
-        EditText editText = searchView.findViewById(androidx.appcompat.R.id.search_src_text);
-        editText.setHintTextColor(fontColor);
-        editText.setTextColor(fontColor);
-        ImageView searchClose = searchView.findViewById(androidx.appcompat.R.id.search_close_btn);
-        searchClose.setColorFilter(ThemeUtils.fontColor(this));
-        ImageView searchButton = searchView.findViewById(androidx.appcompat.R.id.search_button);
-        searchButton.setColorFilter(ThemeUtils.fontColor(this));
+        ThemeUtils.themeSearchView(searchView, true, this);
 
         return true;
     }

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

@@ -191,7 +191,7 @@ public class ExtendedListFragment extends Fragment implements
         searchView = (SearchView) MenuItemCompat.getActionView(item);
         searchView.setOnQueryTextListener(this);
         searchView.setOnCloseListener(this);
-        ThemeUtils.themeSearchView(getContext(), searchView, true);
+        ThemeUtils.themeSearchView(searchView, true, requireContext());
 
         final Handler handler = new Handler();
 

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

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

+ 33 - 3
src/main/java/com/owncloud/android/utils/ThemeUtils.java

@@ -38,6 +38,7 @@ import android.view.View;
 import android.view.Window;
 import android.widget.EditText;
 import android.widget.ImageButton;
+import android.widget.ImageView;
 import android.widget.ProgressBar;
 import android.widget.SeekBar;
 import android.widget.TextView;
@@ -231,6 +232,21 @@ public final class ThemeUtils {
         }
     }
 
+    /**
+     * For activities that do not use drawer, e.g. Settings, this can be used to correctly tint back button based on
+     * theme
+     *
+     * @param supportActionBar
+     */
+    public static void tintBackButton(@Nullable ActionBar supportActionBar, Context context) {
+        if (supportActionBar == null) {
+            return;
+        }
+
+        Drawable backArrow = context.getResources().getDrawable(R.drawable.ic_arrow_back);
+        supportActionBar.setHomeAsUpIndicator(ThemeUtils.tintDrawable(backArrow, ThemeUtils.fontColor(context)));
+    }
+
     public static Spanned getColoredTitle(String title, int color) {
         Spannable text = new SpannableString(title);
         text.setSpan(new ForegroundColorSpan(color),
@@ -473,16 +489,30 @@ public final class ThemeUtils {
             }
         }
 
+        editText.setHintTextColor(color);
+        editText.setTextColor(color);
         editText.setHighlightColor(context.getResources().getColor(R.color.fg_contrast));
         setEditTextCursorColor(editText, color);
         setTextViewHandlesColor(context, editText, color);
     }
 
-    public static void themeSearchView(Context context, SearchView searchView, boolean themedBackground) {
-        if (searchView == null) { return; }
-
+    /**
+     * Theme search view
+     *
+     * @param searchView       searchView to be changed
+     * @param themedBackground true if background is themed, e.g. on action bar; false if background is white
+     * @param context
+     */
+    public static void themeSearchView(SearchView searchView, boolean themedBackground, Context context) {
+        // hacky as no default way is provided
+        int fontColor = ThemeUtils.fontColor(context);
         SearchView.SearchAutoComplete editText = searchView.findViewById(R.id.search_src_text);
         themeEditText(context, editText, themedBackground);
+
+        ImageView closeButton = searchView.findViewById(androidx.appcompat.R.id.search_close_btn);
+        closeButton.setColorFilter(fontColor);
+        ImageView searchButton = searchView.findViewById(androidx.appcompat.R.id.search_button);
+        searchButton.setColorFilter(fontColor);
     }
 
     public static void themeProgressBar(Context context, ProgressBar progressBar) {