Skip to content

Commit 1d025f3

Browse files
committed
add value tag selection to widgets
1 parent d29a9dc commit 1d025f3

File tree

11 files changed

+99
-36
lines changed

11 files changed

+99
-36
lines changed

app/src/androidTest/java/com/example/util/simpletimetracker/WidgetUniversal.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import androidx.test.espresso.matcher.ViewMatchers.withId
66
import androidx.test.espresso.matcher.ViewMatchers.withText
77
import androidx.test.ext.junit.runners.AndroidJUnit4
88
import com.example.util.simpletimetracker.domain.activityFilter.model.ActivityFilter
9-
import com.example.util.simpletimetracker.feature_widget.universal.activity.view.WidgetUniversalActivity
9+
import com.example.util.simpletimetracker.feature_widget.universal.view.WidgetUniversalActivity
1010
import com.example.util.simpletimetracker.utils.BaseUiTest
1111
import com.example.util.simpletimetracker.utils.Widget
1212
import com.example.util.simpletimetracker.utils.checkViewDoesNotExist

features/feature_widget/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
</activity>
2828

2929
<activity
30-
android:name=".universal.activity.view.WidgetUniversalActivity"
30+
android:name=".universal.view.WidgetUniversalActivity"
3131
android:documentLaunchMode="intoExisting"
3232
android:excludeFromRecents="true"
3333
android:noHistory="true" />

features/feature_widget/src/main/java/com/example/util/simpletimetracker/feature_widget/single/WidgetSingleTagSelectionActivity.kt

Lines changed: 11 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,57 +2,38 @@ package com.example.util.simpletimetracker.feature_widget.single
22

33
import android.content.Context
44
import android.content.Intent
5+
import android.os.Bundle
56
import android.view.LayoutInflater
6-
import androidx.fragment.app.commit
77
import com.example.util.simpletimetracker.core.base.BaseActivity
8-
import com.example.util.simpletimetracker.core.dialog.OnTagSelectedListener
98
import com.example.util.simpletimetracker.core.manager.ThemeManager
109
import com.example.util.simpletimetracker.core.provider.ContextProvider
11-
import com.example.util.simpletimetracker.core.utils.activityArgumentDelegate
12-
import com.example.util.simpletimetracker.core.utils.applySystemBarInsets
13-
import com.example.util.simpletimetracker.feature_widget.R
14-
import com.example.util.simpletimetracker.navigation.ScreenFactory
10+
import com.example.util.simpletimetracker.navigation.Router
1511
import com.example.util.simpletimetracker.navigation.params.screen.RecordTagSelectionParams
1612
import dagger.hilt.android.AndroidEntryPoint
1713
import javax.inject.Inject
18-
import com.example.util.simpletimetracker.feature_widget.databinding.WidgetTagSelectionActivityBinding as Binding
14+
import com.example.util.simpletimetracker.feature_widget.databinding.WidgetSingleTagSelectionActivityBinding as Binding
1915

