Skip to content

Commit e097f31

Browse files
fix: Minor UI changes
1 parent b22bb30 commit e097f31

File tree

9 files changed

+95
-73
lines changed

9 files changed

+95
-73
lines changed

core/src/main/java/org/openedx/core/utils/TimeUtils.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ object TimeUtils {
5959

6060
private fun dateToCourseDate(resourceManager: ResourceManager, date: Date?): String {
6161
return formatDate(
62-
format = resourceManager.getString(R.string.core_date_format_MMMM_dd_yyyy), date = date
62+
format = resourceManager.getString(R.string.core_date_format_MMM_dd_yyyy), date = date
6363
)
6464
}
6565

@@ -152,7 +152,7 @@ object TimeUtils {
152152
)
153153
} else {
154154
resourceManager.getString(
155-
R.string.core_label_ending, dateToCourseDate(resourceManager, end)
155+
R.string.core_label_ends, dateToCourseDate(resourceManager, end)
156156
)
157157
}
158158
}

core/src/main/res/values-uk/strings.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<string name="core_select_value">Виберіть значення</string>
1414
<string name="core_label_starting">Починається %1$s</string>
1515
<string name="core_label_ended">Закінчився %1$s</string>
16-
<string name="core_label_ending">Закінчується %1$s</string>
16+
<string name="core_label_ends">Закінчується %1$s</string>
1717
<string name="core_label_expires">Термін дії курсу закінчується %1$s</string>
1818
<string name="core_label_expires_on">Термін дії курсу закінчується %1$s</string>
1919
<string name="core_label_expired">Термін дії курсу минув %1$s</string>
@@ -31,7 +31,7 @@
3131
<string name="core_user_not_active">Обліковий запис користувача не активовано. Будь ласка, спочатку активуйте свій обліковий запис.</string>
3232
<string name="core_email_chooser_header">Надіслати електронний лист за допомогою ...</string>
3333
<string name="core_email_client_not_present">Не встановлено жодного поштового клієнта</string>
34-
<string name="core_date_format_MMMM_dd_yyyy">dd MMMM, yyyy</string>
34+
<string name="core_date_format_MMM_dd_yyyy">dd MMMM, yyyy</string>
3535
<string name="core_full_date_with_time">dd MMM yyyy HH:mm</string>
3636
<string name="core_app_upgrade_title">Оновлення додатку</string>
3737
<string name="core_app_upgrade_dialog_description">Ми рекомендуємо вам оновитись до останньої версії. Оновіться зараз, щоб отримати останні функції та виправлення.</string>

core/src/main/res/values/strings.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<string name="core_select_value">Select value</string>
1919
<string name="core_label_starting">Starting %1$s</string>
2020
<string name="core_label_ended">Ended %1$s</string>
21-
<string name="core_label_ending">Ending %1$s</string>
21+
<string name="core_label_ends">Ends %1$s</string>
2222
<string name="core_label_expires">Course access expires %1$s</string>
2323
<string name="core_label_expires_on">Course access expires on %1$s</string>
2424
<string name="core_label_expired">Course access expired %1$s</string>
@@ -46,7 +46,7 @@
4646
<string name="core_android_os_version" translatable="false">OS version: </string>
4747
<string name="core_android_device_model" translatable="false">Device model: </string>
4848
<string name="core_email_subject" translatable="false">Feedback</string>
49-
<string name="core_date_format_MMMM_dd_yyyy">MMMM dd, yyyy</string>
49+
<string name="core_date_format_MMM_dd_yyyy">MMM dd, yyyy</string>
5050
<string name="core_full_date_with_time">dd MMM yyyy hh:mm aaa</string>
5151
<string name="core_app_upgrade_title">App Update</string>
5252
<string name="core_app_upgrade_dialog_description">We recommend that you update to the latest version. Upgrade now to receive the latest features and fixes.</string>

