aboutsummaryrefslogtreecommitdiff
path: root/src/org/happysanta/gd/Menu/InstalledLevelsMenuScreen.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/happysanta/gd/Menu/InstalledLevelsMenuScreen.java')
-rw-r--r--src/org/happysanta/gd/Menu/InstalledLevelsMenuScreen.java103
1 files changed, 103 insertions, 0 deletions
diff --git a/src/org/happysanta/gd/Menu/InstalledLevelsMenuScreen.java b/src/org/happysanta/gd/Menu/InstalledLevelsMenuScreen.java
new file mode 100644
index 0000000..b3adbab
--- /dev/null
+++ b/src/org/happysanta/gd/Menu/InstalledLevelsMenuScreen.java
@@ -0,0 +1,103 @@
+package org.happysanta.gd.Menu;
+
+import android.os.AsyncTask;
+import android.view.ViewTreeObserver;
+import org.happysanta.gd.Storage.Level;
+import org.happysanta.gd.Storage.LevelsManager;
+
+import static org.happysanta.gd.Helpers.getGDActivity;
+
+public class InstalledLevelsMenuScreen extends LevelsMenuScreen {
+
+ LevelsManager levelsManager;
+ protected boolean isLoading = false;
+ AsyncLoadLevels asyncLoadLevels = null;
+
+ public InstalledLevelsMenuScreen(String title, MenuScreen navTarget) {
+ super(title, navTarget);
+ levelsManager = getGDActivity().levelsManager;
+ }
+
+ @Override
+ public void loadLevels() {
+ showLoading();
+ isLoading = true;
+
+ asyncLoadLevels = new AsyncLoadLevels() {
+ @Override
+ public void onPostExecute(Level[] levels) {
+ if (status != Statuses.NORMAL) {
+ clearList();
+ setStatus(Statuses.NORMAL);
+ }
+ hideLoading();
+
+ addElements = new AsyncAddElements() {
+ @Override
+ protected void onPostExecute(Void v) {
+ isLoading = false;
+ if (selectedIndex != -1) {
+ // listLayout.requestLayout();
+ // listLayout.invalidate();
+
+ // View someView = findViewById(R.id.someView);
+ final ViewTreeObserver obs = listLayout.getViewTreeObserver();
+ obs.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
+
+ public boolean onPreDraw() {
+ scrollToItem(selectedIndex);
+ try {
+ obs.removeOnPreDrawListener(this);
+ } catch (IllegalStateException e) {
+ }
+
+ return true;
+ }
+ });
+
+ // scrollToItem(selectedIndex);
+ }
+ }
+ };
+ addElements.execute(levels);
+ }
+ };
+ asyncLoadLevels.execute();
+ }
+
+ @Override
+ public void onShow() {
+ super.onShow();
+ }
+
+ @Override
+ public void onHide(MenuScreen newMenu) {
+ super.onHide(newMenu);
+ }
+
+ @Override
+ protected boolean hideDate() {
+ return true;
+ }
+
+ @Override
+ public void reloadLevels() {
+ if (asyncLoadLevels != null) {
+ asyncLoadLevels.cancel(true);
+ asyncLoadLevels = null;
+ }
+
+ isLoading = false;
+ super.reloadLevels();
+ }
+
+ private class AsyncLoadLevels extends AsyncTask<Void, Void, Level[]> {
+
+ @Override
+ protected Level[] doInBackground(Void... params) {
+ return levelsManager.getAllInstalledLevels();
+ }
+
+ }
+
+}