2016
@AndroidEntryPoint
21-
class WidgetSingleTagSelectionActivity :
22-
BaseActivity<Binding>(),
23-
OnTagSelectedListener {
17+
class WidgetSingleTagSelectionActivity : BaseActivity<Binding>() {
2418

2519
override val inflater: (LayoutInflater) -> Binding = Binding::inflate
2620

2721
@Inject
28-
override lateinit var themeManager: ThemeManager
22+
lateinit var router: Router
2923

3024
@Inject
31-
override lateinit var contextProvider: ContextProvider
25+
override lateinit var themeManager: ThemeManager
3226

3327
@Inject
34-
lateinit var screenFactory: ScreenFactory
35-
36-
private val params: RecordTagSelectionParams by activityArgumentDelegate(
37-
key = ARGS_PARAMS, default = RecordTagSelectionParams.Empty,
38-
)
39-
40-
override fun initUi() {
41-
// TODO check insets on all widget activities.
42-
binding.root.applySystemBarInsets()
43-
screenFactory.getFragment(params)?.let {
44-
supportFragmentManager.commit {
45-
replace(R.id.containerWidgetRecordTagSelection, it)
46-
}
47-
}
48-
}
28+
override lateinit var contextProvider: ContextProvider
4929

50-
override fun onTagSelected() {
51-
finish()
30+
override fun onCreate(savedInstanceState: Bundle?) {
31+
super.onCreate(savedInstanceState)
32+
router.bind(this)
5233
}
5334

5435
companion object {
55-
private const val ARGS_PARAMS = "args_params"
36+
const val ARGS_PARAMS = "args_params"
5637

5738
fun getStartIntent(
5839
context: Context,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.example.util.simpletimetracker.feature_widget.single
2+
3+
import android.view.LayoutInflater
4+
import android.view.ViewGroup
5+
import androidx.fragment.app.commit
6+
import com.example.util.simpletimetracker.core.base.BaseFragment
7+
import com.example.util.simpletimetracker.core.dialog.OnTagSelectedListener
8+
import com.example.util.simpletimetracker.core.utils.InsetConfiguration
9+
import com.example.util.simpletimetracker.feature_widget.R
10+
import com.example.util.simpletimetracker.navigation.ScreenFactory
11+
import com.example.util.simpletimetracker.navigation.params.screen.RecordTagSelectionParams
12+
import dagger.hilt.android.AndroidEntryPoint
13+
import javax.inject.Inject
14+
import com.example.util.simpletimetracker.feature_widget.databinding.WidgetSingleTagSelectionFragmentBinding as Binding
15+
16+
@AndroidEntryPoint
17+
class WidgetSingleTagSelectionFragment :
18+
BaseFragment<Binding>(),
19+
OnTagSelectedListener {
20+
21+
override val inflater: (LayoutInflater, ViewGroup?, Boolean) -> Binding =
22+
Binding::inflate
23+
24+
override var insetConfiguration: InsetConfiguration =
25+
InsetConfiguration.ApplyToView { binding.root }
26+
27+
@Inject
28+
lateinit var screenFactory: ScreenFactory
29+
30+
override fun initUi() {
31+
// TODO check insets on all widget activities.
32+
val params = activity?.intent?.extras
33+
?.getParcelable<RecordTagSelectionParams>(WidgetSingleTagSelectionActivity.ARGS_PARAMS)
34+
?: return
35+
screenFactory.getFragment(params)?.let {
36+
childFragmentManager.commit {
37+
replace(R.id.containerWidgetRecordTagSelection, it)
38+
}
39+
}
40+
}
41+
42+
override fun onTagSelected() {
43+
activity?.finish()
44+
}
45+
}

features/feature_widget/src/main/java/com/example/util/simpletimetracker/feature_widget/universal/WidgetUniversalProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import com.example.util.simpletimetracker.domain.record.model.RunningRecord
2121
import com.example.util.simpletimetracker.feature_views.extension.getBitmapFromView
2222
import com.example.util.simpletimetracker.feature_views.extension.measureExactly
2323
import com.example.util.simpletimetracker.feature_widget.R
24-
import com.example.util.simpletimetracker.feature_widget.universal.activity.view.WidgetUniversalActivity
24+
import com.example.util.simpletimetracker.feature_widget.universal.view.WidgetUniversalActivity
2525
import com.example.util.simpletimetracker.feature_widget.universal.customView.WidgetUniversalView
2626
import com.example.util.simpletimetracker.feature_widget.universal.customView.WidgetUniversalViewData
2727
import com.example.util.simpletimetracker.feature_widget.universal.mapper.WidgetUniversalViewDataMapper

features/feature_widget/src/main/java/com/example/util/simpletimetracker/feature_widget/universal/view/WidgetUniversalActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.util.simpletimetracker.feature_widget.universal.activity.view
1+
package com.example.util.simpletimetracker.feature_widget.universal.view
22

33
import android.os.Bundle
44
import android.view.LayoutInflater

features/feature_widget/src/main/java/com/example/util/simpletimetracker/feature_widget/universal/view/WidgetUniversalFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.util.simpletimetracker.feature_widget.universal.activity.view
1+
package com.example.util.simpletimetracker.feature_widget.universal.view
22

33
import com.example.util.simpletimetracker.feature_widget.databinding.WidgetUniversalFragmentBinding as Binding
44
import android.os.Handler
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
android:id="@+id/container"
5+
android:name="androidx.navigation.fragment.NavHostFragment"
6+
android:layout_width="match_parent"
7+
android:layout_height="match_parent"
8+
app:defaultNavHost="true"
9+
app:navGraph="@navigation/widget_single_tag_selection_nav_graph" />
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<navigation 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+
android:id="@+id/widget_nav_graph"
6+
app:startDestination="@id/widgetSingleTagSelectionFragment">
7+
8+
<fragment
9+
android:id="@+id/widgetSingleTagSelectionFragment"
10+
android:name="com.example.util.simpletimetracker.feature_widget.single.WidgetSingleTagSelectionFragment"
11+
android:label="WidgetSingleTagSelectionFragment"
12+
tools:layout="@layout/widget_single_tag_selection_fragment" />
13+
<!-- TODO looks like a hack, copy from the main graph with
14+
the same id allows to use same router,
15+
but navigating to other direction would result in a crash,
16+
because destinations are not here.
17+
Fix somehow? -->
18+
<dialog
19+
android:id="@+id/recordTagValueSelectionDialogFragment"
20+
android:name="com.example.util.simpletimetracker.feature_dialogs.recordTagValueSelection.view.RecordTagValueSelectionDialogFragment"
21+
android:label="RecordTagValueSelectionDialogFragment"
22+
tools:layout="@layout/record_tag_value_selection_dialog_fragment" />
23+
</navigation>

0 commit comments

Comments
 (0)