From aee5f38fb598c6d610ef3f60205c203769cb21cb Mon Sep 17 00:00:00 2001
From: gdlbo <41114720+gdlbo@users.noreply.github.com>
Date: Fri, 5 Aug 2022 20:39:24 +0300
Subject: [PATCH] more folders picker
---
.../ru/vtosters/lite/music/MP3Downloader.java | 18 ++++++----
.../lite/ui/fragments/MediaFragment.java | 34 +++++++++++++++++++
.../ru/vtosters/lite/utils/Preferences.java | 18 ++++++++++
smali/res/xml/preferences_media.xml | 12 +++++++
smali/smali_classes2/b/h/g/m/FileUtils.smali | 34 ++++++++++---------
5 files changed, 93 insertions(+), 23 deletions(-)
diff --git a/app/src/main/java/ru/vtosters/lite/music/MP3Downloader.java b/app/src/main/java/ru/vtosters/lite/music/MP3Downloader.java
index 27e33ba77..aacf4daf1 100644
--- a/app/src/main/java/ru/vtosters/lite/music/MP3Downloader.java
+++ b/app/src/main/java/ru/vtosters/lite/music/MP3Downloader.java
@@ -1,11 +1,16 @@
package ru.vtosters.lite.music;
+import static ru.vtosters.lite.utils.Preferences.getMusicDir;
+
import android.app.DownloadManager;
import android.net.Uri;
+import android.os.Build;
import android.os.Environment;
import android.util.Log;
import android.widget.Toast;
+import androidx.annotation.RequiresApi;
+
import com.vk.dto.music.MusicTrack;
import org.json.JSONException;
@@ -53,12 +58,10 @@ public class MP3Downloader {
if (responseNode.has("url")) {
var url = responseNode.optString("url");
Log.d("MP3Downloader", url);
- if (url != null) {
- if (url.endsWith(".mp3")) {
- downloadMP3(track.toString(), url);
- } else if (VKM3UParser.isM3U8(url)) {
- AudioDownloader.downloadM3U8(track);
- }
+ if (url.endsWith(".mp3")) {
+ downloadMP3(track.toString(), url);
+ } else if (VKM3UParser.isM3U8(url)) {
+ AudioDownloader.downloadM3U8(track);
}
}
}
@@ -69,13 +72,14 @@ public class MP3Downloader {
});
}
+ @RequiresApi(api = Build.VERSION_CODES.M)
private static void downloadMP3(String title, String url) {
var downloadManager = AndroidUtils.getGlobalContext().getSystemService(DownloadManager.class);
var request = new DownloadManager.Request(Uri.parse(url))
.setAllowedOverRoaming(true)
.setTitle("Downloading " + title)
.setDestinationInExternalFilesDir(AndroidUtils.getGlobalContext(),
- Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath(),
+ getMusicDir().getAbsolutePath(),
title + ".mp3")
.setVisibleInDownloadsUi(true);
downloadManager.enqueue(request);
diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java
index 1c8055e78..43cbc2cef 100644
--- a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java
+++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java
@@ -94,6 +94,19 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment {
findPreference("downloads_directory").setSummary(
"Текущая папка: " + Preferences.getDownloadsDir()
);
+
+ findPreference("photos_directory").setSummary(
+ "Текущая папка: " + Preferences.getPhotosDir()
+ );
+
+ findPreference("videos_directory").setSummary(
+ "Текущая папка: " + Preferences.getVideosDir()
+ );
+
+ findPreference("music_directory").setSummary(
+ "Текущая папка: " + Preferences.getMusicDir()
+ );
+
findPreference("downloads_directory").setOnPreferenceClickListener(preference -> {
var intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addCategory(Intent.CATEGORY_DEFAULT);
@@ -101,6 +114,27 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment {
return true;
});
+ findPreference("photos_directory").setOnPreferenceClickListener(preference -> {
+ var intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
+ intent.addCategory(Intent.CATEGORY_DEFAULT);
+ startActivityForResult(intent, REQUEST_CODE_SET_DOWNLOAD_DIRECTORY);
+ return true;
+ });
+
+ findPreference("videos_directory").setOnPreferenceClickListener(preference -> {
+ var intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
+ intent.addCategory(Intent.CATEGORY_DEFAULT);
+ startActivityForResult(intent, REQUEST_CODE_SET_DOWNLOAD_DIRECTORY);
+ return true;
+ });
+
+ findPreference("music_directory").setOnPreferenceClickListener(preference -> {
+ var intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
+ intent.addCategory(Intent.CATEGORY_DEFAULT);
+ startActivityForResult(intent, REQUEST_CODE_SET_DOWNLOAD_DIRECTORY);
+ return true;
+ });
+
if (isLoggedIn()) {
findPreference("lastfm_auth").setSummary("Вы авторизованы как " + Scrobbler.getUserName());
} else {
diff --git a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java
index 8b02a202f..15d1380f3 100644
--- a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java
+++ b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java
@@ -392,4 +392,22 @@ public class Preferences {
"downloads_directory",
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()));
}
+
+ public static File getPhotosDir() {
+ return new File(getPreferences().getString(
+ "photos_directory",
+ Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath()));
+ }
+
+ public static File getVideosDir() {
+ return new File(getPreferences().getString(
+ "videos_directory",
+ Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).getAbsolutePath()));
+ }
+
+ public static File getMusicDir() {
+ return new File(getPreferences().getString(
+ "videos_directory",
+ Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getAbsolutePath()));
+ }
}
diff --git a/smali/res/xml/preferences_media.xml b/smali/res/xml/preferences_media.xml
index 2bcf4056a..0148111eb 100644
--- a/smali/res/xml/preferences_media.xml
+++ b/smali/res/xml/preferences_media.xml
@@ -29,6 +29,18 @@
android:key="downloads_directory"
android:summary="Текущая папка: "
android:title="Папка для загрузок" />
+
+
+
getVKDir()Ljava/io/File;
+ # .line 1
+ # invoke-static {}, Lb/h/g/m/FileUtils;->getVKDir()Ljava/io/File;
- move-result-object v0
+ # move-result-object v0
- const-string v1, "Photos"
+ # const-string v1, "Photos"
- invoke-static {v0, v1}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
+ # invoke-static {v0, v1}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
+
+ # move-result-object v0
+
+ invoke-static {}, Lru/vtosters/lite/utils/Preferences;->getPhotosDir()Ljava/io/File;
move-result-object v0
@@ -2105,14 +2109,18 @@
.method private static e()Ljava/io/File;
.locals 2
- .line 1
- invoke-static {}, Lb/h/g/m/FileUtils;->getVKDir()Ljava/io/File;
+ # .line 1
+ # invoke-static {}, Lb/h/g/m/FileUtils;->getVKDir()Ljava/io/File;
- move-result-object v0
+ # move-result-object v0
- const-string v1, "Videos"
+ # const-string v1, "Videos"
- invoke-static {v0, v1}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
+ # invoke-static {v0, v1}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
+
+ # move-result-object v0
+
+ invoke-static {}, Lru/vtosters/lite/utils/Preferences;->getVideosDir()Ljava/io/File;
move-result-object v0
@@ -3631,12 +3639,6 @@
.line 2
invoke-static {v0}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;)V
- const-string v1, "Download"
-
- invoke-static {v0, v1}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
-
- move-result-object v0
-
const-string v1, "VK"
.line 3