bai 3 vuotta sitten
vanhempi
commit
fc57d85949

+ 9 - 54
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/cad/CadContent.kt

@@ -5,45 +5,21 @@ import androidx.compose.foundation.layout.*
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.items
 import androidx.compose.material.Text
-import androidx.compose.runtime.*
+import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.platform.LocalLifecycleOwner
-import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
-import androidx.core.graphics.scaleMatrix
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.flowWithLifecycle
 import com.ys.bdtp.adm.app.theme.textBlackColor
 import com.ys.bdtp.adm.app.theme.trDivColor
 import com.ys.bdtp.adm.app.theme.whiteColor
-import com.ys.bdtp.adm.mvvm.model.Data
-import com.ys.bdtp.adm.mvvm.model.State
 import com.ys.bdtp.adm.mvvm.model.db.entity.task.CadEntity
-import com.ys.bdtp.adm.mvvm.model.db.entity.task.FloorEntity
 import com.ys.bdtp.adm.mvvm.model.db.relation.FloorWithCads
-import com.ys.bdtp.adm.mvvm.ui.compose.Blank
 import com.ys.bdtp.adm.mvvm.ui.compose.SelectState
 import com.ys.bdtp.adm.mvvm.ui.compose.Table
-import com.ys.bdtp.adm.mvvm.vm.cad.CadViewModel
-import kotlinx.coroutines.launch
-import org.kodein.di.compose.rememberViewModel
-
-/*@Composable
-fun CadContent(selectState: SelectState, floorEntity: FloorEntity?) {
-    val vm by rememberViewModel<CadViewModel>()
-    val floor by rememberUpdatedState(floorEntity)
-    println("floor::::: $floor")
-
-    var floorState by remember { mutableStateOf<FloorWithCads?>(null) }
-    LaunchedEffect(Unit) {
-        if (floorEntity != null) {
-            floorState = vm.getFloorWithCads(floor?.id ?: "")
-            println("floorState: $floorState")
-        }
-
 
+@Composable
+fun CadContent(selectState: SelectState, floor: FloorWithCads?, itemClick: (CadEntity) -> Unit) {
     Column(
         modifier = Modifier
             .fillMaxSize()
@@ -60,10 +36,12 @@ fun CadContent(selectState: SelectState, floorEntity: FloorEntity?) {
             },
             tr = {
                 LazyColumn(modifier = Modifier.fillMaxSize()) {
-                    floorState?.cads?.let { cads ->
-                        items(cads) { cad: CadEntity ->
+                    floor?.let {
+                        items(it.cads) { cad: CadEntity ->
                             Box {
-                                CadDrawingItem(cad)
+                                CadDrawingItem(cad) {
+                                    itemClick(cad)
+                                }
                                 Spacer(
                                     modifier = Modifier
                                         .align(Alignment.BottomCenter)
@@ -74,33 +52,10 @@ fun CadContent(selectState: SelectState, floorEntity: FloorEntity?) {
                         }
                     }
                 }
-
-                *//*val data = projectData.value
-                when (data.state) {
-                    is State.Loading -> {}
-                    is State.Success -> {
-                        LazyColumn(modifier = Modifier.fillMaxSize()) {
-                            data.data?.let {
-                                items(it.cads) { cad: CadEntity ->
-                                    Box {
-                                        CadDrawingItem(cad)
-                                        Spacer(
-                                            modifier = Modifier
-                                                .align(Alignment.BottomCenter)
-                                                .fillMaxWidth().height(1.dp)
-                                                .background(trDivColor)
-                                        )
-                                    }
-                                }
-                            }
-                        }
-                    }
-                    is State.Failure -> {}*//*
             }
-
         )
     }
-}*/
+}
 /*
 
 @Preview(widthDp = 910, heightDp = 711)

+ 31 - 71
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/cad/CadScreen.kt

@@ -32,11 +32,10 @@ import java.io.File
 
 @Composable
 fun CadScreen(projectId: String) {
-    val nav = LocalNavHostController.current!!
     val context = LocalContext.current
+    val nav = LocalNavHostController.current!!
     val vm by rememberViewModel<CadViewModel>()
     val scope = rememberCoroutineScope()
-
     var popupState by remember { mutableStateOf(false) }
     var floor by remember { mutableStateOf<FloorWithCads?>(null) }
     var selectState by remember { mutableStateOf<SelectState>(SelectState.Left) }
@@ -87,79 +86,40 @@ fun CadScreen(projectId: String) {
         }
 
         Div(Div.Row)
-        Row(modifier = Modifier.fillMaxSize()) {
-            // side
-            Column(
-                modifier = Modifier
-                    .width(280.dp)
-                    .fillMaxHeight()
-                    .background(color = underColor)
-            ) {
-                Row(
-                    modifier = Modifier
-                        .wrapContentHeight()
-                        .padding(top = 20.dp, start = 32.dp)
-                ) {
-                    Text(text = "选择楼层", fontSize = 16.sp, color = textBlackColor)
-                }
-                if (project != null) {
-                    ExpandList(
-                        items = project!!.buildings,
-                        click = {
-                            scope.launch {
-                                floor = vm.getFloorWithCads(it.id)
-                            }
-                        })
-                }
-            }
-            Div(Div.Col)
-            Column(
-                modifier = Modifier
-                    .fillMaxSize()
-                    .background(whiteColor)
-                    .padding(horizontal = 50.dp, vertical = 50.dp)
-            ) {
-                val title = if (selectState == SelectState.Left) "土建图纸核查" else "机电图纸核查"
-                Table(
-                    name = {
-                        Text(text = title, color = textBlackColor, fontSize = 16.sp)
-                    },
-                    th = {
-                        CadDrawingTitle()
-                    },
-                    tr = {
-                        LazyColumn(modifier = Modifier.fillMaxSize()) {
-                            floor?.let {
-                                items(it.cads) { cad: CadEntity ->
-                                    Box {
-                                        CadDrawingItem(cad) {
-                                            val path = context.getExternalFilesDir("dwg")
-                                            val file = File(path, cad.fileName)
-                                            if (file.exists()) {
-                                                val uri = file.getUri(context)
-                                                val intent = Intent(Intent.ACTION_VIEW)
-                                                intent.setDataAndType(uri, "application/dwg")
-                                                intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
-                                                context.startActivity(intent)
-                                            } else {
-                                                println("not found")
-                                            }
-
-                                        }
-                                        Spacer(
-                                            modifier = Modifier
-                                                .align(Alignment.BottomCenter)
-                                                .fillMaxWidth().height(1.dp)
-                                                .background(trDivColor)
-                                        )
-                                    }
-                                }
-                            }
+        Body(modifier = Modifier.fillMaxSize(),
+            side = {
+                CadSide(
+                    project = project,
+                    floorClick = {
+                        scope.launch {
+                            floor = vm.getFloorWithCads(it.id)
                         }
                     }
                 )
+            },
+            div = {
+                Div(Div.Col)
+            },
+            content = {
+                CadContent(
+                    selectState = selectState,
+                    floor = floor,
+                    itemClick = { cad ->
+                        val path = context.getExternalFilesDir("dwg")
+                        val file = File(path, cad.fileName)
+                        if (file.exists()) {
+                            val uri = file.getUri(context)
+                            val intent = Intent(Intent.ACTION_VIEW)
+                            intent.setDataAndType(uri, "application/dwg")
+                            intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
+                            context.startActivity(intent)
+                        } else {
+                            // TODO
+                            println("not found")
+                        }
+                    })
             }
-        }
+        )
     }
 }
 

+ 10 - 6
app/src/main/java/com/ys/bdtp/adm/mvvm/ui/screen/cad/CadSide.kt

@@ -12,10 +12,11 @@ import com.ys.bdtp.adm.app.theme.textBlackColor
 import com.ys.bdtp.adm.app.theme.underColor
 import com.ys.bdtp.adm.mvvm.model.db.entity.task.FloorEntity
 import com.ys.bdtp.adm.mvvm.model.db.relation.BuildingWithFloors
+import com.ys.bdtp.adm.mvvm.model.db.relation.ProjectWithBuildingAndFloors
 import com.ys.bdtp.adm.mvvm.ui.compose.ExpandList
 
 @Composable
-fun CadSide(buildings: List<BuildingWithFloors>, click: (FloorEntity) -> Unit) {
+fun CadSide(project: ProjectWithBuildingAndFloors?, floorClick: (FloorEntity) -> Unit) {
     Column(
         modifier = Modifier
             .width(280.dp)
@@ -29,11 +30,14 @@ fun CadSide(buildings: List<BuildingWithFloors>, click: (FloorEntity) -> Unit) {
         ) {
             Text(text = "选择楼层", fontSize = 16.sp, color = textBlackColor)
         }
-        ExpandList(
-            items = buildings,
-            click = {
-                click(it)
-            })
+        if (project != null) {
+            ExpandList(
+                items = project.buildings,
+                click = {
+                    floorClick(it)
+                })
+        }
+
     }
 }