diff --git a/res/values/strings.xml b/res/values/strings.xml
index daa7c3f..b900d98 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7,12 +7,14 @@
Следующая сцена
Навигация
Сохранить
+ Загрузить
- @string/to_prev_scene
- @string/to_next_scene
- @string/navigate
- @string/save
+ - @string/load
diff --git a/src/com/annimon/everlastingsummer/Dialogs.java b/src/com/annimon/everlastingsummer/Dialogs.java
index fc659ed..9665c55 100644
--- a/src/com/annimon/everlastingsummer/Dialogs.java
+++ b/src/com/annimon/everlastingsummer/Dialogs.java
@@ -1,5 +1,6 @@
package com.annimon.everlastingsummer;
+import java.util.List;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
@@ -81,6 +82,14 @@ public final class Dialogs {
builder.setCancelable(false);
builder.show();
}
+
+ public void showSaves(List saves, DialogInterface.OnClickListener listener) {
+ builder.setTitle(R.string.load);
+ builder.setAdapter(new SavesAdapter(context, saves), listener);
+ builder.setNegativeButton(android.R.string.cancel, dismissDialog);
+ builder.setCancelable(true);
+ builder.show();
+ }
private final DialogInterface.OnClickListener dismissDialog = new DialogInterface.OnClickListener() {
@Override
diff --git a/src/com/annimon/everlastingsummer/ViewActivity.java b/src/com/annimon/everlastingsummer/ViewActivity.java
index e4e07a5..b76e46a 100644
--- a/src/com/annimon/everlastingsummer/ViewActivity.java
+++ b/src/com/annimon/everlastingsummer/ViewActivity.java
@@ -3,6 +3,7 @@ package com.annimon.everlastingsummer;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import com.annimon.everlastingsummer.TouchGesture.TouchGestureType;
import com.annimon.everlastingsummer.ast.Variables;
@@ -167,6 +168,9 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
case 3:
saveState();
break;
+ case 4:
+ showLoadStateDialog();
+ break;
}
}
@@ -391,6 +395,32 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
iv = null;
}
+ private void showLoadStateDialog() {
+ final List saves = IOUtil.listSaves(getApplicationContext());
+ if (saves == null || saves.isEmpty()) {
+ Toast.makeText(this, "Нет доступных сохранений", Toast.LENGTH_SHORT).show();
+ return;
+ }
+ Dialogs.with(this).showSaves(saves, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ final SaveInfo save = saves.get(which);
+ if (save.getPath().equals(scriptPath)) {
+ // Восстанавливаем сохранение текущего сценария.
+ Variables.setVariables(save.getVariables());
+ Parser.getInstance().setPosition(save.getPosition());
+ Toast.makeText(ViewActivity.this, "Загружено", Toast.LENGTH_SHORT).show();
+ } else {
+ // Пересоздаём активити
+ final Intent intent = new Intent(ViewActivity.this, ViewActivity.class);
+ intent.putExtra(ViewActivity.EXTRA_SAVE, save);
+ startActivity(intent);
+ finish();
+ }
+ }
+ });
+ }
+
private void saveState() {
final SaveInfo info = new SaveInfo();
info.setPath(scriptPath);