diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/BluetoothDetailsFragment.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/BluetoothDetailsFragment.kt index c1520c78..167a26fe 100644 --- a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/BluetoothDetailsFragment.kt +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/BluetoothDetailsFragment.kt @@ -20,7 +20,7 @@ import com.craxiom.networksurvey.ui.UNKNOWN_RSSI import com.craxiom.networksurvey.ui.bluetooth.BluetoothDetailsScreen import com.craxiom.networksurvey.ui.bluetooth.BluetoothDetailsViewModel import com.craxiom.networksurvey.ui.main.SharedViewModel -import com.craxiom.networksurvey.util.NsTheme +import com.craxiom.networksurvey.ui.theme.NsTheme import com.craxiom.networksurvey.util.PreferenceUtils import timber.log.Timber diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/CellularCalculatorFragment.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/CellularCalculatorFragment.kt index ccd34e12..c54c2ddc 100644 --- a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/CellularCalculatorFragment.kt +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/CellularCalculatorFragment.kt @@ -9,7 +9,7 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.viewmodel.compose.viewModel import com.craxiom.networksurvey.ui.cellular.CalculatorScreen import com.craxiom.networksurvey.ui.cellular.model.CalculatorViewModel -import com.craxiom.networksurvey.util.NsTheme +import com.craxiom.networksurvey.ui.theme.NsTheme /** * The fragment that is responsible for displaying the cellular calculators screen. diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/GnssDetailsFragment.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/GnssDetailsFragment.kt index 4f760d2a..f9b1f110 100644 --- a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/GnssDetailsFragment.kt +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/GnssDetailsFragment.kt @@ -26,7 +26,7 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import com.craxiom.networksurvey.ui.gnss.GnssStatusScreen import com.craxiom.networksurvey.ui.gnss.model.SignalInfoViewModel -import com.craxiom.networksurvey.util.NsTheme +import com.craxiom.networksurvey.ui.theme.NsTheme import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/SkyFragment.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/SkyFragment.kt index c8c16272..58067b38 100644 --- a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/SkyFragment.kt +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/SkyFragment.kt @@ -49,9 +49,9 @@ import com.craxiom.networksurvey.ui.gnss.data.FixState import com.craxiom.networksurvey.ui.gnss.data.LocationRepository import com.craxiom.networksurvey.ui.gnss.model.SatelliteMetadata import com.craxiom.networksurvey.ui.gnss.model.SignalInfoViewModel +import com.craxiom.networksurvey.ui.theme.NsTheme import com.craxiom.networksurvey.util.LibUIUtils import com.craxiom.networksurvey.util.MathUtils -import com.craxiom.networksurvey.util.NsTheme import com.craxiom.networksurvey.util.PreferenceUtils.clearGnssFilter import com.craxiom.networksurvey.util.PreferenceUtils.gnssFilter import dagger.hilt.android.AndroidEntryPoint diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/TowerMapFragment.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/TowerMapFragment.kt index 2883b941..c6840813 100644 --- a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/TowerMapFragment.kt +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/TowerMapFragment.kt @@ -30,7 +30,7 @@ import com.craxiom.networksurvey.services.NetworkSurveyService import com.craxiom.networksurvey.ui.cellular.TowerMapScreen import com.craxiom.networksurvey.ui.cellular.model.ServingCellInfo import com.craxiom.networksurvey.ui.cellular.model.TowerMapViewModel -import com.craxiom.networksurvey.util.NsTheme +import com.craxiom.networksurvey.ui.theme.NsTheme import com.craxiom.networksurvey.util.PreferenceUtils import timber.log.Timber import java.util.Collections diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/WifiDetailsFragment.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/WifiDetailsFragment.kt index dc122ee7..5eb58315 100644 --- a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/WifiDetailsFragment.kt +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/WifiDetailsFragment.kt @@ -17,9 +17,9 @@ import com.craxiom.networksurvey.model.WifiRecordWrapper import com.craxiom.networksurvey.services.NetworkSurveyService import com.craxiom.networksurvey.ui.UNKNOWN_RSSI import com.craxiom.networksurvey.ui.main.SharedViewModel +import com.craxiom.networksurvey.ui.theme.NsTheme import com.craxiom.networksurvey.ui.wifi.WifiDetailsScreen import com.craxiom.networksurvey.ui.wifi.model.WifiDetailsViewModel -import com.craxiom.networksurvey.util.NsTheme import com.craxiom.networksurvey.util.PreferenceUtils import timber.log.Timber diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/WifiSpectrumFragment.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/WifiSpectrumFragment.kt index 1be40241..8a1a3a25 100644 --- a/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/WifiSpectrumFragment.kt +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/fragments/WifiSpectrumFragment.kt @@ -16,6 +16,7 @@ import com.craxiom.networksurvey.listeners.IWifiSurveyRecordListener import com.craxiom.networksurvey.model.WifiRecordWrapper import com.craxiom.networksurvey.services.NetworkSurveyService import com.craxiom.networksurvey.ui.main.SharedViewModel +import com.craxiom.networksurvey.ui.theme.NsTheme import com.craxiom.networksurvey.ui.wifi.WifiSpectrumScreen import com.craxiom.networksurvey.ui.wifi.model.WifiNetworkInfoList import com.craxiom.networksurvey.ui.wifi.model.WifiSpectrum24ViewModel @@ -24,7 +25,6 @@ import com.craxiom.networksurvey.ui.wifi.model.WifiSpectrum5Group2ViewModel import com.craxiom.networksurvey.ui.wifi.model.WifiSpectrum5Group3ViewModel import com.craxiom.networksurvey.ui.wifi.model.WifiSpectrum6ViewModel import com.craxiom.networksurvey.ui.wifi.model.WifiSpectrumScreenViewModel -import com.craxiom.networksurvey.util.NsTheme import com.craxiom.networksurvey.util.PreferenceUtils import com.craxiom.networksurvey.util.WifiUtils diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/ui/cellular/ComposeFunctions.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/cellular/ComposeFunctions.kt index cc746951..cd7ac7d6 100644 --- a/networksurvey/src/main/java/com/craxiom/networksurvey/ui/cellular/ComposeFunctions.kt +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/cellular/ComposeFunctions.kt @@ -4,13 +4,13 @@ package com.craxiom.networksurvey.ui.cellular import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy -import com.craxiom.networksurvey.util.CellularTheme +import com.craxiom.networksurvey.ui.theme.NsTheme fun setContent(composeView: ComposeView, viewModel: CellularChartViewModel) { composeView.apply { setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) setContent { - CellularTheme { + NsTheme { CellularChartComponent(viewModel = viewModel) } } diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/ui/main/NsMainScreen.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/main/NsMainScreen.kt index 03ea471c..f03421a9 100644 --- a/networksurvey/src/main/java/com/craxiom/networksurvey/ui/main/NsMainScreen.kt +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/main/NsMainScreen.kt @@ -24,7 +24,7 @@ import com.craxiom.networksurvey.fragments.model.MqttConnectionSettings import com.craxiom.networksurvey.model.WifiNetwork import com.craxiom.networksurvey.ui.main.appdrawer.AppDrawerContent import com.craxiom.networksurvey.ui.main.appdrawer.AppDrawerItemInfo -import com.craxiom.networksurvey.util.NsTheme +import com.craxiom.networksurvey.ui.theme.NsTheme @Composable diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/ui/main/appdrawer/AppDrawerContent.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/main/appdrawer/AppDrawerContent.kt index 04ab2387..34dcb3bc 100644 --- a/networksurvey/src/main/java/com/craxiom/networksurvey/ui/main/appdrawer/AppDrawerContent.kt +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/main/appdrawer/AppDrawerContent.kt @@ -1,11 +1,17 @@ package com.craxiom.networksurvey.ui.main.appdrawer +import android.graphics.Bitmap +import android.graphics.Canvas +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredSize +import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.DrawerState +import androidx.compose.material3.DrawerValue import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalDrawerSheet @@ -19,7 +25,16 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.asImageBitmap +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.core.content.res.ResourcesCompat +import com.craxiom.networksurvey.R +import com.craxiom.networksurvey.ui.main.DrawerParams +import com.craxiom.networksurvey.ui.main.NavDrawerOption +import com.craxiom.networksurvey.ui.theme.NsTheme import kotlinx.coroutines.launch @Composable @@ -34,18 +49,28 @@ fun > AppDrawerContent( var currentPick by remember { mutableStateOf(defaultPick) } val coroutineScope = rememberCoroutineScope() - ModalDrawerSheet { + ModalDrawerSheet(drawerContainerColor = MaterialTheme.colorScheme.background) { Surface(color = MaterialTheme.colorScheme.background) { Column( - horizontalAlignment = Alignment.CenterHorizontally + horizontalAlignment = Alignment.Start, + modifier = Modifier.padding(8.dp) ) { + AppIcon() + + // App Title + Text( + text = stringResource(id = R.string.app_name), + style = MaterialTheme.typography.headlineSmall, + modifier = Modifier.padding(top = 8.dp, bottom = 16.dp) + ) + + // Menu Items LazyColumn( - modifier = Modifier.padding(horizontal = 8.dp), - horizontalAlignment = Alignment.CenterHorizontally + modifier = Modifier.padding(horizontal = 0.dp), + horizontalAlignment = Alignment.Start ) { items(menuItems) { item -> AppDrawerItem(item = item) { navOption -> - if (currentPick == navOption) { coroutineScope.launch { drawerState.close() @@ -62,8 +87,8 @@ fun > AppDrawerContent( } item { - // TODO Figure out a way to prevent this from making the drawer wider - HorizontalDivider(thickness = 1.dp) + // Divider between menu and external links + HorizontalDivider(thickness = 1.dp, modifier = Modifier.width(220.dp)) } items(externalLinks) { item -> @@ -86,11 +111,55 @@ fun > AppDrawerContent( Spacer(modifier = Modifier.weight(1f)) + // App Version at Bottom Text( - text = "App Version: $appVersion", - modifier = Modifier.align(Alignment.CenterHorizontally) + text = appVersion, + modifier = Modifier.align(Alignment.CenterHorizontally), + style = MaterialTheme.typography.bodySmall ) } } } +} + +@Composable +fun AppIcon() { + ResourcesCompat.getDrawable( + LocalContext.current.resources, + R.mipmap.ic_launcher, LocalContext.current.theme + )?.let { drawable -> + val bitmap = Bitmap.createBitmap( + drawable.intrinsicWidth, drawable.intrinsicHeight, + Bitmap.Config.ARGB_8888 + ) + val canvas = Canvas(bitmap) + drawable.setBounds(0, 0, canvas.width, canvas.height) + drawable.draw(canvas) + Column( + modifier = Modifier + .padding(8.dp), + horizontalAlignment = Alignment.Start + ) { + Image( + bitmap = bitmap.asImageBitmap(), + "Network Survey App Icon", + modifier = Modifier.requiredSize(54.dp) + ) + } + } +} + +@Preview +@Composable +fun AppDrawerContentPreview() { + NsTheme { + AppDrawerContent( + appVersion = "1.0", + drawerState = DrawerState(DrawerValue.Closed), + menuItems = DrawerParams.drawerButtons, + externalLinks = DrawerParams.externalDrawerLinks, + defaultPick = NavDrawerOption.CellularCalculators, + onClick = {} + ) + } } \ No newline at end of file diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/ui/main/appdrawer/AppDrawerItem.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/main/appdrawer/AppDrawerItem.kt index 7c04b98d..9cbc9e19 100644 --- a/networksurvey/src/main/java/com/craxiom/networksurvey/ui/main/appdrawer/AppDrawerItem.kt +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/main/appdrawer/AppDrawerItem.kt @@ -23,15 +23,14 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.unit.dp import com.craxiom.networksurvey.ui.main.DrawerParams import com.craxiom.networksurvey.ui.main.NavDrawerOption -import com.craxiom.networksurvey.util.NsTheme +import com.craxiom.networksurvey.ui.theme.NsTheme @Composable fun AppDrawerItem(item: AppDrawerItemInfo, onClick: (options: T) -> Unit) = Surface( - color = MaterialTheme.colorScheme.onPrimary, modifier = Modifier .width(200.dp) - .padding(16.dp), + .padding(vertical = 4.dp), onClick = { onClick(item.drawerOption) }, shape = RoundedCornerShape(50), ) { @@ -39,7 +38,7 @@ fun AppDrawerItem(item: AppDrawerItemInfo, onClick: (options: T) -> Unit) horizontalArrangement = Arrangement.Start, verticalAlignment = Alignment.CenterVertically, modifier = Modifier - .padding(8.dp) + .padding(vertical = 8.dp, horizontal = 6.dp) ) { Icon( painter = painterResource(id = item.drawableId), @@ -51,7 +50,8 @@ fun AppDrawerItem(item: AppDrawerItemInfo, onClick: (options: T) -> Unit) Text( text = stringResource(id = item.title), style = MaterialTheme.typography.bodyMedium, - textAlign = TextAlign.Center, + textAlign = TextAlign.Start, + maxLines = 1 ) } } diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/ui/theme/Color.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/theme/Color.kt new file mode 100644 index 00000000..8932a982 --- /dev/null +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/theme/Color.kt @@ -0,0 +1,9 @@ +package com.craxiom.networksurvey.ui.theme + +import androidx.compose.ui.graphics.Color + +val ColorBlack = Color(0xFF000000) +val ColorOffBlack = Color(0xFF161616) +val ColorWhiteCultured = Color(0xFFF4F4F4) +val ColorRedFieryRose = Color(0xFFF45B69) +val ColorBlueIceberg = Color(0xFF8BAED0) \ No newline at end of file diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/ui/theme/NsTheme.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/theme/NsTheme.kt new file mode 100644 index 00000000..5f2c3741 --- /dev/null +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/theme/NsTheme.kt @@ -0,0 +1,91 @@ +package com.craxiom.networksurvey.ui.theme + +import android.app.Activity +import androidx.compose.material3.ColorScheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Typography +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.colorResource +import androidx.core.view.WindowCompat +import com.craxiom.networksurvey.R + +@Composable +fun OldNsTheme(content: @Composable () -> Unit) { + val darkColorScheme = + darkColorScheme( + surface = colorResource(id = R.color.colorCardDark), + background = Color.Black, + primary = colorResource(id = R.color.colorAccent), + tertiary = colorResource(id = R.color.colorAccent), + ) + MaterialTheme( + colorScheme = darkColorScheme, + typography = Typography(), + content = content, + ) +} + +private val DarkColorScheme: ColorScheme + @Composable + get() = darkColorScheme( + primary = colorResource(id = R.color.colorAccent), + secondary = ColorBlueIceberg, + tertiary = colorResource(id = R.color.colorAccent), + background = ColorBlack, + surface = ColorBlack, + onPrimary = ColorOffBlack, + onSecondary = ColorWhiteCultured, + onTertiary = ColorWhiteCultured, + onBackground = ColorWhiteCultured, + onSurface = colorResource(id = R.color.normalText), + surfaceTint = ColorWhiteCultured + ) + +private val LightColorScheme = lightColorScheme( + primary = ColorWhiteCultured, + secondary = ColorBlueIceberg, + tertiary = ColorRedFieryRose, + background = ColorBlueIceberg, + surface = ColorBlueIceberg, + onPrimary = ColorOffBlack, + onSecondary = ColorWhiteCultured, + onTertiary = ColorWhiteCultured, + onBackground = ColorWhiteCultured, + onSurface = ColorWhiteCultured, + surfaceTint = ColorBlack +) + +@Composable +fun NsTheme( + darkTheme: Boolean = true, + content: @Composable () -> Unit +) { + val colorScheme = DarkColorScheme + val view = LocalView.current + val currentWindow = (view.context as? Activity)?.window + if (!view.isInEditMode && currentWindow != null) { + /*val currentWindow = (view.context as? Activity)?.window + ?: throw Exception("Not in an activity - unable to get Window reference")*/ + + SideEffect { + (view.context as Activity).window.statusBarColor = colorScheme.background.toArgb() + (view.context as Activity).window.navigationBarColor = colorScheme.background.toArgb() + WindowCompat.getInsetsController(currentWindow, view).isAppearanceLightStatusBars = + false + /*WindowCompat.setDecorFitsSystemWindows(currentWindow, false) + val insetsController = WindowCompat.getInsetsController(currentWindow, view) + insetsController.isAppearanceLightStatusBars = false + insetsController.hide(WindowInsetsCompat.Type.statusBars())*/ + } + } + + MaterialTheme( + colorScheme = colorScheme, typography = Typography(), content = content + ) +} diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/ui/theme/Typography.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/theme/Typography.kt new file mode 100644 index 00000000..28d527cf --- /dev/null +++ b/networksurvey/src/main/java/com/craxiom/networksurvey/ui/theme/Typography.kt @@ -0,0 +1,38 @@ +package com.craxiom.networksurvey.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +val customTypography = Typography( + titleLarge = TextStyle( + fontWeight = FontWeight.Bold, + fontSize = 36.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp, + color = Color.White + ), + titleMedium = TextStyle( + fontWeight = FontWeight.Bold, + fontSize = 24.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp, + color = Color.White + ), + bodyMedium = TextStyle( + fontWeight = FontWeight.Normal, + fontSize = 18.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp, + color = Color.White + ), + labelMedium = TextStyle( + fontWeight = FontWeight.Bold, + fontSize = 18.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp, + color = Color.White + ), +) \ No newline at end of file diff --git a/networksurvey/src/main/java/com/craxiom/networksurvey/util/NsTheme.kt b/networksurvey/src/main/java/com/craxiom/networksurvey/util/NsTheme.kt deleted file mode 100644 index 804731eb..00000000 --- a/networksurvey/src/main/java/com/craxiom/networksurvey/util/NsTheme.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.craxiom.networksurvey.util - -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Typography -import androidx.compose.material3.darkColorScheme -import androidx.compose.runtime.Composable -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.colorResource -import com.craxiom.networksurvey.R - -@Composable -fun NsTheme(content: @Composable () -> Unit) { - val darkColorScheme = - darkColorScheme( - surface = colorResource(id = R.color.colorCardDark), - background = Color.Black, - primary = colorResource(id = R.color.colorAccent), - tertiary = colorResource(id = R.color.colorAccent), - ) - MaterialTheme( - colorScheme = darkColorScheme, - typography = Typography(), - content = content, - ) -} - -/** - * The theme used to match the existing cellular UI. - */ -@Composable -fun CellularTheme(content: @Composable () -> Unit) { - val darkColorScheme = - darkColorScheme( - surface = colorResource(id = R.color.colorCardDark), - background = Color.Black, - primary = colorResource(id = R.color.colorAccent), - tertiary = colorResource(id = R.color.colorAccent), - ) - MaterialTheme( - colorScheme = darkColorScheme, - typography = Typography(), - content = content, - ) -} diff --git a/networksurvey/src/main/res/drawable-v24/ic_launcher_foreground.xml b/networksurvey/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index 3bb4cdbc..00000000 --- a/networksurvey/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - -