forked from anthonysidesap/fluentui-android
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathV2ActionBarActivity.kt
More file actions
147 lines (137 loc) · 6.25 KB
/
Copy pathV2ActionBarActivity.kt
File metadata and controls
147 lines (137 loc) · 6.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
package com.microsoft.fluentuidemo.demos
import android.os.Bundle
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.BasicText
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.dp
import com.microsoft.fluentui.theme.FluentTheme
import com.microsoft.fluentui.theme.ThemeMode
import com.microsoft.fluentui.theme.token.FluentAliasTokens
import com.microsoft.fluentui.tokenized.controls.Button
import com.microsoft.fluentui.tokenized.controls.RadioButton
import com.microsoft.fluentui.tokenized.listitem.ListItem
import com.microsoft.fluentuidemo.Demo
import com.microsoft.fluentuidemo.DemoActivity.Companion.DEMO_ID
import com.microsoft.fluentuidemo.Navigation
import com.microsoft.fluentuidemo.R
import com.microsoft.fluentuidemo.V2DemoActivity
import com.microsoft.fluentuidemo.demos.actionbar.V2ActionBarDemoActivity
const val ACTION_BAR_TOP_RADIO = "actionBarTopRadio"
const val ACTION_BAR_BOTTOM_RADIO = "actionBarBottomRadio"
const val ACTION_BAR_BASIC_TYPE_RADIO = "actionBarBasicTypeRadio"
const val ACTION_BAR_ICON_TYPE_RADIO = "actionBarIconTypeRadio"
const val ACTION_BAR_CAROUSEL_TYPE_RADIO = "actionBarCarouselTypeRadio"
class V2ActionBarActivity : V2DemoActivity() {
init {
setupActivity(this)
}
override val paramsUrl = "https://github.com/microsoft/fluentui-android/wiki/Controls#params-37"
override val controlTokensUrl =
"https://github.com/microsoft/fluentui-android/wiki/Controls#control-tokens-35"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val context = this
setActivityContent {
val actionBarPos = listOf(0, 1)
val actionBarType = listOf(0, 1, 2)
var selectedActionBarPos by rememberSaveable { mutableStateOf(actionBarPos[0]) }
var selectedActionBarType by rememberSaveable { mutableStateOf(actionBarType[0]) }
Column {
ListItem.Header(title = resources.getString(R.string.actionbar_position_heading))
Column(
modifier = Modifier.padding(16.dp),
verticalArrangement = Arrangement.spacedBy(10.dp),
) {
ActionBarRow(
text = R.string.actionbar_position_top_radio_label,
testTag = ACTION_BAR_TOP_RADIO,
selected = selectedActionBarPos == actionBarPos[0],
onClick = { selectedActionBarPos = actionBarPos[0] }
)
ActionBarRow(
text = R.string.actionbar_position_bottom_radio_label,
testTag = ACTION_BAR_BOTTOM_RADIO,
selected = selectedActionBarPos == actionBarPos[1],
onClick = { selectedActionBarPos = actionBarPos[1] }
)
}
ListItem.Header(title = resources.getString(R.string.actionbar_type_heading))
Column(
modifier = Modifier.padding(16.dp),
verticalArrangement = Arrangement.spacedBy(10.dp),
) {
ActionBarRow(
text = R.string.actionbar_basic_radio_label,
testTag = ACTION_BAR_BASIC_TYPE_RADIO,
selected = selectedActionBarType == actionBarType[0],
onClick = { selectedActionBarType = actionBarType[0] }
)
ActionBarRow(
text = R.string.actionbar_icon_radio_label,
testTag = ACTION_BAR_ICON_TYPE_RADIO,
selected = selectedActionBarType == actionBarType[1],
onClick = { selectedActionBarType = actionBarType[1] }
)
ActionBarRow(
text = R.string.actionbar_carousel_radio_label,
testTag = ACTION_BAR_CAROUSEL_TYPE_RADIO,
selected = selectedActionBarType == actionBarType[2],
onClick = { selectedActionBarType = actionBarType[2] }
)
}
Button(
text = resources.getString(R.string.actionbar_start_button),
onClick = {
val demo = Demo("DEMOACTIONBAR", V2ActionBarDemoActivity::class)
val packageContext = this@V2ActionBarActivity
Navigation.forwardNavigation(
packageContext,
demo.demoClass.java,
Pair(DEMO_ID, demo.id),
Pair(DEMO_TITLE, demo.title),
Pair("ACTION_BAR_TYPE", selectedActionBarType),
Pair("ACTION_BAR_POSITION", selectedActionBarPos)
)
},
modifier = Modifier.padding(16.dp)
)
}
}
}
@Composable
fun ActionBarRow(
text: Int,
testTag: String,
selected: Boolean,
onClick: () -> Unit
) {
Row(
horizontalArrangement = Arrangement.spacedBy(16.dp),
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.fillMaxWidth()
) {
BasicText(
text = resources.getString(text),
modifier = Modifier.weight(1F),
style = TextStyle(
color = FluentTheme.aliasTokens.neutralForegroundColor[FluentAliasTokens.NeutralForegroundColorTokens.Foreground3].value(
themeMode = ThemeMode.Auto
)
)
)
RadioButton(
modifier = Modifier.testTag(testTag),
selected = selected,
onClick = onClick
)
}
}
}