Skip to content

Commit cf3ca8a

Browse files
author
tanpengcheng
committed
[feat] Add empty folder select activity.
1 parent f472c05 commit cf3ca8a

File tree

8 files changed

+156
-4
lines changed

8 files changed

+156
-4
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,13 @@
6464
android:taskAffinity=".transfer"
6565
android:configChanges="orientation|screenSize"/>
6666

67+
<activity
68+
android:name=".ui.activity.folderselect.FolderSelectActivity"
69+
android:screenOrientation="portrait"
70+
android:windowSoftInputMode="adjustResize|stateHidden"
71+
android:taskAffinity=".transfer"
72+
android:configChanges="orientation|screenSize"/>
73+
6774
</application>
6875

6976
</manifest>

app/src/main/java/com/tans/tfiletransporter/ui/activity/commomdialog/SettingsDialog.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,24 @@ package com.tans.tfiletransporter.ui.activity.commomdialog
22

33
import android.annotation.SuppressLint
44
import android.app.Activity
5+
import androidx.fragment.app.FragmentActivity
6+
import com.afollestad.inlineactivityresult.coroutines.startActivityAwaitResult
57
import com.jakewharton.rxbinding4.view.clicks
68
import com.jakewharton.rxbinding4.widget.checkedChanges
79
import com.jakewharton.rxbinding4.widget.userChanges
810
import com.tans.tfiletransporter.R
911
import com.tans.tfiletransporter.Settings
1012
import com.tans.tfiletransporter.databinding.SettingsDialogBinding
1113
import com.tans.tfiletransporter.ui.activity.BaseCustomDialog
14+
import com.tans.tfiletransporter.ui.activity.folderselect.FolderSelectActivity
1215
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
1316
import io.reactivex.rxjava3.core.Observable
1417
import io.reactivex.rxjava3.core.Single
18+
import kotlinx.coroutines.Dispatchers
19+
import kotlinx.coroutines.rx3.rxSingle
20+
import kotlinx.coroutines.withContext
1521

