properly refresh the screen on device rotation

This commit is contained in:
tibbi
2018-02-12 19:06:41 +01:00
parent 46bd091a56
commit 661fbc1a36
2 changed files with 18 additions and 7 deletions

View File

@ -33,6 +33,7 @@ class MainActivity : SimpleActivity() {
var isSearchOpen = false var isSearchOpen = false
private val BACK_PRESS_TIMEOUT = 5000 private val BACK_PRESS_TIMEOUT = 5000
private val PICKED_PATH = "picked_path"
private var wasBackJustPressed = false private var wasBackJustPressed = false
private var searchMenuItem: MenuItem? = null private var searchMenuItem: MenuItem? = null
@ -120,6 +121,16 @@ class MainActivity : SimpleActivity() {
return true return true
} }
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString(PICKED_PATH, (fragment_holder as ItemsFragment).currentPath)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
openPath(savedInstanceState.getString(PICKED_PATH), true)
}
private fun storeStateVariables() { private fun storeStateVariables() {
storedUseEnglish = config.useEnglish storedUseEnglish = config.useEnglish
} }
@ -186,7 +197,7 @@ class MainActivity : SimpleActivity() {
} }
} }
private fun openPath(path: String) { private fun openPath(path: String, forceRefresh: Boolean = false) {
var newPath = path var newPath = path
val file = File(path) val file = File(path)
if (file.exists() && !file.isDirectory) { if (file.exists() && !file.isDirectory) {
@ -195,7 +206,7 @@ class MainActivity : SimpleActivity() {
newPath = internalStoragePath newPath = internalStoragePath
} }
(fragment_holder as ItemsFragment).openPath(newPath) (fragment_holder as ItemsFragment).openPath(newPath, forceRefresh)
} }
private fun goHome() { private fun goHome() {

View File

@ -37,10 +37,10 @@ class ItemsFragment : Fragment(), ItemOperationsListener, Breadcrumbs.Breadcrumb
var isGetRingtonePicker = false var isGetRingtonePicker = false
var isPickMultipleIntent = false var isPickMultipleIntent = false
var isFirstResume = true var isFirstResume = true
var storedItems = ArrayList<FileDirItem>()
private var showHidden = false private var showHidden = false
private var skipItemUpdating = false private var skipItemUpdating = false
private var storedItems = ArrayList<FileDirItem>()
private var scrollStates = HashMap<String, Parcelable>() private var scrollStates = HashMap<String, Parcelable>()
private var storedTextColor = 0 private var storedTextColor = 0
@ -109,7 +109,7 @@ class ItemsFragment : Fragment(), ItemOperationsListener, Breadcrumbs.Breadcrumb
} }
} }
fun openPath(path: String) { fun openPath(path: String, forceRefresh: Boolean = false) {
if (!isAdded || (activity as? BaseSimpleActivity)?.isAskingPermissions == true) { if (!isAdded || (activity as? BaseSimpleActivity)?.isAskingPermissions == true) {
return return
} }
@ -130,17 +130,17 @@ class ItemsFragment : Fragment(), ItemOperationsListener, Breadcrumbs.Breadcrumb
FileDirItem.sorting = context!!.config.getFolderSorting(currentPath) FileDirItem.sorting = context!!.config.getFolderSorting(currentPath)
fileDirItems.sort() fileDirItems.sort()
activity!!.runOnUiThread { activity!!.runOnUiThread {
addItems(fileDirItems) addItems(fileDirItems, forceRefresh)
} }
} }
} }
private fun addItems(items: ArrayList<FileDirItem>) { private fun addItems(items: ArrayList<FileDirItem>, forceRefresh: Boolean = false) {
skipItemUpdating = false skipItemUpdating = false
mView.apply { mView.apply {
activity?.runOnUiThread { activity?.runOnUiThread {
items_swipe_refresh?.isRefreshing = false items_swipe_refresh?.isRefreshing = false
if (items.hashCode() == storedItems.hashCode()) { if (!forceRefresh && items.hashCode() == storedItems.hashCode()) {
return@runOnUiThread return@runOnUiThread
} }