diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index 514ed8a1..4169d002 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -109,7 +109,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity break; case FOLDERS: navigationView.setCheckedItem(R.id.nav_folders); - setCurrentFragment(FolderFragment.newInstance()); + setCurrentFragment(FolderFragment.newInstance(this)); break; } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/FolderFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/FolderFragment.java index d1ebe7fe..23c6380d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/FolderFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/FolderFragment.java @@ -88,8 +88,8 @@ public class FolderFragment extends AbsMainActivityFragment implements MainActiv public FolderFragment() { } - public static FolderFragment newInstance() { - return newInstance(getDefaultStartFolder()); + public static FolderFragment newInstance(Context context) { + return newInstance(PreferenceUtil.getInstance(context).getStartDirectory()); } public static FolderFragment newInstance(File directory) { @@ -243,8 +243,8 @@ public class FolderFragment extends AbsMainActivityFragment implements MainActiv @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { - case R.id.action_go_to_music_folder: - setCrumb(new BreadCrumbLayout.Crumb(tryGetCanonicalFile(getDefaultStartFolder())), true); + case R.id.action_go_to_start_directory: + setCrumb(new BreadCrumbLayout.Crumb(tryGetCanonicalFile(PreferenceUtil.getInstance(getActivity()).getStartDirectory())), true); return true; } return super.onOptionsItemSelected(item); @@ -255,7 +255,7 @@ public class FolderFragment extends AbsMainActivityFragment implements MainActiv setCrumb(crumb, true); } - public static File getDefaultStartFolder() { + public static File getDefaultStartDirectory() { File externalStorageDir = Environment.getExternalStorageDirectory(); File musicFolder = new File(externalStorageDir, "Music"); File startFolder; @@ -355,18 +355,36 @@ public class FolderFragment extends AbsMainActivityFragment implements MainActiv @Override public void onFileMenuClicked(final File file, View view) { PopupMenu popupMenu = new PopupMenu(getActivity(), view); - popupMenu.inflate(R.menu.menu_item_directory); - popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.action_scan: - scan(file); - return true; + if (file.isDirectory()) { + popupMenu.inflate(R.menu.menu_item_directory); + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + switch (item.getItemId()) { + case R.id.action_set_as_start_directory: + PreferenceUtil.getInstance(getActivity()).setStartDirectory(file); + return true; + case R.id.action_scan: + scan(file); + return true; + } + return false; } - return false; - } - }); + }); + } else { + popupMenu.inflate(R.menu.menu_item_file); + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + switch (item.getItemId()) { + case R.id.action_scan: + scan(file); + return true; + } + return false; + } + }); + } popupMenu.show(); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java index c47ad217..5ceb7065 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java @@ -9,6 +9,9 @@ import android.support.annotation.StyleRes; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.helper.SortOrder; +import com.kabouzeid.gramophone.ui.fragments.FolderFragment; + +import java.io.File; public final class PreferenceUtil { public static final String GENERAL_THEME = "general_theme"; @@ -57,6 +60,8 @@ public final class PreferenceUtil { public static final String AUTO_DOWNLOAD_IMAGES_POLICY = "auto_download_images_policy"; + public static final String START_DIRECTORY = "start_directory"; + private static PreferenceUtil sInstance; private final SharedPreferences mPreferences; @@ -310,4 +315,14 @@ public final class PreferenceUtil { public final String autoDownloadImagesPolicy() { return mPreferences.getString(AUTO_DOWNLOAD_IMAGES_POLICY, "only_wifi"); } + + public final File getStartDirectory() { + return new File(mPreferences.getString(START_DIRECTORY, FolderFragment.getDefaultStartDirectory().getPath())); + } + + public void setStartDirectory(File file) { + final SharedPreferences.Editor editor = mPreferences.edit(); + editor.putString(START_DIRECTORY, file.getPath()); + editor.apply(); + } } diff --git a/app/src/main/res/drawable/ic_folder_special_white_24dp.xml b/app/src/main/res/drawable/ic_folder_special_white_24dp.xml new file mode 100644 index 00000000..2c6f7961 --- /dev/null +++ b/app/src/main/res/drawable/ic_folder_special_white_24dp.xml @@ -0,0 +1,10 @@ + + + + diff --git a/app/src/main/res/menu/menu_folders.xml b/app/src/main/res/menu/menu_folders.xml index 066fc537..f53ce3db 100644 --- a/app/src/main/res/menu/menu_folders.xml +++ b/app/src/main/res/menu/menu_folders.xml @@ -3,9 +3,9 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> \ No newline at end of file diff --git a/app/src/main/res/menu/menu_item_directory.xml b/app/src/main/res/menu/menu_item_directory.xml index 7a2c84ce..b127bf3f 100644 --- a/app/src/main/res/menu/menu_item_directory.xml +++ b/app/src/main/res/menu/menu_item_directory.xml @@ -1,6 +1,10 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eb203a76..54de9bdd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -29,6 +29,7 @@ Rename Delete Scan + Set as start directory Albums Artists Songs @@ -97,7 +98,7 @@ Shuffle artist Shuffle playlist Clear playing queue - Go to music folder + Go to start directory Last opened Light Dark