aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/AboutActivity.java
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2013-08-21 21:31:58 +0200
committerBananeweizen <bananeweizen@gmx.de>2013-08-21 21:31:58 +0200
commitf44d2bf4dc74e39143d3e6b65cf1ff64c06cf77b (patch)
tree9c8c76eb562d48b5ccaa4f402f1b8b96f5d215cf /main/src/cgeo/geocaching/AboutActivity.java
parent318a2a55fab34275964c4e1a74ae27c92a9863eb (diff)
downloadcgeo-f44d2bf4dc74e39143d3e6b65cf1ff64c06cf77b.zip
cgeo-f44d2bf4dc74e39143d3e6b65cf1ff64c06cf77b.tar.gz
cgeo-f44d2bf4dc74e39143d3e6b65cf1ff64c06cf77b.tar.bz2
new: split about page into view pager page
Diffstat (limited to 'main/src/cgeo/geocaching/AboutActivity.java')
-rw-r--r--main/src/cgeo/geocaching/AboutActivity.java216
1 files changed, 165 insertions, 51 deletions
diff --git a/main/src/cgeo/geocaching/AboutActivity.java b/main/src/cgeo/geocaching/AboutActivity.java
index 029249e..7a8bea6 100644
--- a/main/src/cgeo/geocaching/AboutActivity.java
+++ b/main/src/cgeo/geocaching/AboutActivity.java
@@ -1,94 +1,208 @@
package cgeo.geocaching;
-import cgeo.geocaching.activity.AbstractActivity;
+import butterknife.InjectView;
+import butterknife.Views;
+
+import cgeo.geocaching.activity.AbstractViewPagerActivity;
+import cgeo.geocaching.ui.AbstractCachingPageViewCreator;
import cgeo.geocaching.ui.AnchorAwareLinkMovementMethod;
import cgeo.geocaching.utils.Version;
-import com.googlecode.androidannotations.annotations.AfterViews;
-import com.googlecode.androidannotations.annotations.Click;
-import com.googlecode.androidannotations.annotations.EActivity;
-import com.googlecode.androidannotations.annotations.ViewById;
-
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.apache.commons.lang3.tuple.Pair;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
+import android.widget.ScrollView;
import android.widget.TextView;
-@EActivity
-public class AboutActivity extends AbstractActivity {
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Scanner;
- @ViewById(R.id.about_version_string) protected TextView version;
- @ViewById(R.id.contributors) protected TextView contributors;
- @ViewById(R.id.changelog_master) protected TextView changeLogMaster;
- @ViewById(R.id.changelog_release) protected TextView changeLogRelease;
+public class AboutActivity extends AbstractViewPagerActivity<AboutActivity.Page> {
+
+ class LicenseViewCreator extends AbstractCachingPageViewCreator<ScrollView> {
+
+ @InjectView(R.id.license) protected TextView licenseLink;
+ @InjectView(R.id.license_text) protected TextView licenseText;
+
+ @Override
+ public ScrollView getDispatchedView() {
+ final ScrollView view = (ScrollView) getLayoutInflater().inflate(R.layout.about_license_page, null);
+ Views.inject(this, view);
+ setClickListener(licenseLink, "http://www.apache.org/licenses/LICENSE-2.0.html");
+ licenseText.setText(getRawResourceString(R.raw.license));
+ return view;
+ }
+ }
+
+ class ContributorsViewCreator extends AbstractCachingPageViewCreator<ScrollView> {
+
+ @InjectView(R.id.contributors) protected TextView contributors;
+
+ @Override
+ public ScrollView getDispatchedView() {
+ final ScrollView view = (ScrollView) getLayoutInflater().inflate(R.layout.about_contributors_page, null);
+ Views.inject(this, view);
+ contributors.setMovementMethod(AnchorAwareLinkMovementMethod.getInstance());
+ return view;
+ }
- @Override
- public void onCreate(final Bundle savedInstanceState) {
- // TODO remove this after the theme has been fixed
- super.onCreate(savedInstanceState, R.layout.about_activity);
}
- @AfterViews
- final void initializeViews() {
- version.setText(Version.getVersionName(this));
- contributors.setMovementMethod(AnchorAwareLinkMovementMethod.getInstance());
- changeLogRelease.setMovementMethod(AnchorAwareLinkMovementMethod.getInstance());
- final String changeLogMasterString = getString(R.string.changelog_master);
- if (StringUtils.isBlank(changeLogMasterString)) {
- changeLogMaster.setVisibility(View.GONE);
- } else {
- changeLogMaster.setMovementMethod(AnchorAwareLinkMovementMethod.getInstance());
+ class ChangeLogViewCreator extends AbstractCachingPageViewCreator<ScrollView> {
+
+ @InjectView(R.id.changelog_master) protected TextView changeLogMaster;
+ @InjectView(R.id.changelog_release) protected TextView changeLogRelease;
+
+ @Override
+ public ScrollView getDispatchedView() {
+ final ScrollView view = (ScrollView) getLayoutInflater().inflate(R.layout.about_changes_page, null);
+ Views.inject(this, view);
+ changeLogRelease.setMovementMethod(AnchorAwareLinkMovementMethod.getInstance());
+ final String changeLogMasterString = getString(R.string.changelog_master);
+ if (StringUtils.isBlank(changeLogMasterString)) {
+ changeLogMaster.setVisibility(View.GONE);
+ } else {
+ changeLogMaster.setMovementMethod(AnchorAwareLinkMovementMethod.getInstance());
+ }
+ return view;
}
+
}
- @Click(R.id.donate)
- final void donate() {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FMLNN8GXZKJEE")));
+ class HelpViewCreator extends AbstractCachingPageViewCreator<ScrollView> {
+
+ @InjectView(R.id.support) protected TextView support;
+ @InjectView(R.id.website) protected TextView website;
+ @InjectView(R.id.facebook) protected TextView facebook;
+ @InjectView(R.id.twitter) protected TextView twitter;
+ @InjectView(R.id.nutshellmanual) protected TextView nutshellmanual;
+ @InjectView(R.id.market) protected TextView market;
+ @InjectView(R.id.faq) protected TextView faq;
+
+ @Override
+ public ScrollView getDispatchedView() {
+ final ScrollView view = (ScrollView) getLayoutInflater().inflate(R.layout.about_help_page, null);
+ Views.inject(this, view);
+ setClickListener(support, "mailto:support@cgeo.org");
+ setClickListener(website, "http://www.cgeo.org/");
+ setClickListener(facebook, "http://www.facebook.com/pages/cgeo/297269860090");
+ setClickListener(twitter, "http://twitter.com/android_gc");
+ setClickListener(nutshellmanual, "http://manual.cgeo.org/");
+ setClickListener(faq, "http://faq.cgeo.org/");
+ market.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(final View v) {
+ market();
+ }
+ });
+ return view;
+ }
+
}
- @Click(R.id.support)
- final void support() {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:support@cgeo.org")));
+ class VersionViewCreator extends AbstractCachingPageViewCreator<ScrollView> {
+
+ @InjectView(R.id.about_version_string) protected TextView version;
+ @InjectView(R.id.donate) protected TextView donateButton;
+
+ @Override
+ public ScrollView getDispatchedView() {
+ final ScrollView view = (ScrollView) getLayoutInflater().inflate(R.layout.about_version_page, null);
+ Views.inject(this, view);
+ version.setText(Version.getVersionName(AboutActivity.this));
+ setClickListener(donateButton, "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FMLNN8GXZKJEE");
+ return view;
+ }
}
- @Click(R.id.website)
- final void webSite() {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.cgeo.org/")));
+ enum Page {
+ VERSION(R.string.about_version),
+ HELP(R.string.about_help),
+ CHANGELOG(R.string.about_changes),
+ CONTRIBUTORS(R.string.about_contributors),
+ LICENSE(R.string.about_license);
+
+ private final int resourceId;
+
+ Page(final int resourceId) {
+ this.resourceId = resourceId;
+ }
}
- @Click(R.id.facebook)
- final void facebook() {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.facebook.com/pages/cgeo/297269860090")));
+ @Override
+ public final void onCreate(final Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState, R.layout.viewpager_activity);
+ createViewPager(0, null);
+ reinitializeViewPager();
}
- @Click(R.id.twitter)
- final void twitter() {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://twitter.com/android_gc")));
+ public final void setClickListener(final View view, final String url) {
+ view.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(final View v) {
+ startUrl(url);
+ }
+ });
}
- @Click(R.id.nutshellmanual)
- final void nutshellmanual() {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://manual.cgeo.org/")));
+ private void startUrl(final String url) {
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
}
- @Click(R.id.market)
final void market() {
final Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getPackageName()));
marketIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
startActivity(marketIntent);
}
- @Click(R.id.license)
- final void license() {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.apache.org/licenses/LICENSE-2.0.html")));
+ @Override
+ protected final cgeo.geocaching.activity.AbstractViewPagerActivity.PageViewCreator createViewCreator(final Page page) {
+ switch (page) {
+ case VERSION:
+ return new VersionViewCreator();
+ case HELP:
+ return new HelpViewCreator();
+ case CHANGELOG:
+ return new ChangeLogViewCreator();
+ case CONTRIBUTORS:
+ return new ContributorsViewCreator();
+ case LICENSE:
+ return new LicenseViewCreator();
+ default:
+ throw new IllegalArgumentException();
+ }
+ }
+
+ @Override
+ protected final String getTitle(final Page page) {
+ return res.getString(page.resourceId);
+ }
+
+ @Override
+ protected final Pair<List<? extends Page>, Integer> getOrderedPages() {
+ final List<Page> pages = Arrays.asList(Page.values());
+ return new ImmutablePair<List<? extends Page>, Integer>(pages, 0);
}
- @Click(R.id.faq)
- final void faq() {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://faq.cgeo.org/")));
+ private String getRawResourceString(final int resourceId) {
+ final InputStream ins = res.openRawResource(resourceId);
+ final String result = new Scanner(ins).useDelimiter("\\A").next();
+ try {
+ ins.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return result;
}
}