mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-10 16:02:05 -04:00
Merge branch 'kiwix:develop' into issue#2719
This commit is contained in:
commit
aeeb5278cf
2
.github/workflows/coverage.yml
vendored
2
.github/workflows/coverage.yml
vendored
@ -15,7 +15,7 @@ jobs:
|
|||||||
coverageReport:
|
coverageReport:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
api-level: [21, 21]
|
api-level: [21, 21, 30]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
runs-on: macOS-latest
|
runs-on: macOS-latest
|
||||||
steps:
|
steps:
|
||||||
|
2
.github/workflows/nightly.yml
vendored
2
.github/workflows/nightly.yml
vendored
@ -10,7 +10,7 @@ jobs:
|
|||||||
instrumentation_tests:
|
instrumentation_tests:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
api-level: [21, 22, 23, 24, 25, 27, 28]
|
api-level: [21, 22, 23, 24, 25, 27, 28, 30]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
runs-on: macOS-latest
|
runs-on: macOS-latest
|
||||||
steps:
|
steps:
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<ID>MagicNumber:ShareFiles.kt$ShareFiles$24</ID>
|
<ID>MagicNumber:ShareFiles.kt$ShareFiles$24</ID>
|
||||||
<ID>MagicNumber:ZimManageViewModel.kt$ZimManageViewModel$5</ID>
|
<ID>MagicNumber:ZimManageViewModel.kt$ZimManageViewModel$5</ID>
|
||||||
<ID>MagicNumber:ZimManageViewModel.kt$ZimManageViewModel$500</ID>
|
<ID>MagicNumber:ZimManageViewModel.kt$ZimManageViewModel$500</ID>
|
||||||
<ID>MagicNumber:ZimHostFragment.kt$ZimHostFragment$4</ID>
|
<ID>NestedBlockDepth:LocalLibraryFragment.kt$LocalLibraryFragment$checkPermissions</ID>
|
||||||
<ID>NestedBlockDepth:PeerGroupHandshake.kt$PeerGroupHandshake$readHandshakeAndExchangeMetaData</ID>
|
<ID>NestedBlockDepth:PeerGroupHandshake.kt$PeerGroupHandshake$readHandshakeAndExchangeMetaData</ID>
|
||||||
<ID>NestedBlockDepth:ReceiverHandShake.kt$ReceiverHandShake$exchangeFileTransferMetadata</ID>
|
<ID>NestedBlockDepth:ReceiverHandShake.kt$ReceiverHandShake$exchangeFileTransferMetadata</ID>
|
||||||
<ID>PackageNaming:AvailableSpaceCalculator.kt$package org.kiwix.kiwixmobile.zim_manager.library_view</ID>
|
<ID>PackageNaming:AvailableSpaceCalculator.kt$package org.kiwix.kiwixmobile.zim_manager.library_view</ID>
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
|
||||||
|
tools:ignore="ScopedStorage" />
|
||||||
|
|
||||||
<queries>
|
<queries>
|
||||||
<intent>
|
<intent>
|
||||||
|
@ -20,7 +20,9 @@ package org.kiwix.kiwixmobile.nav.destination.library
|
|||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.os.Environment
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuInflater
|
import android.view.MenuInflater
|
||||||
@ -31,6 +33,7 @@ import androidx.appcompat.app.AppCompatActivity
|
|||||||
import androidx.appcompat.view.ActionMode
|
import androidx.appcompat.view.ActionMode
|
||||||
import androidx.appcompat.widget.Toolbar
|
import androidx.appcompat.widget.Toolbar
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
import androidx.fragment.app.FragmentActivity
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
@ -49,9 +52,12 @@ import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.navigate
|
|||||||
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.viewModel
|
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.viewModel
|
||||||
import org.kiwix.kiwixmobile.core.extensions.toast
|
import org.kiwix.kiwixmobile.core.extensions.toast
|
||||||
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
|
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
|
||||||
|
import org.kiwix.kiwixmobile.core.navigateToSettings
|
||||||
import org.kiwix.kiwixmobile.core.utils.LanguageUtils
|
import org.kiwix.kiwixmobile.core.utils.LanguageUtils
|
||||||
import org.kiwix.kiwixmobile.core.utils.REQUEST_STORAGE_PERMISSION
|
import org.kiwix.kiwixmobile.core.utils.REQUEST_STORAGE_PERMISSION
|
||||||
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
||||||
|
import org.kiwix.kiwixmobile.core.utils.dialog.DialogShower
|
||||||
|
import org.kiwix.kiwixmobile.core.utils.dialog.KiwixDialog
|
||||||
import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BookOnDiskDelegate
|
import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BookOnDiskDelegate
|
||||||
import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BooksOnDiskAdapter
|
import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BooksOnDiskAdapter
|
||||||
import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BooksOnDiskListItem
|
import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BooksOnDiskListItem
|
||||||
@ -69,6 +75,7 @@ class LocalLibraryFragment : BaseFragment() {
|
|||||||
|
|
||||||
@Inject lateinit var viewModelFactory: ViewModelProvider.Factory
|
@Inject lateinit var viewModelFactory: ViewModelProvider.Factory
|
||||||
@Inject lateinit var sharedPreferenceUtil: SharedPreferenceUtil
|
@Inject lateinit var sharedPreferenceUtil: SharedPreferenceUtil
|
||||||
|
@Inject lateinit var dialogShower: DialogShower
|
||||||
|
|
||||||
private var actionMode: ActionMode? = null
|
private var actionMode: ActionMode? = null
|
||||||
private val disposable = CompositeDisposable()
|
private val disposable = CompositeDisposable()
|
||||||
@ -202,7 +209,27 @@ class LocalLibraryFragment : BaseFragment() {
|
|||||||
REQUEST_STORAGE_PERMISSION
|
REQUEST_STORAGE_PERMISSION
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
requestFileSystemCheck()
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
|
if (Environment.isExternalStorageManager()) {
|
||||||
|
// We already have permission!!
|
||||||
|
requestFileSystemCheck()
|
||||||
|
} else {
|
||||||
|
if (sharedPreferenceUtil.manageExternalFilesPermissionDialog) {
|
||||||
|
// We should only ask for first time, If the users wants to revoke settings
|
||||||
|
// then they can directly toggle this feature from settings screen
|
||||||
|
sharedPreferenceUtil.manageExternalFilesPermissionDialog = false
|
||||||
|
// Show Dialog and Go to settings to give permission
|
||||||
|
dialogShower.show(
|
||||||
|
KiwixDialog.ManageExternalFilesPermissionDialog,
|
||||||
|
{
|
||||||
|
this.activity?.let(FragmentActivity::navigateToSettings)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
requestFileSystemCheck()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,11 +49,13 @@ import org.kiwix.kiwixmobile.core.downloader.Downloader
|
|||||||
import org.kiwix.kiwixmobile.core.entity.LibraryNetworkEntity
|
import org.kiwix.kiwixmobile.core.entity.LibraryNetworkEntity
|
||||||
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.navigate
|
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.navigate
|
||||||
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.viewModel
|
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.viewModel
|
||||||
|
import org.kiwix.kiwixmobile.core.extensions.closeKeyboard
|
||||||
import org.kiwix.kiwixmobile.core.extensions.snack
|
import org.kiwix.kiwixmobile.core.extensions.snack
|
||||||
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
|
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
|
||||||
import org.kiwix.kiwixmobile.core.utils.BookUtils
|
import org.kiwix.kiwixmobile.core.utils.BookUtils
|
||||||
import org.kiwix.kiwixmobile.core.utils.NetworkUtils
|
import org.kiwix.kiwixmobile.core.utils.NetworkUtils
|
||||||
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
||||||
|
import org.kiwix.kiwixmobile.core.utils.SimpleRecyclerViewScrollListener
|
||||||
import org.kiwix.kiwixmobile.core.utils.SimpleTextListener
|
import org.kiwix.kiwixmobile.core.utils.SimpleTextListener
|
||||||
import org.kiwix.kiwixmobile.core.utils.dialog.DialogShower
|
import org.kiwix.kiwixmobile.core.utils.dialog.DialogShower
|
||||||
import org.kiwix.kiwixmobile.core.utils.dialog.KiwixDialog
|
import org.kiwix.kiwixmobile.core.utils.dialog.KiwixDialog
|
||||||
@ -141,6 +143,13 @@ class OnlineLibraryFragment : BaseFragment(), FragmentActivityExtensions {
|
|||||||
zimManageViewModel.shouldShowWifiOnlyDialog.value = false
|
zimManageViewModel.shouldShowWifiOnlyDialog.value = false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// hides keyboard when scrolled
|
||||||
|
libraryList.addOnScrollListener(SimpleRecyclerViewScrollListener { _, newState ->
|
||||||
|
if (newState == RecyclerView.SCROLL_STATE_DRAGGING) {
|
||||||
|
libraryList.closeKeyboard()
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
|
@ -18,10 +18,15 @@
|
|||||||
|
|
||||||
package org.kiwix.kiwixmobile.settings
|
package org.kiwix.kiwixmobile.settings
|
||||||
|
|
||||||
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.os.Environment
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
import androidx.fragment.app.FragmentActivity
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
|
import androidx.preference.PreferenceCategory
|
||||||
import org.kiwix.kiwixmobile.R
|
import org.kiwix.kiwixmobile.R
|
||||||
|
import org.kiwix.kiwixmobile.core.navigateToSettings
|
||||||
import org.kiwix.kiwixmobile.core.settings.CorePrefsFragment
|
import org.kiwix.kiwixmobile.core.settings.CorePrefsFragment
|
||||||
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
||||||
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil.Companion.PREF_STORAGE
|
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil.Companion.PREF_STORAGE
|
||||||
@ -31,6 +36,7 @@ class KiwixPrefsFragment : CorePrefsFragment() {
|
|||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
super.onCreatePreferences(savedInstanceState, rootKey)
|
super.onCreatePreferences(savedInstanceState, rootKey)
|
||||||
setUpLanguageChooser(SharedPreferenceUtil.PREF_LANG)
|
setUpLanguageChooser(SharedPreferenceUtil.PREF_LANG)
|
||||||
|
setMangeExternalStoragePermission()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setStorage() {
|
override fun setStorage() {
|
||||||
@ -43,4 +49,34 @@ class KiwixPrefsFragment : CorePrefsFragment() {
|
|||||||
|
|
||||||
private fun internalStorage(): String? =
|
private fun internalStorage(): String? =
|
||||||
ContextCompat.getExternalFilesDirs(requireContext(), null).firstOrNull()?.path
|
ContextCompat.getExternalFilesDirs(requireContext(), null).firstOrNull()?.path
|
||||||
|
|
||||||
|
private fun setMangeExternalStoragePermission() {
|
||||||
|
val permissionPref = findPreference<Preference>(PREF_MANAGE_EXTERNAL_STORAGE_PERMISSION)
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
|
showPermissionPreference()
|
||||||
|
val externalStorageManager = Environment.isExternalStorageManager()
|
||||||
|
if (externalStorageManager) {
|
||||||
|
permissionPref!!.setSummary(org.kiwix.kiwixmobile.core.R.string.allowed)
|
||||||
|
} else {
|
||||||
|
permissionPref!!.setSummary(org.kiwix.kiwixmobile.core.R.string.not_allowed)
|
||||||
|
}
|
||||||
|
permissionPref.onPreferenceClickListener =
|
||||||
|
Preference.OnPreferenceClickListener {
|
||||||
|
activity?.let(FragmentActivity::navigateToSettings)
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun showPermissionPreference() {
|
||||||
|
val preferenceCategory = findPreference<PreferenceCategory>(
|
||||||
|
PREF_PERMISSION
|
||||||
|
)
|
||||||
|
preferenceCategory!!.isVisible = true
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val PREF_MANAGE_EXTERNAL_STORAGE_PERMISSION =
|
||||||
|
"pref_manage_external_storage"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
27
app/src/main/res/drawable-night-v24/kiwix_icon.xml
Normal file
27
app/src/main/res/drawable-night-v24/kiwix_icon.xml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<!--
|
||||||
|
~ Kiwix Android
|
||||||
|
~ Copyright (c) 2021 Kiwix <android.kiwix.org>
|
||||||
|
~ This program is free software: you can redistribute it and/or modify
|
||||||
|
~ it under the terms of the GNU General Public License as published by
|
||||||
|
~ the Free Software Foundation, either version 3 of the License, or
|
||||||
|
~ (at your option) any later version.
|
||||||
|
~
|
||||||
|
~ This program is distributed in the hope that it will be useful,
|
||||||
|
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
~ GNU General Public License for more details.
|
||||||
|
~
|
||||||
|
~ You should have received a copy of the GNU General Public License
|
||||||
|
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
~
|
||||||
|
-->
|
||||||
|
|
||||||
|
<vector android:height="200dp"
|
||||||
|
android:viewportHeight="1256"
|
||||||
|
android:viewportWidth="1256"
|
||||||
|
android:width="200dp"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
<path android:fillColor="#FFFFFF" android:pathData="M1165,764.1c-8.3,-36.4 -68.5,-141.3 -191.6,-234.4c-22.5,-17.1 -42.8,-31.3 -59.7,-42.6c24.6,-105.3 -103.3,-232.3 -228.1,-172.5C596,230.3 496.1,195.9 404.2,197.3c-243.3,3.4 -431,256.9 -229.1,498.8c0.1,0.1 0.2,0.2 0.4,0.4c3.1,3.7 6.3,7.4 9.5,11.1c13.1,15.7 21.8,29.6 29.2,54.1L274.4,959h-21.3c-19.6,0 -35.6,15.9 -35.6,35.6h80.8l135.8,64.2c8.4,-17.8 0.8,-39 -16.9,-47.3l-35.6,-16.8H484c0,-19.6 -15.9,-35.6 -35.6,-35.6h-92.8c-16.2,0 -30.6,-10.6 -35.3,-26.1l-47.7,-156.7c-11.9,-41.2 15.4,-68.1 41.1,-71.3c23.4,-2.9 35.2,12.2 46.2,48.8l42.4,139H381c-19.6,0 -35.6,15.9 -35.6,35.6h80.8L562,992.6c8.4,-17.8 0.8,-39 -16.9,-47.3l-35.6,-16.8h75.1c7.6,12.9 16.9,25.1 28,36.1c70,70 183.7,70 253.7,0s70,-183.7 0,-253.7s-183.7,-70 -253.7,0c-49.2,49.2 -63.9,120 -43.9,182h-85c-16.2,0 -30.6,-10.6 -35.3,-26.1L378,635.4l12,-6.4c167.1,-70.1 345.8,55.1 470.2,-65.2c0.3,-0.3 0.6,-0.6 0.8,-0.8c15.4,-14 30.8,-28.3 76.3,0.2c49,30.7 157.1,110.8 206.1,247.8C1143.5,811 1173.2,800.4 1165,764.1zM821.2,460.6c-0.4,-18.7 -15.6,-33.7 -34.5,-33.7c-19,0 -34.5,15.4 -34.5,34.5c0,10.4 4.6,19.6 11.8,25.9c-25,-4.8 -43.8,-26.6 -43.8,-52.9c0,-29.8 24.1,-53.9 53.9,-53.9c29.8,0 53.9,24.1 53.9,53.9C828,443.9 825.5,452.8 821.2,460.6z"
|
||||||
|
tools:ignore="VectorPath"/>
|
||||||
|
</vector>
|
27
app/src/main/res/drawable-night/kiwix_icon.xml
Normal file
27
app/src/main/res/drawable-night/kiwix_icon.xml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<!--
|
||||||
|
~ Kiwix Android
|
||||||
|
~ Copyright (c) 2021 Kiwix <android.kiwix.org>
|
||||||
|
~ This program is free software: you can redistribute it and/or modify
|
||||||
|
~ it under the terms of the GNU General Public License as published by
|
||||||
|
~ the Free Software Foundation, either version 3 of the License, or
|
||||||
|
~ (at your option) any later version.
|
||||||
|
~
|
||||||
|
~ This program is distributed in the hope that it will be useful,
|
||||||
|
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
~ GNU General Public License for more details.
|
||||||
|
~
|
||||||
|
~ You should have received a copy of the GNU General Public License
|
||||||
|
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
~
|
||||||
|
-->
|
||||||
|
<!-- changes for API 23 and lower -->
|
||||||
|
<vector android:height="100dp"
|
||||||
|
android:viewportHeight="1256"
|
||||||
|
android:viewportWidth="1256"
|
||||||
|
android:width="100dp"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
<path android:fillColor="#FFFFFF" android:pathData="M1165,764.1c-8.3,-36.4 -68.5,-141.3 -191.6,-234.4c-22.5,-17.1 -42.8,-31.3 -59.7,-42.6c24.6,-105.3 -103.3,-232.3 -228.1,-172.5C596,230.3 496.1,195.9 404.2,197.3c-243.3,3.4 -431,256.9 -229.1,498.8c0.1,0.1 0.2,0.2 0.4,0.4c3.1,3.7 6.3,7.4 9.5,11.1c13.1,15.7 21.8,29.6 29.2,54.1L274.4,959h-21.3c-19.6,0 -35.6,15.9 -35.6,35.6h80.8l135.8,64.2c8.4,-17.8 0.8,-39 -16.9,-47.3l-35.6,-16.8H484c0,-19.6 -15.9,-35.6 -35.6,-35.6h-92.8c-16.2,0 -30.6,-10.6 -35.3,-26.1l-47.7,-156.7c-11.9,-41.2 15.4,-68.1 41.1,-71.3c23.4,-2.9 35.2,12.2 46.2,48.8l42.4,139H381c-19.6,0 -35.6,15.9 -35.6,35.6h80.8L562,992.6c8.4,-17.8 0.8,-39 -16.9,-47.3l-35.6,-16.8h75.1c7.6,12.9 16.9,25.1 28,36.1c70,70 183.7,70 253.7,0s70,-183.7 0,-253.7s-183.7,-70 -253.7,0c-49.2,49.2 -63.9,120 -43.9,182h-85c-16.2,0 -30.6,-10.6 -35.3,-26.1L378,635.4l12,-6.4c167.1,-70.1 345.8,55.1 470.2,-65.2c0.3,-0.3 0.6,-0.6 0.8,-0.8c15.4,-14 30.8,-28.3 76.3,0.2c49,30.7 157.1,110.8 206.1,247.8C1143.5,811 1173.2,800.4 1165,764.1zM821.2,460.6c-0.4,-18.7 -15.6,-33.7 -34.5,-33.7c-19,0 -34.5,15.4 -34.5,34.5c0,10.4 4.6,19.6 11.8,25.9c-25,-4.8 -43.8,-26.6 -43.8,-52.9c0,-29.8 24.1,-53.9 53.9,-53.9c29.8,0 53.9,24.1 53.9,53.9C828,443.9 825.5,452.8 821.2,460.6z"
|
||||||
|
tools:ignore="VectorPath"/>
|
||||||
|
</vector>
|
@ -21,9 +21,6 @@
|
|||||||
android:opacity="opaque">
|
android:opacity="opaque">
|
||||||
<!-- The background color, preferably the same as your normal theme -->
|
<!-- The background color, preferably the same as your normal theme -->
|
||||||
<item android:drawable="@color/mine_shaft_gray900" />
|
<item android:drawable="@color/mine_shaft_gray900" />
|
||||||
<item>
|
<item android:drawable="@drawable/kiwix_icon"
|
||||||
<bitmap
|
android:gravity="center"/>
|
||||||
android:gravity="center"
|
|
||||||
android:src="@drawable/kiwix_icon_with_title" />
|
|
||||||
</item>
|
|
||||||
</layer-list>
|
</layer-list>
|
||||||
|
29
app/src/main/res/drawable-v24/kiwix_icon.xml
Normal file
29
app/src/main/res/drawable-v24/kiwix_icon.xml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<!--
|
||||||
|
~ Kiwix Android
|
||||||
|
~ Copyright (c) 2021 Kiwix <android.kiwix.org>
|
||||||
|
~ This program is free software: you can redistribute it and/or modify
|
||||||
|
~ it under the terms of the GNU General Public License as published by
|
||||||
|
~ the Free Software Foundation, either version 3 of the License, or
|
||||||
|
~ (at your option) any later version.
|
||||||
|
~
|
||||||
|
~ This program is distributed in the hope that it will be useful,
|
||||||
|
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
~ GNU General Public License for more details.
|
||||||
|
~
|
||||||
|
~ You should have received a copy of the GNU General Public License
|
||||||
|
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
~
|
||||||
|
-->
|
||||||
|
|
||||||
|
<vector android:height="200dp"
|
||||||
|
android:viewportHeight="1256"
|
||||||
|
android:viewportWidth="1256"
|
||||||
|
android:width="200dp"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
<path android:fillColor="#010101"
|
||||||
|
android:pathData="M1165,764.1c-8.3,-36.4 -68.5,-141.3 -191.6,-234.4c-22.5,-17.1 -42.8,-31.3 -59.7,-42.6c24.6,-105.3 -103.3,-232.3 -228.1,-172.5C596,230.3 496.1,195.9 404.2,197.3c-243.3,3.4 -431,256.9 -229.1,498.8c0.1,0.1 0.2,0.2 0.4,0.4c3.1,3.7 6.3,7.4 9.5,11.1c13.1,15.7 21.8,29.6 29.2,54.1L274.4,959h-21.3c-19.6,0 -35.6,15.9 -35.6,35.6h80.8l135.8,64.2c8.4,-17.8 0.8,-39 -16.9,-47.3l-35.6,-16.8H484c0,-19.6 -15.9,-35.6 -35.6,-35.6h-92.8c-16.2,0 -30.6,-10.6 -35.3,-26.1l-47.7,-156.7c-11.9,-41.2 15.4,-68.1 41.1,-71.3c23.4,-2.9 35.2,12.2 46.2,48.8l42.4,139h-21.3c-19.6,0 -35.6,15.9 -35.6,35.6h80.8l135.8,64.2c8.4,-17.8 0.8,-39 -16.9,-47.3l-35.6,-16.8h75.1c7.6,12.9 16.9,25.1 28,36.1c70,70 183.7,70 253.7,0s70,-183.7 0,-253.7s-183.7,-70 -253.7,0c-49.2,49.2 -63.9,120 -43.9,182h-85c-16.2,0 -30.6,-10.6 -35.3,-26.1L378,635.4l12,-6.4c167.1,-70.1 345.8,55.1 470.2,-65.2c0.3,-0.3 0.6,-0.6 0.8,-0.8c15.4,-14 30.8,-28.3 76.3,0.2c49,30.7 157.1,110.8 206.1,247.8C1143.5,811 1173.2,800.4 1165,764.1zM821.2,460.6c-0.4,-18.7 -15.6,-33.7 -34.5,-33.7c-19,0 -34.5,15.4 -34.5,34.5c0,10.4 4.6,19.6 11.8,25.9c-25,-4.8 -43.8,-26.6 -43.8,-52.9c0,-29.8 24.1,-53.9 53.9,-53.9c29.8,0 53.9,24.1 53.9,53.9C828,443.9 825.5,452.8 821.2,460.6z"
|
||||||
|
tools:ignore="VectorPath"
|
||||||
|
/>
|
||||||
|
</vector>
|
29
app/src/main/res/drawable/kiwix_icon.xml
Normal file
29
app/src/main/res/drawable/kiwix_icon.xml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<!--
|
||||||
|
~ Kiwix Android
|
||||||
|
~ Copyright (c) 2021 Kiwix <android.kiwix.org>
|
||||||
|
~ This program is free software: you can redistribute it and/or modify
|
||||||
|
~ it under the terms of the GNU General Public License as published by
|
||||||
|
~ the Free Software Foundation, either version 3 of the License, or
|
||||||
|
~ (at your option) any later version.
|
||||||
|
~
|
||||||
|
~ This program is distributed in the hope that it will be useful,
|
||||||
|
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
~ GNU General Public License for more details.
|
||||||
|
~
|
||||||
|
~ You should have received a copy of the GNU General Public License
|
||||||
|
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
~
|
||||||
|
-->
|
||||||
|
<!-- changes for API 23 and lower -->
|
||||||
|
<vector android:height="100dp"
|
||||||
|
android:viewportHeight="1256"
|
||||||
|
android:viewportWidth="1256"
|
||||||
|
android:width="100dp"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
<path android:fillColor="#010101"
|
||||||
|
android:pathData="M1165,764.1c-8.3,-36.4 -68.5,-141.3 -191.6,-234.4c-22.5,-17.1 -42.8,-31.3 -59.7,-42.6c24.6,-105.3 -103.3,-232.3 -228.1,-172.5C596,230.3 496.1,195.9 404.2,197.3c-243.3,3.4 -431,256.9 -229.1,498.8c0.1,0.1 0.2,0.2 0.4,0.4c3.1,3.7 6.3,7.4 9.5,11.1c13.1,15.7 21.8,29.6 29.2,54.1L274.4,959h-21.3c-19.6,0 -35.6,15.9 -35.6,35.6h80.8l135.8,64.2c8.4,-17.8 0.8,-39 -16.9,-47.3l-35.6,-16.8H484c0,-19.6 -15.9,-35.6 -35.6,-35.6h-92.8c-16.2,0 -30.6,-10.6 -35.3,-26.1l-47.7,-156.7c-11.9,-41.2 15.4,-68.1 41.1,-71.3c23.4,-2.9 35.2,12.2 46.2,48.8l42.4,139h-21.3c-19.6,0 -35.6,15.9 -35.6,35.6h80.8l135.8,64.2c8.4,-17.8 0.8,-39 -16.9,-47.3l-35.6,-16.8h75.1c7.6,12.9 16.9,25.1 28,36.1c70,70 183.7,70 253.7,0s70,-183.7 0,-253.7s-183.7,-70 -253.7,0c-49.2,49.2 -63.9,120 -43.9,182h-85c-16.2,0 -30.6,-10.6 -35.3,-26.1L378,635.4l12,-6.4c167.1,-70.1 345.8,55.1 470.2,-65.2c0.3,-0.3 0.6,-0.6 0.8,-0.8c15.4,-14 30.8,-28.3 76.3,0.2c49,30.7 157.1,110.8 206.1,247.8C1143.5,811 1173.2,800.4 1165,764.1zM821.2,460.6c-0.4,-18.7 -15.6,-33.7 -34.5,-33.7c-19,0 -34.5,15.4 -34.5,34.5c0,10.4 4.6,19.6 11.8,25.9c-25,-4.8 -43.8,-26.6 -43.8,-52.9c0,-29.8 24.1,-53.9 53.9,-53.9c29.8,0 53.9,24.1 53.9,53.9C828,443.9 825.5,452.8 821.2,460.6z"
|
||||||
|
tools:ignore="VectorPath"
|
||||||
|
/>
|
||||||
|
</vector>
|
@ -21,9 +21,6 @@
|
|||||||
android:opacity="opaque">
|
android:opacity="opaque">
|
||||||
<!-- The background color, preferably the same as your normal theme -->
|
<!-- The background color, preferably the same as your normal theme -->
|
||||||
<item android:drawable="@color/alabaster_white" />
|
<item android:drawable="@color/alabaster_white" />
|
||||||
<item>
|
<item android:drawable="@drawable/kiwix_icon"
|
||||||
<bitmap
|
android:gravity="center"/>
|
||||||
android:gravity="center"
|
|
||||||
android:src="@drawable/kiwix_icon_with_title" />
|
|
||||||
</item>
|
|
||||||
</layer-list>
|
</layer-list>
|
||||||
|
@ -20,8 +20,20 @@ package org.kiwix.kiwixmobile.core
|
|||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.net.Uri
|
||||||
|
import android.os.Build
|
||||||
|
import android.provider.Settings
|
||||||
|
import androidx.annotation.RequiresApi
|
||||||
|
|
||||||
object Intents {
|
object Intents {
|
||||||
@JvmStatic fun <T : Activity> internal(clazz: Class<T>): Intent =
|
@JvmStatic fun <T : Activity> internal(clazz: Class<T>): Intent =
|
||||||
Intent(clazz.canonicalName).setPackage(CoreApp.instance.packageName)
|
Intent(clazz.canonicalName).setPackage(CoreApp.instance.packageName)
|
||||||
}
|
}
|
||||||
|
@RequiresApi(Build.VERSION_CODES.R)
|
||||||
|
fun Activity.navigateToSettings() {
|
||||||
|
val intent = Intent().apply {
|
||||||
|
action = Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
|
||||||
|
data = Uri.fromParts("package", packageName, null)
|
||||||
|
}
|
||||||
|
startActivity(intent)
|
||||||
|
}
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
package org.kiwix.kiwixmobile.core.extensions
|
package org.kiwix.kiwixmobile.core.extensions
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.view.View
|
||||||
import android.view.inputmethod.InputMethodManager
|
import android.view.inputmethod.InputMethodManager
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
@ -41,4 +42,9 @@ fun Fragment.closeKeyboard() {
|
|||||||
inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0)
|
inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun View.closeKeyboard() {
|
||||||
|
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||||
|
imm.hideSoftInputFromWindow(windowToken, 0)
|
||||||
|
}
|
||||||
|
|
||||||
val Fragment.coreMainActivity get() = activity as CoreMainActivity
|
val Fragment.coreMainActivity get() = activity as CoreMainActivity
|
||||||
|
@ -42,6 +42,7 @@ import kotlinx.android.synthetic.main.layout_toolbar.toolbar
|
|||||||
import org.kiwix.kiwixmobile.core.R
|
import org.kiwix.kiwixmobile.core.R
|
||||||
import org.kiwix.kiwixmobile.core.base.BaseFragment
|
import org.kiwix.kiwixmobile.core.base.BaseFragment
|
||||||
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions
|
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions
|
||||||
|
import org.kiwix.kiwixmobile.core.extensions.closeKeyboard
|
||||||
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
|
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
|
||||||
import org.kiwix.kiwixmobile.core.page.adapter.OnItemClickListener
|
import org.kiwix.kiwixmobile.core.page.adapter.OnItemClickListener
|
||||||
import org.kiwix.kiwixmobile.core.page.adapter.Page
|
import org.kiwix.kiwixmobile.core.page.adapter.Page
|
||||||
@ -50,6 +51,7 @@ import org.kiwix.kiwixmobile.core.page.viewmodel.Action
|
|||||||
import org.kiwix.kiwixmobile.core.page.viewmodel.PageState
|
import org.kiwix.kiwixmobile.core.page.viewmodel.PageState
|
||||||
import org.kiwix.kiwixmobile.core.page.viewmodel.PageViewModel
|
import org.kiwix.kiwixmobile.core.page.viewmodel.PageViewModel
|
||||||
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
||||||
|
import org.kiwix.kiwixmobile.core.utils.SimpleRecyclerViewScrollListener
|
||||||
import org.kiwix.kiwixmobile.core.utils.SimpleTextListener
|
import org.kiwix.kiwixmobile.core.utils.SimpleTextListener
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@ -135,6 +137,13 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
|
|||||||
pageViewModel.actions.offer(Action.UserClickedShowAllToggle(isChecked))
|
pageViewModel.actions.offer(Action.UserClickedShowAllToggle(isChecked))
|
||||||
}
|
}
|
||||||
pageViewModel.state.observe(viewLifecycleOwner, Observer(::render))
|
pageViewModel.state.observe(viewLifecycleOwner, Observer(::render))
|
||||||
|
|
||||||
|
// hides keyboard when scrolled
|
||||||
|
recycler_view.addOnScrollListener(SimpleRecyclerViewScrollListener { _, newState ->
|
||||||
|
if (newState == RecyclerView.SCROLL_STATE_DRAGGING) {
|
||||||
|
recycler_view.closeKeyboard()
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
|
@ -62,6 +62,7 @@ public abstract class CorePrefsFragment extends PreferenceFragmentCompat impleme
|
|||||||
public static final String PREF_CLEAR_ALL_HISTORY = "pref_clear_all_history";
|
public static final String PREF_CLEAR_ALL_HISTORY = "pref_clear_all_history";
|
||||||
public static final String PREF_CLEAR_ALL_NOTES = "pref_clear_all_notes";
|
public static final String PREF_CLEAR_ALL_NOTES = "pref_clear_all_notes";
|
||||||
public static final String PREF_CREDITS = "pref_credits";
|
public static final String PREF_CREDITS = "pref_credits";
|
||||||
|
public static final String PREF_PERMISSION = "pref_permissions";
|
||||||
private static final int ZOOM_OFFSET = 2;
|
private static final int ZOOM_OFFSET = 2;
|
||||||
private static final int ZOOM_SCALE = 25;
|
private static final int ZOOM_SCALE = 25;
|
||||||
private static final String INTERNAL_TEXT_ZOOM = "text_zoom";
|
private static final String INTERNAL_TEXT_ZOOM = "text_zoom";
|
||||||
@ -174,6 +175,9 @@ public abstract class CorePrefsFragment extends PreferenceFragmentCompat impleme
|
|||||||
versionPref.setSummary(getVersionName() + " Build: " + getVersionCode());
|
versionPref.setSummary(getVersionName() + " Build: " + getVersionCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private int getVersionCode() {
|
private int getVersionCode() {
|
||||||
try {
|
try {
|
||||||
return getActivity().getPackageManager()
|
return getActivity().getPackageManager()
|
||||||
@ -282,4 +286,5 @@ public abstract class CorePrefsFragment extends PreferenceFragmentCompat impleme
|
|||||||
}
|
}
|
||||||
return Unit.INSTANCE;
|
return Unit.INSTANCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -140,6 +140,13 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) {
|
|||||||
|
|
||||||
fun updateNightMode() = nightModes.offer(nightMode)
|
fun updateNightMode() = nightModes.offer(nightMode)
|
||||||
|
|
||||||
|
var manageExternalFilesPermissionDialog: Boolean
|
||||||
|
get() = sharedPreferences.getBoolean(PREF_MANAGE_EXTERNAL_FILES, true)
|
||||||
|
set(prefManageExternalFilesPermissionDialog) =
|
||||||
|
sharedPreferences.edit {
|
||||||
|
putBoolean(PREF_MANAGE_EXTERNAL_FILES, prefManageExternalFilesPermissionDialog)
|
||||||
|
}
|
||||||
|
|
||||||
var hostedBooks: Set<String>
|
var hostedBooks: Set<String>
|
||||||
get() = sharedPreferences.getStringSet(PREF_HOSTED_BOOKS, null)?.toHashSet() ?: HashSet()
|
get() = sharedPreferences.getStringSet(PREF_HOSTED_BOOKS, null)?.toHashSet() ?: HashSet()
|
||||||
set(hostedBooks) {
|
set(hostedBooks) {
|
||||||
@ -172,5 +179,6 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) {
|
|||||||
const val PREF_NIGHT_MODE = "pref_night_mode"
|
const val PREF_NIGHT_MODE = "pref_night_mode"
|
||||||
private const val TEXT_ZOOM = "true_text_zoom"
|
private const val TEXT_ZOOM = "true_text_zoom"
|
||||||
private const val DEFAULT_ZOOM = 100
|
private const val DEFAULT_ZOOM = 100
|
||||||
|
private const val PREF_MANAGE_EXTERNAL_FILES = "pref_manage_external_files"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* Kiwix Android
|
||||||
|
* Copyright (c) 2021 Kiwix <android.kiwix.org>
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.kiwix.kiwixmobile.core.utils
|
||||||
|
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
|
||||||
|
class SimpleRecyclerViewScrollListener(
|
||||||
|
private val onLayoutScrollListener: (RecyclerView, Int) -> Unit
|
||||||
|
) :
|
||||||
|
RecyclerView.OnScrollListener() {
|
||||||
|
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
|
||||||
|
super.onScrollStateChanged(recyclerView, newState)
|
||||||
|
onLayoutScrollListener(
|
||||||
|
recyclerView,
|
||||||
|
newState
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
@ -84,6 +84,14 @@ sealed class KiwixDialog(
|
|||||||
cancelable = false
|
cancelable = false
|
||||||
)
|
)
|
||||||
|
|
||||||
|
object ManageExternalFilesPermissionDialog : KiwixDialog(
|
||||||
|
R.string.all_files_permission_needed,
|
||||||
|
R.string.all_files_permission_needed_message,
|
||||||
|
R.string.yes,
|
||||||
|
R.string.no,
|
||||||
|
cancelable = false
|
||||||
|
)
|
||||||
|
|
||||||
data class ShowHotspotDetails(override val args: List<Any>) : KiwixDialog(
|
data class ShowHotspotDetails(override val args: List<Any>) : KiwixDialog(
|
||||||
R.string.hotspot_turned_on,
|
R.string.hotspot_turned_on,
|
||||||
R.string.hotspot_details_message,
|
R.string.hotspot_details_message,
|
||||||
|
@ -68,6 +68,7 @@
|
|||||||
<string name="pref_clear_all_history_title">Clear history</string>
|
<string name="pref_clear_all_history_title">Clear history</string>
|
||||||
<string name="pref_clear_all_history_summary">Clear recent searches and tabs history</string>
|
<string name="pref_clear_all_history_summary">Clear recent searches and tabs history</string>
|
||||||
<string name="pref_notes">Notes</string>
|
<string name="pref_notes">Notes</string>
|
||||||
|
<string name="pref_permission">Permissions</string>
|
||||||
<string name="all_history_cleared">All History Cleared</string>
|
<string name="all_history_cleared">All History Cleared</string>
|
||||||
<string name="pref_clear_all_bookmarks_title">Clear bookmarks</string>
|
<string name="pref_clear_all_bookmarks_title">Clear bookmarks</string>
|
||||||
<string name="clear_all_history_dialog_title">Clear All History?</string>
|
<string name="clear_all_history_dialog_title">Clear All History?</string>
|
||||||
@ -255,6 +256,7 @@
|
|||||||
<string name="status" tools:keep="@string/status">Status</string>
|
<string name="status" tools:keep="@string/status">Status</string>
|
||||||
<string name="pref_clear_all_notes_summary">Clears all notes on all articles</string>
|
<string name="pref_clear_all_notes_summary">Clears all notes on all articles</string>
|
||||||
<string name="pref_clear_all_notes_title">Clear all notes</string>
|
<string name="pref_clear_all_notes_title">Clear all notes</string>
|
||||||
|
<string name="pref_allow_to_read_or_write_zim_files_on_sd_card">Allow to read and write ZIM files on SD card</string>
|
||||||
<string name="pref_text_zoom_summary">Change text size with 25\% increments.</string>
|
<string name="pref_text_zoom_summary">Change text size with 25\% increments.</string>
|
||||||
<string name="tag_pic">Pic</string>
|
<string name="tag_pic">Pic</string>
|
||||||
<string name="tag_vid">Vid</string>
|
<string name="tag_vid">Vid</string>
|
||||||
@ -289,6 +291,10 @@
|
|||||||
<string name="close_drawer">Close Drawer</string>
|
<string name="close_drawer">Close Drawer</string>
|
||||||
<string name="how_to_update_content">How to update content?</string>
|
<string name="how_to_update_content">How to update content?</string>
|
||||||
<string name="update_content_description">To update content (a zim file) you need to download the full latest version of this very same content. You can do that via the download section.</string>
|
<string name="update_content_description">To update content (a zim file) you need to download the full latest version of this very same content. You can do that via the download section.</string>
|
||||||
|
<string name="all_files_permission_needed">All Files Permission Needed</string>
|
||||||
|
<string name="all_files_permission_needed_message">In order to access all the zim files across device we need to have All Files Permission</string>
|
||||||
|
<string name="allowed">Allowed</string>
|
||||||
|
<string name="not_allowed">Not allowed</string>
|
||||||
<string-array name="pref_night_modes_entries">
|
<string-array name="pref_night_modes_entries">
|
||||||
<item>@string/on</item>
|
<item>@string/on</item>
|
||||||
<item>@string/off</item>
|
<item>@string/off</item>
|
||||||
|
@ -95,6 +95,18 @@
|
|||||||
android:title="@string/pref_clear_all_notes_title"
|
android:title="@string/pref_clear_all_notes_title"
|
||||||
app:iconSpaceReserved="false" />
|
app:iconSpaceReserved="false" />
|
||||||
|
|
||||||
|
</PreferenceCategory>
|
||||||
|
<PreferenceCategory
|
||||||
|
android:key="pref_permissions"
|
||||||
|
android:title="@string/pref_permission"
|
||||||
|
app:isPreferenceVisible="false"
|
||||||
|
app:iconSpaceReserved="false">
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:key="pref_manage_external_storage"
|
||||||
|
android:title="@string/pref_allow_to_read_or_write_zim_files_on_sd_card"
|
||||||
|
app:iconSpaceReserved="false" />
|
||||||
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:key="pref_language"
|
android:key="pref_language"
|
||||||
|
@ -32,7 +32,7 @@ class CustomPrefsFragment : CorePrefsFragment() {
|
|||||||
} else {
|
} else {
|
||||||
preferenceScreen.removePreference(findPreference("pref_language"))
|
preferenceScreen.removePreference(findPreference("pref_language"))
|
||||||
}
|
}
|
||||||
preferenceScreen.removePreference(findPreference(PREF_WIFI_ONLY))
|
preferenceScreen.removePreferenceRecursively(PREF_WIFI_ONLY)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setStorage() {
|
override fun setStorage() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user