16-
class SettingsDialog(context: Activity) : BaseCustomDialog<SettingsDialogBinding, Unit>(
22+
class SettingsDialog(private val context: Activity) : BaseCustomDialog<SettingsDialogBinding, Unit>(
1723
context = context,
1824
layoutId = R.layout.settings_dialog,
1925
defaultState = Unit,
@@ -48,8 +54,13 @@ class SettingsDialog(context: Activity) : BaseCustomDialog<SettingsDialogBinding
4854
.bindLife()
4955

5056
binding.downloadDirEditIv.clicks()
51-
.doOnNext {
52-
// TODO:
57+
.flatMapSingle {
58+
rxSingle {
59+
withContext(Dispatchers.Main) {
60+
(this@SettingsDialog.context as FragmentActivity)
61+
.startActivityAwaitResult<FolderSelectActivity>()
62+
}
63+
}
5364
}
5465
.bindLife()
5566

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.tans.tfiletransporter.ui.activity.folderselect
2+
3+
import com.jakewharton.rxbinding4.view.clicks
4+
import com.tans.tfiletransporter.R
5+
import com.tans.tfiletransporter.databinding.FolderSelectActivityBinding
6+
import com.tans.tfiletransporter.ui.activity.BaseActivity
7+
import io.reactivex.rxjava3.core.Single
8+
9+
class FolderSelectActivity : BaseActivity<FolderSelectActivityBinding, FolderSelectActivity.Companion.FolderSelectState>(
10+
layoutId = R.layout.folder_select_activity,
11+
defaultState = FolderSelectState()
12+
) {
13+
14+
override fun firstLaunchInitData() {
15+
16+
}
17+
18+
override fun initViews(binding: FolderSelectActivityBinding) {
19+
20+
binding.toolBar.menu.findItem(R.id.create_new_folder).clicks()
21+
.flatMapSingle {
22+
// TODO: create new folder.
23+
Single.just(Unit)
24+
}
25+
.bindLife()
26+
}
27+
28+
companion object {
29+
data class FolderSelectState(
30+
val u: Unit = Unit
31+
)
32+
}
33+
}

app/src/main/res/drawable/ic_create_folder.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44
android:viewportWidth="24"
55
android:viewportHeight="24">
66
<path
7-
android:fillColor="@android:color/white"
7+
android:fillColor="@color/teal_200"
88
android:pathData="M20,6h-8l-2,-2L4,4c-1.11,0 -1.99,0.89 -1.99,2L2,18c0,1.11 0.89,2 2,2h16c1.11,0 2,-0.89 2,-2L22,8c0,-1.11 -0.89,-2 -2,-2zM20,18L4,18L4,6h5.17l2,2L20,8v10zM12,14h2v2h2v-2h2v-2h-2v-2h-2v2h-2z"/>
99
</vector>
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<layout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
xmlns:tools="http://schemas.android.com/tools">
5+
6+
<androidx.coordinatorlayout.widget.CoordinatorLayout
7+
android:id="@+id/coordinator_layout"
8+
android:layout_width="match_parent"
9+
android:layout_height="match_parent"
10+
android:background="@color/white"
11+
android:keepScreenOn="true">
12+
13+
<com.google.android.material.appbar.AppBarLayout
14+
android:id="@+id/appbar_layout"
15+
android:layout_width="match_parent"
16+
android:layout_height="wrap_content"
17+
android:background="@color/white"
18+
app:elevation="0dp">
19+
20+
<androidx.appcompat.widget.Toolbar
21+
android:id="@+id/tool_bar"
22+
android:layout_width="match_parent"
23+
android:layout_height="wrap_content"
24+
app:titleTextColor="@color/black_1"
25+
app:title="@string/folder_select_title"
26+
app:menu="@menu/folder_select_menu" />
27+
28+
</com.google.android.material.appbar.AppBarLayout>
29+
30+
<androidx.constraintlayout.widget.ConstraintLayout
31+
android:layout_width="match_parent"
32+
android:layout_height="match_parent"
33+
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">
34+
35+
<TextView
36+
android:id="@+id/path_tv"
37+
android:layout_width="0dp"
38+
android:layout_height="wrap_content"
39+
android:layout_gravity="center_vertical"
40+
android:layout_marginStart="15dp"
41+
android:layout_marginEnd="15dp"
42+
android:layout_weight="1"
43+
android:ellipsize="start"
44+
android:singleLine="true"
45+
android:textColor="@color/black_1"
46+
android:textSize="16sp"
47+
app:layout_constraintStart_toStartOf="parent"
48+
app:layout_constraintEnd_toEndOf="parent"
49+
app:layout_constraintTop_toTopOf="parent"
50+
tools:text="/a/b/c" />
51+
52+
<androidx.recyclerview.widget.RecyclerView
53+
android:id="@+id/folder_rv"
54+
android:layout_width="0dp"
55+
android:layout_height="0dp"
56+
android:clipToPadding="false"
57+
android:paddingBottom="85dp"
58+
android:paddingTop="5dp"
59+
app:layout_constraintStart_toStartOf="parent"
60+
app:layout_constraintEnd_toEndOf="parent"
61+
app:layout_constraintTop_toBottomOf="@id/path_tv"
62+
app:layout_constraintBottom_toBottomOf="parent"
63+
tools:listitem="@layout/folder_item_layout"/>
64+
65+
</androidx.constraintlayout.widget.ConstraintLayout>
66+
67+
<com.google.android.material.floatingactionbutton.FloatingActionButton
68+
android:id="@+id/done_action_bt"
69+
android:layout_width="wrap_content"
70+
android:layout_height="wrap_content"
71+
android:src="@drawable/ic_done"
72+
android:layout_marginEnd="16dp"
73+
android:layout_marginBottom="16dp"
74+
android:layout_gravity="end|bottom"
75+
app:layout_constraintEnd_toEndOf="parent"
76+
app:layout_constraintBottom_toBottomOf="parent"
77+
app:layout_dodgeInsetEdges="bottom"
78+
android:contentDescription="@string/app_name" />
79+
80+
</androidx.coordinatorlayout.widget.CoordinatorLayout>
81+
</layout>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<menu
3+
xmlns:android="http://schemas.android.com/apk/res/android"
4+
xmlns:app="http://schemas.android.com/apk/res-auto">
5+
6+
<item android:id="@+id/create_new_folder"
7+
android:title="@string/folder_select_create"
8+
android:icon="@drawable/ic_create_folder"
9+
app:showAsAction="always"/>
10+
</menu>

app/src/main/res/values-pt-rBR/strings.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,9 @@
9191
<string name="permission_storage_request_content">tFileTransfer needs MANAGE STORAGE permission to share your files.</string>
9292
<!-- Request Permission End -->
9393

94+
<!-- Folder Select Start -->
95+
<string name="folder_select_title">Select a Folder</string>
96+
<string name="folder_select_create">Create a new folder</string>
97+
<!-- Folder Select End -->
98+
9499
</resources>

app/src/main/res/values/strings.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,9 @@
9292
<string name="permission_storage_request_content">tFileTransfer needs MANAGE STORAGE permission to share your files.</string>
9393
<!-- Request Permission End -->
9494

95+
<!-- Folder Select Start -->
96+
<string name="folder_select_title">Select a Folder</string>
97+
<string name="folder_select_create">Create a new folder</string>
98+
<!-- Folder Select End -->
99+
95100
</resources>

0 commit comments

Comments
 (0)