aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/res/values-de/strings.xml1
-rw-r--r--main/res/values/strings.xml1
-rw-r--r--main/src/cgeo/geocaching/files/FileList.java35
3 files changed, 29 insertions, 8 deletions
diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml
index a00d575..aef3f50 100644
--- a/main/res/values-de/strings.xml
+++ b/main/res/values-de/strings.xml
@@ -566,6 +566,7 @@
<!-- file list base -->
<string name="file_searching_in">Suche nach Dateien\nin</string>
+ <string name="file_searching_sdcard_in">Keine Dateien in Standardverzeichnissen gefunden:\n%1$s\n\nDurchsuche komplette SD-Karte:\n</string>
<string name="file_list_no_files">c:geo hat keine passenden Dateien gefunden.</string>
<string name="file_searching">Suche nach passenden Dateien</string>
<string name="file_title_searching">Suche</string>
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index 7a87576..3f41f2b 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -580,6 +580,7 @@
<!-- file list base -->
<string name="file_searching_in">Searching for files\nin</string>
+ <string name="file_searching_sdcard_in">No files found in default folders:\n%1$s\n\nSearching whole SD card for files:\n</string>
<string name="file_list_no_files">c:geo found no appropriate files.</string>
<string name="file_searching">Searching for matching files</string>
<string name="file_title_searching">Searching</string>
diff --git a/main/src/cgeo/geocaching/files/FileList.java b/main/src/cgeo/geocaching/files/FileList.java
index 2f810ea..2ad05f5 100644
--- a/main/src/cgeo/geocaching/files/FileList.java
+++ b/main/src/cgeo/geocaching/files/FileList.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.List;
public abstract class FileList<T extends ArrayAdapter<File>> extends AbstractListActivity {
+ private static final int MSG_SEARCH_WHOLE_SD_CARD = 1;
private List<File> files = new ArrayList<File>();
private T adapter = null;
@@ -29,15 +30,36 @@ public abstract class FileList<T extends ArrayAdapter<File>> extends AbstractLis
private loadFiles searchingThread = null;
private boolean endSearching = false;
private int listId = 1;
+
final private Handler changeWaitDialogHandler = new Handler() {
+ private String searchInfo;
@Override
public void handleMessage(Message msg) {
if (msg.obj != null && waitDialog != null) {
- waitDialog.setMessage(res.getString(R.string.file_searching_in) + " " + (String) msg.obj);
+ if (searchInfo == null) {
+ searchInfo = res.getString(R.string.file_searching_in) + " ";
+ }
+ if (msg.what == MSG_SEARCH_WHOLE_SD_CARD) {
+ searchInfo = String.format(res.getString(R.string.file_searching_sdcard_in), getDefaultFolders());
+ }
+ waitDialog.setMessage(searchInfo + (String) msg.obj);
+ }
+ }
+
+ private String getDefaultFolders() {
+ StringBuilder sb = new StringBuilder();
+ for (File f : getBaseFolders()) {
+ String fName = f.getPath();
+ if (sb.length() > 0) {
+ sb.append("\n");
+ }
+ sb.append(fName);
}
+ return sb.toString();
}
};
+
final private Handler loadFilesHandler = new Handler() {
@Override
@@ -162,6 +184,7 @@ public abstract class FileList<T extends ArrayAdapter<File>> extends AbstractLis
}
}
if (!loaded) {
+ changeWaitDialogHandler.sendMessage(Message.obtain(changeWaitDialogHandler, MSG_SEARCH_WHOLE_SD_CARD, Environment.getExternalStorageDirectory().getName()));
listDir(list, Environment.getExternalStorageDirectory());
}
} else {
@@ -171,14 +194,12 @@ public abstract class FileList<T extends ArrayAdapter<File>> extends AbstractLis
Log.e(Settings.tag, "cgFileList.loadFiles.run: " + e.toString());
}
- final Message msg = new Message();
- msg.obj = "loaded directories";
- changeWaitDialogHandler.sendMessage(msg);
+ changeWaitDialogHandler.sendMessage(Message.obtain(changeWaitDialogHandler, 0, "loaded directories"));
files.addAll(list);
list.clear();
- loadFilesHandler.sendMessage(new Message());
+ loadFilesHandler.sendMessage(Message.obtain(loadFilesHandler));
}
}
@@ -209,9 +230,7 @@ public abstract class FileList<T extends ArrayAdapter<File>> extends AbstractLis
if (name.length() > 16) {
name = name.substring(0, 14) + "...";
}
- final Message msg = new Message();
- msg.obj = name;
- changeWaitDialogHandler.sendMessage(msg);
+ changeWaitDialogHandler.sendMessage(Message.obtain(changeWaitDialogHandler, 0, name));
listDir(result, file); // go deeper
}