Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .claude/settings.local.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,14 @@
"allow": [
"Bash(./gradlew:*)",
"Bash(grep:*)",
"Bash(rm:*)"
"Bash(rm:*)",
"Bash(dir:*)",
"Bash(ls:*)",
"Bash(echo:*)",
"Bash(for file in *.png)",
"Bash(do cwebp:*)",
"Bash(done)",
"Bash(for:*)"
],
"deny": []
}
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,6 @@ mapbox_access_token.xml
/herecredentials.properties
build/
libs/*
*.apk
*.dm

37 changes: 37 additions & 0 deletions example-app/release/output-metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"version": 3,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "com.mapconductor.example",
"variantName": "release",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 1,
"versionName": "1.0",
"outputFile": "example-app-release.apk"
}
],
"elementType": "File",
"baselineProfiles": [
{
"minApi": 28,
"maxApi": 30,
"baselineProfiles": [
"baselineProfiles/1/example-app-release.dm"
]
},
{
"minApi": 31,
"maxApi": 2147483647,
"baselineProfiles": [
"baselineProfiles/0/example-app-release.dm"
]
}
],
"minSdkVersionForDexing": 26
}
137 changes: 40 additions & 97 deletions example-app/src/main/java/com/mapconductor/example/DemoAppScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,55 +2,32 @@ package com.mapconductor.example

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Build
import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material.icons.filled.Home
import androidx.compose.material.icons.filled.Place
import androidx.compose.material.icons.filled.PlayArrow
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.core.content.ContextCompat
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.compose.viewModel
import com.mapconductor.example.navigation.NavigationViewModel
import com.mapconductor.example.pages.animation.AnimationMapPage
import com.mapconductor.example.pages.circle.CircleMapPage
import com.mapconductor.example.pages.groundimage.GroundImageMapPage
import com.mapconductor.example.pages.groundimage.GroundImageResources
import com.mapconductor.example.pages.map.basic.StoreMapPage
import com.mapconductor.example.pages.map.design.MapDesignMapPage
import com.mapconductor.example.pages.map.flyto.FlyToMapIcons
import com.mapconductor.example.pages.map.flyto.FlyToMapPage
import com.mapconductor.example.pages.mapDesign.MapDesignMapPage
import com.mapconductor.example.pages.marker.MarkerBasicPage
import com.mapconductor.example.pages.marker.animation.AnimationMapPage
import com.mapconductor.example.pages.marker.icons.MarkerBasicPage
import com.mapconductor.example.pages.polygon.PolygonMapPage
import com.mapconductor.example.pages.polyline.PolylineMapPage
import com.mapconductor.example.pages.stores.StoreMapPage
import com.mapconductor.example.pages.startup.StartUpPage
import com.mapconductor.example.ui.sidebar.Sidebar
import com.mapconductor.example.ui.sidebar.SidebarItem
import com.mapconductor.example.ui.theme.AppTheme

@Composable
fun DemoAppScreen(initPage: String = "map") {
val navigationViewModel: NavigationViewModel =
viewModel<NavigationViewModel>(
factory =
object : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(NavigationViewModel::class.java)) {
@Suppress("UNCHECKED_CAST")
return NavigationViewModel(initPage) as T
}
throw IllegalArgumentException("Unknown ViewModel class")
}
},
)
val navigationViewModel: NavigationViewModel = remember { NavigationViewModel(initPage) }

val currentPage by navigationViewModel.currentPage
val isSidebarExpanded by navigationViewModel.isSidebarExpanded
Expand All @@ -77,88 +54,79 @@ fun DemoAppScreen(initPage: String = "map") {
val sidebarItems =
listOf(
SidebarItem(
id = "map",
title = "Map Demo",
icon = Icons.Default.Home,
route = "map",
id = "map-basic",
title = "Map",
),
SidebarItem(
id = "map-flyTo",
title = "Move camera",
),
SidebarItem(
id = "map-design",
title = "Map design",
),
SidebarItem(
id = "marker-basic",
title = "Marker",
icon = Icons.Default.Home,
route = "marker-basic",
),
SidebarItem(
id = "flyTo",
title = "Move camera",
icon = Icons.Default.PlayArrow,
route = "flyTo",
id = "marker-animation",
title = "Marker animation ",
),
SidebarItem(
id = "circle",
title = "Circle ",
icon = Icons.Default.CheckCircle,
route = "circle",
),
SidebarItem(
id = "groundImage",
title = "GroundImage",
icon = Icons.Default.Favorite,
route = "groundImage",
),
SidebarItem(
id = "polyline",
title = "Polyline ",
icon = Icons.Default.PlayArrow,
route = "polyline",
),
SidebarItem(
id = "polygon",
title = "polygon ",
icon = Icons.Default.PlayArrow,
route = "polygon",
),
SidebarItem(
id = "animation",
title = "Animation ",
icon = Icons.Default.Place,
route = "animation",
),
SidebarItem(
id = "mapDesign",
title = "MapDesign Demo",
icon = Icons.Default.Build,
route = "mapDesign",
),
// SidebarItem(
// id = "examples",
// title = "Map Examples",
// icon = Icons.Default.LocationOn,
// route = "examples",
// ),
// SidebarItem(
// id = "settings",
// title = "Settings",
// icon = Icons.Default.Settings,
// route = "settings",
// ),
)

AppTheme {
Box(modifier = Modifier.fillMaxSize()) {
// Main content
Box(modifier = Modifier.fillMaxSize()) {
when (currentPage) {
"map" -> {
"startup" -> {
StartUpPage(
onToggleSidebar = navigationViewModel::toggleSidebar,
)
}
"map-basic" -> {
StoreMapPage(
onToggleSidebar = navigationViewModel::toggleSidebar,
)
}
"map-design" -> {
MapDesignMapPage(
onToggleSidebar = navigationViewModel::toggleSidebar,
)
}
"map-flyTo" -> {
FlyToMapPage(
icons = flyToMapPageIcons,
onToggleSidebar = navigationViewModel::toggleSidebar,
)
}
"marker-basic" -> {
MarkerBasicPage(
onToggleSidebar = navigationViewModel::toggleSidebar,
)
}
"marker-animation" -> {
AnimationMapPage(
onToggleSidebar = navigationViewModel::toggleSidebar,
)
}
"circle" -> {
CircleMapPage(
onToggleSidebar = navigationViewModel::toggleSidebar,
Expand All @@ -174,37 +142,12 @@ fun DemoAppScreen(initPage: String = "map") {
onToggleSidebar = navigationViewModel::toggleSidebar,
)
}
"flyTo" -> {
FlyToMapPage(
icons = flyToMapPageIcons,
onToggleSidebar = navigationViewModel::toggleSidebar,
)
}
"groundImage" -> {
GroundImageMapPage(
groundImageResources = groundImageResources,
onToggleSidebar = navigationViewModel::toggleSidebar,
)
}
"animation" -> {
AnimationMapPage(
onToggleSidebar = navigationViewModel::toggleSidebar,
)
}
"mapDesign" -> {
MapDesignMapPage(
onToggleSidebar = navigationViewModel::toggleSidebar,
)
}
"settings" -> {
// Placeholder for settings page
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center,
) {
Text("Settings page coming soon...")
}
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class MainActivity : ComponentActivity() {

setContent {
DemoAppScreen(
initPage = "map",
initPage = "startup",
)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mapconductor.example.pages.stores
package com.mapconductor.example.pages.map.basic

import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mapconductor.example.pages.stores
package com.mapconductor.example.pages.map.basic

import androidx.compose.foundation.background
import androidx.compose.foundation.isSystemInDarkTheme
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mapconductor.example.pages.stores
package com.mapconductor.example.pages.map.basic

import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.runtime.Composable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mapconductor.example.pages.stores
package com.mapconductor.example.pages.map.basic

import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mapconductor.example.pages.stores
package com.mapconductor.example.pages.map.basic

import androidx.core.net.toUri
import androidx.lifecycle.ViewModel
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package com.mapconductor.example.pages.mapDesign
package com.mapconductor.example.pages.map.design

import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import com.mapconductor.core.map.MapViewState
import com.mapconductor.example.MapViewContainer
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mapconductor.example.pages.mapDesign
package com.mapconductor.example.pages.map.design

import androidx.compose.foundation.layout.calculateEndPadding
import androidx.compose.foundation.layout.calculateStartPadding
Expand Down Expand Up @@ -39,8 +39,6 @@ import com.mapconductor.mapbox.MapboxViewState
fun MapDesignMapPage(onToggleSidebar: () -> Unit = {}) {
val viewModel = remember { MapDesignPageViewModelImpl() }

val mapDesignOptions = viewModel.mapDesignOptions.collectAsState()

DemoMapPageScaffold(
menuItems = DefaultMapViewItems(viewModel.initCameraPosition),
onToggleSidebar = onToggleSidebar,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mapconductor.example.pages.mapDesign
package com.mapconductor.example.pages.map.design

import androidx.lifecycle.ViewModel
import com.mapconductor.arcgis.ArcGISDesign
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mapconductor.example.pages.animation
package com.mapconductor.example.pages.marker.animation

import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mapconductor.example.pages.animation
package com.mapconductor.example.pages.marker.animation

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
Expand Down
Loading
Loading