Добавлена возможность удаления сохранений

This commit is contained in:
Victor 2015-04-24 13:29:19 +03:00
parent 5827d28327
commit 564145f2e2
3 changed files with 60 additions and 1 deletions

View File

@ -8,6 +8,8 @@
<string name="navigate">Навигация</string>
<string name="save">Сохранить</string>
<string name="load">Загрузить</string>
<string name="remove">Удалить</string>
<string name="removed">Удалено</string>
<string-array name="menu_items">
<item>@string/to_prev_scene</item>

View File

@ -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<SaveInfo> saves, DialogInterface.OnClickListener listener) {
public void showSaves(final List<SaveInfo> 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<SaveInfo> 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();

View File

@ -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();