Browse Source

@fun: Offline

bai 3 years ago
parent
commit
50f6332e07

+ 11 - 11
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/flash/Flash.kt

@@ -20,7 +20,7 @@ import com.ys.bdtp.adm.app.Token
 import com.ys.bdtp.adm.app.isNet
 import com.ys.bdtp.adm.app.theme.textBlackColor
 import com.ys.bdtp.adm.mvvm.ui.screen.main.LocalNavHostController
-import com.ys.bdtp.adm.mvvm.ui.screen.main.Main
+import com.ys.bdtp.adm.mvvm.ui.screen.main.Route
 import com.ys.bdtp.adm.mvvm.vm.flash.FlashViewModel
 import org.kodein.di.compose.rememberInstance
 import org.kodein.di.compose.rememberViewModel
@@ -39,15 +39,15 @@ fun Flash() {
 
         when {
             user == null -> { // 未登录
-                nav.navigate(Main.Login) {
-                    popUpTo(Main.Flash) {
+                nav.navigate(Route.Login) {
+                    popUpTo(Route.Flash) {
                         inclusive = true
                     }
                 }
             }
             !isNet -> { // 登录 && 未联网
-                nav.navigate(Main.Project) {
-                    popUpTo(Main.Flash) {
+                nav.navigate(Route.Project) {
+                    popUpTo(Route.Flash) {
                         inclusive = true
                     }
                 }
@@ -55,23 +55,23 @@ fun Flash() {
             else -> {  // 登录 && 联网
                 val token = sp.getString(Token, "")
                 if (token == "") {
-                    nav.navigate(Main.Login) {
-                        popUpTo(Main.Flash) {
+                    nav.navigate(Route.Login) {
+                        popUpTo(Route.Flash) {
                             inclusive = true
                         }
                     }
                 } else {
                     vm.getAccount(
                         success = {
-                            nav.navigate(Main.Project) {
-                                popUpTo(Main.Flash) {
+                            nav.navigate(Route.Project) {
+                                popUpTo(Route.Flash) {
                                     inclusive = true
                                 }
                             }
                         },
                         failure = {
-                            nav.navigate(Main.Login) {
-                                popUpTo(Main.Flash) {
+                            nav.navigate(Route.Login) {
+                                popUpTo(Route.Flash) {
                                     inclusive = true
                                 }
                             }

+ 13 - 7
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/main/Main.kt

@@ -9,17 +9,19 @@ import androidx.navigation.compose.composable
 import androidx.navigation.compose.rememberNavController
 import com.ys.bdtp.adm.mvvm.ui.screen.flash.Flash
 import com.ys.bdtp.adm.mvvm.ui.screen.login.LoginScreen
+import com.ys.bdtp.adm.mvvm.ui.screen.offline.Offline
 import com.ys.bdtp.adm.mvvm.ui.screen.project.Project
 import com.ys.bdtp.adm.mvvm.ui.screen.task.Task
 import com.ys.bdtp.adm.mvvm.ui.screen.task.Tasks
 
 
-object Main {
+object Route {
     const val Flash = "flash"
     const val Login = "login"
     const val Project = "project"
     const val Task = "task"
     const val Tasks = "tasks"
+    const val Offline = "offline"
 }
 
 val LocalNavHostController = compositionLocalOf<NavHostController?> { null }
@@ -28,22 +30,26 @@ val LocalNavHostController = compositionLocalOf<NavHostController?> { null }
 fun Main() {
     val navController = rememberNavController()
     CompositionLocalProvider(LocalNavHostController provides navController) {
-        NavHost(navController = navController, startDestination = Main.Flash) {
-            composable(Main.Flash) {
+        NavHost(navController = navController, startDestination = Route.Flash) {
+            composable(Route.Flash) {
                 Flash()
             }
-            composable(Main.Login) {
+            composable(Route.Login) {
                 LoginScreen()
             }
-            composable(Main.Project) {
+            composable(Route.Project) {
                 Project()
             }
-            composable("${Main.Task}/{projectId}") { backStackEntry ->
+            composable("${Route.Task}/{projectId}") { backStackEntry ->
                 Task(backStackEntry.arguments?.getString("projectId")!!)
             }
-            composable(Main.Tasks) {
+            composable(Route.Tasks) {
                 Tasks()
             }
+             composable(Route.Offline) {
+                Offline()
+            }
+
         }
 
     }

+ 59 - 1
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/offline/Offline.kt

@@ -1,11 +1,69 @@
 package com.ys.bdtp.adm.mvvm.ui.screen.offline
 
+import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.width
 import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import com.ys.bdtp.adm.mvvm.ui.compose.Head
+import com.ys.bdtp.adm.mvvm.ui.compose.HeadLeft
+import com.ys.bdtp.adm.mvvm.ui.compose.HeadRight
+import com.ys.bdtp.adm.mvvm.ui.screen.main.LocalNavHostController
 
 @Composable
 fun Offline() {
-    Column {
+    val nav = LocalNavHostController.current!!
+    Column(modifier = Modifier.background(Color.White)) {
+        Head(
+            left = { OfflineHeadLeft(nav) },
+            right = {
+                HeadRight(
+                    role = { "业务角色" },
+                    click = {}
+                )
+            }
+        )
+
+        Spacer(
+            modifier = Modifier
+                .height(1.dp)
+                .fillMaxWidth()
+                .background(Color(0xFFEFF0F1))
+        )
+
+
+        Row {
+            OfflineSide()
+            Spacer(
+                modifier = Modifier
+                    .width(1.dp)
+                    .fillMaxHeight()
+                    .background(Color(0xFFEFF0F1))
+            )
+            Column(
+                modifier = Modifier
+                    .fillMaxSize()
+                    .padding(horizontal = 32.dp, vertical = 12.dp)
+            ) {
+                OfflineContent()
+            }
+        }
 
     }
+}
+
+@Preview(widthDp = 1137, heightDp = 711)
+@Composable
+fun PreviewOfflineScreen() {
+    Offline()
 }

+ 65 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/offline/OfflineHeadLeft.kt

@@ -0,0 +1,65 @@
+package com.ys.bdtp.adm.mvvm.ui.screen.offline
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.*
+import androidx.compose.material.IconButton
+import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.text.font.FontWeight.Companion.Bold
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import androidx.navigation.NavHostController
+import com.ys.bdtp.adm.R
+import com.ys.bdtp.adm.mvvm.ui.screen.main.LocalNavHostController
+
+@Composable
+fun OfflineHeadLeft(nav: NavHostController) {
+    Row(
+        verticalAlignment = Alignment.CenterVertically,
+        horizontalArrangement = Arrangement.Start
+    ) {
+
+        Spacer(modifier = Modifier.width(32.dp))
+
+        IconButton(onClick = {
+            nav.navigateUp()
+        }) {
+            Image(
+                painter = painterResource(R.drawable.arrow_back),
+                contentDescription = "",
+                modifier = Modifier.size(24.dp)
+            )
+        }
+
+        Spacer(
+            modifier = Modifier.width(16.dp)
+        )
+
+        Spacer(
+            modifier = Modifier
+                .width(1.dp)
+                .height(16.dp)
+                .background(Color(0xFFD8D8D8))
+        )
+
+        Spacer(
+            modifier = Modifier.width(16.dp)
+        )
+
+        Text(text = "离线数据", fontSize = 16.sp, fontWeight = Bold, color = Color(0xFF1F2329))
+    }
+}
+
+
+@Preview
+@Composable
+fun PreviewOfflineHeadLeft() {
+    val nav = LocalNavHostController.current!!
+    OfflineHeadLeft(nav)
+}

+ 0 - 75
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/offline/OfflineScreen.kt

@@ -1,75 +0,0 @@
-package com.ys.bdtp.adm.mvvm.ui.screen.offline
-
-import androidx.compose.foundation.background
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.fillMaxHeight
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.width
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.tooling.preview.Preview
-import androidx.compose.ui.unit.dp
-import com.ys.bdtp.adm.mvvm.ui.compose.Head
-import com.ys.bdtp.adm.mvvm.ui.compose.HeadLeft
-import com.ys.bdtp.adm.mvvm.ui.compose.HeadRight
-
-@Composable
-fun OfflineScreen() {
-    Column(modifier = Modifier.background(Color.White)) {
-        Head(
-            left = { HeadLeft() },
-            middle = { OfflineHeadSyncMiddle() },
-            right = {
-                HeadRight(
-                    role = { "业务角色" },
-                    click = {}
-                )
-            }
-        )
-
-        Spacer(
-            modifier = Modifier
-                .height(1.dp)
-                .fillMaxWidth()
-                .background(Color(0xFFEFF0F1))
-        )
-
-
-        Row {
-            Column(
-                modifier = Modifier
-                    .width(288.dp)
-                    .fillMaxHeight()
-                    .padding(horizontal = 32.dp, vertical = 12.dp)
-            ) {
-                OfflineSide()
-            }
-            Spacer(
-                modifier = Modifier
-                    .width(1.dp)
-                    .fillMaxHeight()
-                    .background(Color(0xFFEFF0F1))
-            )
-            Column(
-                modifier = Modifier
-                    .fillMaxSize()
-                    .padding(horizontal = 32.dp, vertical = 12.dp)
-            ) {
-                OfflineContent()
-            }
-        }
-
-    }
-}
-
-@Preview(widthDp = 1137, heightDp = 711)
-@Composable
-fun PreviewOfflineScreen() {
-    OfflineScreen()
-}

+ 6 - 6
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/project/Project.kt

@@ -16,7 +16,7 @@ import com.ys.bdtp.adm.mvvm.model.db.entity.ProjectEntity
 import com.ys.bdtp.adm.mvvm.model.db.entity.UserEntity
 import com.ys.bdtp.adm.mvvm.ui.compose.*
 import com.ys.bdtp.adm.mvvm.ui.screen.main.LocalNavHostController
-import com.ys.bdtp.adm.mvvm.ui.screen.main.Main
+import com.ys.bdtp.adm.mvvm.ui.screen.main.Route
 import com.ys.bdtp.adm.mvvm.vm.project.ProjectViewModel
 import kotlinx.coroutines.launch
 import org.kodein.di.compose.rememberInstance
@@ -56,11 +56,11 @@ fun Project() {
                 }
             }
         } else {
-            // 离线
+            // 离线暂时有问题
             val u = vm.currentUser()
             if (u == null) {
-                nav.navigate(Main.Login) {
-                    popUpTo(Main.Project) {
+                nav.navigate(Route.Login) {
+                    popUpTo(Route.Project) {
                         inclusive = true
                     }
                 }
@@ -96,8 +96,8 @@ fun Project() {
                         vm.logout()
                     }
                     popupState = false
-                    nav.navigate(Main.Login) {
-                        popUpTo(Main.Project) {
+                    nav.navigate(Route.Login) {
+                        popUpTo(Route.Project) {
                             inclusive = true
                         }
                     }

+ 2 - 2
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/project/ProjectItem.kt

@@ -18,7 +18,7 @@ import androidx.compose.ui.unit.sp
 import com.ys.bdtp.adm.R
 import com.ys.bdtp.adm.mvvm.model.db.entity.ProjectEntity
 import com.ys.bdtp.adm.mvvm.ui.screen.main.LocalNavHostController
-import com.ys.bdtp.adm.mvvm.ui.screen.main.Main
+import com.ys.bdtp.adm.mvvm.ui.screen.main.Route
 
 @Composable
 fun ProjectItem(project: ProjectEntity) {
@@ -35,7 +35,7 @@ fun ProjectItem(project: ProjectEntity) {
         Row(
             modifier = Modifier
                 .clickable {
-                    nav.navigate("${Main.Task}/${project.projectId}")
+                    nav.navigate("${Route.Task}/${project.projectId}")
                 }
                 .padding(20.dp),
             verticalAlignment = Alignment.CenterVertically

+ 1 - 16
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/task/Task.kt

@@ -18,16 +18,13 @@ import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.setValue
-import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
-import com.ys.bdtp.adm.R
 import com.ys.bdtp.adm.app.theme.underColor
 import com.ys.bdtp.adm.mvvm.model.db.entity.ProjectEntity
 import com.ys.bdtp.adm.mvvm.ui.compose.Head
-import com.ys.bdtp.adm.mvvm.ui.compose.TaskType
 import com.ys.bdtp.adm.mvvm.ui.compose.HeadRight
 import com.ys.bdtp.adm.mvvm.ui.screen.main.LocalNavHostController
 import com.ys.bdtp.adm.mvvm.vm.task.TaskViewModel
@@ -72,19 +69,7 @@ fun Task(projectId: String) {
                     .padding(horizontal = 32.dp, vertical = 30.dp)
             ) {
                 // 工作分类
-                Column(
-                    horizontalAlignment = Alignment.CenterHorizontally
-                ) {
-                    TaskType(R.drawable.project_task_cad, "CAD核查")
-                    Spacer(modifier = Modifier.height(20.dp))
-                    TaskType(R.drawable.project_task_space, "空间模型核查")
-                    Spacer(modifier = Modifier.height(20.dp))
-                    TaskType(R.drawable.project_task_electric, "机电核查")
-                    Spacer(modifier = Modifier.height(20.dp))
-                    TaskType(R.drawable.project_task_relation, "交付关系")
-                    Spacer(modifier = Modifier.height(20.dp))
-                    TaskType(R.drawable.project_task_offline, "离线数据")
-                }
+                TaskSide(nav)
                 // 项目切换
 
             }

+ 2 - 2
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/task/TaskContent.kt

@@ -15,7 +15,7 @@ import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
 import com.ys.bdtp.adm.mvvm.ui.screen.main.LocalNavHostController
-import com.ys.bdtp.adm.mvvm.ui.screen.main.Main
+import com.ys.bdtp.adm.mvvm.ui.screen.main.Route
 
 /**
  * 近期任务组件
@@ -56,7 +56,7 @@ fun TaskContent(title: String) {
         Spacer(modifier = Modifier.fillMaxWidth().height(40.dp))
         TextButton(
             onClick = {
-                nav.navigate(Main.Tasks)
+                nav.navigate(Route.Tasks)
             },
             modifier = Modifier.wrapContentWidth()
         ) {

+ 42 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/task/TaskSide.kt

@@ -0,0 +1,42 @@
+package com.ys.bdtp.adm.mvvm.ui.screen.task
+
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.height
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import androidx.navigation.NavHostController
+import com.ys.bdtp.adm.R
+import com.ys.bdtp.adm.mvvm.ui.screen.main.LocalNavHostController
+import com.ys.bdtp.adm.mvvm.ui.screen.main.Route
+
+@Composable
+fun TaskSide(nav: NavHostController) {
+    Column(
+        horizontalAlignment = Alignment.CenterHorizontally
+    ) {
+        TaskType(R.drawable.project_task_cad, "CAD核查") {
+            //nav.navigate()
+        }
+        Spacer(modifier = Modifier.height(20.dp))
+        TaskType(R.drawable.project_task_space, "空间模型核查") {}
+        Spacer(modifier = Modifier.height(20.dp))
+        TaskType(R.drawable.project_task_electric, "机电核查") {}
+        Spacer(modifier = Modifier.height(20.dp))
+        TaskType(R.drawable.project_task_relation, "交付关系") {}
+        Spacer(modifier = Modifier.height(20.dp))
+        TaskType(R.drawable.project_task_offline, "离线数据") {
+            nav.navigate(Route.Offline)
+        }
+    }
+}
+
+@Preview
+@Composable
+fun PreviewTaskSide() {
+    val nav = LocalNavHostController.current!!
+    TaskSide(nav)
+}

+ 6 - 2
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/task/TaskType.kt

@@ -1,8 +1,9 @@
-package com.ys.bdtp.adm.mvvm.ui.compose
+package com.ys.bdtp.adm.mvvm.ui.screen.task
 
 import androidx.compose.foundation.BorderStroke
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.background
+import androidx.compose.foundation.clickable
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.height
@@ -29,7 +30,7 @@ import androidx.compose.ui.unit.sp
  *  5. 离线数据
  */
 @Composable
-fun TaskType(resId: Int, title: String) {
+fun TaskType(resId: Int, title: String, click: () -> Unit) {
     Card(
         shape = RoundedCornerShape(8),
         border = BorderStroke(0.8.dp, Color(0xFFE5E5E5)),
@@ -40,6 +41,9 @@ fun TaskType(resId: Int, title: String) {
                 .width(280.dp)
                 .height(92.dp)
                 .background(Color.White)
+                .clickable {
+                    click()
+                }
                 .padding(horizontal = 18.dp, vertical = 17.dp),
             verticalAlignment = Alignment.CenterVertically
         ) {