course/src/main/java/org/openedx/course/presentation/unit/container/CourseUnitContainerViewModel.kt

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -81,21 +81,6 @@ class CourseUnitContainerViewModel(
8181
private val _descendantsBlocks = MutableStateFlow<List<Block>>(listOf())
8282
val descendantsBlocks = _descendantsBlocks.asStateFlow()
8383

84-
fun loadBlocks(mode: CourseViewMode) {
85-
currentMode = mode
86-
try {
87-
val courseStructure = when (mode) {
88-
CourseViewMode.FULL -> interactor.getCourseStructureFromCache()
89-
CourseViewMode.VIDEOS -> interactor.getCourseStructureForVideos()
90-
}
91-
val blocks = courseStructure.blockData
92-
courseName = courseStructure.name
93-
this.blocks.clearAndAddAll(blocks)
94-
} catch (e: Exception) {
95-
//ignore e.printStackTrace()
96-
}
97-
}
98-
9984
init {
10085
_indexInContainer.value = 0
10186

@@ -113,6 +98,21 @@ class CourseUnitContainerViewModel(
11398
}
11499
}
115100

101+
fun loadBlocks(mode: CourseViewMode) {
102+
currentMode = mode
103+
try {
104+
val courseStructure = when (mode) {
105+
CourseViewMode.FULL -> interactor.getCourseStructureFromCache()
106+
CourseViewMode.VIDEOS -> interactor.getCourseStructureForVideos()
107+
}
108+
val blocks = courseStructure.blockData
109+
courseName = courseStructure.name
110+
this.blocks.clearAndAddAll(blocks)
111+
} catch (e: Exception) {
112+
//ignore e.printStackTrace()
113+
}
114+
}
115+
116116
fun setupCurrentIndex(componentId: String = "") {
117117
if (currentSectionIndex != -1) {
118118
return
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package org.openedx
2+
3+
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.layout.Box
5+
import androidx.compose.foundation.layout.fillMaxSize
6+
import androidx.compose.foundation.layout.padding
7+
import androidx.compose.foundation.layout.size
8+
import androidx.compose.foundation.shape.CircleShape
9+
import androidx.compose.material.Icon
10+
import androidx.compose.material.MaterialTheme
11+
import androidx.compose.material.icons.Icons
12+
import androidx.compose.material.icons.filled.Lock
13+
import androidx.compose.runtime.Composable
14+
import androidx.compose.ui.Alignment
15+
import androidx.compose.ui.Modifier
16+
import androidx.compose.ui.tooling.preview.Preview
17+
import androidx.compose.ui.unit.dp
18+
import org.openedx.core.ui.theme.OpenEdXTheme
19+
import org.openedx.core.ui.theme.appColors
20+
21+
@Composable
22+
fun Lock(modifier: Modifier = Modifier) {
23+
Box(
24+
modifier = modifier.fillMaxSize()
25+
) {
26+
Icon(
27+
modifier = Modifier
28+
.size(32.dp)
29+
.padding(top = 8.dp, end = 8.dp)
30+
.background(
31+
color = MaterialTheme.appColors.onPrimary.copy(0.5f),
32+
shape = CircleShape
33+
)
34+
.padding(4.dp)
35+
.align(Alignment.TopEnd),
36+
imageVector = Icons.Default.Lock,
37+
contentDescription = null,
38+
tint = MaterialTheme.appColors.onSurface
39+
)
40+
}
41+
}
42+
43+
@Preview
44+
@Composable
45+
private fun LockPreview() {
46+
OpenEdXTheme {
47+
Lock()
48+
}
49+
}

dashboard/src/main/java/org/openedx/courses/presentation/AllEnrolledCoursesFragment.kt

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import android.os.Bundle
66
import android.view.LayoutInflater
77
import android.view.ViewGroup
88
import androidx.compose.foundation.ExperimentalFoundationApi
9-
import androidx.compose.foundation.background
109
import androidx.compose.foundation.clickable
1110
import androidx.compose.foundation.layout.Arrangement
1211
import androidx.compose.foundation.layout.Box
@@ -22,7 +21,6 @@ import androidx.compose.foundation.layout.height
2221
import androidx.compose.foundation.layout.navigationBarsPadding
2322
import androidx.compose.foundation.layout.offset
2423
import androidx.compose.foundation.layout.padding
25-
import androidx.compose.foundation.layout.size
2624
import androidx.compose.foundation.layout.width
2725
import androidx.compose.foundation.layout.widthIn
2826
import androidx.compose.foundation.lazy.grid.GridCells
@@ -31,7 +29,6 @@ import androidx.compose.foundation.lazy.grid.items
3129
import androidx.compose.foundation.lazy.grid.rememberLazyGridState
3230
import androidx.compose.foundation.lazy.rememberLazyListState
3331
import androidx.compose.foundation.pager.rememberPagerState
34-
import androidx.compose.foundation.shape.CircleShape
3532
import androidx.compose.material.Card
3633
import androidx.compose.material.CircularProgressIndicator
3734
import androidx.compose.material.ExperimentalMaterialApi
@@ -43,7 +40,6 @@ import androidx.compose.material.Scaffold
4340
import androidx.compose.material.Surface
4441
import androidx.compose.material.Text
4542
import androidx.compose.material.icons.Icons
46-
import androidx.compose.material.icons.filled.Lock
4743
import androidx.compose.material.icons.filled.Search
4844
import androidx.compose.material.pullrefresh.PullRefreshIndicator
4945
import androidx.compose.material.pullrefresh.pullRefresh
@@ -60,7 +56,6 @@ import androidx.compose.runtime.setValue
6056
import androidx.compose.ui.Alignment
6157
import androidx.compose.ui.ExperimentalComposeUiApi
6258
import androidx.compose.ui.Modifier
63-
import androidx.compose.ui.graphics.Color
6459
import androidx.compose.ui.layout.ContentScale
6560
import androidx.compose.ui.platform.ComposeView
6661
import androidx.compose.ui.platform.LocalContext
@@ -82,6 +77,7 @@ import androidx.fragment.app.FragmentManager
8277
import coil.compose.AsyncImage
8378
import coil.request.ImageRequest
8479
import org.koin.androidx.compose.koinViewModel
80+
import org.openedx.Lock
8581
import org.openedx.core.UIMessage
8682
import org.openedx.core.domain.model.Certificate
8783
import org.openedx.core.domain.model.CourseAssignments
@@ -511,20 +507,7 @@ private fun CourseItem(
511507
)
512508
}
513509
if (!course.course.coursewareAccess?.errorCode.isNullOrEmpty()) {
514-
Icon(
515-
modifier = Modifier
516-
.size(32.dp)
517-
.padding(top = 8.dp, end = 8.dp)
518-
.background(
519-
color = Color.White,
520-
shape = CircleShape
521-
)
522-
.padding(4.dp)
523-
.align(Alignment.TopEnd),
524-
imageVector = Icons.Default.Lock,
525-
contentDescription = null,
526-
tint = MaterialTheme.appColors.textWarning
527-
)
510+
Lock()
528511
}
529512
}
530513
}

