diff options
| -rw-r--r-- | main/res/values-de/strings.xml | 1 | ||||
| -rw-r--r-- | main/res/values/strings.xml | 1 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/files/FileList.java | 35 |
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 } |
