Pārlūkot izejas kodu

Improved navigation drawer appearance

Vadik Sirekanyan 2 gadi atpakaļ
vecāks
revīzija
92848e40f9

+ 30 - 2
app/src/main/java/org/sirekanyan/outline/ui/DrawerContent.kt

@@ -1,32 +1,60 @@
 package org.sirekanyan.outline.ui
 
 import android.net.Uri
+import androidx.compose.foundation.layout.padding
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Add
+import androidx.compose.material.icons.filled.Done
+import androidx.compose.material3.Icon
+import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.ModalDrawerSheet
 import androidx.compose.material3.NavigationDrawerItem
 import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.produceState
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.dp
 import org.sirekanyan.outline.MainState
+import org.sirekanyan.outline.R
 import org.sirekanyan.outline.api.API_URLS
 import org.sirekanyan.outline.api.OutlineApi
 
 @Composable
 fun DrawerContent(api: OutlineApi, state: MainState) {
     ModalDrawerSheet {
+        Text(
+            text = stringResource(R.string.app_name),
+            modifier = Modifier.padding(horizontal = 28.dp, vertical = 16.dp),
+            style = MaterialTheme.typography.titleSmall,
+        )
         API_URLS.forEachIndexed { index, apiUrl ->
             val selected = state.selected == index
             val serverName by produceState(Uri.parse(apiUrl).host.orEmpty()) {
                 value = api.getServerName(apiUrl)
             }
             NavigationDrawerItem(
-                label = { Text(serverName) },
+                icon = { Icon(Icons.Default.Done, null) },
+                label = { Text(serverName, style = MaterialTheme.typography.labelLarge) },
+                modifier = Modifier.padding(horizontal = 12.dp),
                 selected = selected,
                 onClick = {
                     state.selected = index
                     state.closeDrawer()
-                }
+                },
             )
         }
+        NavigationDrawerItem(
+            icon = { Icon(Icons.Default.Add, null) },
+            label = { Text("Add server", style = MaterialTheme.typography.labelLarge) },
+            modifier = Modifier.padding(horizontal = 12.dp),
+            selected = false,
+            onClick = {
+                // TODO: do something useful
+                state.selected = null
+                state.closeDrawer()
+            },
+        )
     }
 }

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -1,3 +1,3 @@
 <resources>
-    <string name="app_name">Outline</string>
+    <string name="app_name">Outline Manager</string>
 </resources>