#74 made a feed
This commit is contained in:
		
							parent
							
								
									2db431463d
								
							
						
					
					
						commit
						f7b5d5170d
					
				
					 1 changed files with 101 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1,2 +1,103 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.home
 | 
			
		||||
 | 
			
		||||
import androidx.compose.foundation.background
 | 
			
		||||
import androidx.compose.foundation.layout.*
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyColumn
 | 
			
		||||
import androidx.compose.foundation.lazy.items
 | 
			
		||||
import androidx.compose.foundation.shape.CircleShape
 | 
			
		||||
import androidx.compose.material.Card
 | 
			
		||||
import androidx.compose.material.Divider
 | 
			
		||||
import androidx.compose.material.Icon
 | 
			
		||||
import androidx.compose.material.Text
 | 
			
		||||
import androidx.compose.material.icons.Icons
 | 
			
		||||
import androidx.compose.material.icons.filled.List
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.runtime.collectAsState
 | 
			
		||||
import androidx.compose.ui.Alignment
 | 
			
		||||
import androidx.compose.ui.Modifier
 | 
			
		||||
import androidx.compose.ui.draw.clip
 | 
			
		||||
import androidx.compose.ui.graphics.Color
 | 
			
		||||
import androidx.compose.ui.res.stringResource
 | 
			
		||||
import androidx.compose.ui.text.font.FontWeight
 | 
			
		||||
import androidx.compose.ui.text.style.TextOverflow
 | 
			
		||||
import androidx.compose.ui.unit.dp
 | 
			
		||||
import androidx.hilt.navigation.compose.hiltViewModel
 | 
			
		||||
import be.ugent.sel.studeez.R
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.StealthButton
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.FeedEntry
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.task.Subject
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.timer_functional.HoursMinutesSeconds
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun Feed(
 | 
			
		||||
    open: (String) -> Unit,
 | 
			
		||||
    viewModel: FeedViewModel = hiltViewModel()
 | 
			
		||||
) {
 | 
			
		||||
    val feedEntries = viewModel.getFeedEntries().collectAsState(initial = emptyList())
 | 
			
		||||
    
 | 
			
		||||
    LazyColumn {
 | 
			
		||||
        items(feedEntries.value) {feedEntry ->
 | 
			
		||||
            FeedEntryCard(feedEntry = feedEntry) {
 | 
			
		||||
                viewModel.continueWithTask(open, feedEntry.subjectId, feedEntry.taskId)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun FeedEntryCard(
 | 
			
		||||
    feedEntry: FeedEntry,
 | 
			
		||||
    onViewSubject: () -> Unit,
 | 
			
		||||
) {
 | 
			
		||||
    Card(
 | 
			
		||||
        modifier = Modifier
 | 
			
		||||
            .fillMaxWidth()
 | 
			
		||||
            .padding(horizontal = 10.dp, vertical = 5.dp),
 | 
			
		||||
    ) {
 | 
			
		||||
        Row(
 | 
			
		||||
            horizontalArrangement = Arrangement.SpaceBetween,
 | 
			
		||||
            verticalAlignment = Alignment.CenterVertically,
 | 
			
		||||
        ) {
 | 
			
		||||
            Row(
 | 
			
		||||
                horizontalArrangement = Arrangement.spacedBy(8.dp),
 | 
			
		||||
                verticalAlignment = Alignment.CenterVertically,
 | 
			
		||||
                modifier = Modifier
 | 
			
		||||
                    .padding(start = 10.dp)
 | 
			
		||||
                    .weight(3f)
 | 
			
		||||
            ) {
 | 
			
		||||
                Box(
 | 
			
		||||
                    modifier = Modifier
 | 
			
		||||
                        .size(20.dp)
 | 
			
		||||
                        .clip(CircleShape)
 | 
			
		||||
                        .background(Color(feedEntry.argb_color)),
 | 
			
		||||
                )
 | 
			
		||||
                Column(
 | 
			
		||||
                    verticalArrangement = Arrangement.spacedBy(0.dp)
 | 
			
		||||
                ) {
 | 
			
		||||
                    Text(
 | 
			
		||||
                        text = feedEntry.subJectName,
 | 
			
		||||
                        fontWeight = FontWeight.Bold,
 | 
			
		||||
                        overflow = TextOverflow.Ellipsis,
 | 
			
		||||
                        maxLines = 1,
 | 
			
		||||
                    )
 | 
			
		||||
                    Row(
 | 
			
		||||
                        modifier = Modifier.fillMaxWidth(),
 | 
			
		||||
                        horizontalArrangement = Arrangement.SpaceBetween,
 | 
			
		||||
                        verticalAlignment = Alignment.CenterVertically,
 | 
			
		||||
                    ) {
 | 
			
		||||
                        Text(text = feedEntry.taskName)
 | 
			
		||||
                        Text(text = HoursMinutesSeconds(feedEntry.totalStudyTime).toString())
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            StealthButton(
 | 
			
		||||
                text = R.string.start,
 | 
			
		||||
                modifier = Modifier
 | 
			
		||||
                    .padding(start = 10.dp, end = 5.dp)
 | 
			
		||||
                    .weight(1f)
 | 
			
		||||
            ) {
 | 
			
		||||
                onViewSubject()
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in a new issue