Skip to content

Commit

Permalink
Added about dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
sirekanian committed Dec 29, 2023
1 parent ab5f809 commit 2f8c5f3
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 10 deletions.
6 changes: 6 additions & 0 deletions app/src/main/java/org/sirekanyan/outline/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier
import androidx.core.view.WindowCompat
import org.sirekanyan.outline.ui.AboutDialogContent
import org.sirekanyan.outline.ui.AddServerContent
import org.sirekanyan.outline.ui.DeleteKeyContent
import org.sirekanyan.outline.ui.DeleteServerContent
Expand Down Expand Up @@ -53,6 +54,11 @@ class MainActivity : ComponentActivity() {
onConfirm = { state.onDeleteServerConfirmed(server) }
)
}
is AboutDialog -> {
AboutDialogContent(
onDismiss = { state.dialog = null },
)
}
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/org/sirekanyan/outline/MainState.kt
Original file line number Diff line number Diff line change
Expand Up @@ -154,3 +154,5 @@ data class RenameKeyDialog(val key: Key) : Dialog()
data class DeleteKeyDialog(val key: Key) : Dialog()

data class DeleteServerDialog(val server: Server) : Dialog()

data object AboutDialog : Dialog()
61 changes: 61 additions & 0 deletions app/src/main/java/org/sirekanyan/outline/ui/AboutDialog.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package org.sirekanyan.outline.ui

import android.content.Intent
import android.net.Uri
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Info
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import org.sirekanyan.outline.BuildConfig
import org.sirekanyan.outline.R
import org.sirekanyan.outline.ui.icons.IconOpenInNew
import org.sirekanyan.outline.ui.icons.IconPlayStore

@Composable
fun AboutDialogContent(onDismiss: () -> Unit) {
AlertDialog(
icon = { Icon(Icons.Default.Info, null) },
title = { Text(stringResource(R.string.outln_app_name) + " " + BuildConfig.VERSION_NAME) },
text = {
Text(
"An application for managing Outline VPN servers. You can find more information " +
"on https://getoutline.org.",
)
},
onDismissRequest = onDismiss,
confirmButton = {
val context = LocalContext.current
val playUri = "https://play.google.com/store/apps/details?id=${context.packageName}"
TextButton(
onClick = {
context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(playUri)))
onDismiss()
},
modifier = Modifier.fillMaxWidth().heightIn(min = 56.dp),
border = BorderStroke(1.dp, MaterialTheme.colorScheme.primary),
) {
Icon(IconPlayStore, null, Modifier.padding(horizontal = 4.dp))
Text(
text = "Rate on Play Store",
modifier = Modifier.weight(1f).padding(horizontal = 8.dp),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
Icon(IconOpenInNew, null, Modifier.padding(horizontal = 8.dp))
}
},
)
}
15 changes: 5 additions & 10 deletions app/src/main/java/org/sirekanyan/outline/ui/DrawerContent.kt
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package org.sirekanyan.outline.ui

import android.content.Intent
import android.content.Intent.ACTION_VIEW
import android.net.Uri
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
Expand All @@ -16,6 +13,7 @@ import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Done
import androidx.compose.material.icons.filled.Info
import androidx.compose.material.icons.filled.Search
import androidx.compose.material.icons.filled.Warning
import androidx.compose.material3.Divider
Expand All @@ -37,6 +35,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.launch
import org.sirekanyan.outline.AboutDialog
import org.sirekanyan.outline.AddServerDialog
import org.sirekanyan.outline.HelloPage
import org.sirekanyan.outline.MainState
Expand All @@ -47,8 +46,6 @@ import org.sirekanyan.outline.ext.rememberFlowAsState
import org.sirekanyan.outline.isDebugBuild
import org.sirekanyan.outline.isPlayFlavor
import org.sirekanyan.outline.text.formatTraffic
import org.sirekanyan.outline.ui.icons.IconOpenInNew
import org.sirekanyan.outline.ui.icons.IconPlayStore

@Composable
fun DrawerContent(state: MainState) {
Expand Down Expand Up @@ -133,12 +130,10 @@ private fun DrawerSheetContent(state: MainState, insets: PaddingValues) {
},
)
}
val playUri = "https://play.google.com/store/apps/details?id=${context.packageName}"
DrawerItem(
icon = IconPlayStore,
label = "Rate on Play Store",
badge = { Icon(IconOpenInNew, null) },
onClick = { context.startActivity(Intent(ACTION_VIEW, Uri.parse(playUri))) },
icon = Icons.Default.Info,
label = "About",
onClick = { state.dialog = AboutDialog },
)
}
}
Expand Down

0 comments on commit 2f8c5f3

Please sign in to comment.