summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/base/utils
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2022-12-15 15:11:22 +0100
committercyBerta <cyberta@riseup.net>2022-12-15 23:59:53 +0100
commite090b6dd60daca11603b36a197dfe5b05ecc3cb9 (patch)
tree2779e7f0e59cb659fa71eb6c3aee8d04aefa6949 /app/src/main/java/se/leap/bitmaskclient/base/utils
parentbccc782a143692a1db01f4725cd94784aa99ca72 (diff)
center and capitalize actionbar title, in Bitmask, center but not capitalize title in riseupvpn, allow to configure both properties on compile time in build.gradle
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/base/utils')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/utils/ViewHelper.java80
1 files changed, 79 insertions, 1 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/utils/ViewHelper.java b/app/src/main/java/se/leap/bitmaskclient/base/utils/ViewHelper.java
index bbd77c36..8f4d7862 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/utils/ViewHelper.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/utils/ViewHelper.java
@@ -1,26 +1,39 @@
package se.leap.bitmaskclient.base.utils;
+import android.app.Activity;
import android.app.Notification;
import android.content.Context;
import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.os.Build;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
+import android.util.Log;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
import androidx.annotation.ColorRes;
import androidx.annotation.DimenRes;
import androidx.annotation.StringRes;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
+import se.leap.bitmaskclient.R;
+import se.leap.bitmaskclient.base.views.ActionBarTitle;
+
/**
* Created by cyberta on 29.06.18.
*/
public class ViewHelper {
+ private static final String TAG = ViewHelper.class.getSimpleName();
+
public static int convertDimensionToPx(Context context, @DimenRes int dimension) {
return context.getResources().getDimensionPixelSize(dimension);
}
@@ -30,16 +43,81 @@ public class ViewHelper {
* @param fragment
* @param stringId
*/
+ public static void setActionBarSubtitle(Fragment fragment, @StringRes int stringId) {
+ AppCompatActivity appCompatActivity = (AppCompatActivity) fragment.getActivity();
+ if (appCompatActivity != null) {
+ ActionBar actionBar = appCompatActivity.getSupportActionBar();
+ if (actionBar != null) {
+ View customView = actionBar.getCustomView();
+ if (customView instanceof ActionBarTitle) {
+ ActionBarTitle actionBarTitle = (ActionBarTitle) customView;
+ actionBarTitle.setSubtitle(stringId);
+ actionBarTitle.showSubtitle(true);
+ }
+ }
+ }
+ }
+
+ /**
+ * Sets the subtitle of an activities action bar. The activity needs to be an AppCompatActivity.
+ * @param fragment
+ * @param stringId
+ */
public static void setActionBarTitle(Fragment fragment, @StringRes int stringId) {
AppCompatActivity appCompatActivity = (AppCompatActivity) fragment.getActivity();
if (appCompatActivity != null) {
ActionBar actionBar = appCompatActivity.getSupportActionBar();
if (actionBar != null) {
- actionBar.setSubtitle(stringId);
+ View customView = actionBar.getCustomView();
+ if (customView instanceof ActionBarTitle) {
+ ActionBarTitle actionBarTitle = (ActionBarTitle) customView;
+ actionBarTitle.setTitle(stringId);
+ actionBarTitle.showSubtitle(false);
+ } else {
+ Log.e(TAG, "ActionBar has no custom action title!");
+ }
}
}
}
+
+ public static void setDefaultActivityBarColor(Activity activity) {
+ setActivityBarColor(activity, R.color.colorPrimary, R.color.colorPrimaryDark, R.color.colorActionBarTitleFont);
+ }
+
+ public static void setActivityBarColor(Activity activity, @ColorRes int primaryColor, @ColorRes int secondaryColor, @ColorRes int textColor) {
+ if (!(activity instanceof AppCompatActivity)) {
+ return;
+ }
+
+ ActionBar bar = ((AppCompatActivity) activity).getSupportActionBar();
+ if (bar == null) {
+ return;
+ }
+ int color = ContextCompat.getColor(activity, secondaryColor);
+ bar.setBackgroundDrawable(new ColorDrawable(color));
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ Window window = activity.getWindow();
+ window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(ContextCompat.getColor(activity, primaryColor));
+ }
+
+ int actionBarTextColor;
+ if (textColor == 0) {
+ actionBarTextColor = isBrightColor(color) ? R.color.actionbar_connectivity_state_text_color_dark : R.color.actionbar_connectivity_state_text_color_light;
+ } else {
+ actionBarTextColor = textColor;
+ }
+
+ View customView = bar.getCustomView();
+ if (customView instanceof ActionBarTitle) {
+ ActionBarTitle actionBarTitle = (ActionBarTitle) customView;
+ actionBarTitle.setTitleTextColor(ContextCompat.getColor(bar.getThemedContext(), actionBarTextColor));
+ }
+ }
+
+
public static boolean isBrightColor(int color) {
if (android.R.color.transparent == color)
return true;