diff --git a/app/src/main/java/org/schabi/newpipe/NewPipeSettings.java b/app/src/main/java/org/schabi/newpipe/NewPipeSettings.java index 39a2f5a7f..6a8cd7e84 100644 --- a/app/src/main/java/org/schabi/newpipe/NewPipeSettings.java +++ b/app/src/main/java/org/schabi/newpipe/NewPipeSettings.java @@ -28,6 +28,8 @@ import android.support.annotation.NonNull; import java.io.File; +import us.shandian.giga.util.Utility; + /** * Helper for global settings */ @@ -46,10 +48,34 @@ public class NewPipeSettings { return getFolder(context, R.string.download_path_key, Environment.DIRECTORY_MOVIES); } + public static String getVideoDownloadPath(Context context) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + final String key = context.getString(R.string.download_path_key); + String downloadPath = prefs.getString(key, Environment.DIRECTORY_MOVIES); + + return downloadPath; + } + public static File getAudioDownloadFolder(Context context) { return getFolder(context, R.string.download_path_audio_key, Environment.DIRECTORY_MUSIC); } + public static String getAudioDownloadPath(Context context) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + final String key = context.getString(R.string.download_path_audio_key); + String downloadPath = prefs.getString(key, Environment.DIRECTORY_MUSIC); + + return downloadPath; + } + + public static String getDownloadPath(Context context, String fileName) + { + if(Utility.isVideoFile(fileName)) { + return NewPipeSettings.getVideoDownloadPath(context); + } + return NewPipeSettings.getAudioDownloadPath(context); + } + private static File getFolder(Context context, int keyID, String defaultDirectoryName) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); final String key = context.getString(keyID); diff --git a/app/src/main/java/org/schabi/newpipe/download/MainActivity.java b/app/src/main/java/org/schabi/newpipe/download/MainActivity.java index 0f61812e0..d69c8aaa6 100644 --- a/app/src/main/java/org/schabi/newpipe/download/MainActivity.java +++ b/app/src/main/java/org/schabi/newpipe/download/MainActivity.java @@ -28,7 +28,6 @@ import android.widget.Toast; import org.schabi.newpipe.R; import org.schabi.newpipe.VideoItemDetailActivity; -import org.schabi.newpipe.VideoItemListActivity; import java.io.File; import java.io.IOException; @@ -139,7 +138,6 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte .replace(R.id.frame, mFragment) .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE) .commit(); - } private void showUrlDialog() { @@ -297,7 +295,8 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte NavUtils.navigateUpTo(this, intent); return true; } else { - return false; + return mFragment.onOptionsItemSelected(item) || + super.onOptionsItemSelected(item); } } diff --git a/app/src/main/java/us/shandian/giga/get/DownloadManagerImpl.java b/app/src/main/java/us/shandian/giga/get/DownloadManagerImpl.java index b7067c1a4..2dc123ce8 100755 --- a/app/src/main/java/us/shandian/giga/get/DownloadManagerImpl.java +++ b/app/src/main/java/us/shandian/giga/get/DownloadManagerImpl.java @@ -5,6 +5,8 @@ import android.util.Log; import com.google.gson.Gson; +import org.schabi.newpipe.NewPipeSettings; + import java.io.File; import java.io.RandomAccessFile; import java.net.HttpURLConnection; @@ -33,7 +35,7 @@ public class DownloadManagerImpl implements DownloadManager DownloadMission mission = new DownloadMission(); mission.url = url; mission.name = name; - mission.location = mLocation; + mission.location = NewPipeSettings.getDownloadPath(mContext, name); mission.timestamp = System.currentTimeMillis(); mission.threadCount = threads; new Initializer(mContext, mission).start(); @@ -64,7 +66,7 @@ public class DownloadManagerImpl implements DownloadManager private void loadMissions() { File f = new File(mLocation); - + if (f.exists() && f.isDirectory()) { File[] subs = f.listFiles(); diff --git a/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java b/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java index 52be503a6..f28c2d19f 100755 --- a/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java +++ b/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java @@ -14,12 +14,12 @@ import android.os.Message; import android.support.v4.app.NotificationCompat.Builder; import android.util.Log; +import org.schabi.newpipe.NewPipeSettings; import org.schabi.newpipe.R; import us.shandian.giga.get.DownloadManager; import us.shandian.giga.get.DownloadManagerImpl; import us.shandian.giga.get.DownloadMission; import org.schabi.newpipe.download.MainActivity; -import us.shandian.giga.util.Settings; import static org.schabi.newpipe.BuildConfig.DEBUG; public class DownloadManagerService extends Service implements DownloadMission.MissionListener @@ -43,7 +43,7 @@ public class DownloadManagerService extends Service implements DownloadMission.M mBinder = new DMBinder(); if (mManager == null) { - String path = Settings.getInstance(this).getString(Settings.DOWNLOAD_DIRECTORY, Settings.DEFAULT_PATH); + String path = NewPipeSettings.getVideoDownloadPath(this); mManager = new DownloadManagerImpl(this, path); if (DEBUG) { Log.d(TAG, "mManager == null"); diff --git a/app/src/main/java/us/shandian/giga/util/Settings.java b/app/src/main/java/us/shandian/giga/util/Settings.java deleted file mode 100644 index 82ceb2826..000000000 --- a/app/src/main/java/us/shandian/giga/util/Settings.java +++ /dev/null @@ -1,60 +0,0 @@ -package us.shandian.giga.util; - -import android.content.Context; -import android.content.SharedPreferences; - -/* - Settings Provider -*/ -public class Settings -{ - public static final String XML_NAME = "settings"; - - public static final String DOWNLOAD_DIRECTORY = "download_directory"; - - public static final String DEFAULT_PATH = "/storage/sdcard0/GigaGet"; - - private static Settings sInstance; - - private SharedPreferences mPrefs; - - public static Settings getInstance(Context context) { - if (sInstance == null) { - sInstance = new Settings(context); - } - - return sInstance; - } - - private Settings(Context context) { - mPrefs = context.getSharedPreferences(XML_NAME, Context.MODE_PRIVATE); - } - - public Settings putBoolean(String key, boolean value) { - mPrefs.edit().putBoolean(key, value).commit(); - return this; - } - - public boolean getBoolean(String key, boolean def) { - return mPrefs.getBoolean(key, def); - } - - public Settings putInt(String key, int value) { - mPrefs.edit().putInt(key, value).commit(); - return this; - } - - public int getInt(String key, int defValue) { - return mPrefs.getInt(key, defValue); - } - - public Settings putString(String key, String value) { - mPrefs.edit().putString(key, value).commit(); - return this; - } - - public String getString(String key, String defValue) { - return mPrefs.getString(key, defValue); - } - -} diff --git a/app/src/main/java/us/shandian/giga/util/Utility.java b/app/src/main/java/us/shandian/giga/util/Utility.java index acad26209..29720786f 100644 --- a/app/src/main/java/us/shandian/giga/util/Utility.java +++ b/app/src/main/java/us/shandian/giga/util/Utility.java @@ -17,9 +17,9 @@ import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import org.schabi.newpipe.NewPipeSettings; import org.schabi.newpipe.R; import us.shandian.giga.get.DownloadMission; -import us.shandian.giga.util.Settings; import com.nononsenseapps.filepicker.FilePickerActivity; import com.nononsenseapps.filepicker.AbstractFilePickerFragment; @@ -154,10 +154,10 @@ public class Utility public static FileType getFileType(String file) { if (file.endsWith(".apk")) { return FileType.APP; - } else if (file.endsWith(".mp3") || file.endsWith(".wav") || file.endsWith(".flac")) { + } else if (file.endsWith(".mp3") || file.endsWith(".wav") || file.endsWith(".flac") || file.endsWith(".m4a")) { return FileType.MUSIC; } else if (file.endsWith(".mp4") || file.endsWith(".mpeg") || file.endsWith(".rm") || file.endsWith(".rmvb") - || file.endsWith(".flv") || file.endsWith(".webp")) { + || file.endsWith(".flv") || file.endsWith(".webp") || file.endsWith(".webm")) { return FileType.VIDEO; } else if (file.endsWith(".doc") || file.endsWith(".docx")) { return FileType.WORD; @@ -172,6 +172,16 @@ public class Utility return FileType.UNKNOWN; } } + + public static Boolean isMusicFile(String file) + { + return Utility.getFileType(file) == FileType.MUSIC; + } + + public static Boolean isVideoFile(String file) + { + return Utility.getFileType(file) == FileType.VIDEO; + } public static int getBackgroundForFileType(FileType type) { switch (type) { @@ -212,63 +222,16 @@ public class Utility return R.color.bluegray_dark; } } - - public static int getThemeForFileType(FileType type) { - /*switch (type) { - case APP: - return R.style.Theme_App_Orange; - case MUSIC: - return R.style.Theme_App_Cyan; - case ARCHIVE: - return R.style.Theme_App_Blue; - case VIDEO: - return R.style.Theme_App_Green; - case WORD: - case EXCEL: - case POWERPOINT: - return R.style.Theme_App_Brown; - case UNKNOWN: - default: - return R.style.Theme_App_BlueGray; - }*/ - return 0; - } - - public static int getIconForFileType(FileType type) { - switch (type) { - case APP: - return R.drawable.apps; - case MUSIC: - return R.drawable.music; - case ARCHIVE: - return R.drawable.archive; - case VIDEO: - return R.drawable.video; - case WORD: - return R.drawable.word; - case EXCEL: - return R.drawable.excel; - case POWERPOINT: - return R.drawable.powerpoint; - case UNKNOWN: - default: - return R.drawable.unknown; - } - } - + public static boolean isDirectoryAvailble(String path) { File dir = new File(path); return dir.exists() && dir.isDirectory(); } public static boolean isDownloadDirectoryAvailble(Context context) { - return isDirectoryAvailble(Settings.getInstance(context).getString(Settings.DOWNLOAD_DIRECTORY, Settings.DEFAULT_PATH)); + return isDirectoryAvailble(NewPipeSettings.getVideoDownloadPath(context)); } - - public static void changeDownloadDirectory(Context context, String path) { - Settings.getInstance(context).putString(Settings.DOWNLOAD_DIRECTORY, path); - } - + public static void showDirectoryChooser(Activity activity) { Intent i = new Intent(activity, FilePickerActivity.class); i.setAction(Intent.ACTION_GET_CONTENT);