diff --git a/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaLibrary.java b/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaLibrary.java index 03446a6f..8aa86c47 100644 --- a/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaLibrary.java +++ b/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaLibrary.java @@ -329,7 +329,7 @@ public class MediaLibrary { * @param id the id of type which changed, -1 if unknown * @param ongoing whether or not to expect more of these updates soon */ - static void notifyObserver(LibraryObserver.Type type, long id, boolean ongoing) { + public static void notifyObserver(LibraryObserver.Type type, long id, boolean ongoing) { ArrayList list = sLibraryObservers; for (int i = list.size(); --i != -1; ) list.get(i).onChange(type, id, ongoing); diff --git a/app/src/main/java/ch/blinkenlights/android/vanilla/PreferencesMediaLibrary.java b/app/src/main/java/ch/blinkenlights/android/vanilla/PreferencesMediaLibrary.java index cadfc5d4..8b741eea 100644 --- a/app/src/main/java/ch/blinkenlights/android/vanilla/PreferencesMediaLibrary.java +++ b/app/src/main/java/ch/blinkenlights/android/vanilla/PreferencesMediaLibrary.java @@ -18,6 +18,7 @@ package ch.blinkenlights.android.vanilla; import ch.blinkenlights.android.medialibrary.MediaLibrary; +import ch.blinkenlights.android.medialibrary.LibraryObserver; import android.app.AlertDialog; import android.app.Fragment; @@ -214,10 +215,12 @@ public class PreferencesMediaLibrary extends Fragment implements View.OnClickLis } private static final int MENU_DUMP_DB = 1; + private static final int MENU_FORCE_M3U_IMPORT = 2; @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); menu.add(0, MENU_DUMP_DB, 30, R.string.dump_database); + menu.add(0, MENU_FORCE_M3U_IMPORT, 30, R.string.force_m3u_import); } @Override @@ -231,6 +234,11 @@ public class PreferencesMediaLibrary extends Fragment implements View.OnClickLis MediaLibrary.createDebugDump(context, path); Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); break; + case MENU_FORCE_M3U_IMPORT: + // Sending an 'OUTDATED' event signals that our playlist information is wrong. + // This should trigger a full re-import. + MediaLibrary.notifyObserver(LibraryObserver.Type.PLAYLIST, LibraryObserver.Value.OUTDATED, false); + break; default: return super.onOptionsItemSelected(item); } diff --git a/app/src/main/res/values/translatable.xml b/app/src/main/res/values/translatable.xml index bb2f865f..73bbf1df 100644 --- a/app/src/main/res/values/translatable.xml +++ b/app/src/main/res/values/translatable.xml @@ -340,6 +340,7 @@ THE SOFTWARE. Duration Dump database Database dumped to \'%s\' + Force M3U reimport Media library Indexed directories