mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-08-03 10:46:53 -04:00
#770 Show extended detail for a book in a bottom sheet - add buttons - improve constraint Flow
This commit is contained in:
parent
bac4fa4e4d
commit
21554b99ca
@ -51,14 +51,16 @@ import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BooksOnDis
|
||||
import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BooksOnDiskListItem.BookOnDisk
|
||||
import org.kiwix.kiwixmobile.zim_manager.Fat32Checker.FileSystemState
|
||||
import org.kiwix.kiwixmobile.zim_manager.NetworkState.CONNECTED
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.MultiModeFinished
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestDeleteMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestOpen
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestSelect
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestShareMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestShowInfo
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RestartActionMode
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.MultiModeFinished
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestDelete
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestDeleteMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestOpen
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestSelect
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestShare
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestShareMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestShowInfo
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RestartActionMode
|
||||
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.FileSelectListState
|
||||
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects.DeleteFiles
|
||||
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects.None
|
||||
@ -89,15 +91,17 @@ class ZimManageViewModel @Inject constructor(
|
||||
private val defaultLanguageProvider: DefaultLanguageProvider,
|
||||
private val dataSource: DataSource
|
||||
) : ViewModel() {
|
||||
sealed class FileSelectActions {
|
||||
data class RequestOpen(val bookOnDisk: BookOnDisk) : FileSelectActions()
|
||||
data class RequestShowInfo(val bookOnDisk: BookOnDisk) : FileSelectActions()
|
||||
data class RequestSelect(val bookOnDisk: BookOnDisk) : FileSelectActions()
|
||||
data class RequestMultiSelection(val bookOnDisk: BookOnDisk) : FileSelectActions()
|
||||
object RequestDeleteMultiSelection : FileSelectActions()
|
||||
object RequestShareMultiSelection : FileSelectActions()
|
||||
object MultiModeFinished : FileSelectActions()
|
||||
object RestartActionMode : FileSelectActions()
|
||||
sealed class DeviceTabActions {
|
||||
data class RequestOpen(val bookOnDisk: BookOnDisk) : DeviceTabActions()
|
||||
data class RequestShare(val bookOnDisk: BookOnDisk) : DeviceTabActions()
|
||||
data class RequestDelete(val bookOnDisk: BookOnDisk) : DeviceTabActions()
|
||||
data class RequestShowInfo(val bookOnDisk: BookOnDisk) : DeviceTabActions()
|
||||
data class RequestSelect(val bookOnDisk: BookOnDisk) : DeviceTabActions()
|
||||
data class RequestMultiSelection(val bookOnDisk: BookOnDisk) : DeviceTabActions()
|
||||
object RequestDeleteMultiSelection : DeviceTabActions()
|
||||
object RequestShareMultiSelection : DeviceTabActions()
|
||||
object MultiModeFinished : DeviceTabActions()
|
||||
object RestartActionMode : DeviceTabActions()
|
||||
}
|
||||
|
||||
val sideEffects = PublishProcessor.create<SideEffect<Any?>>()
|
||||
@ -109,7 +113,7 @@ class ZimManageViewModel @Inject constructor(
|
||||
val networkStates = MutableLiveData<NetworkState>()
|
||||
|
||||
val requestFileSystemCheck = PublishProcessor.create<Unit>()
|
||||
val fileSelectActions = PublishProcessor.create<FileSelectActions>()
|
||||
val deviceTabActions = PublishProcessor.create<DeviceTabActions>()
|
||||
val requestDownloadLibrary = BehaviorProcessor.createDefault(Unit)
|
||||
val requestFiltering = BehaviorProcessor.createDefault("")
|
||||
val currentPage = PublishProcessor.create<Int>()
|
||||
@ -150,7 +154,7 @@ class ZimManageViewModel @Inject constructor(
|
||||
)
|
||||
}
|
||||
|
||||
private fun fileSelectActions() = fileSelectActions.subscribe({
|
||||
private fun fileSelectActions() = deviceTabActions.subscribe({
|
||||
sideEffects.offer(
|
||||
when (it) {
|
||||
is RequestOpen -> OpenFile(it.bookOnDisk)
|
||||
@ -159,11 +163,19 @@ class ZimManageViewModel @Inject constructor(
|
||||
RequestShareMultiSelection -> ShareFiles(selectionsFromState())
|
||||
MultiModeFinished -> noSideEffectAndClearSelectionState()
|
||||
is RequestSelect -> noSideEffectSelectBook(it.bookOnDisk)
|
||||
RestartActionMode -> StartMultiSelection(fileSelectActions)
|
||||
RestartActionMode -> StartMultiSelection(deviceTabActions)
|
||||
is RequestShowInfo -> {
|
||||
selectedInfoItem.postValue(it.bookOnDisk)
|
||||
ShowInfo()
|
||||
}
|
||||
is RequestShare -> {
|
||||
selectedInfoItem.postValue(null)
|
||||
ShareFiles(listOf(it.bookOnDisk))
|
||||
}
|
||||
is RequestDelete -> {
|
||||
selectedInfoItem.postValue(null)
|
||||
DeleteFiles(listOf(it.bookOnDisk))
|
||||
}
|
||||
}
|
||||
)
|
||||
}, Throwable::printStackTrace)
|
||||
@ -179,7 +191,7 @@ class ZimManageViewModel @Inject constructor(
|
||||
)
|
||||
)
|
||||
}
|
||||
return StartMultiSelection(fileSelectActions)
|
||||
return StartMultiSelection(deviceTabActions)
|
||||
}
|
||||
|
||||
private fun selectBook(
|
||||
|
@ -24,6 +24,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import kotlinx.android.synthetic.main.sheet_book_info.detail_article_count
|
||||
import kotlinx.android.synthetic.main.sheet_book_info.detail_creator
|
||||
@ -36,8 +37,11 @@ import kotlinx.android.synthetic.main.sheet_book_info.detail_publisher
|
||||
import kotlinx.android.synthetic.main.sheet_book_info.detail_size
|
||||
import kotlinx.android.synthetic.main.sheet_book_info.detail_tags
|
||||
import kotlinx.android.synthetic.main.sheet_book_info.detail_url
|
||||
import kotlinx.android.synthetic.main.sheet_book_info.info_sheet_delete
|
||||
import kotlinx.android.synthetic.main.sheet_book_info.info_sheet_description
|
||||
import kotlinx.android.synthetic.main.sheet_book_info.info_sheet_favicon
|
||||
import kotlinx.android.synthetic.main.sheet_book_info.info_sheet_open
|
||||
import kotlinx.android.synthetic.main.sheet_book_info.info_sheet_share
|
||||
import kotlinx.android.synthetic.main.sheet_book_info.info_sheet_title
|
||||
import org.kiwix.kiwixmobile.R
|
||||
import org.kiwix.kiwixmobile.core.downloader.model.Base64String
|
||||
@ -47,6 +51,9 @@ import org.kiwix.kiwixmobile.core.extensions.setBitmap
|
||||
import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BooksOnDiskListItem.BookOnDisk
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestDelete
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestOpen
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestShare
|
||||
import javax.inject.Inject
|
||||
|
||||
class BookInfoBottomSheetDialog : BottomSheetDialogFragment() {
|
||||
@ -60,7 +67,9 @@ class BookInfoBottomSheetDialog : BottomSheetDialogFragment() {
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View = inflater.inflate(R.layout.sheet_book_info, container, false)
|
||||
): View = inflater.inflate(R.layout.sheet_book_info, container, false).also {
|
||||
(dialog as BottomSheetDialog).dismissWithAnimation = true
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
@ -72,7 +81,16 @@ class BookInfoBottomSheetDialog : BottomSheetDialogFragment() {
|
||||
bookOnDisk?.let {
|
||||
render(it.book)
|
||||
detail_file.setDetail(it.file.absolutePath)
|
||||
}
|
||||
info_sheet_open.setOnClickListener {
|
||||
zimManageViewModel.deviceTabActions.offer(RequestOpen(bookOnDisk))
|
||||
}
|
||||
info_sheet_share.setOnClickListener {
|
||||
zimManageViewModel.deviceTabActions.offer(RequestShare(bookOnDisk))
|
||||
}
|
||||
info_sheet_delete.setOnClickListener {
|
||||
zimManageViewModel.deviceTabActions.offer(RequestDelete(bookOnDisk))
|
||||
}
|
||||
} ?: dismiss()
|
||||
}
|
||||
|
||||
private fun render(book: Book) {
|
||||
|
@ -40,19 +40,19 @@ import org.kiwix.kiwixmobile.core.base.BaseActivity
|
||||
import org.kiwix.kiwixmobile.core.base.BaseFragment
|
||||
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.viewModel
|
||||
import org.kiwix.kiwixmobile.core.extensions.toast
|
||||
import org.kiwix.kiwixmobile.core.utils.REQUEST_STORAGE_PERMISSION
|
||||
import org.kiwix.kiwixmobile.core.utils.LanguageUtils
|
||||
import org.kiwix.kiwixmobile.core.utils.REQUEST_STORAGE_PERMISSION
|
||||
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
||||
import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BookOnDiskDelegate.BookDelegate
|
||||
import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BookOnDiskDelegate.LanguageDelegate
|
||||
import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BooksOnDiskAdapter
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestOpen
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestSelect
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestShowInfo
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestOpen
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestSelect
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestShowInfo
|
||||
import javax.inject.Inject
|
||||
|
||||
private const val WAS_IN_ACTION_MODE = "WAS_IN_ACTION_MODE"
|
||||
@ -111,7 +111,7 @@ class ZimFileSelectFragment : BaseFragment() {
|
||||
zim_swiperefresh.isRefreshing = it!!
|
||||
})
|
||||
if (savedInstanceState != null && savedInstanceState.getBoolean(WAS_IN_ACTION_MODE)) {
|
||||
zimManageViewModel.fileSelectActions.offer(FileSelectActions.RestartActionMode)
|
||||
zimManageViewModel.deviceTabActions.offer(DeviceTabActions.RestartActionMode)
|
||||
}
|
||||
|
||||
disposable.add(zimManageViewModel.libraryTabIsVisible.subscribe { finishActionMode() })
|
||||
@ -154,9 +154,9 @@ class ZimFileSelectFragment : BaseFragment() {
|
||||
}
|
||||
|
||||
private fun offerAction(
|
||||
action: FileSelectActions
|
||||
action: DeviceTabActions
|
||||
) {
|
||||
zimManageViewModel.fileSelectActions.offer(action)
|
||||
zimManageViewModel.deviceTabActions.offer(action)
|
||||
}
|
||||
|
||||
private fun checkPermissions() {
|
||||
|
@ -24,20 +24,20 @@ import io.reactivex.processors.PublishProcessor
|
||||
import org.kiwix.kiwixmobile.R
|
||||
import org.kiwix.kiwixmobile.core.base.SideEffect
|
||||
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.startActionMode
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.MultiModeFinished
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestDeleteMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestShareMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.MultiModeFinished
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestDeleteMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestShareMultiSelection
|
||||
|
||||
data class StartMultiSelection(
|
||||
val fileSelectActions: PublishProcessor<FileSelectActions>
|
||||
val deviceTabActions: PublishProcessor<DeviceTabActions>
|
||||
) : SideEffect<ActionMode?> {
|
||||
override fun invokeWith(activity: AppCompatActivity): ActionMode? =
|
||||
activity.startActionMode(
|
||||
R.menu.menu_zim_files_contextual,
|
||||
mapOf(
|
||||
R.id.zim_file_delete_item to { fileSelectActions.offer(RequestDeleteMultiSelection) },
|
||||
R.id.zim_file_share_item to { fileSelectActions.offer(RequestShareMultiSelection) }
|
||||
R.id.zim_file_delete_item to { deviceTabActions.offer(RequestDeleteMultiSelection) },
|
||||
R.id.zim_file_share_item to { deviceTabActions.offer(RequestShareMultiSelection) }
|
||||
)
|
||||
) { fileSelectActions.offer(MultiModeFinished) }
|
||||
) { deviceTabActions.offer(MultiModeFinished) }
|
||||
}
|
||||
|
27
app/src/main/res/drawable-night/ic_delete_24dp.xml
Normal file
27
app/src/main/res/drawable-night/ic_delete_24dp.xml
Normal file
@ -0,0 +1,27 @@
|
||||
<!--
|
||||
~ Kiwix Android
|
||||
~ Copyright (c) 2020 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 xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"
|
||||
android:fillColor="#ffffff"/>
|
||||
</vector>
|
27
app/src/main/res/drawable-night/ic_open_24dp.xml
Normal file
27
app/src/main/res/drawable-night/ic_open_24dp.xml
Normal file
@ -0,0 +1,27 @@
|
||||
<!--
|
||||
~ Kiwix Android
|
||||
~ Copyright (c) 2020 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 xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M19,19H5V5h7V3H5c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2v-7h-2v7zM14,3v2h3.59l-9.83,9.83 1.41,1.41L19,6.41V10h2V3h-7z"
|
||||
android:fillColor="#ffffff"/>
|
||||
</vector>
|
27
app/src/main/res/drawable-night/ic_share_24dp.xml
Normal file
27
app/src/main/res/drawable-night/ic_share_24dp.xml
Normal file
@ -0,0 +1,27 @@
|
||||
<!--
|
||||
~ Kiwix Android
|
||||
~ Copyright (c) 2020 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 xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z"
|
||||
android:fillColor="#ffffff"/>
|
||||
</vector>
|
27
app/src/main/res/drawable/ic_delete_24dp.xml
Normal file
27
app/src/main/res/drawable/ic_delete_24dp.xml
Normal file
@ -0,0 +1,27 @@
|
||||
<!--
|
||||
~ Kiwix Android
|
||||
~ Copyright (c) 2020 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 xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"
|
||||
android:fillColor="#000000"/>
|
||||
</vector>
|
27
app/src/main/res/drawable/ic_open_24dp.xml
Normal file
27
app/src/main/res/drawable/ic_open_24dp.xml
Normal file
@ -0,0 +1,27 @@
|
||||
<!--
|
||||
~ Kiwix Android
|
||||
~ Copyright (c) 2020 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 xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M19,19H5V5h7V3H5c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2v-7h-2v7zM14,3v2h3.59l-9.83,9.83 1.41,1.41L19,6.41V10h2V3h-7z"
|
||||
android:fillColor="#000000"/>
|
||||
</vector>
|
27
app/src/main/res/drawable/ic_share_24dp.xml
Normal file
27
app/src/main/res/drawable/ic_share_24dp.xml
Normal file
@ -0,0 +1,27 @@
|
||||
<!--
|
||||
~ Kiwix Android
|
||||
~ Copyright (c) 2020 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 xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z"
|
||||
android:fillColor="#000000"/>
|
||||
</vector>
|
@ -12,5 +12,6 @@
|
||||
android:id="@+id/detail"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?textAppearanceBody2" />
|
||||
android:textAppearance="?textAppearanceBody2"
|
||||
android:textIsSelectable="true" />
|
||||
</merge>
|
||||
|
@ -2,9 +2,9 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/activity_horizontal_margin">
|
||||
android:paddingTop="@dimen/activity_horizontal_margin">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/info_sheet_title"
|
||||
@ -31,6 +31,8 @@
|
||||
android:id="@+id/info_sheet_description"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="@dimen/activity_horizontal_margin"
|
||||
android:paddingEnd="@dimen/activity_horizontal_margin"
|
||||
android:gravity="center"
|
||||
android:textAppearance="?textAppearanceBody1"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
@ -38,91 +40,129 @@
|
||||
app:layout_constraintTop_toBottomOf="@+id/info_sheet_favicon"
|
||||
tools:text="Description placeholder, I imagine this could be quite long so blah blah blah" />
|
||||
|
||||
<androidx.constraintlayout.helper.widget.Flow
|
||||
android:layout_width="0dp"
|
||||
<!--Without this I couldn't get the flow to respect padding/margins. Also tried with guidelines-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/flow_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:constraint_referenced_ids="detail_language,detail_creator,detail_publisher,detail_date,detail_article_count,detail_media_count,detail_size,detail_name,detail_url,detail_tags,detail_file"
|
||||
app:flow_wrapMode="aligned"
|
||||
android:paddingStart="@dimen/activity_horizontal_margin"
|
||||
android:paddingEnd="@dimen/activity_horizontal_margin"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/info_sheet_description" />
|
||||
app:layout_constraintTop_toBottomOf="@id/info_sheet_description">
|
||||
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_creator"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/creator"
|
||||
tools:ignore="MissingConstraints" />
|
||||
<androidx.constraintlayout.helper.widget.Flow
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:constraint_referenced_ids="detail_language,detail_creator,detail_publisher,detail_date,detail_article_count,detail_media_count,detail_size,detail_name,detail_url,detail_tags,detail_file"
|
||||
app:flow_horizontalGap="5dp"
|
||||
app:flow_horizontalStyle="spread"
|
||||
app:flow_wrapMode="chain"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_language"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/pref_language_title"
|
||||
tools:ignore="MissingConstraints" />
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_creator"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/creator"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_publisher"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/publisher"
|
||||
tools:ignore="MissingConstraints" />
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_language"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/pref_language_title"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/date"
|
||||
tools:ignore="MissingConstraints" />
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_publisher"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/publisher"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_article_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/article_count"
|
||||
tools:ignore="MissingConstraints" />
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/date"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_media_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/media_count"
|
||||
tools:ignore="MissingConstraints" />
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_article_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/article_count"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_size"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/size"
|
||||
tools:ignore="MissingConstraints" />
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_media_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/media_count"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/name"
|
||||
tools:ignore="MissingConstraints" />
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_size"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/size"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_url"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/url"
|
||||
tools:ignore="MissingConstraints" />
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/name"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_tags"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/tags"
|
||||
tools:ignore="MissingConstraints" />
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_url"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/url"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_file"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/path"
|
||||
tools:ignore="MissingConstraints" />
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_tags"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/tags"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
<org.kiwix.kiwixmobile.zim_manager.fileselect_view.DetailChip
|
||||
android:id="@+id/detail_file"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:label="@string/path"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/info_sheet_open"
|
||||
style="@style/info_sheet_button"
|
||||
android:drawableStart="@drawable/ic_open_24dp"
|
||||
android:text="@string/open"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/flow_container" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/info_sheet_share"
|
||||
style="@style/info_sheet_button"
|
||||
android:drawableStart="@drawable/ic_share_24dp"
|
||||
android:text="@string/share"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/info_sheet_open" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/info_sheet_delete"
|
||||
style="@style/info_sheet_button"
|
||||
android:drawableStart="@drawable/ic_delete_24dp"
|
||||
android:text="@string/delete"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/info_sheet_share" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
@ -28,4 +28,15 @@
|
||||
<item name="layout_constraintTop_toTopOf">parent</item>
|
||||
<item name="layout_constraintBottom_toBottomOf">parent</item>
|
||||
</style>
|
||||
|
||||
<style name="info_sheet_button">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">56dp</item>
|
||||
<item name="android:background">?selectableItemBackground</item>
|
||||
<item name="android:drawablePadding">32dp</item>
|
||||
<item name="android:gravity">center_vertical</item>
|
||||
<item name="android:paddingStart">16dp</item>
|
||||
<item name="android:paddingEnd">16dp</item>
|
||||
<item name="android:textAppearance">?textAppearanceBody1</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
@ -53,13 +53,13 @@ import org.kiwix.kiwixmobile.zim_manager.Fat32Checker.FileSystemState.CanWrite4G
|
||||
import org.kiwix.kiwixmobile.zim_manager.Fat32Checker.FileSystemState.CannotWrite4GbFile
|
||||
import org.kiwix.kiwixmobile.zim_manager.NetworkState.CONNECTED
|
||||
import org.kiwix.kiwixmobile.zim_manager.NetworkState.NOT_CONNECTED
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.MultiModeFinished
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestDeleteMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestOpen
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestSelect
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestShareMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RestartActionMode
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.MultiModeFinished
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestDeleteMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestOpen
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestSelect
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RequestShareMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.DeviceTabActions.RestartActionMode
|
||||
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.FileSelectListState
|
||||
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects.DeleteFiles
|
||||
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects.None
|
||||
@ -424,7 +424,7 @@ class ZimManageViewModelTest {
|
||||
fun `RequestOpen offers OpenFile`() {
|
||||
val bookOnDisk = bookOnDisk()
|
||||
viewModel.sideEffects.test()
|
||||
.also { viewModel.fileSelectActions.offer(RequestOpen(bookOnDisk)) }
|
||||
.also { viewModel.deviceTabActions.offer(RequestOpen(bookOnDisk)) }
|
||||
.assertValues(OpenFile(bookOnDisk))
|
||||
}
|
||||
|
||||
@ -440,8 +440,8 @@ class ZimManageViewModelTest {
|
||||
NORMAL
|
||||
)
|
||||
viewModel.sideEffects.test()
|
||||
.also { viewModel.fileSelectActions.offer(RequestMultiSelection(bookToSelect)) }
|
||||
.assertValues(StartMultiSelection(viewModel.fileSelectActions))
|
||||
.also { viewModel.deviceTabActions.offer(RequestMultiSelection(bookToSelect)) }
|
||||
.assertValues(StartMultiSelection(viewModel.deviceTabActions))
|
||||
viewModel.fileSelectListStates.test()
|
||||
.assertValue(
|
||||
FileSelectListState(
|
||||
@ -457,7 +457,7 @@ class ZimManageViewModelTest {
|
||||
viewModel.fileSelectListStates.value =
|
||||
FileSelectListState(listOf(selectedBook, bookOnDisk()), NORMAL)
|
||||
viewModel.sideEffects.test()
|
||||
.also { viewModel.fileSelectActions.offer(RequestDeleteMultiSelection) }
|
||||
.also { viewModel.deviceTabActions.offer(RequestDeleteMultiSelection) }
|
||||
.assertValues(DeleteFiles(listOf(selectedBook)))
|
||||
}
|
||||
|
||||
@ -467,7 +467,7 @@ class ZimManageViewModelTest {
|
||||
viewModel.fileSelectListStates.value =
|
||||
FileSelectListState(listOf(selectedBook, bookOnDisk()), NORMAL)
|
||||
viewModel.sideEffects.test()
|
||||
.also { viewModel.fileSelectActions.offer(RequestShareMultiSelection) }
|
||||
.also { viewModel.deviceTabActions.offer(RequestShareMultiSelection) }
|
||||
.assertValues(ShareFiles(listOf(selectedBook)))
|
||||
}
|
||||
|
||||
@ -477,7 +477,7 @@ class ZimManageViewModelTest {
|
||||
viewModel.fileSelectListStates.value =
|
||||
FileSelectListState(listOf(selectedBook, bookOnDisk()), NORMAL)
|
||||
viewModel.sideEffects.test()
|
||||
.also { viewModel.fileSelectActions.offer(MultiModeFinished) }
|
||||
.also { viewModel.deviceTabActions.offer(MultiModeFinished) }
|
||||
.assertValues(None)
|
||||
viewModel.fileSelectListStates.test().assertValue(
|
||||
FileSelectListState(
|
||||
@ -495,7 +495,7 @@ class ZimManageViewModelTest {
|
||||
viewModel.fileSelectListStates.value =
|
||||
FileSelectListState(listOf(selectedBook, bookOnDisk(1L)), NORMAL)
|
||||
viewModel.sideEffects.test()
|
||||
.also { viewModel.fileSelectActions.offer(RequestSelect(selectedBook)) }
|
||||
.also { viewModel.deviceTabActions.offer(RequestSelect(selectedBook)) }
|
||||
.assertValues(None)
|
||||
viewModel.fileSelectListStates.test().assertValue(
|
||||
FileSelectListState(
|
||||
@ -510,8 +510,8 @@ class ZimManageViewModelTest {
|
||||
@Test
|
||||
fun `RestartActionMode offers StartMultiSelection`() {
|
||||
viewModel.sideEffects.test()
|
||||
.also { viewModel.fileSelectActions.offer(RestartActionMode) }
|
||||
.assertValues(StartMultiSelection(viewModel.fileSelectActions))
|
||||
.also { viewModel.deviceTabActions.offer(RestartActionMode) }
|
||||
.assertValues(StartMultiSelection(viewModel.deviceTabActions))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -91,7 +91,7 @@ object Versions {
|
||||
|
||||
const val kiwixlib: String = "9.1.2"
|
||||
|
||||
const val material: String = "1.1.0-beta02" // available: "1.1.0"
|
||||
const val material: String = "1.1.0"
|
||||
|
||||
const val multidex: String = "2.0.1"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user