diff --git a/app/build.gradle b/app/build.gradle index 08f4861a..a826b600 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -132,4 +132,5 @@ dependencies { compile 'org.solovyev.android.views:linear-layout-manager:0.5@aar' //noinspection GradleDynamicVersion compile 'com.anjlab.android.iab.v3:library:1.0.+' + compile('de.psdev.licensesdialog:licensesdialog:1.8.0') } diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/ChangelogDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/ChangelogDialog.java index 37416654..449756f5 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/ChangelogDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/ChangelogDialog.java @@ -76,8 +76,8 @@ public class ChangelogDialog extends LeakDetectDialogFragment { in.close(); // Inject color values for WebView body background and links - final String backgroundColor = ThemeSingleton.get().darkTheme ? "444444" : "fff"; - final String contentColor = ThemeSingleton.get().darkTheme ? "fff" : "000"; + final String backgroundColor = ThemeSingleton.get().darkTheme ? "424242" : "ffffff"; + final String contentColor = ThemeSingleton.get().darkTheme ? "ffffff" : "000000"; webView.loadData(buf.toString() .replace("{style-placeholder}", String.format("body { background-color: #%s; color: #%s; }", backgroundColor, contentColor)) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java index 5fb4f6ea..555bec17 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java @@ -15,6 +15,7 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import com.afollestad.materialdialogs.internal.ThemeSingleton; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.dialogs.ChangelogDialog; import com.kabouzeid.gramophone.dialogs.DonationDialog; @@ -24,6 +25,7 @@ import com.kabouzeid.gramophone.util.ViewUtil; import butterknife.Bind; import butterknife.ButterKnife; +import de.psdev.licensesdialog.LicensesDialog; /** * @author Karim Abou Zeid (kabouzeid) @@ -57,6 +59,8 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen TextView appVersion; @Bind(R.id.changelog) LinearLayout changelog; + @Bind(R.id.licenses) + LinearLayout licenses; @Bind(R.id.add_to_google_plus_circles) LinearLayout addToGooglePlusCircles; @Bind(R.id.follow_on_twitter) @@ -92,6 +96,8 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen ImageView iconInfo; @Bind(R.id.icon_changelog) ImageView iconChangelog; + @Bind(R.id.icon_licenses) + ImageView iconLicenses; @Bind(R.id.icon_bug_report) ImageView iconBugReport; @Bind(R.id.icon_google_plus_community) @@ -147,6 +153,7 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen private void setUpOnClickListeners() { changelog.setOnClickListener(this); + licenses.setOnClickListener(this); addToGooglePlusCircles.setOnClickListener(this); followOnTwitter.setOnClickListener(this); forkOnGitHub.setOnClickListener(this); @@ -165,18 +172,20 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen } private void setUpIconTint() { - iconInfo.setColorFilter(ColorUtil.resolveColor(this, android.R.attr.textColorSecondary)); - iconChangelog.setColorFilter(ColorUtil.resolveColor(this, android.R.attr.textColorSecondary)); - iconBugReport.setColorFilter(ColorUtil.resolveColor(this, android.R.attr.textColorSecondary)); - iconGooglePlusCommunity.setColorFilter(ColorUtil.resolveColor(this, android.R.attr.textColorSecondary)); - iconFlag.setColorFilter(ColorUtil.resolveColor(this, android.R.attr.textColorSecondary)); - iconRate.setColorFilter(ColorUtil.resolveColor(this, android.R.attr.textColorSecondary)); - iconDonate.setColorFilter(ColorUtil.resolveColor(this, android.R.attr.textColorSecondary)); - iconAuthor.setColorFilter(ColorUtil.resolveColor(this, android.R.attr.textColorSecondary)); - iconGooglePlus.setColorFilter(ColorUtil.resolveColor(this, android.R.attr.textColorSecondary)); - iconTwitter.setColorFilter(ColorUtil.resolveColor(this, android.R.attr.textColorSecondary)); - iconGithub.setColorFilter(ColorUtil.resolveColor(this, android.R.attr.textColorSecondary)); - iconWebsite.setColorFilter(ColorUtil.resolveColor(this, android.R.attr.textColorSecondary)); + int iconColor = ColorUtil.resolveColor(this, R.attr.icon_color); + iconInfo.setColorFilter(iconColor); + iconChangelog.setColorFilter(iconColor); + iconLicenses.setColorFilter(iconColor); + iconBugReport.setColorFilter(iconColor); + iconGooglePlusCommunity.setColorFilter(iconColor); + iconFlag.setColorFilter(iconColor); + iconRate.setColorFilter(iconColor); + iconDonate.setColorFilter(iconColor); + iconAuthor.setColorFilter(iconColor); + iconGooglePlus.setColorFilter(iconColor); + iconTwitter.setColorFilter(iconColor); + iconGithub.setColorFilter(iconColor); + iconWebsite.setColorFilter(iconColor); } @Override @@ -201,6 +210,8 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen public void onClick(View v) { if (v == changelog) { ChangelogDialog.create().show(getSupportFragmentManager(), "CHANGELOG_DIALOG"); + } else if (v == licenses) { + showLicenseDialog(); } else if (v == addToGooglePlusCircles) { openUrl(GOOGLE_PLUS); } else if (v == followOnTwitter) { @@ -241,6 +252,20 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen startActivity(i); } + private void showLicenseDialog() { + new LicensesDialog.Builder(this) + .setNotices(R.raw.notices) + .setTitle(R.string.licenses) + .setNoticesCssStyle(getString(R.string.license_dialog_style) + .replace("{bg-color}", ThemeSingleton.get().darkTheme ? "424242" : "ffffff") + .replace("{text-color}", ThemeSingleton.get().darkTheme ? "ffffff" : "000000") + .replace("{license-bg-color}", ThemeSingleton.get().darkTheme ? "535353" : "eeeeee") + ) + .setIncludeOwnLicense(true) + .build() + .showAppCompat(); + } + @Override public boolean onCreateOptionsMenu(Menu menu) { boolean darkContent = ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary()); diff --git a/app/src/main/res/drawable-hdpi/ic_description_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_description_white_24dp.png new file mode 100644 index 00000000..7eeb86ef Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_description_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_description_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_description_white_24dp.png new file mode 100644 index 00000000..51a8ac3c Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_description_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_description_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_description_white_24dp.png new file mode 100644 index 00000000..f9c580c0 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_description_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_description_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_description_white_24dp.png new file mode 100644 index 00000000..0e802589 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_description_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_description_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_description_white_24dp.png new file mode 100644 index 00000000..8c44818f Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_description_white_24dp.png differ diff --git a/app/src/main/res/layout/card_about_app.xml b/app/src/main/res/layout/card_about_app.xml index 146db894..f224d9cf 100644 --- a/app/src/main/res/layout/card_about_app.xml +++ b/app/src/main/res/layout/card_about_app.xml @@ -113,6 +113,37 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/raw/notices.xml b/app/src/main/res/raw/notices.xml new file mode 100644 index 00000000..696ac003 --- /dev/null +++ b/app/src/main/res/raw/notices.xml @@ -0,0 +1,105 @@ + + + + + + Advanced RecyclerView + https://github.com/h6ah4i/android-advancedrecyclerview + Copyright (C) 2015 Haruki Hasegawa + Apache Software License 2.0 + + + Material Contextual Action Bar + https://github.com/afollestad/material-cab + Copyright 2016 Aidan Follestad + Apache Software License 2.0 + + + LeakCanary + https://github.com/square/leakcanary + Copyright 2015 Square, Inc. + Apache Software License 2.0 + + + Android Support Libraries + http://developer.android.com/tools/support-library/index.html + Copyright (C) 2015 The Android Open Source Project + Apache Software License 2.0 + + + Android-ObservableScrollView + https://github.com/ksoichiro/Android-ObservableScrollView + Copyright 2014 Soichiro Kashima + Apache Software License 2.0 + + + Android Sliding Up Panel + https://github.com/umano/AndroidSlidingUpPanel + + Apache Software License 2.0 + + + Retrofit + https://github.com/square/retrofit + Copyright 2013 Square, Inc. + Apache Software License 2.0 + + + OkHttp + https://github.com/square/okhttp + + Apache Software License 2.0 + + + Universal Image Loader + https://github.com/nostra13/Android-Universal-Image-Loader + Copyright 2011-2015 Sergey Tarasevich + Apache Software License 2.0 + + + Butter Knife + https://github.com/JakeWharton/butterknife + Copyright 2013 Jake Wharton + Apache Software License 2.0 + + + Linear Layout Manager + https://github.com/serso/android-linear-layout-manager + Copyright 2014 serso aka se.solovyev + Apache Software License 2.0 + + + Android In-App Billing v3 Library + https://github.com/anjlab/android-inapp-billing-v3 + Copyright 2014 AnjLab + Apache Software License 2.0 + + + Material Dialogs + https://github.com/afollestad/material-dialogs + Copyright (c) 2015 Aidan Michael Follestad + MIT License + + + SeekArc + https://github.com/Triggertrap/SeekArc + Copyright (c) 2013 Triggertrap Ltd + Author Neil Davies + + MIT License + + \ No newline at end of file diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 37c52cbe..827b0f55 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -22,4 +22,18 @@ donation_5 donation_6 + + + body { + background-color: #{bg-color}; + color: #{text-color}; + font-family: sans-serif; + overflow-wrap: break-word; + } + pre { + background-color: #{license-bg-color}; + padding: 1em; + white-space: pre-wrap; + } + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 90a0050d..f3f3c91a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -179,6 +179,7 @@ Colored footers Special thanks to Changelog + Licenses Permission to access external storage denied. back Support development