package warmupdaterapp.ui;
import warmupdaterapp.customTypes.Screenshot;
import warmupdaterapp.customTypes.UpdateInfo;
import warmupdaterapp.listadapters.ScreenshotGridViewAdapter;
import warmupdaterapp.misc.Constants;
import warmupdaterapp.tasks.DownloadImageTask;
import warmupdaterapp.utils.Preferences;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import warmupdaterapp.ui.R;
public class ScreenshotActivity extends Activity {
private static ScreenshotGridViewAdapter imageAdapter;
private DownloadImageTask downloadImageTask;
public static void NotifyChange() {
imageAdapter.notifyDataSetChanged();
}
public static Screenshot getItem(int position) {
return (Screenshot) imageAdapter.getItem(position);
}
public static int getScreenshotSize() {
return imageAdapter.getCount();
}
public static void AddScreenshot(Screenshot s) {
imageAdapter.AddScreenshot(s);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.screenshots);
Intent i = getIntent();
Bundle b = i.getExtras();
UpdateInfo ui = (UpdateInfo) b.get(Constants.SCREENSHOTS_UPDATE);
GridView gridview = (GridView) findViewById(R.id.gridview);
imageAdapter = new ScreenshotGridViewAdapter(this, ui.screenshots.size());
gridview.setAdapter(imageAdapter);
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
//Only start the Activity, when the Image is loaded
if (imageAdapter.GetRealScreenshotSize() > position) {
Intent i = new Intent(ScreenshotActivity.this, ScreenshotDetailActivity.class);
i.putExtra(Constants.SCREENSHOTS_POSITION, position);
startActivity(i);
}
}
});
//In onCreate, cause when pressing back from Detail, the old Screenshots remain in the List
downloadImageTask = new DownloadImageTask(this, new Preferences(this).displayDebugOutput());
downloadImageTask.execute(ui);
}
@Override
protected void onDestroy() {
super.onDestroy();
//Stop image downloading
downloadImageTask.cancel(true);
imageAdapter.Destroy();
imageAdapter.ClearScreenshots();
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int keyCode = event.getKeyCode();
//We need the ACTION_DOWN here, cause otherwise when you press back on the screenshotdetailactivity,
//the ACTION_UP event is sent to this activity, and this will result in going back twice
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 && event.getAction() == KeyEvent.ACTION_DOWN) {
//Stop the Activity on BackKey
onDestroy();
finish();
return true;
} else
return super.dispatchKeyEvent(event);
}
}