Skip to content

Commit 0aeb201

Browse files
committed
Merge branch 'dev'
2 parents c0e47b3 + a39acfb commit 0aeb201

23 files changed

+261
-309
lines changed

filepicker/src/main/java/me/rosuh/filepicker/FilePickerActivity.kt

Lines changed: 52 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
5454
* 文件夹为空时展示的空视图
5555
*/
5656
private var selectedCount: AtomicInteger = AtomicInteger(0)
57-
private val maxSelectable = FilePickerManager.config.maxSelectable
57+
private val maxSelectable = FilePickerManager.config?.maxSelectable ?: Int.MAX_VALUE
5858
private val pickerConfig by lazy { FilePickerManager.config }
5959
private val fileListListener: RecyclerViewListener by lazy { getListener(rvContentList!!) }
6060
private val navListener: RecyclerViewListener by lazy { getListener(rvNav!!) }
@@ -65,7 +65,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
6565
private var rvNav: RecyclerView? = null
6666
private var tvToolTitle: TextView? = null
6767
override fun onCreate(savedInstanceState: Bundle?) {
68-
setTheme(pickerConfig.themeId)
68+
setTheme(pickerConfig?.themeId ?: R.style.FilePickerThemeReply)
6969
super.onCreate(savedInstanceState)
7070
setContentView(R.layout.main_activity_for_file_picker)
7171
// 核验权限
@@ -138,11 +138,15 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
138138

139139
selectAllBtn = findViewById<Button>(R.id.btn_selected_all_file_picker).apply {
140140
setOnClickListener(this@FilePickerActivity)
141-
text = FilePickerManager.config.selectAllText
141+
FilePickerManager.config?.selectAllText?.let {
142+
text = it
143+
}
142144
}
143145
confirmBtn = findViewById<Button>(R.id.btn_confirm_file_picker).apply {
144146
setOnClickListener(this@FilePickerActivity)
145-
text = FilePickerManager.config.confirmText
147+
FilePickerManager.config?.confirmText?.let {
148+
text = it
149+
}
146150
}
147151

148152
rvContentList = findViewById(R.id.rv_list_file_picker)
@@ -161,10 +165,11 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
161165
navDataSource = FileUtils.produceNavDataSource(
162166
navDataSource,
163167
if (navDataSource.isEmpty()) {
164-
Environment.getExternalStorageDirectory().absolutePath
168+
rootFile.path
165169
} else {
166170
navDataSource.last().dirPath
167-
}
171+
},
172+
this@FilePickerActivity
168173
)
169174
initRv(listData, navDataSource)
170175
setLoadingFinish()
@@ -182,22 +187,24 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
182187
reloadList()
183188
}
184189
isRefreshing = true
185-
setColorSchemeColors(*resources.getIntArray(
186-
when(pickerConfig.themeId){
187-
R.style.FilePickerThemeCrane ->{
188-
R.array.crane_swl_colors
189-
}
190-
R.style.FilePickerThemeReply ->{
191-
R.array.reply_swl_colors
192-
}
193-
R.style.FilePickerThemeShrine ->{
194-
R.array.shrine_swl_colors
195-
}
196-
else ->{
197-
R.array.rail_swl_colors
190+
setColorSchemeColors(
191+
*resources.getIntArray(
192+
when (pickerConfig?.themeId) {
193+
R.style.FilePickerThemeCrane -> {
194+
R.array.crane_swl_colors
195+
}
196+
R.style.FilePickerThemeReply -> {
197+
R.array.reply_swl_colors
198+
}
199+
R.style.FilePickerThemeShrine -> {
200+
R.array.shrine_swl_colors
201+
}
202+
else -> {
203+
R.array.rail_swl_colors
204+
}
198205
}
199-
}
200-
))
206+
)
207+
)
201208
}
202209
}
203210

