package com.alienpants.leafpicrevived.about; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.text.method.LinkMovementMethod; import android.widget.ScrollView; import android.widget.Toast; import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.Toolbar; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.alienpants.leafpicrevived.BuildConfig; import com.alienpants.leafpicrevived.R; import com.alienpants.leafpicrevived.activities.base.BaseActivity; import com.alienpants.leafpicrevived.util.AlertDialogsHelper; import com.alienpants.leafpicrevived.util.ApplicationUtils; import com.alienpants.leafpicrevived.util.ChromeCustomTabs; import com.alienpants.leafpicrevived.util.preferences.Prefs; import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial; import org.horaapps.liz.ui.ThemedTextView; import java.util.ArrayList; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import static com.alienpants.leafpicrevived.util.ServerConstants.GITHUB_CALVIN; import static com.alienpants.leafpicrevived.util.ServerConstants.GITHUB_DONALD; import static com.alienpants.leafpicrevived.util.ServerConstants.GITHUB_LEAFPIC; import static com.alienpants.leafpicrevived.util.ServerConstants.GITHUB_TOM; import static com.alienpants.leafpicrevived.util.ServerConstants.GOOGLE_ABOUT_CALVIN; import static com.alienpants.leafpicrevived.util.ServerConstants.LEAFPIC_CROWDIN; import static com.alienpants.leafpicrevived.util.ServerConstants.LEAFPIC_ISSUES; import static com.alienpants.leafpicrevived.util.ServerConstants.LEAFPIC_LICENSE; import static com.alienpants.leafpicrevived.util.ServerConstants.MAIL_CALVIN; import static com.alienpants.leafpicrevived.util.ServerConstants.MAIL_DONALD; import static com.alienpants.leafpicrevived.util.ServerConstants.MAIL_GILBERT; import static com.alienpants.leafpicrevived.util.ServerConstants.MAIL_TOM; import static com.alienpants.leafpicrevived.util.ServerConstants.TWITTER_ABOUT_DONALD; import static com.alienpants.leafpicrevived.util.ServerConstants.TWITTER_ABOUT_GILBERT; /** * The Activity to show About application * <p> * Includes the following data: * - Developers * - Translators * - Relevant app links */ public class AboutActivity extends BaseActivity implements ContactListener { @BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.about_version_item_sub) ThemedTextView appVersion; @BindView(R.id.aboutAct_scrollView) ScrollView aboutScrollView; @BindView(R.id.about_developer_donald) AboutCreator aboutDonald; @BindView(R.id.about_developer_gilbert) AboutCreator aboutGilbert; @BindView(R.id.about_patryk_goworowski_item_sub) ThemedTextView specialThanksPatryk; @BindView(R.id.about_link_changelog) AboutLink linkChangelog; @BindView(R.id.list_contributors) RecyclerView rvContributors; private ChromeCustomTabs chromeTabs; private int emojiEasterEggCount = 0; public static void startActivity(@NonNull Context context) { context.startActivity(new Intent(context, AboutActivity.class)); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); ButterKnife.bind(this); chromeTabs = new ChromeCustomTabs(AboutActivity.this); initUi(); setTitle(R.string.about); } @Override public void onDestroy() { chromeTabs.destroy(); super.onDestroy(); } /** * Select List */ @OnClick(R.id.about_link_report_bug) public void onReportBug() { chromeTabs.launchUrl(LEAFPIC_ISSUES); } @OnClick(R.id.about_link_translate) public void onTranslate() { chromeTabs.launchUrl(LEAFPIC_CROWDIN); } @OnClick(R.id.about_link_rate) public void onRate() { Uri uri = Uri.parse(String.format("market://details?id=%s", BuildConfig.APPLICATION_ID)); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); /* To count with Play market backstack, After pressing back button, * to taken back to our application, we need to add following flags to intent. */ int flags = Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_MULTIPLE_TASK; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT; goToMarket.addFlags(flags); try { startActivity(goToMarket); } catch (ActivityNotFoundException e) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("http://play.google.com/store/apps/details?id=%s", BuildConfig.APPLICATION_ID)))); } } @OnClick(R.id.about_link_github) public void onGitHub() { chromeTabs.launchUrl(GITHUB_LEAFPIC); } @OnClick(R.id.about_link_license) public void onLicense() { chromeTabs.launchUrl(LEAFPIC_LICENSE); } @OnClick(R.id.about_link_changelog) public void onChangelog() { AlertDialog alertDialog = AlertDialogsHelper.showChangelogDialog(this); alertDialog.setButton( DialogInterface.BUTTON_POSITIVE, getString(R.string.ok_action).toUpperCase(), (dialogInterface, i) -> { }); alertDialog.show(); } private void emojiEasterEgg() { emojiEasterEggCount++; if (emojiEasterEggCount > 3) { boolean showEasterEgg = Prefs.showEasterEgg(); Toast.makeText(this, (!showEasterEgg ? this.getString(R.string.easter_egg_enable) : this.getString(R.string.easter_egg_disable)) + " " + this.getString(R.string.emoji_easter_egg), Toast.LENGTH_SHORT).show(); Prefs.setShowEasterEgg(!showEasterEgg); emojiEasterEggCount = 0; } } private void mail(String mail) { Intent intent = new Intent(Intent.ACTION_SENDTO); intent.setData(Uri.parse("mailto:" + mail)); try { startActivity(intent); } catch (ActivityNotFoundException e) { Toast.makeText(this, getString(R.string.send_mail_error), Toast.LENGTH_SHORT).show(); } } private void initUi() { setSupportActionBar(toolbar); appVersion.setText(ApplicationUtils.getAppVersion()); linkChangelog.setDescription(ApplicationUtils.getAppVersion()); ArrayList<Contributor> contributors = new ArrayList<>(1); /** Calvin */ Contributor calvin = new Contributor( getString(R.string.developer_calvin_name), getString(R.string.about_developer_calvin_description), R.drawable.calvin_profile); calvin.setEmail(MAIL_CALVIN); calvin.addSocial(getString(R.string.google_plus_link), GOOGLE_ABOUT_CALVIN); calvin.addSocial(getString(R.string.github), GITHUB_CALVIN); contributors.add(calvin); Contributor tom = new Contributor( getString(R.string.developer_tom_name), getString(R.string.about_developer_tom_description), R.drawable.alienpants_logo); tom.setEmail(MAIL_TOM); tom.addSocial(getString(R.string.github), GITHUB_TOM); contributors.add(tom); ContributorsAdapter contributorsAdapter = new ContributorsAdapter(this, contributors, this); rvContributors.setHasFixedSize(true); rvContributors.setLayoutManager(new LinearLayoutManager(getApplicationContext())); rvContributors.setAdapter(contributorsAdapter); /** Donald */ ArrayList<Contact> donaldContacts = new ArrayList<>(); donaldContacts.add(new Contact(TWITTER_ABOUT_DONALD, getString(R.string.twitter_link))); donaldContacts.add(new Contact(GITHUB_DONALD, getString(R.string.github_link))); aboutDonald.setupListeners(this, MAIL_DONALD, donaldContacts); /** Jibo */ ArrayList<Contact> jiboContacts = new ArrayList<>(); jiboContacts.add(new Contact(TWITTER_ABOUT_GILBERT, getString(R.string.twitter_link))); // jiboContacts.add(new Contact(GITHUB_GILBERT, getString(R.string.github_link))); aboutGilbert.setupListeners(this, MAIL_GILBERT, jiboContacts); aboutGilbert.setOnClickListener(v -> emojiEasterEgg()); specialThanksPatryk.setMovementMethod(LinkMovementMethod.getInstance()); } @CallSuper @Override public void updateUiElements() { super.updateUiElements(); toolbar.setBackgroundColor(getPrimaryColor()); toolbar.setNavigationIcon(getToolbarIcon(GoogleMaterial.Icon.gmd_arrow_back)); toolbar.setNavigationOnClickListener(v -> onBackPressed()); setScrollViewColor(aboutScrollView); setStatusBarColor(); setNavBarColor(); specialThanksPatryk.setLinkTextColor(getAccentColor()); } @Override public void onContactClicked(Contact contact) { chromeTabs.launchUrl(contact.getValue()); } @Override public void onMailClicked(String mail) { mail(mail); } }