From e320cce188285f9f7ff9bb2ba094fbfe25b22d34 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Wed, 2 Nov 2016 19:57:30 +0100 Subject: [PATCH] Fixed coloring link in AboutFragment, Color buttons in AboutFragment, Added ChangeLogFragment, made updating logBoxText synchronized in DebugFragment, Color some textViews and buttons according to chosen background color, created methods for calculating text color from background color, caught possible nullpointer in applog, added workaround drawable ic_media_video_poster.xml to prevent webview crash (not clear, if this fixes the issue), made tablayout in aboutActivity scrollable, renamed some color names to lowercase --- app/build.gradle | 4 +- .../activity/AboutActivity.java | 62 +++++++++++++++++-- .../activity/MainActivity.java | 2 + .../activity/SettingsActivity.java | 3 + .../diaspora_android/ui/BadgeDrawable.java | 2 +- .../ui/theme/ThemeHelper.java | 27 +++++++- .../dfa/diaspora_android/util/AppLog.java | 12 ++-- .../res/drawable/ic_media_video_poster.xml | 14 +++++ app/src/main/res/layout/about__activity.xml | 3 +- .../main/res/layout/about__fragment_about.xml | 25 ++++---- .../res/layout/about__fragment_changelog.xml | 33 ++++++++++ app/src/main/res/layout/main__app_bar.xml | 2 +- app/src/main/res/layout/main__nav_header.xml | 2 +- app/src/main/res/values-v21/styles.xml | 2 +- app/src/main/res/values/color.xml | 8 +-- app/src/main/res/values/dimens.xml | 6 ++ app/src/main/res/values/strings-about.xml | 3 + .../main/res/values/strings-preferences.xml | 4 +- app/src/main/res/values/styles.xml | 8 +-- .../main/res/xml/preferences__sub_proxy.xml | 2 +- 20 files changed, 181 insertions(+), 43 deletions(-) create mode 100644 app/src/main/res/drawable/ic_media_video_poster.xml create mode 100644 app/src/main/res/layout/about__fragment_changelog.xml diff --git a/app/build.gradle b/app/build.gradle index a3dc3632..2c5aedf2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,9 +44,9 @@ dependencies { // Android standard libs compile 'com.android.support:appcompat-v7:24.2.1' - compile 'com.android.support:design:24.1.0' //Don't update. Broken up to 24.2.1 + compile 'com.android.support:design:24.1.0' //Don't update. Broken up to 25.0.0 compile 'com.android.support:support-v4:24.2.1' - compile "com.android.support:customtabs:24.2.1" + compile 'com.android.support:customtabs:24.2.1' compile 'com.android.support:cardview-v7:24.2.1' diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/AboutActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/AboutActivity.java index 21f4f2b2..4fcaa3a7 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/AboutActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/AboutActivity.java @@ -24,6 +24,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.graphics.PorterDuff; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -48,6 +49,7 @@ import com.github.dfa.diaspora_android.App; import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.listener.IntellihideToolbarActivityListener; import com.github.dfa.diaspora_android.ui.HtmlTextView; +import com.github.dfa.diaspora_android.ui.theme.CustomFragment; import com.github.dfa.diaspora_android.ui.theme.ThemeHelper; import com.github.dfa.diaspora_android.ui.theme.ThemedActivity; import com.github.dfa.diaspora_android.ui.theme.ThemedFragment; @@ -170,6 +172,9 @@ public class AboutActivity extends ThemedActivity @BindView(R.id.fragment_about__app_codename) protected TextView txtAppCodename; + @BindView(R.id.fragment_about__spread_the_word) + protected HtmlTextView txtSpreadTheWord; + public AboutFragment() { } @@ -198,7 +203,14 @@ public class AboutActivity extends ThemedActivity @Override protected void applyColorToViews() { - + ThemeHelper.getInstance(getAppSettings()); + int colorBtn = ThemeHelper.getAccentColor(); + ThemeHelper.updateButtonColor(btnIssueTracker, colorBtn); + ThemeHelper.updateButtonColor(btnMarkdown, colorBtn); + ThemeHelper.updateButtonColor(btnSourceCode, colorBtn); + ThemeHelper.updateButtonColor(btnSpreadTheWord, colorBtn); + ThemeHelper.updateButtonColor(btnTranslate, colorBtn); + ThemeHelper.updateTextViewLinkColor(txtSpreadTheWord); } @Override @@ -337,6 +349,37 @@ public class AboutActivity extends ThemedActivity } } + public static class ChangelogFragment extends CustomFragment { + public static final String TAG = "com.github.dfa.diaspora_android.AboutActivity.ChangelogFragment"; + + @BindView(R.id.fragment_changelog__content) + protected TextView textChangelogContent; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View rootView = inflater.inflate(R.layout.about__fragment_changelog, container, false); + ButterKnife.bind(this, rootView); + final Context context = rootView.getContext(); + textChangelogContent.setText(Helpers.readTextfileFromRawRessource(context, R.raw.changelog, "", "")); + return rootView; + } + + @Override + public String getFragmentTag() { + return TAG; + } + + @Override + public void onCreateBottomOptionsMenu(Menu menu, MenuInflater inflater) { + /* Nothing to do */ + } + + @Override + public boolean onBackPressed() { + return false; + } + } + /** * Fragment that shows debug information like app version, pod version... */ @@ -421,8 +464,13 @@ public class AboutActivity extends ThemedActivity @Override public void update(Observable observable, Object o) { - if (logBox != null) { - logBox.setText(AppLog.Log.getLogBuffer()); + if (isAdded() && logBox != null) { + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + logBox.setText(AppLog.Log.getLogBuffer()); + } + }); } } } @@ -444,6 +492,8 @@ public class AboutActivity extends ThemedActivity return new AboutFragment(); case 1: //License return new LicenseFragment(); + case 2: //Changelog + return new ChangelogFragment(); case 3: //Debug default: return new DebugFragment(); @@ -452,8 +502,8 @@ public class AboutActivity extends ThemedActivity @Override public int getCount() { - // Show 3 total pages. - return 3; + // Show 4 total pages. + return 4; } @Override @@ -464,6 +514,8 @@ public class AboutActivity extends ThemedActivity case 1: return getString(R.string.about_activity__title_about_license); case 2: + return getString(R.string.fragment_changelog__changelog); + case 3: return getString(R.string.about_activity__title_debug_info); } return null; diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java index 72661e1b..94163bc6 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java @@ -1111,6 +1111,8 @@ public class MainActivity extends ThemedActivity ThemeHelper.updateActionMenuViewColor(toolbarBottom); navDrawerLayout.setBackgroundColor(appSettings.getPrimaryColor()); navProfilePictureArea.setBackgroundColor(appSettings.getPrimaryColor()); + navheaderTitle.setTextColor(ThemeHelper.getTextColorFromBackgroundColor(ThemeHelper.getPrimaryColor())); + navheaderDescription.setTextColor(ThemeHelper.getTextColorFromBackgroundColor(ThemeHelper.getPrimaryColor())); } @Override diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java index 268c11a1..08ec9398 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java @@ -307,11 +307,13 @@ public class SettingsActivity extends ThemedActivity { shade.setColors(ColorPalette.getColors(context, current[0])); shade.setSelectedColor(current[1]); titleBackground.setBackgroundColor(shade.getColor()); + title.setTextColor(ThemeHelper.getTextColorFromBackgroundColor(shade.getColor())); base.setOnColorChangedListener(new OnColorChangedListener() { @Override public void onColorChanged(int i) { shade.setColors(ColorPalette.getColors(context, i)); titleBackground.setBackgroundColor(i); + title.setTextColor(ThemeHelper.getTextColorFromBackgroundColor(i)); if (i == current[0]) { shade.setSelectedColor(current[1]); titleBackground.setBackgroundColor(shade.getColor()); @@ -324,6 +326,7 @@ public class SettingsActivity extends ThemedActivity { @Override public void onColorChanged(int i) { titleBackground.setBackgroundColor(i); + title.setTextColor(ThemeHelper.getTextColorFromBackgroundColor(i)); } }); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/BadgeDrawable.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/BadgeDrawable.java index ef74eafc..d8409f4c 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/BadgeDrawable.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/BadgeDrawable.java @@ -54,7 +54,7 @@ public class BadgeDrawable extends Drawable { badgeBackground.setAntiAlias(true); badgeBackground.setStyle(Paint.Style.FILL); badgeStroke = new Paint(); - badgeStroke.setColor(ContextCompat.getColor(context.getApplicationContext(), R.color.colorPrimaryDark)); + badgeStroke.setColor(ContextCompat.getColor(context.getApplicationContext(), R.color.color_primary_dark)); badgeStroke.setAntiAlias(true); badgeStroke.setStyle(Paint.Style.FILL); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/theme/ThemeHelper.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/theme/ThemeHelper.java index 64030905..c5b89636 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/theme/ThemeHelper.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/theme/ThemeHelper.java @@ -29,6 +29,7 @@ import android.support.v4.widget.CompoundButtonCompat; import android.support.v7.widget.ActionMenuView; import android.support.v7.widget.Toolbar; import android.view.View; +import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ProgressBar; @@ -84,8 +85,13 @@ public class ThemeHelper { public static void updateTabLayoutColor(TabLayout tabLayout) { if (tabLayout != null) { - tabLayout.setBackgroundColor(getInstance().appSettings.getPrimaryColor()); - tabLayout.setSelectedTabIndicatorColor(getInstance().appSettings.getAccentColor()); + tabLayout.setBackgroundColor(getPrimaryColor()); + tabLayout.setSelectedTabIndicatorColor(getAccentColor()); + int selectedColor = getTextColorFromBackgroundColor(getPrimaryColor()); + int normalColor = selectedColor == Color.WHITE ? + tabLayout.getContext().getResources().getColor(R.color.md_grey_300) : + tabLayout.getContext().getResources().getColor(R.color.md_grey_700); + tabLayout.setTabTextColors(normalColor, selectedColor); } } @@ -105,6 +111,7 @@ public class ThemeHelper { public static void updateToolbarColor(Toolbar toolbar) { if (toolbar != null) { toolbar.setBackgroundColor(getInstance().appSettings.getPrimaryColor()); + toolbar.setTitleTextColor(getTextColorFromBackgroundColor(getInstance().appSettings.getPrimaryColor())); } } @@ -150,7 +157,23 @@ public class ThemeHelper { } } + public static void updateButtonColor(Button button, int color) { + if(button != null) { + button.getBackground().setColorFilter(color, PorterDuff.Mode.MULTIPLY); + button.setTextColor(getTextColorFromBackgroundColor(color)); + } + } + public static int getNeutralGreyColor() { return ContextCompat.getColor(getInstance().appSettings.getApplicationContext(), R.color.md_grey_800); } + + public static int getTextColorFromBackgroundColor(int backgroundColor) { + int med = (Color.red(backgroundColor) + Color.green(backgroundColor) + Color.blue(backgroundColor)) / 3; + return med < 128 ? Color.WHITE : Color.BLACK; + } + + public static boolean darkDrawables() { + return getTextColorFromBackgroundColor(getInstance().appSettings.getPrimaryColor()) == Color.BLACK; + } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/util/AppLog.java b/app/src/main/java/com/github/dfa/diaspora_android/util/AppLog.java index 8f3df81b..76a823a7 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/util/AppLog.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/util/AppLog.java @@ -59,37 +59,37 @@ public class AppLog { */ public static void v(Object source, String _text) { if (isLoggingEnabled()) { - Log.v(getLogPrefix(source), _text); + Log.v(source != null? getLogPrefix(source) : "null", _text); } } public static void i(Object source, String _text) { if (isLoggingEnabled()) { - Log.i(getLogPrefix(source), _text); + Log.i(source != null? getLogPrefix(source) : "null", _text); } } public static void d(Object source, String _text) { if (isLoggingEnabled()) { - Log.d(getLogPrefix(source), _text); + Log.d(source != null? getLogPrefix(source) : "null", _text); } } public static void e(Object source, String _text) { if (isLoggingEnabled()) { - Log.e(getLogPrefix(source), _text); + Log.e(source != null? getLogPrefix(source) : "null", _text); } } public static void w(Object source, String _text) { if (isLoggingEnabled()) { - Log.w(getLogPrefix(source), _text); + Log.w(source != null? getLogPrefix(source) : "null", _text); } } public static void spam(Object source, String _text) { if (isLoggingEnabled() && isLoggingSpamEnabled()) { - Log.v(getLogPrefix(source), _text); + Log.v(source != null? getLogPrefix(source) : "null", _text); } } diff --git a/app/src/main/res/drawable/ic_media_video_poster.xml b/app/src/main/res/drawable/ic_media_video_poster.xml new file mode 100644 index 00000000..8c977c38 --- /dev/null +++ b/app/src/main/res/drawable/ic_media_video_poster.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/about__activity.xml b/app/src/main/res/layout/about__activity.xml index 6f0f2006..8fc92f51 100644 --- a/app/src/main/res/layout/about__activity.xml +++ b/app/src/main/res/layout/about__activity.xml @@ -31,7 +31,8 @@ + android:layout_height="wrap_content" + app:tabMode="scrollable"/> diff --git a/app/src/main/res/layout/about__fragment_about.xml b/app/src/main/res/layout/about__fragment_about.xml index a2cfe681..631d122b 100644 --- a/app/src/main/res/layout/about__fragment_about.xml +++ b/app/src/main/res/layout/about__fragment_about.xml @@ -16,12 +16,12 @@ + android:layout_marginTop="@dimen/card_view__margin__top_bottom_double" + android:layout_marginBottom="@dimen/card_view__margin__top_bottom" + android:layout_marginStart="@dimen/card_view__margin__start_end" + android:layout_marginEnd="@dimen/card_view__margin__start_end" + card_view:cardElevation="@dimen/card_view__elevation" + card_view:cardCornerRadius="@dimen/card_view__corner_radius"> + android:layout_marginTop="@dimen/card_view__margin__top_bottom" + android:layout_marginBottom="@dimen/card_view__margin__top_bottom_double" + android:layout_marginStart="@dimen/card_view__margin__start_end" + android:layout_marginEnd="@dimen/card_view__margin__start_end" + card_view:cardElevation="@dimen/card_view__elevation" + card_view:cardCornerRadius="@dimen/card_view__corner_radius"> + + + + + + + + + + + + diff --git a/app/src/main/res/layout/main__app_bar.xml b/app/src/main/res/layout/main__app_bar.xml index 225de964..06023228 100644 --- a/app/src/main/res/layout/main__app_bar.xml +++ b/app/src/main/res/layout/main__app_bar.xml @@ -39,7 +39,7 @@ android:id="@+id/main__bottombar" android:layout_width="match_parent" android:layout_height="45dp" - android:background="@color/colorPrimary" + android:background="@color/color_primary" android:theme="@style/BottomToolbarMenuOverflowStyle" app:layout_scrollFlags="scroll|enterAlways|snap" app:popupTheme="@style/Theme.AppCompat.NoActionBar" /> diff --git a/app/src/main/res/layout/main__nav_header.xml b/app/src/main/res/layout/main__nav_header.xml index d3294497..49c025fa 100644 --- a/app/src/main/res/layout/main__nav_header.xml +++ b/app/src/main/res/layout/main__nav_header.xml @@ -3,7 +3,7 @@ android:id="@+id/nav_drawer" android:layout_width="wrap_content" android:layout_height="110dp" - android:background="@color/colorPrimary" + android:background="@color/color_primary" android:gravity="bottom" android:orientation="vertical" android:theme="@style/ThemeOverlay.AppCompat.Dark"> diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml index 5b55f978..5d49171d 100644 --- a/app/src/main/res/values-v21/styles.xml +++ b/app/src/main/res/values-v21/styles.xml @@ -4,6 +4,6 @@ false true true - @color/colorPrimary + @color/color_primary diff --git a/app/src/main/res/values/color.xml b/app/src/main/res/values/color.xml index 14025f63..d808bacc 100644 --- a/app/src/main/res/values/color.xml +++ b/app/src/main/res/values/color.xml @@ -1,8 +1,8 @@ - @color/md_blue_650 - @color/md_blue_750 - @color/md_deep_orange_650 + @color/md_blue_650 + @color/md_blue_750 + @color/md_deep_orange_650 @color/md_blue_650 @@ -17,7 +17,7 @@ #ffffff #000000 - #eeeeee + #eeeeee #c4000000 @color/md_grey_200 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index cebddacb..521f49f7 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -16,4 +16,10 @@ 11sp 30dp + + 16dp + 8dp + 16dp + 5dp + 5dp diff --git a/app/src/main/res/values/strings-about.xml b/app/src/main/res/values/strings-about.xml index e65acc24..6252d60e 100644 --- a/app/src/main/res/values/strings-about.xml +++ b/app/src/main/res/values/strings-about.xml @@ -46,6 +46,9 @@ Spread the word! Hey! Check out #DiasporaForAndroid! %1$s https://f-droid.org/app/com.github.dfa.diaspora_android + + + Changelog Auch gibt es niemanden, der den Schmerz an sich liebt, sucht oder wünscht, nur, weil er Schmerz ist, es sei denn, es kommt zu zufälligen Umständen, in denen Mühen und Schmerz ihm große Freude bereiten können. Um ein triviales Beispiel zu nehmen, wer von uns unterzieht sich je anstrengender körperlicher Betätigung, außer um Vorteile daraus zu ziehen? Aber wer hat irgend ein Recht, einen Menschen zu tadeln, der die Entscheidung trifft, eine Freude zu genießen, die keine unangenehmen Folgen hat, oder einen, der Schmerz vermeidet, welcher keine daraus resultierende Freude nach sich zieht? Auch gibt es niemanden, der den Schmerz an sich liebt, sucht oder wünscht, nur, weil er Schmerz ist, es sei denn, es kommt zu zufälligen Umständen, in denen Mühen und Schmerz ihm große Freude bereiten können. Um ein triviales Beispiel zu nehmen, wer von uns unterzieht sich je anstrengender körperlicher Betätigung, außer um Vorteile daraus zu ziehen? Aber wer hat irgend ein Recht, einen Menschen zu tadeln, der die Entscheidung trifft, eine Freude zu genießen, die keine unangenehmen Folgen hat, oder einen, der Schmerz vermeidet, welcher keine daraus resultierende Freude nach sich zieht? diff --git a/app/src/main/res/values/strings-preferences.xml b/app/src/main/res/values/strings-preferences.xml index 16fec09c..4f521455 100644 --- a/app/src/main/res/values/strings-preferences.xml +++ b/app/src/main/res/values/strings-preferences.xml @@ -116,8 +116,8 @@ Proxy Diaspora\'s traffic to circumvent firewalls.\nMay require restart. This might not work on some phones. Host Port - HTTP - SOCKS5 + HTTP + SOCKS5 App needs to restart to disable proxy usage Orbot proxy preset loaded diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index d0c10108..b8e20045 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -3,10 +3,10 @@