mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-23 13:40:43 +01:00
RemoteFileBrowser: move currentPath to viewmodel, and fix title bar
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
This commit is contained in:
parent
2fd97856d8
commit
ffdadc6c01
@ -67,7 +67,6 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe
|
|||||||
private var filesSelectionDoneMenuItem: MenuItem? = null
|
private var filesSelectionDoneMenuItem: MenuItem? = null
|
||||||
|
|
||||||
private val selectedPaths: MutableSet<String> = Collections.synchronizedSet(TreeSet())
|
private val selectedPaths: MutableSet<String> = Collections.synchronizedSet(TreeSet())
|
||||||
private var currentPath: String = "/"
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
@ -88,7 +87,6 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe
|
|||||||
ResourcesCompat.getColor(resources, R.color.bg_default, null)
|
ResourcesCompat.getColor(resources, R.color.bg_default, null)
|
||||||
)
|
)
|
||||||
|
|
||||||
supportActionBar?.title = "current patch"
|
|
||||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||||
|
|
||||||
initViewModel()
|
initViewModel()
|
||||||
@ -97,10 +95,10 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe
|
|||||||
binding.swipeRefreshList.setColorSchemeResources(R.color.colorPrimary)
|
binding.swipeRefreshList.setColorSchemeResources(R.color.colorPrimary)
|
||||||
binding.swipeRefreshList.setProgressBackgroundColorSchemeResource(R.color.refresh_spinner_background)
|
binding.swipeRefreshList.setProgressBackgroundColorSchemeResource(R.color.refresh_spinner_background)
|
||||||
|
|
||||||
binding.pathNavigationBackButton.setOnClickListener { goBack() }
|
binding.pathNavigationBackButton.setOnClickListener { viewModel.navigateUp() }
|
||||||
binding.sortButton.setOnClickListener { changeSorting() }
|
binding.sortButton.setOnClickListener { changeSorting() }
|
||||||
|
|
||||||
viewModel.loadItems(currentPath)
|
viewModel.loadItems()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initViewModel() {
|
private fun initViewModel() {
|
||||||
@ -156,6 +154,12 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe
|
|||||||
binding.sortButton.setText(DisplayUtils.getSortOrderStringId(sortOrder))
|
binding.sortButton.setText(DisplayUtils.getSortOrderStringId(sortOrder))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
viewModel.currentPath.observe(this) { path ->
|
||||||
|
if (path != null) {
|
||||||
|
supportActionBar?.title = path
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
|
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
|
||||||
@ -168,8 +172,7 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe
|
|||||||
|
|
||||||
private fun onItemClicked(remoteFileBrowserItem: RemoteFileBrowserItem) {
|
private fun onItemClicked(remoteFileBrowserItem: RemoteFileBrowserItem) {
|
||||||
if ("inode/directory" == remoteFileBrowserItem.mimeType) {
|
if ("inode/directory" == remoteFileBrowserItem.mimeType) {
|
||||||
currentPath = remoteFileBrowserItem.path!!
|
viewModel.changePath(remoteFileBrowserItem.path!!)
|
||||||
viewModel.loadItems(currentPath)
|
|
||||||
} else {
|
} else {
|
||||||
toggleBrowserItemSelection(remoteFileBrowserItem.path!!)
|
toggleBrowserItemSelection(remoteFileBrowserItem.path!!)
|
||||||
}
|
}
|
||||||
@ -189,13 +192,6 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun goBack(): Boolean {
|
|
||||||
if (currentPath != "/") {
|
|
||||||
viewModel.loadItems(File(currentPath).parent!!)
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
return when (item.itemId) {
|
return when (item.itemId) {
|
||||||
android.R.id.home -> {
|
android.R.id.home -> {
|
||||||
@ -244,7 +240,7 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun refreshCurrentPath() {
|
private fun refreshCurrentPath() {
|
||||||
viewModel.loadItems(currentPath)
|
viewModel.loadItems()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun shouldPathBeSelectedDueToParent(currentPath: String): Boolean {
|
private fun shouldPathBeSelectedDueToParent(currentPath: String): Boolean {
|
||||||
|
@ -33,6 +33,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
|
|||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener
|
import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener
|
||||||
|
import java.io.File
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class RemoteFileBrowserItemsViewModel @Inject constructor(
|
class RemoteFileBrowserItemsViewModel @Inject constructor(
|
||||||
@ -59,6 +60,10 @@ class RemoteFileBrowserItemsViewModel @Inject constructor(
|
|||||||
val fileSortOrder: LiveData<FileSortOrderNew>
|
val fileSortOrder: LiveData<FileSortOrderNew>
|
||||||
get() = _fileSortOrder
|
get() = _fileSortOrder
|
||||||
|
|
||||||
|
private val _currentPath: MutableLiveData<String> = MutableLiveData(ROOT_PATH)
|
||||||
|
val currentPath: LiveData<String>
|
||||||
|
get() = _currentPath
|
||||||
|
|
||||||
init {
|
init {
|
||||||
appPreferences.registerSortingChangeListener(sortingPrefListener)
|
appPreferences.registerSortingChangeListener(sortingPrefListener)
|
||||||
}
|
}
|
||||||
@ -74,9 +79,9 @@ class RemoteFileBrowserItemsViewModel @Inject constructor(
|
|||||||
appPreferences.unregisterSortingChangeListener(sortingPrefListener)
|
appPreferences.unregisterSortingChangeListener(sortingPrefListener)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun loadItems(path: String) {
|
fun loadItems() {
|
||||||
_viewState.value = LoadingItemsState
|
_viewState.value = LoadingItemsState
|
||||||
repository.listFolder(path).subscribeOn(Schedulers.io())
|
repository.listFolder(currentPath.value!!).subscribeOn(Schedulers.io())
|
||||||
?.observeOn(AndroidSchedulers.mainThread())
|
?.observeOn(AndroidSchedulers.mainThread())
|
||||||
?.subscribe(RemoteFileBrowserItemsObserver())
|
?.subscribe(RemoteFileBrowserItemsObserver())
|
||||||
}
|
}
|
||||||
@ -126,6 +131,19 @@ class RemoteFileBrowserItemsViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun changePath(path: String) {
|
||||||
|
_currentPath.value = path
|
||||||
|
loadItems()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun navigateUp() {
|
||||||
|
val path = _currentPath.value
|
||||||
|
if (path!! != ROOT_PATH) {
|
||||||
|
_currentPath.value = File(path).parent!!
|
||||||
|
loadItems()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val TAG = RemoteFileBrowserItemsViewModel::class.simpleName
|
private val TAG = RemoteFileBrowserItemsViewModel::class.simpleName
|
||||||
private const val ROOT_PATH = "/"
|
private const val ROOT_PATH = "/"
|
||||||
|
Loading…
Reference in New Issue
Block a user