From dec95bf5f70c3ca66db7bca7a0900d84a57ff092 Mon Sep 17 00:00:00 2001 From: Kosh Date: Sat, 10 Jun 2017 14:12:29 +0800 Subject: [PATCH] this commit fixed #607 It also adds Amlod theme as in app purchase, those who has supported FastHub before will be getting it for Free however the rest will have to either support development or purchase the theme, this commit also shows a heart badge indicates that the user has supportedDevelopment before. --- app/src/debug/res/values/secrets.xml | 1 + app/src/main/AndroidManifest.xml | 8 +- .../com/fastaccess/helper/PrefGetter.java | 19 +++ .../com/fastaccess/ui/base/BaseActivity.java | 3 +- .../ui/modules/login/LoginActivity.java | 131 ++++++------------ .../modules/main/donation/DonateActivity.kt | 102 ++++++++++++++ .../main/donation/DonationActivity.java | 49 +------ .../ui/modules/settings/SettingsActivity.java | 10 +- .../category/SettingsCategoryFragment.java | 9 -- .../ui/modules/theme/ThemeActivity.kt | 7 + .../modules/theme/fragment/ThemeFragment.kt | 46 +++++- .../theme/fragment/ThemeFragmentMvp.java | 20 --- .../theme/fragment/ThemeFragmentMvp.kt | 22 +++ .../fragment/ThemeFragmentPresenter.java | 9 -- .../theme/fragment/ThemeFragmentPresenter.kt | 9 ++ .../main_layouts/layout/theme_layout.xml | 16 +-- .../other_layouts/layout/drawer_header.xml | 24 +++- app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/themes.xml | 8 ++ .../main/res/xml/customization_settings.xml | 10 -- 20 files changed, 297 insertions(+), 207 deletions(-) create mode 100644 app/src/main/java/com/fastaccess/ui/modules/main/donation/DonateActivity.kt delete mode 100644 app/src/main/java/com/fastaccess/ui/modules/theme/fragment/ThemeFragmentMvp.java create mode 100644 app/src/main/java/com/fastaccess/ui/modules/theme/fragment/ThemeFragmentMvp.kt delete mode 100644 app/src/main/java/com/fastaccess/ui/modules/theme/fragment/ThemeFragmentPresenter.java create mode 100644 app/src/main/java/com/fastaccess/ui/modules/theme/fragment/ThemeFragmentPresenter.kt diff --git a/app/src/debug/res/values/secrets.xml b/app/src/debug/res/values/secrets.xml index 2ed203b1..c8e78bd6 100644 --- a/app/src/debug/res/values/secrets.xml +++ b/app/src/debug/res/values/secrets.xml @@ -6,4 +6,5 @@ android.test.canceled android.test.refunded android.test.item_unavailable + android.test.purchased \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 98b7e86d..4f2f6952 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -185,6 +185,13 @@ android:value=".ui.modules.main.MainActivity"/> + + + + - UserPagerActivity.startActivity(this, userModel.getLogin())); - + view.findViewById(R.id.donatedIcon).setVisibility(PrefGetter.isProEnabled() || PrefGetter.isAmlodEnabled() + ? View.VISIBLE : View.GONE); } } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/login/LoginActivity.java b/app/src/main/java/com/fastaccess/ui/modules/login/LoginActivity.java index ff0163e0..645e797c 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/login/LoginActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/login/LoginActivity.java @@ -15,6 +15,7 @@ import android.view.View; import android.widget.ProgressBar; import android.widget.RelativeLayout; +import com.evernote.android.state.State; import com.fastaccess.BuildConfig; import com.fastaccess.R; import com.fastaccess.data.dao.model.Login; @@ -24,10 +25,15 @@ import com.fastaccess.helper.AppHelper; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; import com.fastaccess.helper.InputHelper; +import com.fastaccess.helper.Logger; +import com.fastaccess.helper.PrefGetter; import com.fastaccess.helper.PrefHelper; import com.fastaccess.ui.base.BaseActivity; import com.fastaccess.ui.modules.main.MainActivity; import com.fastaccess.ui.modules.settings.LanguageBottomSheetDialog; +import com.miguelbcr.io.rx_billing_service.RxBillingService; +import com.miguelbcr.io.rx_billing_service.entities.ProductType; +import com.miguelbcr.io.rx_billing_service.entities.Purchase; import java.util.Arrays; import java.util.Locale; @@ -37,7 +43,7 @@ import butterknife.OnClick; import butterknife.OnEditorAction; import butterknife.Optional; import es.dmoral.toasty.Toasty; -import com.evernote.android.state.State; +import io.reactivex.functions.Action; /** * Created by Kosh on 08 Feb 2017, 9:10 PM @@ -54,11 +60,6 @@ public class LoginActivity extends BaseActivity i @Nullable @BindView(R.id.twoFactorEditText) TextInputEditText twoFactorEditText; @Nullable @BindView(R.id.login) FloatingActionButton login; @Nullable @BindView(R.id.progress) ProgressBar progress; - -// private String pass; -// private static int RESOLUTION_CODE = 100; -// private static int RESOLUTION_CHOOSER_CODE = 101; - @State boolean isBasicAuth; public static void start(@NonNull Activity activity, boolean isBasicAuth) { @@ -138,46 +139,18 @@ public class LoginActivity extends BaseActivity i } @Override public void onSuccessfullyLoggedIn() { - hideProgress(); - Intent intent = new Intent(this, MainActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(intent); - finishAffinity(); + checkPurchases(() -> { + Intent intent = new Intent(this, MainActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + finishAffinity(); + }); } @Override public void onSuccessfullyLoggedIn(Login userModel) { -// Credential credential = new Credential.Builder(userModel.getLogin()) -// .setPassword(pass) -// .setProfilePictureUri(Uri.parse(userModel.getAvatarUrl())) -// .build(); -// Auth.CredentialsApi.save(App.getInstance().getGoogleApiClient(), credential).setResultCallback(status -> { -// if (status.isSuccess()) { -// onSuccessfullyLoggedIn(); -// } else if (status.hasResolution()) { -// try { -// status.startResolutionForResult(this, RESOLUTION_CODE); -// } catch (IntentSender.SendIntentException e) { -// e.printStackTrace(); -// } -// } else { -// Log.e(getLoggingTag(), status + ""); -// onSuccessfullyLoggedIn(); -// } -// }); onSuccessfullyLoggedIn(); } -// @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { -// if (requestCode == RESOLUTION_CODE) { -// onSuccessfullyLoggedIn(); -// } else if (requestCode == RESOLUTION_CHOOSER_CODE) { -// if (resultCode == RESULT_OK) { -// Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY); -// doLogin(credential.getId(), credential.getPassword()); -// } -// } -// } - @Override protected void onCreate(Bundle savedInstanceState) { setTheme(R.style.LoginTheme); super.onCreate(savedInstanceState); @@ -186,14 +159,6 @@ public class LoginActivity extends BaseActivity i isBasicAuth = getIntent().getExtras().getBoolean(BundleConstant.YES_NO_EXTRA); } } -// if (username != null) -// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.) { -// username.setAutofillHints(View.AUTOFILL_HINT_USERNAME); -// } -// if (password != null) { -// password.setHint(isBasicAuth ? getString(R.string.password) : getString(R.string.access_token)); -// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) password.setAutofillHints(View.AUTOFILL_HINT_PASSWORD); -// } if (Arrays.asList(getResources().getStringArray(R.array.languages_array_values)).contains(Locale.getDefault().getLanguage())) { String language = PrefHelper.getString("app_language"); PrefHelper.set("app_language", Locale.getDefault().getLanguage()); @@ -201,23 +166,6 @@ public class LoginActivity extends BaseActivity i if (!Locale.getDefault().getLanguage().equals(language)) recreate(); } -// if (isBasicAuth && getIntent() != null) -// if (getIntent().hasExtra("smartLock")) -// if (App.getInstance().getGoogleApiClient().isConnecting() && -// !App.getInstance().getGoogleApiClient().isConnected()) { -// App.getInstance().getGoogleApiClient().registerConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { -// @Override -// public void onConnected(@Nullable Bundle bundle) { -// doCredentialRequest(); -// } -// -// @Override -// public void onConnectionSuspended(int i) { -// } -// }); -// } else { -// doCredentialRequest(); -// } } @Override protected void onNewIntent(Intent intent) { @@ -268,25 +216,33 @@ public class LoginActivity extends BaseActivity i login.show(); } -// private void doCredentialRequest() { -// CredentialRequest credentialRequest = new CredentialRequest.Builder() -// .setPasswordLoginSupported(true) -// .build(); -// Auth.CredentialsApi.request(App.getInstance().getGoogleApiClient(), credentialRequest).setResultCallback(credentialRequestResult -> { -// if (credentialRequestResult.getStatus().isSuccess()) { -// doLogin(credentialRequestResult.getCredential().getId(), -// credentialRequestResult.getCredential().getPassword()); -// } else if (credentialRequestResult.getStatus().hasResolution()) -// try { -// credentialRequestResult.getStatus().startResolutionForResult(this, RESOLUTION_CHOOSER_CODE); -// } catch (IntentSender.SendIntentException e) { -// e.printStackTrace(); -// } -// else { -// Log.e(getLoggingTag(), credentialRequestResult.getStatus() + ""); -// } -// }); -// } + protected void checkPurchases(Action action) { + RxBillingService.getInstance(this, BuildConfig.DEBUG) + .getPurchases(ProductType.IN_APP) + .doOnSubscribe(disposable -> showProgress(0)) + .subscribe((purchases, throwable) -> { + hideProgress(); + if (throwable == null) { + Logger.e(purchases); + if (purchases != null && !purchases.isEmpty()) { + for (Purchase purchase : purchases) { + String sku = purchase.sku(); + if (sku != null) { + Logger.e(sku); + if (sku.equalsIgnoreCase(getString(R.string.donation_product_1))) { + PrefGetter.enableAmlodTheme(); + } else { + PrefGetter.setProItems(); + } + } + } + } + } else { + throwable.printStackTrace(); + } + action.run(); + }); + } private void showLanguage() { LanguageBottomSheetDialog languageBottomSheetDialog = new LanguageBottomSheetDialog(); @@ -303,11 +259,4 @@ public class LoginActivity extends BaseActivity i isBasicAuth, false); } } - -// private void doLogin(String username, String password) { -// if (progress == null || twoFactor == null || username == null || password == null) return; -// if (progress.getVisibility() == View.GONE) { -// getPresenter().login(username, password, "", isBasicAuth, true); -// } -// } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/main/donation/DonateActivity.kt b/app/src/main/java/com/fastaccess/ui/modules/main/donation/DonateActivity.kt new file mode 100644 index 00000000..bfef73b8 --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/modules/main/donation/DonateActivity.kt @@ -0,0 +1,102 @@ +package com.fastaccess.ui.modules.main.donation + +import android.app.Activity +import android.content.Intent +import android.os.Bundle +import android.support.v4.app.Fragment +import com.crashlytics.android.answers.Answers +import com.crashlytics.android.answers.PurchaseEvent +import com.fastaccess.BuildConfig +import com.fastaccess.R +import com.fastaccess.helper.* +import com.fastaccess.ui.base.BaseActivity +import com.fastaccess.ui.base.mvp.BaseMvp +import com.fastaccess.ui.base.mvp.presenter.BasePresenter +import com.miguelbcr.io.rx_billing_service.RxBillingService +import com.miguelbcr.io.rx_billing_service.RxBillingServiceException +import com.miguelbcr.io.rx_billing_service.entities.ProductType +import com.miguelbcr.io.rx_billing_service.entities.Purchase +import io.reactivex.disposables.Disposable + +/** + * Created by Kosh on 10 Jun 2017, 1:04 PM + */ + +class DonateActivity : BaseActivity>() { + + private var subscription: Disposable? = null + + override fun layout(): Int { + return 0 + } + + override fun isTransparent(): Boolean { + return false + } + + override fun canBack(): Boolean { + return false + } + + override fun isSecured(): Boolean { + return false + } + + override fun providePresenter(): BasePresenter { + return BasePresenter() + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val bundle: Bundle = intent.extras + val productKey: String = bundle.getString(BundleConstant.EXTRA) + subscription = RxHelper.getSingle(RxBillingService.getInstance(this, BuildConfig.DEBUG) + .purchase(ProductType.IN_APP, productKey, "inapp:com.fastaccess.github:" + productKey)) + .subscribe { _, throwable -> + if (throwable == null) { + Answers.getInstance().logPurchase(PurchaseEvent().putItemName(productKey)) + showMessage(R.string.success, R.string.success_purchase_message) + if (productKey == getString(R.string.donation_product_1)) { + PrefGetter.enableAmlodTheme() + } else { + PrefGetter.setProItems() + } + setResult(Activity.RESULT_OK) + } else { + if (throwable is RxBillingServiceException) { + val code = throwable.code + showErrorMessage(throwable.message!!) + Logger.e(code) + setResult(Activity.RESULT_CANCELED) + } + throwable.printStackTrace() + } + finish() + } + } + + override fun onDestroy() { + if (subscription != null && !subscription?.isDisposed!!) { + subscription?.dispose() + } + super.onDestroy() + } + + companion object { + fun start(context: Activity, product: String?) { + val intent = Intent(context, DonateActivity::class.java) + intent.putExtras(Bundler.start() + .put(BundleConstant.EXTRA, product) + .end()) + context.startActivityForResult(intent, BundleConstant.REQUEST_CODE) + } + + fun start(context: Fragment, product: String?) { + val intent = Intent(context.context, DonateActivity::class.java) + intent.putExtras(Bundler.start() + .put(BundleConstant.EXTRA, product) + .end()) + context.startActivityForResult(intent, BundleConstant.REQUEST_CODE) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fastaccess/ui/modules/main/donation/DonationActivity.java b/app/src/main/java/com/fastaccess/ui/modules/main/donation/DonationActivity.java index 3532a949..14df1234 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/main/donation/DonationActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/main/donation/DonationActivity.java @@ -1,29 +1,19 @@ package com.fastaccess.ui.modules.main.donation; -import android.content.pm.ActivityInfo; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.AppBarLayout; import android.view.View; -import com.crashlytics.android.answers.Answers; -import com.crashlytics.android.answers.PurchaseEvent; -import com.fastaccess.BuildConfig; import com.fastaccess.R; import com.fastaccess.helper.AnimHelper; -import com.fastaccess.helper.Logger; -import com.fastaccess.helper.RxHelper; import com.fastaccess.ui.base.BaseActivity; import com.fastaccess.ui.base.mvp.presenter.BasePresenter; -import com.miguelbcr.io.rx_billing_service.RxBillingService; -import com.miguelbcr.io.rx_billing_service.RxBillingServiceException; -import com.miguelbcr.io.rx_billing_service.entities.ProductType; import net.grandcentrix.thirtyinch.TiPresenter; import butterknife.BindView; import butterknife.OnClick; -import io.reactivex.disposables.Disposable; /** * Created by Kosh on 24 Mar 2017, 9:16 PM @@ -32,14 +22,7 @@ import io.reactivex.disposables.Disposable; public class DonationActivity extends BaseActivity { @BindView(R.id.cardsHolder) View cardsHolder; @BindView(R.id.appbar) AppBarLayout appBarLayout; - private Disposable subscription; - @Override protected void onDestroy() { - if (subscription != null && !subscription.isDisposed()) { - subscription.dispose(); - } - super.onDestroy(); - } @Override protected int layout() { return R.layout.support_development_layout; @@ -62,23 +45,19 @@ public class DonationActivity extends BaseActivity { AnimHelper.animateVisibility(cardsHolder, true); } - @Override protected void onStop() { - super.onStop(); - } - - @OnClick(R.id.two) public void onTwoClicked() { + @OnClick(R.id.two) public void onTwoClicked(View v) { onProceed(getString(R.string.donation_product_1)); } - @OnClick(R.id.five) public void onFiveClicked() { + @OnClick(R.id.five) public void onFiveClicked(View v) { onProceed(getString(R.string.donation_product_2)); } - @OnClick(R.id.ten) public void onTenClicked() { + @OnClick(R.id.ten) public void onTenClicked(View v) { onProceed(getString(R.string.donation_product_3)); } - @OnClick(R.id.twenty) public void onTwentyClicked() { + @OnClick(R.id.twenty) public void onTwentyClicked(View v) { onProceed(getString(R.string.donation_product_4)); } @@ -87,23 +66,7 @@ public class DonationActivity extends BaseActivity { } private void onProceed(@NonNull String productKey) { -// RxBillingService.getInstance(this, BuildConfig.DEBUG) -// .getPurchases(ProductType.IN_APP) -// .subscribe((purchases, throwable) -> Logger.e(purchases)); - subscription = RxHelper.getSingle(RxBillingService.getInstance(this, BuildConfig.DEBUG) - .purchase(ProductType.IN_APP, productKey, "inapp:com.fastaccess.github:" + productKey)) - .doOnSubscribe(disposable -> setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)) - .doFinally(() -> setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_USER)) - .subscribe((purchase, throwable) -> { - if (throwable == null) { - Answers.getInstance().logPurchase(new PurchaseEvent().putItemName(productKey)); - showMessage(R.string.success, R.string.success_purchase_message); - } else { - if (throwable instanceof RxBillingServiceException) { - Logger.e(((RxBillingServiceException) throwable).getCode()); - } - throwable.printStackTrace(); - } - }); + DonateActivity.Companion.start(this, productKey); } + } diff --git a/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsActivity.java b/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsActivity.java index 7f4a2b55..75e786f5 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsActivity.java @@ -48,7 +48,9 @@ public class SettingsActivity extends BaseActivity { super.onCreate(savedInstanceState); setToolbarIcon(R.drawable.ic_back); setTitle(getString(R.string.settings)); - setResult(RESULT_CANCELED); + if (savedInstanceState == null) { + setResult(RESULT_CANCELED); + } settings = new SettingsModel[]{ SettingsModel.newInstance(R.drawable.ic_ring, getString(R.string.notifications), ""), SettingsModel.newInstance(R.drawable.ic_settings, getString(R.string.behavior), ""), @@ -68,7 +70,7 @@ public class SettingsActivity extends BaseActivity { if (settingsModel.getTitle().equalsIgnoreCase(getString(R.string.app_language))) { showLanguageList(); } else if (settingsModel.getTitle().equalsIgnoreCase(getString(R.string.theme_title))) { - ActivityHelper.startReveal(this, new Intent(this, ThemeActivity.class), view); + ActivityHelper.startReveal(this, new Intent(this, ThemeActivity.class), view, THEME_CHANGE); } else { ActivityHelper.startReveal(this, intent, view); } @@ -76,8 +78,10 @@ public class SettingsActivity extends BaseActivity { } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == THEME_CHANGE) + if (requestCode == THEME_CHANGE) { setResult(resultCode); + finish(); + } } @NonNull @Override public TiPresenter providePresenter() { diff --git a/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryFragment.java b/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryFragment.java index 82e03b13..63dc329b 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryFragment.java @@ -50,7 +50,6 @@ public class SettingsCategoryFragment extends PreferenceFragmentCompat implement private static int RESTORE_REQUEST_CODE = 256; private BaseMvp.FAView callback; - private String appTheme; private String appColor; private String app_lauguage; @@ -64,7 +63,6 @@ public class SettingsCategoryFragment extends PreferenceFragmentCompat implement super.onAttach(context); this.callback = (BaseMvp.FAView) context; this.settingsCallback = (SettingsCallback) context; - appTheme = PrefHelper.getString("appTheme"); appColor = PrefHelper.getString("appColor"); app_lauguage = PrefHelper.getString("app_language"); } @@ -107,7 +105,6 @@ public class SettingsCategoryFragment extends PreferenceFragmentCompat implement findPreference("enable_ads").setVisible(false); findPreference("recylerViewAnimation").setOnPreferenceChangeListener(this); findPreference("rect_avatar").setOnPreferenceChangeListener(this); - findPreference("appTheme").setOnPreferenceChangeListener(this); findPreference("appColor").setOnPreferenceChangeListener(this); break; case 3: @@ -188,12 +185,6 @@ public class SettingsCategoryFragment extends PreferenceFragmentCompat implement } else if (preference.getKey().equalsIgnoreCase("rect_avatar")) { callback.onThemeChanged(); return true; - } else if (preference.getKey().equalsIgnoreCase("appTheme")) { - if (newValue.toString().equalsIgnoreCase(appTheme)) - return true; - Toasty.warning(getContext(), getString(R.string.change_theme_warning), Toast.LENGTH_LONG).show(); - callback.onThemeChanged(); - return true; } else if (preference.getKey().equalsIgnoreCase("appColor")) { if (newValue.toString().equalsIgnoreCase(appColor)) return true; diff --git a/app/src/main/java/com/fastaccess/ui/modules/theme/ThemeActivity.kt b/app/src/main/java/com/fastaccess/ui/modules/theme/ThemeActivity.kt index 70989445..1a462f55 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/theme/ThemeActivity.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/theme/ThemeActivity.kt @@ -1,5 +1,6 @@ package com.fastaccess.ui.modules.theme +import android.app.Activity import android.os.Build import android.os.Bundle import android.support.design.widget.TabLayout @@ -59,4 +60,10 @@ class ThemeActivity : BaseActivity pager.systemUiVisibility = if (darkIcons) View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR else 0 } } + + override fun onThemeApplied() { + setResult(Activity.RESULT_OK) + showMessage(R.string.success, R.string.change_theme_warning) + finish() + } } \ No newline at end of file diff --git a/app/src/main/java/com/fastaccess/ui/modules/theme/fragment/ThemeFragment.kt b/app/src/main/java/com/fastaccess/ui/modules/theme/fragment/ThemeFragment.kt index 79f565e2..014259fc 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/theme/fragment/ThemeFragment.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/theme/fragment/ThemeFragment.kt @@ -1,18 +1,21 @@ package com.fastaccess.ui.modules.theme.fragment +import android.app.Activity import android.content.Context +import android.content.Intent +import android.graphics.Color import android.os.Bundle import android.support.design.widget.FloatingActionButton +import android.support.v7.widget.Toolbar import android.view.ContextThemeWrapper import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.fastaccess.R -import com.fastaccess.helper.BundleConstant -import com.fastaccess.helper.Bundler -import com.fastaccess.helper.PrefHelper -import com.fastaccess.helper.ViewHelper +import com.fastaccess.helper.* import com.fastaccess.ui.base.BaseFragment +import com.fastaccess.ui.modules.main.donation.DonateActivity +import com.fastaccess.ui.widgets.SpannableBuilder /** * Created by Kosh on 08 Jun 2017, 10:53 PM @@ -21,6 +24,7 @@ import com.fastaccess.ui.base.BaseFragment class ThemeFragment : BaseFragment(), ThemeFragmentMvp.View { val apply: FloatingActionButton by lazy { view!!.findViewById(R.id.apply) } + val toolbar: Toolbar by lazy { view!!.findViewById(R.id.toolbar) } private var primaryDarkColor: Int = 0 private var theme: Int = 0 @@ -41,9 +45,32 @@ class ThemeFragment : BaseFragment { + PrefHelper.set("appTheme", getString(R.string.light_theme_mode)) + themeListener?.onThemeApplied() + } + R.style.ThemeDark -> { + PrefHelper.set("appTheme", getString(R.string.dark_theme_mode)) + themeListener?.onThemeApplied() + } + else -> if (PrefGetter.isAmlodEnabled() || PrefGetter.isProEnabled()) { + PrefHelper.set("appTheme", getString(R.string.amlod_theme_mode)) + themeListener?.onThemeApplied() + } else { + DonateActivity.Companion.start(this, getString(R.string.amlod_theme_purchase)) + } + } + } + if (isPremiumTheme()) { + toolbar.title = SpannableBuilder.builder().foreground(getString(R.string.premium_theme), Color.RED) + } + toolbar.setNavigationOnClickListener { activity.onBackPressed() } } + private fun isPremiumTheme(): Boolean = theme == R.style.ThemeAmlod + override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { super.onCreateView(inflater, container, savedInstanceState) theme = arguments.getInt(BundleConstant.ITEM) @@ -67,6 +94,15 @@ class ThemeFragment : BaseFragment implements ThemeFragmentMvp.Presenter {} diff --git a/app/src/main/java/com/fastaccess/ui/modules/theme/fragment/ThemeFragmentPresenter.kt b/app/src/main/java/com/fastaccess/ui/modules/theme/fragment/ThemeFragmentPresenter.kt new file mode 100644 index 00000000..d6980c92 --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/modules/theme/fragment/ThemeFragmentPresenter.kt @@ -0,0 +1,9 @@ +package com.fastaccess.ui.modules.theme.fragment + +import com.fastaccess.ui.base.mvp.presenter.BasePresenter + +/** + * Created by Kosh on 08 Jun 2017, 10:52 PM + */ + +class ThemeFragmentPresenter : BasePresenter(), ThemeFragmentMvp.Presenter diff --git a/app/src/main/res/layouts/main_layouts/layout/theme_layout.xml b/app/src/main/res/layouts/main_layouts/layout/theme_layout.xml index 148291ce..22ee3f11 100644 --- a/app/src/main/res/layouts/main_layouts/layout/theme_layout.xml +++ b/app/src/main/res/layouts/main_layouts/layout/theme_layout.xml @@ -6,8 +6,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?android:windowBackground" - app:statusBarBackground="?colorPrimaryDark"> + android:background="?android:windowBackground"> + android:text="Comrades wave from fortunes like wet biscuit eaters."/> + android:text="Comrades wave from fortunes like wet biscuit eaters."/> + android:text="Comrades wave from fortunes like wet biscuit eaters."/> + android:text="Comrades wave from fortunes like wet biscuit eaters."/> + android:text="Comrades wave from fortunes like wet biscuit eaters."/> - + + + + \ 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 33390ae7..1be13898 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -479,4 +479,5 @@ Reviewer added successfully Milestone added successfully Feed + Premium Theme diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 3d317592..94820d18 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -26,6 +26,14 @@ + + diff --git a/app/src/main/res/xml/customization_settings.xml b/app/src/main/res/xml/customization_settings.xml index 68b5a7a8..1161f048 100644 --- a/app/src/main/res/xml/customization_settings.xml +++ b/app/src/main/res/xml/customization_settings.xml @@ -7,16 +7,6 @@ android:key="enable_ads" android:title="@string/enable_ads"/> - -