Change saved picture path to download folder

This commit is contained in:
MohitMaliFtechiz 2022-06-23 18:33:56 +05:30
parent 7855822be9
commit 5975dcd641
6 changed files with 34 additions and 14 deletions

View File

@ -268,7 +268,7 @@ class KiwixReaderFragment : CoreReaderFragment() {
override fun createWebView(attrs: AttributeSet): ToolbarScrollingKiwixWebView {
return ToolbarScrollingKiwixWebView(
requireContext(), this, attrs, activityMainRoot as ViewGroup, videoView,
CoreWebViewClient(this, zimReaderContainer),
CoreWebViewClient(this, zimReaderContainer, sharedPreferenceUtil),
toolbarContainer, bottomToolbar, sharedPreferenceUtil = sharedPreferenceUtil,
parentNavigationBar = requireActivity().bottom_nav_view
)

View File

@ -762,7 +762,7 @@ public abstract class CoreReaderFragment extends BaseFragment
if (activityMainRoot != null) {
return new ToolbarScrollingKiwixWebView(
getActivity(), this, attrs, (ViewGroup) activityMainRoot, videoView,
new CoreWebViewClient(this, zimReaderContainer),
new CoreWebViewClient(this, zimReaderContainer, sharedPreferenceUtil),
toolbarContainer, bottomToolbar,
sharedPreferenceUtil);
} else {

View File

@ -34,6 +34,7 @@ import java.io.File;
import java.util.HashMap;
import org.kiwix.kiwixmobile.core.CoreApp;
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer;
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil;
import org.kiwix.kiwixmobile.core.utils.files.FileUtils;
import static org.kiwix.kiwixmobile.core.reader.ZimFileReader.CONTENT_PREFIX;
@ -47,6 +48,7 @@ public class CoreWebViewClient extends WebViewClient {
}};
protected final WebViewCallback callback;
protected final ZimReaderContainer zimReaderContainer;
private final SharedPreferenceUtil sharedPreferenceUtil;
private static String[] LEGACY_CONTENT_PREFIXES = new String[] {
"zim://content/",
Uri.parse("content://" + CoreApp.getInstance().getPackageName() + ".zim.base/").toString()
@ -54,9 +56,12 @@ public class CoreWebViewClient extends WebViewClient {
private String urlWithAnchor;
public CoreWebViewClient(
WebViewCallback callback, ZimReaderContainer zimReaderContainer) {
WebViewCallback callback,
ZimReaderContainer zimReaderContainer,
SharedPreferenceUtil sharedPreferenceUtil) {
this.callback = callback;
this.zimReaderContainer = zimReaderContainer;
this.sharedPreferenceUtil = sharedPreferenceUtil;
}
@Override
@ -102,7 +107,8 @@ public class CoreWebViewClient extends WebViewClient {
private boolean handleEpubAndPdf(String url) {
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
if (DOCUMENT_TYPES.containsKey(extension)) {
File savedFile = FileUtils.downloadFileFromUrl(url, null, zimReaderContainer);
File savedFile =
FileUtils.downloadFileFromUrl(url, null, zimReaderContainer, sharedPreferenceUtil);
if (savedFile != null && savedFile.exists()) {
Context context = CoreApp.getInstance();
Uri uri = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N

View File

@ -111,7 +111,7 @@ open class KiwixWebView @SuppressLint("SetJavaScriptEnabled") constructor(
val saveMenu =
menu.add(0, 1, 0, resources.getString(R.string.save_media))
saveMenu.setOnMenuItemClickListener {
val msg = SaveHandler(zimReaderContainer).obtainMessage()
val msg = SaveHandler(zimReaderContainer, sharedPreferenceUtil).obtainMessage()
requestFocusNodeHref(msg)
true
}
@ -141,7 +141,10 @@ open class KiwixWebView @SuppressLint("SetJavaScriptEnabled") constructor(
callback.webViewPageChanged(page, pages)
}
internal class SaveHandler(private val zimReaderContainer: ZimReaderContainer) :
internal class SaveHandler(
private val zimReaderContainer: ZimReaderContainer,
private val sharedPreferenceUtil: SharedPreferenceUtil
) :
Handler() {
@SuppressWarnings("NestedBlockDepth")
@ -149,7 +152,8 @@ open class KiwixWebView @SuppressLint("SetJavaScriptEnabled") constructor(
val url = msg.data["url"] as? String
val src = msg.data["src"] as? String
if (url != null || src != null) {
val savedFile = FileUtils.downloadFileFromUrl(url, src, zimReaderContainer)
val savedFile =
FileUtils.downloadFileFromUrl(url, src, zimReaderContainer, sharedPreferenceUtil)
savedFile?.let {
instance.toast(instance.getString(R.string.save_media_saved, it.name))
} ?: run {

View File

@ -35,6 +35,7 @@ import org.kiwix.kiwixmobile.core.entity.LibraryNetworkEntity.Book
import org.kiwix.kiwixmobile.core.extensions.get
import org.kiwix.kiwixmobile.core.extensions.toast
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
import java.io.BufferedReader
import java.io.File
import java.io.IOException
@ -305,13 +306,22 @@ object FileUtils {
@JvmStatic fun downloadFileFromUrl(
url: String?,
src: String?,
zimReaderContainer: ZimReaderContainer
zimReaderContainer: ZimReaderContainer,
sharedPreferenceUtil: SharedPreferenceUtil
): File? {
val fileName = getDecodedFileName(url, src)
var root =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
if (CoreApp.instance.externalMediaDirs.isNotEmpty()) {
root = CoreApp.instance.externalMediaDirs[0]
var root: File? = null
if (sharedPreferenceUtil.isPlayStoreBuildWithAndroid11OrAbove()) {
if (CoreApp.instance.externalMediaDirs.isNotEmpty()) {
root = CoreApp.instance.externalMediaDirs[0]
}
} else {
root =
File(
"${Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)}" +
"/org.kiwix"
)
if (!root.exists()) root.mkdir()
}
val fileToSave = sequence {
yield(File(root, fileName))
@ -326,7 +336,7 @@ object FileUtils {
val source = if (url == null) Uri.parse(src) else Uri.parse(url)
return try {
zimReaderContainer.load("$source", emptyMap()).data.use { inputStream ->
fileToSave.outputStream().use { inputStream.copyTo(it) }
fileToSave.outputStream().use(inputStream::copyTo)
}
fileToSave
} catch (e: IOException) {

View File

@ -14,7 +14,7 @@
<string name="menu_wifi_hotspot">WiFi Hotspot</string>
<string name="save_media">Save Media</string>
<string name="save_media_error">An error occurred when trying to save the media!</string>
<string name="save_media_saved">Saved media as %s to Android/media/org.kiwix…/</string>
<string name="save_media_saved">Saved media as %s to Downloads/org.kiwix…/</string>
<string name="search_label">Search</string>
<string name="choose_file" tools:keep="@string/choose_file">Select a Content File (*.zim)</string>
<string name="open_in_new_tab">Open link in new tab?</string>