@@ -258,24 +265,24 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
258265
val item = (recyclerAdapter as me.rosuh.filepicker.adapter.BaseAdapter).getItem(position)
259266
item ?: return
260267
val file = File(item.filePath)
261-
if (!file.exists()){
268+
if (!file.exists()) {
262269
return
263270
}
264271
when (view.id) {
265272
R.id.item_list_file_picker -> {
266273
if (file.isDirectory) {
267-
(rvNav?.adapter as? FileNavAdapter)?.let{
274+
(rvNav?.adapter as? FileNavAdapter)?.let {
268275
saveCurrPos(it.data.last(), position)
269276
}
270277
// 如果是文件夹,则进入
271278
enterDirAndUpdateUI(item)
272279
} else {
273-
FilePickerManager.config.fileItemOnClickListener.onItemClick(recyclerAdapter, view, position)
280+
FilePickerManager.config?.fileItemOnClickListener?.onItemClick(recyclerAdapter, view, position)
274281
}
275282
}
276283
R.id.item_nav_file_picker -> {
277284
if (file.isDirectory) {
278-
(rvNav?.adapter as? FileNavAdapter)?.let{
285+
(rvNav?.adapter as? FileNavAdapter)?.let {
279286
saveCurrPos(it.data.last(), position)
280287
}
281288
// 如果是文件夹,则进入
@@ -295,11 +302,11 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
295302
/**
296303
* 保存当前文件夹被点击项,下次进入时将滑动到此
297304
*/
298-
private fun saveCurrPos(item: FileNavBeanImpl?, position: Int){
305+
private fun saveCurrPos(item: FileNavBeanImpl?, position: Int) {
299306
item?.run {
300307
currPosMap[filePath] = position
301308
(rvContentList?.layoutManager as? LinearLayoutManager)?.let {
302-
currOffsetMap.put(filePath, it.findViewByPosition(position)?.top?:0)
309+
currOffsetMap.put(filePath, it.findViewByPosition(position)?.top ?: 0)
303310
}
304311
}
305312
}
@@ -316,7 +323,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
316323
val item = (recyclerAdapter as FileListAdapter).getItem(position)
317324
item ?: return
318325
val file = File(item.filePath)
319-
val isSkipDir = FilePickerManager.config.isSkipDir
326+
val isSkipDir = FilePickerManager.config?.isSkipDir ?: true
320327
// 如果是文件夹并且没有略过文件夹
321328
if (file.exists() && file.isDirectory && isSkipDir) return
322329
val cb = view.findViewById<CheckBox>(R.id.cb_list_file_picker)
@@ -325,12 +332,12 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
325332
cb.isChecked -> {
326333
// 当前被选中,现在取消选中
327334
selectedCount.decrementAndGet()
328-
FilePickerManager.config.fileItemOnClickListener.onItemLongClick(recyclerAdapter, view, position)
335+
FilePickerManager.config?.fileItemOnClickListener?.onItemLongClick(recyclerAdapter, view, position)
329336
}
330337
isCanSelect() -> {
331338
// 新增选中项情况
332339
selectedCount.incrementAndGet()
333-
FilePickerManager.config.fileItemOnClickListener.onItemLongClick(recyclerAdapter, view, position)
340+
FilePickerManager.config?.fileItemOnClickListener?.onItemLongClick(recyclerAdapter, view, position)
334341
}
335342
else -> {
336343
// 新增失败的情况
@@ -352,7 +359,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
352359
position: Int
353360
) {
354361
when (view.id) {
355-
R.id.btn_nav_file_picker -> {
362+
R.id.tv_btn_nav_file_picker -> {
356363
val item = (recyclerAdapter as FileNavAdapter).getItem(position)
357364
item ?: return
358365
enterDirAndUpdateUI(item)
@@ -361,7 +368,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
361368
val item = (recyclerAdapter as FileListAdapter).getItem(position)
362369
item ?: return
363370
// 文件夹直接进入
364-
if (item.isDir && pickerConfig.isSkipDir) {
371+
if (item.isDir && pickerConfig?.isSkipDir != false) {
365372
enterDirAndUpdateUI(item)
366373
return
367374
}
@@ -422,7 +429,11 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
422429
listAdapter?.data = FileUtils.suspendProduceListDataSource(nextFiles, this@FilePickerActivity)
423430

424431
// 更新导航栏的数据集
425-
navDataSource = FileUtils.produceNavDataSource(ArrayList(navAdapter!!.data), fileBean.filePath)
432+
navDataSource = FileUtils.produceNavDataSource(
433+
ArrayList(navAdapter!!.data),
434+
fileBean.filePath,
435+
this@FilePickerActivity
436+
)
426437
navAdapter?.data = navDataSource
427438

428439
navAdapter!!.notifyDataSetChanged()
@@ -443,8 +454,8 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
443454
private fun notifyDataChangedForList(fileBean: FileBean) {
444455
rvContentList?.apply {
445456
(layoutManager as? PosLinearLayoutManager)?.setTargetPos(
446-
currPosMap[fileBean.filePath] ?:0,
447-
currOffsetMap[fileBean.filePath] ?:0
457+
currPosMap[fileBean.filePath] ?: 0,
458+
currOffsetMap[fileBean.filePath] ?: 0
448459
)
449460
layoutAnimation = AnimationUtils.loadLayoutAnimation(context, R.anim.layout_item_anim_file_picker)
450461
adapter?.notifyDataSetChanged()
@@ -466,17 +477,17 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
466477
override fun updateItemUI(isCheck: Boolean) {
467478
// 取消选中,并且选中数为 0
468479
if (selectedCount.get() == 0) {
469-
selectAllBtn!!.text = pickerConfig.selectAllText
480+
selectAllBtn!!.text = pickerConfig?.selectAllText ?: getString(string.file_picker_tv_select_all)
470481
tvToolTitle?.text = ""
471482
return
472483
}
473-
selectAllBtn!!.text = pickerConfig.deSelectAllText
484+
selectAllBtn!!.text = pickerConfig?.deSelectAllText ?: getString(string.file_picker_tv_select_all)
474485
tvToolTitle!!.text =
475486
resources.getString(R.string.file_picker_selected_count, selectedCount.get())
476487
}
477488

478489
override fun onBackPressed() {
479-
if ((rvNav?.adapter as? FileNavAdapter)?.itemCount?:0 <= 1) {
490+
if ((rvNav?.adapter as? FileNavAdapter)?.itemCount ?: 0 <= 1) {
480491
super.onBackPressed()
481492
} else {
482493
// 即将进入的 item 的索引
@@ -495,7 +506,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
495506
selectedCount.set(0)
496507
for (data in listAdapter!!.data!!) {
497508
val file = File(data.filePath)
498-
if (pickerConfig.isSkipDir && file.exists() && file.isDirectory) {
509+
if (pickerConfig?.isSkipDir != false && file.exists() && file.isDirectory) {
499510
continue
500511
}
501512
data.setCheck(false)
@@ -505,7 +516,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
505516
for (i in selectedCount.get() until listAdapter!!.data!!.size) {
506517
val data = listAdapter!!.data!![i]
507518
val file = File(data.filePath)
508-
if (pickerConfig.isSkipDir && file.exists() && file.isDirectory) {
519+
if (pickerConfig?.isSkipDir != false && file.exists() && file.isDirectory) {
509520
continue
510521
}
511522
selectedCount.incrementAndGet()
@@ -550,7 +561,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
550561
var count: Long = 0
551562
for (item in listAdapter!!.data!!) {
552563
val file = File(item.filePath)
553-
if (pickerConfig.isSkipDir && file.exists() && file.isDirectory) {
564+
if (pickerConfig?.isSkipDir != false && file.exists() && file.isDirectory) {
554565
continue
555566
}
556567
count++

filepicker/src/main/java/me/rosuh/filepicker/adapter/FileListAdapter.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
package me.rosuh.filepicker.adapter
22

3-
import android.animation.ArgbEvaluator
4-
import android.animation.ObjectAnimator
5-
import android.animation.ValueAnimator
6-
import android.graphics.Color
73
import android.support.v7.widget.RecyclerView
84
import android.view.LayoutInflater
95
import android.view.View
@@ -54,7 +50,7 @@ class FileListAdapter(private val activity: FilePickerActivity, var data: ArrayL
5450
inner class FileListItemHolder(itemView: View) :
5551
RecyclerView.ViewHolder(itemView) {
5652

57-
private val isSkipDir: Boolean = FilePickerManager.config.isSkipDir
53+
private val isSkipDir: Boolean = FilePickerManager.config?.isSkipDir ?: true
5854
private val mTvFileName = itemView.findViewById<TextView>(R.id.tv_list_file_picker)!!
5955
private val mCbItem = itemView.findViewById<CheckBox>(R.id.cb_list_file_picker)!!
6056
private val mIcon = itemView.findViewById<ImageView>(R.id.iv_icon_list_file_picker)!!

filepicker/src/main/java/me/rosuh/filepicker/adapter/FileNavAdapter.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ package me.rosuh.filepicker.adapter
22

33
import android.support.v7.widget.RecyclerView
44
import android.view.LayoutInflater
5-
import android.view.View
65
import android.view.ViewGroup
7-
import android.widget.Button
6+
import android.widget.TextView
87
import me.rosuh.filepicker.FilePickerActivity
98
import me.rosuh.filepicker.R
109
import me.rosuh.filepicker.bean.FileNavBeanImpl
@@ -40,14 +39,14 @@ class FileNavAdapter(private val activity: FilePickerActivity, var data: Mutable
4039
inner class NavListHolder(inflater: LayoutInflater, val parent: ViewGroup):
4140
RecyclerView.ViewHolder(inflater.inflate(R.layout.item_nav_file_picker, parent, false)){
4241

43-
private lateinit var mBtnDir:Button
42+
private var mBtnDir: TextView? = null
4443

4544
private var pos:Int? = null
4645

4746
fun bind(item: FileNavBeanImpl?, position:Int) {
4847
pos = position
49-
mBtnDir = itemView.findViewById(R.id.btn_nav_file_picker)
50-
mBtnDir.text = item!!.dirName
48+
mBtnDir = itemView.findViewById(R.id.tv_btn_nav_file_picker)
49+
mBtnDir?.text = item!!.dirName
5150
}
5251
}
5352
}

filepicker/src/main/java/me/rosuh/filepicker/adapter/ItemClickEventDispatcher.kt

Lines changed: 0 additions & 15 deletions
This file was deleted.

filepicker/src/main/java/me/rosuh/filepicker/config/FileItemOnClickListener.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package me.rosuh.filepicker.config
22

33
import android.support.v7.widget.RecyclerView
44
import android.view.View
5-
import me.rosuh.filepicker.bean.FileItemBeanImpl
65

76
/**
87
*

filepicker/src/main/java/me/rosuh/filepicker/config/FileItemOnClickListenerImpl.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import android.view.View
55
import android.widget.CheckBox
66
import me.rosuh.filepicker.R
77
import me.rosuh.filepicker.adapter.FileListAdapter
8-
import me.rosuh.filepicker.bean.FileItemBeanImpl
98
import java.io.File
109

1110
/**
@@ -37,7 +36,7 @@ class FileItemOnClickListenerImpl : FileItemOnClickListener {
3736
val item = (itemAdapter as FileListAdapter).getItem(position)
3837
item ?: return
3938
val file = File(item.filePath)
40-
val isSkipDir = FilePickerManager.config.isSkipDir
39+
val isSkipDir = FilePickerManager.config?.isSkipDir ?: true
4140
// 如果是文件夹并且没有略过文件夹
4241
if (file.exists() && file.isDirectory && isSkipDir) return
4342
val cb = itemView.findViewById<CheckBox>(R.id.cb_list_file_picker)

0 commit comments

Comments
 (0)