Show number of files & folders in current directory
This commit is contained in:
parent
1caabc2554
commit
36ab66fb43
@ -70,6 +70,8 @@ open class BaseExplorerActivity : BaseActivity() {
|
|||||||
private lateinit var refresher: SwipeRefreshLayout
|
private lateinit var refresher: SwipeRefreshLayout
|
||||||
private lateinit var textDirEmpty: TextView
|
private lateinit var textDirEmpty: TextView
|
||||||
private lateinit var currentPathText: TextView
|
private lateinit var currentPathText: TextView
|
||||||
|
private lateinit var numberOfFilesText: TextView
|
||||||
|
private lateinit var numberOfFoldersText: TextView
|
||||||
private lateinit var totalSizeText: TextView
|
private lateinit var totalSizeText: TextView
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
@ -89,6 +91,8 @@ open class BaseExplorerActivity : BaseActivity() {
|
|||||||
refresher = findViewById(R.id.refresher)
|
refresher = findViewById(R.id.refresher)
|
||||||
textDirEmpty = findViewById(R.id.text_dir_empty)
|
textDirEmpty = findViewById(R.id.text_dir_empty)
|
||||||
currentPathText = findViewById(R.id.current_path_text)
|
currentPathText = findViewById(R.id.current_path_text)
|
||||||
|
numberOfFilesText = findViewById(R.id.number_of_files_text)
|
||||||
|
numberOfFoldersText = findViewById(R.id.number_of_folders_text)
|
||||||
totalSizeText = findViewById(R.id.total_size_text)
|
totalSizeText = findViewById(R.id.total_size_text)
|
||||||
supportActionBar?.apply {
|
supportActionBar?.apply {
|
||||||
setDisplayShowCustomEnabled(true)
|
setDisplayShowCustomEnabled(true)
|
||||||
@ -140,13 +144,13 @@ open class BaseExplorerActivity : BaseActivity() {
|
|||||||
layoutIcon.setImageResource(if (isUsingListLayout) {
|
layoutIcon.setImageResource(if (isUsingListLayout) {
|
||||||
recycler_view_explorer.layoutManager = linearLayoutManager
|
recycler_view_explorer.layoutManager = linearLayoutManager
|
||||||
explorerAdapter.isUsingListLayout = true
|
explorerAdapter.isUsingListLayout = true
|
||||||
R.drawable.icon_view_list
|
R.drawable.icon_view_grid
|
||||||
} else {
|
} else {
|
||||||
val displayMetrics = resources.displayMetrics
|
val displayMetrics = resources.displayMetrics
|
||||||
val columnsNumber = (displayMetrics.widthPixels / displayMetrics.density / 200 + 0.5).toInt()
|
val columnsNumber = (displayMetrics.widthPixels / displayMetrics.density / 200 + 0.5).toInt()
|
||||||
recycler_view_explorer.layoutManager = GridLayoutManager(this, columnsNumber)
|
recycler_view_explorer.layoutManager = GridLayoutManager(this, columnsNumber)
|
||||||
explorerAdapter.isUsingListLayout = false
|
explorerAdapter.isUsingListLayout = false
|
||||||
R.drawable.icon_view_grid
|
R.drawable.icon_view_list
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -266,6 +270,21 @@ open class BaseExplorerActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun displayNumberOfElements(textView: TextView, stringIdSingular: Int, stringIdPlural: Int, count: Int) {
|
||||||
|
with(textView) {
|
||||||
|
visibility = if (count == 0) {
|
||||||
|
View.GONE
|
||||||
|
} else {
|
||||||
|
text = if (count == 1) {
|
||||||
|
getString(stringIdSingular)
|
||||||
|
} else {
|
||||||
|
getString(stringIdPlural, count)
|
||||||
|
}
|
||||||
|
View.VISIBLE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected fun setCurrentPath(path: String, onDisplayed: (() -> Unit)? = null) {
|
protected fun setCurrentPath(path: String, onDisplayed: (() -> Unit)? = null) {
|
||||||
synchronized(this) {
|
synchronized(this) {
|
||||||
explorerElements = gocryptfsVolume.listDir(path)
|
explorerElements = gocryptfsVolume.listDir(path)
|
||||||
@ -279,6 +298,8 @@ open class BaseExplorerActivity : BaseActivity() {
|
|||||||
textDirEmpty.visibility = if (explorerElements.size == 0) View.VISIBLE else View.GONE
|
textDirEmpty.visibility = if (explorerElements.size == 0) View.VISIBLE else View.GONE
|
||||||
currentDirectoryPath = path
|
currentDirectoryPath = path
|
||||||
currentPathText.text = getString(R.string.location, currentDirectoryPath)
|
currentPathText.text = getString(R.string.location, currentDirectoryPath)
|
||||||
|
displayNumberOfElements(numberOfFilesText, R.string.one_file, R.string.multiple_files, explorerElements.count { it.isRegularFile })
|
||||||
|
displayNumberOfElements(numberOfFoldersText, R.string.one_folder, R.string.multiple_folders, explorerElements.count { it.isDirectory })
|
||||||
if (mapFolders) {
|
if (mapFolders) {
|
||||||
Thread {
|
Thread {
|
||||||
var totalSize: Long = 0
|
var totalSize: Long = 0
|
||||||
|
@ -1,24 +1,62 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="50dp"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
android:background="?attr/infoBarBackgroundColor"
|
android:background="?attr/infoBarBackgroundColor"
|
||||||
android:paddingHorizontal="20dp">
|
android:paddingVertical="5dp">
|
||||||
|
|
||||||
<TextView
|
<LinearLayout
|
||||||
android:id="@+id/current_path_text"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
style="@style/infoBarTextView"
|
android:orientation="vertical"
|
||||||
android:singleLine="true"
|
android:layout_marginStart="10dp"
|
||||||
android:ellipsize="start"
|
android:layout_marginEnd="10dp"
|
||||||
app:layout_constraintHorizontal_chainStyle="packed"
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
app:layout_constraintHorizontal_bias="0"
|
app:layout_constraintHorizontal_bias="0"
|
||||||
app:layout_constrainedWidth="true"
|
app:layout_constrainedWidth="true"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/layout_icon">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/current_path_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
style="@style/infoBarTextView"
|
||||||
|
android:layout_marginBottom="5dp"/>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/number_of_files_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
style="@style/infoBarTextView"
|
||||||
|
android:layout_marginEnd="16sp"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintHorizontal_bias="0"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/number_of_folders_text"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/number_of_folders_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
style="@style/infoBarTextView"
|
||||||
|
android:layout_marginEnd="16sp"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintHorizontal_bias="0"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/number_of_files_text"
|
||||||
app:layout_constraintEnd_toStartOf="@id/total_size_text"/>
|
app:layout_constraintEnd_toStartOf="@id/total_size_text"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -27,16 +65,20 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
style="@style/infoBarTextView"
|
style="@style/infoBarTextView"
|
||||||
android:text="@string/default_total_size"
|
android:text="@string/default_total_size"
|
||||||
android:layout_marginHorizontal="20dp"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toEndOf="@id/current_path_text"
|
app:layout_constraintStart_toEndOf="@id/number_of_folders_text"
|
||||||
app:layout_constraintEnd_toStartOf="@id/layout_icon"/>
|
app:layout_constraintEnd_toEndOf="parent"/>
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/layout_icon"
|
android:id="@+id/layout_icon"
|
||||||
android:layout_width="30dp"
|
android:layout_width="30dp"
|
||||||
android:layout_height="30dp"
|
android:layout_height="30dp"
|
||||||
|
android:layout_marginEnd="20dp"
|
||||||
android:src="@drawable/icon_view_grid"
|
android:src="@drawable/icon_view_grid"
|
||||||
android:background="?attr/selectableItemBackgroundBorderless"
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:contentDescription="@string/switch_display_layout"
|
android:contentDescription="@string/switch_display_layout"
|
||||||
|
@ -234,4 +234,8 @@
|
|||||||
<string name="new_volume_name">New volume name:</string>
|
<string name="new_volume_name">New volume name:</string>
|
||||||
<string name="volume_rename_failed">Failed to rename volume</string>
|
<string name="volume_rename_failed">Failed to rename volume</string>
|
||||||
<string name="switch_display_layout">Switch display layout</string>
|
<string name="switch_display_layout">Switch display layout</string>
|
||||||
|
<string name="one_file">1 file</string>
|
||||||
|
<string name="multiple_files">%d files</string>
|
||||||
|
<string name="one_folder">1 folder</string>
|
||||||
|
<string name="multiple_folders">%d folders</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user