fuzzyworld

ai-chat-android-auto / files / app / src / main / res / layout / activity_setup.xml

activity_setup.xml

9.1 KB · history · blame

1<?xml version="1.0" encoding="utf-8"?>
2<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent">
5
6 <LinearLayout
7 android:layout_width="match_parent"
8 android:layout_height="wrap_content"
9 android:orientation="vertical"
10 android:padding="24dp">
11
12 <TextView
13 android:layout_width="match_parent"
14 android:layout_height="wrap_content"
15 android:text="AI Chat for Android Auto"
16 android:textSize="26sp"
17 android:textStyle="bold"
18 android:layout_marginBottom="4dp" />
19
20 <TextView
21 android:layout_width="match_parent"
22 android:layout_height="wrap_content"
23 android:text="Configure your AI provider"
24 android:textSize="14sp"
25 android:layout_marginBottom="24dp" />
26
27 <!-- ── Provider ──────────────────────────────────────────────────── -->
28
29 <TextView
30 android:layout_width="match_parent"
31 android:layout_height="wrap_content"
32 android:text="Provider"
33 android:textSize="12sp"
34 android:textStyle="bold"
35 android:layout_marginBottom="4dp" />
36
37 <Spinner
38 android:id="@+id/providerSpinner"
39 android:layout_width="match_parent"
40 android:layout_height="wrap_content"
41 android:layout_marginBottom="20dp" />
42
43 <!-- ── API key ───────────────────────────────────────────────────── -->
44
45 <LinearLayout
46 android:id="@+id/apiKeyGroup"
47 android:layout_width="match_parent"
48 android:layout_height="wrap_content"
49 android:orientation="vertical"
50 android:layout_marginBottom="20dp">
51
52 <TextView
53 android:id="@+id/apiKeyLabel"
54 android:layout_width="match_parent"
55 android:layout_height="wrap_content"
56 android:text="API Key"
57 android:textSize="12sp"
58 android:textStyle="bold"
59 android:layout_marginBottom="4dp" />
60
61 <EditText
62 android:id="@+id/keyInput"
63 android:layout_width="match_parent"
64 android:layout_height="wrap_content"
65 android:hint="Paste your API key"
66 android:inputType="textPassword"
67 android:fontFamily="monospace"
68 android:layout_marginBottom="8dp" />
69
70 <LinearLayout
71 android:layout_width="match_parent"
72 android:layout_height="wrap_content"
73 android:orientation="horizontal">
74
75 <Button
76 android:id="@+id/saveKeyBtn"
77 android:layout_width="0dp"
78 android:layout_height="wrap_content"
79 android:layout_weight="1"
80 android:text="Save Key"
81 android:layout_marginEnd="8dp" />
82
83 <Button
84 android:id="@+id/clearKeyBtn"
85 android:layout_width="0dp"
86 android:layout_height="wrap_content"
87 android:layout_weight="1"
88 android:text="Clear Key"
89 android:visibility="gone" />
90
91 </LinearLayout>
92
93 </LinearLayout>
94
95 <!-- ── Base URL ──────────────────────────────────────────────────── -->
96
97 <LinearLayout
98 android:id="@+id/baseUrlGroup"
99 android:layout_width="match_parent"
100 android:layout_height="wrap_content"
101 android:orientation="vertical"
102 android:visibility="gone"
103 android:layout_marginBottom="20dp">
104
105 <TextView
106 android:layout_width="match_parent"
107 android:layout_height="wrap_content"
108 android:text="Base URL"
109 android:textSize="12sp"
110 android:textStyle="bold"
111 android:layout_marginBottom="4dp" />
112
113 <EditText
114 android:id="@+id/baseUrlInput"
115 android:layout_width="match_parent"
116 android:layout_height="wrap_content"
117 android:inputType="textUri"
118 android:fontFamily="monospace"
119 android:layout_marginBottom="8dp" />
120
121 <Button
122 android:id="@+id/saveUrlBtn"
123 android:layout_width="match_parent"
124 android:layout_height="wrap_content"
125 android:text="Save URL" />
126
127 </LinearLayout>
128
129 <!-- ── Model ─────────────────────────────────────────────────────── -->
130
131 <TextView
132 android:layout_width="match_parent"
133 android:layout_height="wrap_content"
134 android:text="Model"
135 android:textSize="12sp"
136 android:textStyle="bold"
137 android:layout_marginBottom="4dp" />
138
139 <LinearLayout
140 android:layout_width="match_parent"
141 android:layout_height="wrap_content"
142 android:orientation="horizontal"
143 android:layout_marginBottom="28dp">
144
145 <Spinner
146 android:id="@+id/modelSpinner"
147 android:layout_width="0dp"
148 android:layout_height="wrap_content"
149 android:layout_weight="1"
150 android:layout_marginEnd="8dp" />
151
152 <Button
153 android:id="@+id/fetchModelsBtn"
154 android:layout_width="wrap_content"
155 android:layout_height="wrap_content"
156 android:text="↻" />
157
158 </LinearLayout>
159
160 <!-- ── Voice Output ───────────────────────────────────────────────── -->
161
162 <View
163 android:layout_width="match_parent"
164 android:layout_height="1dp"
165 android:background="?android:attr/listDivider"
166 android:layout_marginBottom="20dp" />
167
168 <TextView
169 android:layout_width="match_parent"
170 android:layout_height="wrap_content"
171 android:text="Voice Output"
172 android:textSize="16sp"
173 android:textStyle="bold"
174 android:layout_marginBottom="16dp" />
175
176 <TextView
177 android:layout_width="match_parent"
178 android:layout_height="wrap_content"
179 android:text="Voice"
180 android:textSize="12sp"
181 android:textStyle="bold"
182 android:layout_marginBottom="4dp" />
183
184 <Spinner
185 android:id="@+id/voiceSpinner"
186 android:layout_width="match_parent"
187 android:layout_height="wrap_content"
188 android:layout_marginBottom="16dp" />
189
190 <LinearLayout
191 android:layout_width="match_parent"
192 android:layout_height="wrap_content"
193 android:orientation="horizontal"
194 android:layout_marginBottom="4dp">
195
196 <TextView
197 android:layout_width="0dp"
198 android:layout_height="wrap_content"
199 android:layout_weight="1"
200 android:text="Speed"
201 android:textSize="12sp"
202 android:textStyle="bold" />
203
204 <TextView
205 android:id="@+id/speedLabel"
206 android:layout_width="wrap_content"
207 android:layout_height="wrap_content"
208 android:text="1.0×"
209 android:textSize="12sp" />
210
211 </LinearLayout>
212
213 <SeekBar
214 android:id="@+id/speedSeekBar"
215 android:layout_width="match_parent"
216 android:layout_height="wrap_content"
217 android:max="15"
218 android:progress="5"
219 android:layout_marginBottom="12dp" />
220
221 <Button
222 android:id="@+id/testVoiceBtn"
223 android:layout_width="match_parent"
224 android:layout_height="wrap_content"
225 android:text="Test Voice"
226 android:layout_marginBottom="28dp" />
227
228 <!-- ── Status ─────────────────────────────────────────────────────── -->
229
230 <View
231 android:layout_width="match_parent"
232 android:layout_height="1dp"
233 android:background="?android:attr/listDivider"
234 android:layout_marginBottom="20dp" />
235
236 <TextView
237 android:id="@+id/status"
238 android:layout_width="match_parent"
239 android:layout_height="wrap_content"
240 android:textSize="14sp"
241 android:lineSpacingMultiplier="1.4" />
242
243 </LinearLayout>
244
245</ScrollView>