From 564145f2e23f8824a988b18871c95e1ef70b6230 Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 24 Apr 2015 13:29:19 +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=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- res/values/strings.xml | 2 + .../annimon/everlastingsummer/Dialogs.java | 51 ++++++++++++++++++- src/com/annimon/everlastingsummer/IOUtil.java | 8 +++ 3 files changed, 60 insertions(+), 1 deletion(-) 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();