aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/ImagesActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/ImagesActivity.java')
-rw-r--r--main/src/cgeo/geocaching/ImagesActivity.java115
1 files changed, 115 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/ImagesActivity.java b/main/src/cgeo/geocaching/ImagesActivity.java
new file mode 100644
index 0000000..0accf12
--- /dev/null
+++ b/main/src/cgeo/geocaching/ImagesActivity.java
@@ -0,0 +1,115 @@
+package cgeo.geocaching;
+
+import cgeo.geocaching.activity.AbstractActivity;
+import cgeo.geocaching.ui.ImagesList;
+import cgeo.geocaching.ui.ImagesList.ImageType;
+
+import org.apache.commons.collections.CollectionUtils;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.ContextMenu;
+import android.view.ContextMenu.ContextMenuInfo;
+import android.view.MenuItem;
+import android.view.View;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ImagesActivity extends AbstractActivity {
+
+ private static final String EXTRAS_IMAGES = "images";
+ private static final String EXTRAS_TYPE = "type";
+ private static final String EXTRAS_GEOCODE = "geocode";
+
+ private boolean offline;
+ private ArrayList<cgImage> imageNames;
+ private ImagesList imagesList;
+ private ImageType imgType = ImageType.SpoilerImages;
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // get parameters
+ final Bundle extras = getIntent().getExtras();
+
+ String geocode = null;
+ if (extras != null) {
+ geocode = extras.getString(EXTRAS_GEOCODE);
+ imgType = (ImageType) extras.getSerializable(EXTRAS_TYPE);
+ }
+
+ if (extras == null || geocode == null) {
+ showToast("Sorry, c:geo forgot for what cache you want to load spoiler images.");
+ finish();
+ return;
+ }
+
+ // init
+ setTheme();
+ setContentView(R.layout.spoilers);
+ setTitle(res.getString(imgType.getTitle()));
+
+ imagesList = new ImagesList(this, geocode);
+
+ imageNames = extras.getParcelableArrayList(EXTRAS_IMAGES);
+ if (CollectionUtils.isEmpty(imageNames)) {
+ showToast(res.getString(R.string.warn_load_images));
+ finish();
+ return;
+ }
+
+ offline = app.isOffline(geocode, null) && (imgType == ImageType.SpoilerImages || Settings.isStoreLogImages());
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ imagesList.loadImages(findViewById(R.id.spoiler_list), imageNames, imgType, offline);
+ }
+
+ @Override
+ public void onStop() {
+ // Reclaim native memory faster than the finalizers would
+ imagesList.removeAllViews();
+ super.onStop();
+ }
+
+ public static void startActivityLogImages(final Context fromActivity, final String geocode, List<cgImage> logImages) {
+ startActivity(fromActivity, geocode, logImages, ImageType.LogImages);
+ }
+
+ private static void startActivity(final Context fromActivity, final String geocode, List<cgImage> logImages, ImageType imageType) {
+ final Intent logImgIntent = new Intent(fromActivity, ImagesActivity.class);
+ // if resuming our app within this activity, finish it and return to the cache activity
+ logImgIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET)
+ .putExtra(EXTRAS_GEOCODE, geocode.toUpperCase())
+ .putExtra(EXTRAS_TYPE, imageType);
+
+ // avoid forcing the array list as parameter type
+ final ArrayList<cgImage> arrayList = new ArrayList<cgImage>(logImages);
+ logImgIntent.putParcelableArrayListExtra(EXTRAS_IMAGES, arrayList);
+ fromActivity.startActivity(logImgIntent);
+ }
+
+ public static void startActivitySpoilerImages(final Context fromActivity, String geocode, List<cgImage> spoilers) {
+ startActivity(fromActivity, geocode, spoilers, ImageType.SpoilerImages);
+ }
+
+ @Override
+ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
+ super.onCreateContextMenu(menu, v, menuInfo);
+ imagesList.onCreateContextMenu(menu, v);
+ }
+
+ @Override
+ public boolean onContextItemSelected(MenuItem item) {
+ if (imagesList.onContextItemSelected(item)) {
+ return true;
+ }
+ return super.onContextItemSelected(item);
+ }
+}