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 @@
+
+