dashboard/src/main/java/org/openedx/courses/presentation/AllEnrolledCoursesViewModel.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.openedx.courses.presentation
22

33
import androidx.lifecycle.viewModelScope
4+
import kotlinx.coroutines.Job
45
import kotlinx.coroutines.flow.MutableSharedFlow
56
import kotlinx.coroutines.flow.MutableStateFlow
67
import kotlinx.coroutines.flow.SharedFlow
@@ -60,6 +61,8 @@ class AllEnrolledCoursesViewModel(
6061

6162
private val currentFilter: MutableStateFlow<CourseStatusFilter> = MutableStateFlow(CourseStatusFilter.ALL)
6263

64+
private var job: Job? = null
65+
6366
init {
6467
collectDiscoveryNotifier()
6568
getCourses(currentFilter.value)
@@ -109,7 +112,8 @@ class AllEnrolledCoursesViewModel(
109112
page = 1
110113
currentFilter.value = courseStatusFilter
111114
}
112-
viewModelScope.launch {
115+
job?.cancel()
116+
job = viewModelScope.launch {
113117
try {
114118
isLoading = true
115119
val response = if (networkConnection.isOnline() || page > 1) {

dashboard/src/main/java/org/openedx/courses/presentation/PrimaryCourseScreen.kt

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import androidx.compose.foundation.lazy.grid.GridCells
2121
import androidx.compose.foundation.lazy.grid.LazyHorizontalGrid
2222
import androidx.compose.foundation.lazy.grid.items
2323
import androidx.compose.foundation.rememberScrollState
24-
import androidx.compose.foundation.shape.CircleShape
2524
import androidx.compose.foundation.verticalScroll
2625
import androidx.compose.material.Card
2726
import androidx.compose.material.CircularProgressIndicator
@@ -36,7 +35,6 @@ import androidx.compose.material.Text
3635
import androidx.compose.material.icons.Icons
3736
import androidx.compose.material.icons.automirrored.filled.ArrowForwardIos
3837
import androidx.compose.material.icons.filled.ChevronRight
39-
import androidx.compose.material.icons.filled.Lock
4038
import androidx.compose.material.icons.filled.School
4139
import androidx.compose.material.icons.filled.Warning
4240
import androidx.compose.material.pullrefresh.PullRefreshIndicator
@@ -51,7 +49,6 @@ import androidx.compose.runtime.saveable.rememberSaveable
5149
import androidx.compose.runtime.setValue
5250
import androidx.compose.ui.Alignment
5351
import androidx.compose.ui.Modifier
54-
import androidx.compose.ui.graphics.Color
5552
import androidx.compose.ui.graphics.painter.Painter
5653
import androidx.compose.ui.graphics.vector.rememberVectorPainter
5754
import androidx.compose.ui.layout.ContentScale
@@ -68,6 +65,7 @@ import androidx.fragment.app.FragmentManager
6865
import coil.compose.AsyncImage
6966
import coil.request.ImageRequest
7067
import org.koin.androidx.compose.koinViewModel
68+
import org.openedx.Lock
7169
import org.openedx.core.UIMessage
7270
import org.openedx.core.domain.model.Certificate
7371
import org.openedx.core.domain.model.CourseAssignments
@@ -292,12 +290,14 @@ private fun UserCourses(
292290
openCourse = openCourse
293291
)
294292
}
295-
SecondaryCourses(
296-
courses = userCourses.enrollments,
297-
apiHostUrl = apiHostUrl,
298-
onCourseClick = openCourse,
299-
onViewAllClick = onViewAllClick
300-
)
293+
if (userCourses.enrollments.isNotEmpty()) {
294+
SecondaryCourses(
295+
courses = userCourses.enrollments,
296+
apiHostUrl = apiHostUrl,
297+
onCourseClick = openCourse,
298+
onViewAllClick = onViewAllClick
299+
)
300+
}
301301
}
302302
}
303303

@@ -437,20 +437,7 @@ private fun CourseListItem(
437437
)
438438
}
439439
if (!course.course.coursewareAccess?.errorCode.isNullOrEmpty()) {
440-
Icon(
441-
modifier = Modifier
442-
.size(32.dp)
443-
.padding(top = 8.dp, end = 8.dp)
444-
.background(
445-
color = Color.White,
446-
shape = CircleShape
447-
)
448-
.padding(4.dp)
449-
.align(Alignment.TopEnd),
450-
imageVector = Icons.Default.Lock,
451-
contentDescription = null,
452-
tint = MaterialTheme.appColors.textWarning
453-
)
440+
Lock()
454441
}
455442
}
456443
}
@@ -477,6 +464,7 @@ private fun AssignmentItem(
477464
contentDescription = null
478465
)
479466
Column(
467+
modifier = Modifier.weight(1f),
480468
verticalArrangement = Arrangement.spacedBy(4.dp)
481469
) {
482470
val infoTextStyle = if (title.isNullOrEmpty()) {
@@ -497,6 +485,12 @@ private fun AssignmentItem(
497485
)
498486
}
499487
}
488+
Icon(
489+
modifier = Modifier.size(16.dp),
490+
imageVector = Icons.AutoMirrored.Filled.ArrowForwardIos,
491+
tint = MaterialTheme.appColors.textDark,
492+
contentDescription = null
493+
)
500494
}
501495
}
502496

