prefix all library resources with smtfp
@@ -129,7 +129,7 @@ class Breadcrumbs(context: Context, attrs: AttributeSet) : LinearLayout(context,
|
||||
}
|
||||
|
||||
fun addBreadcrumb(item: FileDirItem, addPrefix: Boolean) {
|
||||
val view = mInflater!!.inflate(R.layout.breadcrumb_item, null, false)
|
||||
val view = mInflater!!.inflate(R.layout.smtfp_breadcrumb_item, null, false)
|
||||
val textView = view.findViewById(R.id.breadcrumb_text) as TextView
|
||||
|
||||
var textToAdd = item.name
|
||||
|
@@ -13,7 +13,7 @@ import com.simplemobiletools.filepicker.R
|
||||
import com.simplemobiletools.filepicker.extensions.formatSize
|
||||
import com.simplemobiletools.filepicker.extensions.getColoredIcon
|
||||
import com.simplemobiletools.filepicker.models.FileDirItem
|
||||
import kotlinx.android.synthetic.main.list_item.view.*
|
||||
import kotlinx.android.synthetic.main.smtfp_list_item.view.*
|
||||
|
||||
class ItemsAdapter(context: Context, private val mItems: List<FileDirItem>) : BaseAdapter() {
|
||||
private val mInflater: LayoutInflater
|
||||
@@ -25,15 +25,15 @@ class ItemsAdapter(context: Context, private val mItems: List<FileDirItem>) : Ba
|
||||
mInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
||||
|
||||
mRes = context.resources
|
||||
mDirectoryBmp = mRes.getColoredIcon(R.color.thumbnail_grey, R.mipmap.directory)
|
||||
mFileBmp = mRes.getColoredIcon(R.color.thumbnail_grey, R.mipmap.file)
|
||||
mDirectoryBmp = mRes.getColoredIcon(R.color.smtfp_thumbnail_grey, R.mipmap.directory)
|
||||
mFileBmp = mRes.getColoredIcon(R.color.smtfp_thumbnail_grey, R.mipmap.file)
|
||||
}
|
||||
|
||||
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
|
||||
var view = convertView
|
||||
val viewHolder: ViewHolder
|
||||
if (view == null) {
|
||||
view = mInflater.inflate(R.layout.list_item, parent, false)
|
||||
view = mInflater.inflate(R.layout.smtfp_list_item, parent, false)
|
||||
viewHolder = ViewHolder(view)
|
||||
view!!.tag = viewHolder
|
||||
} else {
|
||||
|
@@ -1,126 +0,0 @@
|
||||
package com.simplemobiletools.filepicker.dialogs
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.Dialog
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.support.v4.app.DialogFragment
|
||||
import android.support.v7.app.AlertDialog
|
||||
import android.view.View
|
||||
import com.simplemobiletools.filepicker.R
|
||||
import com.simplemobiletools.filepicker.adapters.ItemsAdapter
|
||||
import com.simplemobiletools.filepicker.extensions.getFilenameFromPath
|
||||
import com.simplemobiletools.filepicker.models.FileDirItem
|
||||
import kotlinx.android.synthetic.main.directory_picker.view.*
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
import kotlin.comparisons.compareBy
|
||||
|
||||
class SelectFolderDialog : DialogFragment() {
|
||||
val SELECT_FOLDER_REQUEST = 1
|
||||
val SELECT_FOLDER_PATH = "path"
|
||||
|
||||
companion object {
|
||||
lateinit var mPath: String
|
||||
var mFirstUpdate: Boolean = true
|
||||
|
||||
fun newInstance(path: String): SelectFolderDialog {
|
||||
mPath = path
|
||||
mFirstUpdate = true
|
||||
return SelectFolderDialog()
|
||||
}
|
||||
}
|
||||
|
||||
lateinit var dialog: View
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
dialog = activity.layoutInflater.inflate(R.layout.directory_picker, null)
|
||||
|
||||
updateItems()
|
||||
setupBreadcrumbs()
|
||||
|
||||
return AlertDialog.Builder(activity)
|
||||
.setTitle(resources.getString(R.string.smtfp_select_destination))
|
||||
.setView(dialog)
|
||||
.setPositiveButton(R.string.smtfp_ok) { dialog, which -> sendResult() }
|
||||
.setNegativeButton(R.string.smtfp_cancel, null)
|
||||
.create()
|
||||
}
|
||||
|
||||
private fun updateItems() {
|
||||
var items = getItems(mPath)
|
||||
if (!containsDirectory(items) && !mFirstUpdate) {
|
||||
sendResult()
|
||||
return
|
||||
}
|
||||
|
||||
items = items.sortedWith(compareBy({ !it.isDirectory }, { it.name }))
|
||||
|
||||
val adapter = ItemsAdapter(context, items)
|
||||
dialog.directory_picker_list.adapter = adapter
|
||||
//dialog.directory_picker_breadcrumbs.setInitialBreadcrumb(mPath)
|
||||
dialog.directory_picker_list.setOnItemClickListener { adapterView, view, position, id ->
|
||||
val item = items[position]
|
||||
if (item.isDirectory) {
|
||||
mPath = item.path
|
||||
updateItems()
|
||||
}
|
||||
}
|
||||
|
||||
mFirstUpdate = false
|
||||
}
|
||||
|
||||
private fun sendResult() {
|
||||
val intent = Intent()
|
||||
intent.putExtra(SELECT_FOLDER_PATH, mPath)
|
||||
targetFragment.onActivityResult(SELECT_FOLDER_REQUEST, Activity.RESULT_OK, intent)
|
||||
dismiss()
|
||||
}
|
||||
|
||||
private fun setupBreadcrumbs() {
|
||||
/*dialog.directory_picker_breadcrumbs.setListener { id ->
|
||||
val item = dialog.directory_picker_breadcrumbs.getChildAt(id).tag as FileDirItem
|
||||
mPath = item.path
|
||||
updateItems()
|
||||
}*/
|
||||
}
|
||||
|
||||
private fun getItems(path: String): List<FileDirItem> {
|
||||
//val showHidden = Config.newInstance(context).showHidden
|
||||
val items = ArrayList<FileDirItem>()
|
||||
val base = File(path)
|
||||
val files = base.listFiles()
|
||||
if (files != null) {
|
||||
for (file in files) {
|
||||
if (!file.isDirectory)
|
||||
continue
|
||||
|
||||
/* if (!showHidden && file.isHidden)
|
||||
continue*/
|
||||
|
||||
val curPath = file.absolutePath
|
||||
val curName = curPath.getFilenameFromPath()
|
||||
val size = file.length()
|
||||
|
||||
items.add(FileDirItem(curPath, curName, file.isDirectory, getChildren(file), size))
|
||||
}
|
||||
}
|
||||
return items
|
||||
}
|
||||
|
||||
private fun getChildren(file: File): Int {
|
||||
if (file.listFiles() == null || !file.isDirectory)
|
||||
return 0
|
||||
|
||||
return file.listFiles().size
|
||||
}
|
||||
|
||||
private fun containsDirectory(items: List<FileDirItem>): Boolean {
|
||||
for (item in items) {
|
||||
if (item.isDirectory) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
@@ -10,7 +10,7 @@ import android.view.WindowManager
|
||||
import android.widget.LinearLayout
|
||||
import com.simplemobiletools.filepicker.R
|
||||
import com.simplemobiletools.filepicker.models.FileDirItem
|
||||
import kotlinx.android.synthetic.main.breadcrumb_item.view.*
|
||||
import kotlinx.android.synthetic.main.smtfp_breadcrumb_item.view.*
|
||||
|
||||
class Breadcrumbs(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs), View.OnClickListener {
|
||||
private var mDeviceWidth: Int = 0
|
||||
@@ -130,7 +130,7 @@ class Breadcrumbs(context: Context, attrs: AttributeSet) : LinearLayout(context,
|
||||
}
|
||||
|
||||
fun addBreadcrumb(item: FileDirItem, addPrefix: Boolean) {
|
||||
val view = mInflater!!.inflate(R.layout.breadcrumb_item, null, false)
|
||||
val view = mInflater!!.inflate(R.layout.smtfp_breadcrumb_item, null, false)
|
||||
|
||||
var textToAdd = item.name
|
||||
if (addPrefix)
|
||||
|
@@ -3,12 +3,12 @@
|
||||
<item>
|
||||
<selector>
|
||||
<item
|
||||
android:drawable="@color/activated_item_foreground"
|
||||
android:drawable="@color/smtfp_activated_item_foreground"
|
||||
android:state_activated="true"/>
|
||||
</selector>
|
||||
</item>
|
||||
<item>
|
||||
<ripple android:color="@color/pressed_item_foreground">
|
||||
<ripple android:color="@color/smtfp_pressed_item_foreground">
|
||||
<item android:id="@android:id/mask">
|
||||
<color android:color="@android:color/white"/>
|
||||
</item>
|
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/pressed_item_foreground" android:state_pressed="true"/>
|
||||
<item android:drawable="@color/activated_item_foreground" android:state_activated="true"/>
|
||||
</selector>
|
5
library/src/main/res/drawable/smtfp_selector.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/smtfp_pressed_item_foreground" android:state_pressed="true"/>
|
||||
<item android:drawable="@color/smtfp_activated_item_foreground" android:state_activated="true"/>
|
||||
</selector>
|
@@ -10,7 +10,7 @@
|
||||
android:id="@+id/directory_picker_breadcrumbs"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="@dimen/activity_margin"/>
|
||||
android:padding="@dimen/smtfp_activity_margin"/>
|
||||
|
||||
<ListView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
@@ -3,21 +3,21 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:foreground="@drawable/selector">
|
||||
android:foreground="@drawable/smtfp_selector">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/item_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingRight="@dimen/activity_margin">
|
||||
android:paddingRight="@dimen/smtfp_activity_margin">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/item_icon"
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:paddingBottom="@dimen/medium_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:src="@mipmap/directory"/>
|
||||
android:layout_width="@dimen/smtfp_icon_size"
|
||||
android:layout_height="@dimen/smtfp_icon_size"
|
||||
android:paddingBottom="@dimen/smtfp_medium_margin"
|
||||
android:paddingTop="@dimen/smtfp_medium_margin"
|
||||
android:src="@mipmap/smtfp_directory"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_name"
|
||||
@@ -27,8 +27,8 @@
|
||||
android:layout_toRightOf="@+id/item_icon"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="3"
|
||||
android:paddingLeft="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/small_margin"
|
||||
android:paddingLeft="@dimen/smtfp_small_margin"
|
||||
android:paddingTop="@dimen/smtfp_small_margin"
|
||||
android:text="Directory"/>
|
||||
|
||||
<TextView
|
||||
@@ -37,9 +37,9 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/item_name"
|
||||
android:layout_toRightOf="@+id/item_icon"
|
||||
android:paddingLeft="@dimen/small_margin"
|
||||
android:paddingLeft="@dimen/smtfp_small_margin"
|
||||
android:text="1 KB"
|
||||
android:textSize="@dimen/details_text_size"/>
|
||||
android:textSize="@dimen/smtfp_details_text_size"/>
|
||||
|
||||
</RelativeLayout>
|
||||
</FrameLayout>
|
Before Width: | Height: | Size: 135 B After Width: | Height: | Size: 135 B |
Before Width: | Height: | Size: 153 B After Width: | Height: | Size: 153 B |
Before Width: | Height: | Size: 122 B After Width: | Height: | Size: 122 B |
Before Width: | Height: | Size: 133 B After Width: | Height: | Size: 133 B |
Before Width: | Height: | Size: 181 B After Width: | Height: | Size: 181 B |
Before Width: | Height: | Size: 206 B After Width: | Height: | Size: 206 B |
Before Width: | Height: | Size: 245 B After Width: | Height: | Size: 245 B |
Before Width: | Height: | Size: 283 B After Width: | Height: | Size: 283 B |
Before Width: | Height: | Size: 325 B After Width: | Height: | Size: 325 B |
Before Width: | Height: | Size: 372 B After Width: | Height: | Size: 372 B |
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="thumbnail_grey">#33000000</color>
|
||||
<color name="pressed_item_foreground">#08000000</color>
|
||||
<color name="activated_item_foreground">#44888888</color>
|
||||
<color name="smtfp_thumbnail_grey">#33000000</color>
|
||||
<color name="smtfp_pressed_item_foreground">#08000000</color>
|
||||
<color name="smtfp_activated_item_foreground">#44888888</color>
|
||||
</resources>
|
||||
|
@@ -1,9 +1,9 @@
|
||||
<resources>
|
||||
<dimen name="activity_margin">16dp</dimen>
|
||||
<dimen name="small_margin">6dp</dimen>
|
||||
<dimen name="medium_margin">10dp</dimen>
|
||||
<dimen name="smtfp_activity_margin">16dp</dimen>
|
||||
<dimen name="smtfp_small_margin">6dp</dimen>
|
||||
<dimen name="smtfp_medium_margin">10dp</dimen>
|
||||
<dimen name="icon_size">48dp</dimen>
|
||||
|
||||
<dimen name="details_text_size">12sp</dimen>
|
||||
<dimen name="normal_text_size">14sp</dimen>
|
||||
<dimen name="smtfp_details_text_size">12sp</dimen>
|
||||
<dimen name="smtfp_normal_text_size">14sp</dimen>
|
||||
</resources>
|
||||
|