package com.kabouzeid.gramophone.ui.activities;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.widget.AppCompatButton;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.afollestad.materialdialogs.internal.ThemeSingleton;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.dialogs.ChangelogDialog;
import com.kabouzeid.gramophone.dialogs.DonationsDialog;
import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity;
import com.kabouzeid.gramophone.ui.activities.bugreport.BugReportActivity;
import com.kabouzeid.gramophone.ui.activities.intro.AppIntroActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import de.psdev.licensesdialog.LicensesDialog;
/**
* @author Karim Abou Zeid (kabouzeid)
*/
@SuppressWarnings("FieldCanBeLocal")
public class AboutActivity extends AbsBaseActivity implements View.OnClickListener {
private static String GOOGLE_PLUS = "https://google.com/+KarimAbouZeid23697";
private static String TWITTER = "https://twitter.com/karim23697";
private static String GITHUB = "https://github.com/kabouzeid";
private static String WEBSITE = "http://kabouzeid.com/";
private static String GOOGLE_PLUS_COMMUNITY = "https://plus.google.com/u/0/communities/106227738496107108513";
private static String TRANSLATE = "https://phonograph.oneskyapp.com/collaboration/project?id=26521";
private static String RATE_ON_GOOGLE_PLAY = "https://play.google.com/store/apps/details?id=com.kabouzeid.gramophone";
private static String AIDAN_FOLLESTAD_GOOGLE_PLUS = "https://google.com/+AidanFollestad";
private static String AIDAN_FOLLESTAD_GITHUB = "https://github.com/afollestad";
private static String MICHAEL_COOK_GOOGLE_PLUS = "https://plus.google.com/102718493746376292361";
private static String MICHAEL_COOK_WEBSITE = "http://cookicons.co/";
private static String MAARTEN_CORPEL_GOOGLE_PLUS = "https://google.com/+MaartenCorpel";
private static String ALEKSANDAR_TESIC_GOOGLE_PLUS = "https://google.com/+aleksandartešić";
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.app_version)
TextView appVersion;
@BindView(R.id.changelog)
LinearLayout changelog;
@BindView(R.id.intro)
LinearLayout intro;
@BindView(R.id.licenses)
LinearLayout licenses;
@BindView(R.id.add_to_google_plus_circles)
LinearLayout addToGooglePlusCircles;
@BindView(R.id.follow_on_twitter)
LinearLayout followOnTwitter;
@BindView(R.id.fork_on_git_hub)
LinearLayout forkOnGitHub;
@BindView(R.id.visit_website)
LinearLayout visitWebsite;
@BindView(R.id.report_bugs)
LinearLayout reportBugs;
@BindView(R.id.join_google_plus_community)
LinearLayout joinGooglePlusCommunity;
@BindView(R.id.translate)
LinearLayout translate;
@BindView(R.id.donate)
LinearLayout donate;
@BindView(R.id.rate_on_google_play)
LinearLayout rateOnGooglePlay;
@BindView(R.id.aidan_follestad_google_plus)
AppCompatButton aidanFollestadGooglePlus;
@BindView(R.id.aidan_follestad_git_hub)
AppCompatButton aidanFollestadGitHub;
@BindView(R.id.michael_cook_google_plus)
AppCompatButton michaelCookGooglePlus;
@BindView(R.id.michael_cook_website)
AppCompatButton michaelCookWebsite;
@BindView(R.id.maarten_corpel_google_plus)
AppCompatButton maartenCorpelGooglePlus;
@BindView(R.id.aleksandar_tesic_google_plus)
AppCompatButton aleksandarTesicGooglePlus;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about);
setDrawUnderStatusbar(true);
ButterKnife.bind(this);
setStatusbarColorAuto();
setNavigationbarColorAuto();
setTaskDescriptionColorAuto();
setUpViews();
}
private void setUpViews() {
setUpToolbar();
setUpAppVersion();
setUpOnClickListeners();
}
private void setUpToolbar() {
toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
setSupportActionBar(toolbar);
//noinspection ConstantConditions
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
private void setUpAppVersion() {
appVersion.setText(getCurrentVersionName(this));
}
private void setUpOnClickListeners() {
changelog.setOnClickListener(this);
intro.setOnClickListener(this);
licenses.setOnClickListener(this);
addToGooglePlusCircles.setOnClickListener(this);
followOnTwitter.setOnClickListener(this);
forkOnGitHub.setOnClickListener(this);
visitWebsite.setOnClickListener(this);
reportBugs.setOnClickListener(this);
joinGooglePlusCommunity.setOnClickListener(this);
translate.setOnClickListener(this);
rateOnGooglePlay.setOnClickListener(this);
donate.setOnClickListener(this);
aidanFollestadGooglePlus.setOnClickListener(this);
aidanFollestadGitHub.setOnClickListener(this);
michaelCookGooglePlus.setOnClickListener(this);
michaelCookWebsite.setOnClickListener(this);
maartenCorpelGooglePlus.setOnClickListener(this);
aleksandarTesicGooglePlus.setOnClickListener(this);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
private static String getCurrentVersionName(@NonNull final Context context) {
try {
return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return "0.0.0";
}
@Override
public void onClick(View v) {
if (v == changelog) {
ChangelogDialog.create().show(getSupportFragmentManager(), "CHANGELOG_DIALOG");
} else if (v == licenses) {
showLicenseDialog();
} else if (v == intro) {
startActivity(new Intent(this, AppIntroActivity.class));
} else if (v == addToGooglePlusCircles) {
openUrl(GOOGLE_PLUS);
} else if (v == followOnTwitter) {
openUrl(TWITTER);
} else if (v == forkOnGitHub) {
openUrl(GITHUB);
} else if (v == visitWebsite) {
openUrl(WEBSITE);
} else if (v == reportBugs) {
startActivity(new Intent(this, BugReportActivity.class));
} else if (v == joinGooglePlusCommunity) {
openUrl(GOOGLE_PLUS_COMMUNITY);
} else if (v == translate) {
openUrl(TRANSLATE);
} else if (v == rateOnGooglePlay) {
openUrl(RATE_ON_GOOGLE_PLAY);
} else if (v == donate) {
DonationsDialog.create().show(getSupportFragmentManager(), "DONATION_DIALOG");
} else if (v == aidanFollestadGooglePlus) {
openUrl(AIDAN_FOLLESTAD_GOOGLE_PLUS);
} else if (v == aidanFollestadGitHub) {
openUrl(AIDAN_FOLLESTAD_GITHUB);
} else if (v == michaelCookGooglePlus) {
openUrl(MICHAEL_COOK_GOOGLE_PLUS);
} else if (v == michaelCookWebsite) {
openUrl(MICHAEL_COOK_WEBSITE);
} else if (v == maartenCorpelGooglePlus) {
openUrl(MAARTEN_CORPEL_GOOGLE_PLUS);
} else if (v == aleksandarTesicGooglePlus) {
openUrl(ALEKSANDAR_TESIC_GOOGLE_PLUS);
}
}
private void openUrl(String url) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
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();
}
}