dashboard/src/main/java/org/openedx/learn/presentation/LearnFragment.kt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.Row
1111
import androidx.compose.foundation.layout.fillMaxWidth
1212
import androidx.compose.foundation.layout.padding
1313
import androidx.compose.foundation.layout.widthIn
14-
import androidx.compose.foundation.pager.rememberPagerState
1514
import androidx.compose.foundation.shape.RoundedCornerShape
1615
import androidx.compose.material.DropdownMenu
1716
import androidx.compose.material.DropdownMenuItem
@@ -88,23 +87,15 @@ class LearnFragment : Fragment(R.layout.fragment_learn) {
8887
binding.viewPager.adapter = adapter
8988
binding.viewPager.setUserInputEnabled(false)
9089
}
91-
92-
private fun setFragment() {
93-
binding.viewPager.setCurrentItem(0, false)
94-
}
9590
}
9691

97-
@OptIn(ExperimentalFoundationApi::class)
9892
@Composable
9993
private fun Header(
10094
viewModel: LearnViewModel = koinViewModel(),
10195
fragmentManager: FragmentManager,
10296
viewPager: ViewPager2
10397
) {
10498
val windowSize = rememberWindowSize()
105-
val pagerState = rememberPagerState {
106-
LearnType.entries.size
107-
}
10899
val contentWidth by remember(key1 = windowSize) {
109100
mutableStateOf(
110101
windowSize.windowSizeValue(
@@ -116,6 +107,7 @@ private fun Header(
116107

117108
Column(
118109
modifier = Modifier
110+
.background(MaterialTheme.appColors.background)
119111
.statusBarsInset()
120112
.displayCutoutForLandscape()
121113
.then(contentWidth),

0 commit comments

Comments
 (0)