diff --git a/res/values/strings.xml b/res/values/strings.xml
index b900d98..151fcad 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8,6 +8,8 @@
Навигация
Сохранить
Загрузить
+ Удалить
+ Удалено
- @string/to_prev_scene
diff --git a/src/com/annimon/everlastingsummer/Dialogs.java b/src/com/annimon/everlastingsummer/Dialogs.java
index 9665c55..43b9698 100644
--- a/src/com/annimon/everlastingsummer/Dialogs.java
+++ b/src/com/annimon/everlastingsummer/Dialogs.java
@@ -1,6 +1,8 @@
package com.annimon.everlastingsummer;
+import java.text.DateFormat;
import java.util.List;
+import java.util.Locale;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
@@ -9,6 +11,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.widget.SeekBar;
import android.widget.TextView;
+import android.widget.Toast;
/**
* Работа с диалогами.
@@ -83,9 +86,55 @@ public final class Dialogs {
builder.show();
}
- public void showSaves(List saves, DialogInterface.OnClickListener listener) {
+ public void showSaves(final List saves, DialogInterface.OnClickListener listener) {
builder.setTitle(R.string.load);
builder.setAdapter(new SavesAdapter(context, saves), listener);
+ builder.setPositiveButton(R.string.remove, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ Dialogs.with(context).showSavesRemove(saves);
+ }
+ });
+ builder.setNegativeButton(android.R.string.cancel, dismissDialog);
+ builder.setCancelable(true);
+ builder.show();
+ }
+
+ public void showSavesRemove(final List saves) {
+ final int size = saves.size();
+ final String[] items = new String[size];
+ final DateFormat format = DateFormat.getDateTimeInstance(
+ DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.getDefault());
+ for (int i = 0; i < size; i++) {
+ final SaveInfo info = saves.get(i);
+ items[i] = format.format(info.getTime()) + "\n" + info.getPath();
+ }
+ final boolean[] checkedItems = new boolean[size];
+
+ builder.setTitle(R.string.remove);
+ builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which, boolean isChecked) {
+ checkedItems[which] = isChecked;
+ }
+ });
+
+ builder.setPositiveButton(R.string.remove, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ boolean removed = false;
+ for (int i = 0; i < size; i++) {
+ if (checkedItems[i]) {
+ IOUtil.removeSaveInfo(context, Long.toString(saves.get(i).getTime()));
+ removed = true;
+ }
+ }
+ if (removed) {
+ Toast.makeText(context, R.string.removed, Toast.LENGTH_SHORT).show();
+ }
+ }
+ });
builder.setNegativeButton(android.R.string.cancel, dismissDialog);
builder.setCancelable(true);
builder.show();
diff --git a/src/com/annimon/everlastingsummer/IOUtil.java b/src/com/annimon/everlastingsummer/IOUtil.java
index 4e6765f..49994b7 100644
--- a/src/com/annimon/everlastingsummer/IOUtil.java
+++ b/src/com/annimon/everlastingsummer/IOUtil.java
@@ -3,6 +3,7 @@ package com.annimon.everlastingsummer;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
+import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.IOException;
@@ -61,6 +62,13 @@ public final class IOUtil {
dos.close();
}
+ public static void removeSaveInfo(Context context, String filename) {
+ final File file = context.getFileStreamPath(filename);
+ if (file != null) {
+ file.delete();
+ }
+ }
+
private static FileInputStream streamForFD;
public static FileDescriptor getFD(String file) throws IOException {
if (streamForFD != null) streamForFD.close();