From 00e8d1d1ebfafc162b3cfcced3d621493e70c471 Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 24 Apr 2015 13:14:17 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- res/values/strings.xml | 2 ++ .../annimon/everlastingsummer/Dialogs.java | 9 ++++++ .../everlastingsummer/ViewActivity.java | 30 +++++++++++++++++++ 3 files changed, 41 insertions(+) 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);