Skip to content

Commit bac6462

Browse files
committed
Add new activities for mini challenges and update AndroidManifest
1 parent cebe3fd commit bac6462

File tree

9 files changed

+297
-36
lines changed

9 files changed

+297
-36
lines changed

.idea/gradle.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle.kts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ android {
4444

4545
dependencies {
4646

47-
4847
implementation(libs.androidx.activity.compose)
4948
implementation(libs.androidx.core.ktx)
5049
implementation(libs.androidx.lifecycle.runtime.ktx)
@@ -61,6 +60,4 @@ dependencies {
6160
androidTestImplementation(libs.androidx.ui.test.junit4)
6261

6362
implementation(libs.androidx.constraintlayout.compose)
64-
65-
6663
}

app/src/main/AndroidManifest.xml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,28 @@
1515
<activity
1616
android:name=".MainActivity"
1717
android:exported="true"
18-
android:label="@string/app_name"
1918
android:theme="@style/Theme.StudyAppMiniChallenge">
2019
<intent-filter>
2120
<action android:name="android.intent.action.MAIN" />
2221

2322
<category android:name="android.intent.category.LAUNCHER" />
2423
</intent-filter>
2524
</activity>
25+
<activity
26+
android:name=".lesson_overview_one.LessonOverviewActivity"
27+
android:exported="true" />
28+
<activity
29+
android:name=".word_of_the_day_second.WordOfTheDayActivity"
30+
android:exported="true" />
31+
<activity
32+
android:name=".searchable_study_list_third.SearchableStudyListActivity"
33+
android:exported="true" />
34+
<activity
35+
android:name=".study_feed_switcher_fourth.StudyFeedSwitcherActivity"
36+
android:exported="true" />
37+
<activity
38+
android:name=".scrollable_study_board_fifth.ScrollableStudyBoardActivity"
39+
android:exported="true" />
2640
</application>
2741

2842
</manifest>

app/src/main/java/com/raulastete/studyappminichallenge/MainActivity.kt

Lines changed: 99 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,30 @@
11
package com.raulastete.studyappminichallenge
22

3-
import android.content.res.Configuration.ORIENTATION_LANDSCAPE
4-
import android.content.res.Configuration.ORIENTATION_PORTRAIT
3+
import android.content.Intent
54
import android.os.Bundle
65
import androidx.activity.ComponentActivity
76
import androidx.activity.compose.setContent
87
import androidx.activity.enableEdgeToEdge
8+
import androidx.compose.foundation.layout.Arrangement
9+
import androidx.compose.foundation.layout.Column
10+
import androidx.compose.foundation.layout.Spacer
11+
import androidx.compose.foundation.layout.fillMaxSize
12+
import androidx.compose.foundation.layout.height
13+
import androidx.compose.foundation.layout.padding
14+
import androidx.compose.material3.Button
15+
import androidx.compose.material3.Text
916
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
10-
import androidx.compose.material3.windowsizeclass.WindowHeightSizeClass
11-
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
12-
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
13-
import androidx.compose.ui.platform.LocalConfiguration
14-
import com.raulastete.studyappminichallenge.scrollable_study_board_fifth.CourseDetailsScreen
15-
import com.raulastete.studyappminichallenge.scrollable_study_board_fifth.LessonTopic
16-
import com.raulastete.studyappminichallenge.scrollable_study_board_fifth.ScrollableStudyBoardScreen
17-
import com.raulastete.studyappminichallenge.scrollable_study_board_fifth.ScrollableStudyGraph
18-
import com.raulastete.studyappminichallenge.study_feed_switcher_fourth.StudyFeedSwitcherScreen
17+
import androidx.compose.ui.Alignment
18+
import androidx.compose.ui.Modifier
19+
import androidx.compose.ui.text.style.TextAlign
20+
import androidx.compose.ui.unit.dp
21+
import com.raulastete.studyappminichallenge.lesson_overview_one.LessonOverviewActivity
22+
import com.raulastete.studyappminichallenge.scrollable_study_board_fifth.ScrollableStudyBoardActivity
23+
import com.raulastete.studyappminichallenge.searchable_study_list_third.SearchableStudyListActivity
24+
import com.raulastete.studyappminichallenge.study_feed_switcher_fourth.StudyFeedSwitcherActivity
1925
import com.raulastete.studyappminichallenge.ui.theme.StudyAppMiniChallengeTheme
26+
import com.raulastete.studyappminichallenge.word_of_the_day_second.WordOfTheDayActivity
27+
import kotlin.jvm.java
2028

2129
class MainActivity : ComponentActivity() {
2230
@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
@@ -25,33 +33,92 @@ class MainActivity : ComponentActivity() {
2533
enableEdgeToEdge()
2634
setContent {
2735

28-
val widthSizeClass = calculateWindowSizeClass(this).widthSizeClass
29-
val heightSizeClass = calculateWindowSizeClass(this).heightSizeClass
36+
StudyAppMiniChallengeTheme {
37+
Column(
38+
modifier = Modifier
39+
.fillMaxSize()
40+
.padding(16.dp),
41+
horizontalAlignment = Alignment.CenterHorizontally,
42+
verticalArrangement = Arrangement.Center,
43+
) {
44+
Button(onClick = {
45+
startActivity(
46+
Intent(
47+
this@MainActivity,
48+
LessonOverviewActivity::class.java
49+
)
50+
)
51+
}) {
52+
Text(
53+
"Mini challenge #1 - Lesson Overview",
54+
textAlign = TextAlign.Center
55+
)
56+
}
3057

31-
val configuration = LocalConfiguration.current
58+
Spacer(Modifier.height(16.dp))
3259

33-
val deviceMode = when {
34-
widthSizeClass == WindowWidthSizeClass.Compact &&
35-
configuration.orientation == ORIENTATION_PORTRAIT -> {
36-
DeviceMode.PhonePortrait
37-
}
60+
Button(onClick = {
61+
startActivity(
62+
Intent(
63+
this@MainActivity,
64+
WordOfTheDayActivity::class.java
65+
)
66+
)
67+
}) {
68+
Text(
69+
"Mini challenge #2 - Word of the day",
70+
textAlign = TextAlign.Center
71+
)
72+
}
3873

39-
heightSizeClass == WindowHeightSizeClass.Compact &&
40-
configuration.orientation == ORIENTATION_LANDSCAPE -> {
41-
DeviceMode.PhoneLandscape
42-
}
74+
Spacer(Modifier.height(16.dp))
4375

44-
configuration.orientation == ORIENTATION_PORTRAIT -> {
45-
DeviceMode.TabletPortrait
46-
}
76+
Button(onClick = {
77+
startActivity(
78+
Intent(
79+
this@MainActivity,
80+
SearchableStudyListActivity::class.java
81+
)
82+
)
83+
}) {
84+
Text(
85+
"Mini challenge #3 - Searchable Study List",
86+
textAlign = TextAlign.Center
87+
)
88+
}
4789

48-
else -> {
49-
DeviceMode.TabletLandscape
50-
}
51-
}
90+
Spacer(Modifier.height(16.dp))
5291

53-
StudyAppMiniChallengeTheme {
54-
ScrollableStudyGraph()
92+
Button(onClick = {
93+
startActivity(
94+
Intent(
95+
this@MainActivity,
96+
StudyFeedSwitcherActivity::class.java
97+
)
98+
)
99+
}) {
100+
Text(
101+
"Mini challenge #4 - Study Feed Switcher",
102+
textAlign = TextAlign.Center
103+
)
104+
}
105+
106+
Spacer(Modifier.height(16.dp))
107+
108+
Button(onClick = {
109+
startActivity(
110+
Intent(
111+
this@MainActivity,
112+
ScrollableStudyBoardActivity::class.java
113+
)
114+
)
115+
}) {
116+
Text(
117+
"Mini challenge #5 - Scrollable Study Board",
118+
textAlign = TextAlign.Center
119+
)
120+
}
121+
}
55122
}
56123
}
57124
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.raulastete.studyappminichallenge.lesson_overview_one
2+
3+
import android.content.res.Configuration.ORIENTATION_LANDSCAPE
4+
import android.content.res.Configuration.ORIENTATION_PORTRAIT
5+
import android.os.Bundle
6+
import androidx.activity.ComponentActivity
7+
import androidx.activity.SystemBarStyle
8+
import androidx.activity.compose.setContent
9+
import androidx.activity.enableEdgeToEdge
10+
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
11+
import androidx.compose.material3.windowsizeclass.WindowHeightSizeClass
12+
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
13+
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
14+
import androidx.compose.ui.platform.LocalConfiguration
15+
import com.raulastete.studyappminichallenge.DeviceMode
16+
import com.raulastete.studyappminichallenge.ui.theme.MainPurple
17+
import com.raulastete.studyappminichallenge.ui.theme.StudyAppMiniChallengeTheme
18+
19+
class LessonOverviewActivity : ComponentActivity() {
20+
21+
@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
22+
override fun onCreate(savedInstanceState: Bundle?) {
23+
super.onCreate(savedInstanceState)
24+
enableEdgeToEdge(
25+
statusBarStyle = SystemBarStyle.dark(MainPurple.value.toInt())
26+
)
27+
setContent {
28+
val widthSizeClass = calculateWindowSizeClass(this).widthSizeClass
29+
val heightSizeClass = calculateWindowSizeClass(this).heightSizeClass
30+
31+
val configuration = LocalConfiguration.current
32+
33+
val deviceMode = when {
34+
widthSizeClass == WindowWidthSizeClass.Compact &&
35+
configuration.orientation == ORIENTATION_PORTRAIT -> {
36+
DeviceMode.PhonePortrait
37+
}
38+
39+
heightSizeClass == WindowHeightSizeClass.Compact &&
40+
configuration.orientation == ORIENTATION_LANDSCAPE -> {
41+
DeviceMode.PhoneLandscape
42+
}
43+
44+
configuration.orientation == ORIENTATION_PORTRAIT -> {
45+
DeviceMode.TabletPortrait
46+
}
47+
48+
else -> {
49+
DeviceMode.TabletLandscape
50+
}
51+
}
52+
StudyAppMiniChallengeTheme {
53+
LessonOverviewScreen(deviceMode = deviceMode)
54+
}
55+
}
56+
}
57+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.raulastete.studyappminichallenge.scrollable_study_board_fifth
2+
3+
import android.os.Bundle
4+
import androidx.activity.ComponentActivity
5+
import androidx.activity.compose.setContent
6+
import androidx.activity.enableEdgeToEdge
7+
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
8+
import com.raulastete.studyappminichallenge.ui.theme.StudyAppMiniChallengeTheme
9+
10+
class ScrollableStudyBoardActivity : ComponentActivity() {
11+
12+
@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
13+
override fun onCreate(savedInstanceState: Bundle?) {
14+
super.onCreate(savedInstanceState)
15+
enableEdgeToEdge()
16+
setContent {
17+
StudyAppMiniChallengeTheme {
18+
ScrollableStudyGraph()
19+
}
20+
}
21+
}
22+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.raulastete.studyappminichallenge.searchable_study_list_third
2+
3+
import android.os.Bundle
4+
import androidx.activity.ComponentActivity
5+
import androidx.activity.compose.setContent
6+
import androidx.activity.enableEdgeToEdge
7+
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
8+
import com.raulastete.studyappminichallenge.ui.theme.StudyAppMiniChallengeTheme
9+
10+
class SearchableStudyListActivity : ComponentActivity() {
11+
12+
@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
13+
override fun onCreate(savedInstanceState: Bundle?) {
14+
super.onCreate(savedInstanceState)
15+
enableEdgeToEdge()
16+
setContent {
17+
StudyAppMiniChallengeTheme {
18+
SearchableStudyListScreen()
19+
}
20+
}
21+
}
22+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.raulastete.studyappminichallenge.study_feed_switcher_fourth
2+
3+
import android.content.res.Configuration.ORIENTATION_LANDSCAPE
4+
import android.content.res.Configuration.ORIENTATION_PORTRAIT
5+
import android.os.Bundle
6+
import androidx.activity.ComponentActivity
7+
import androidx.activity.SystemBarStyle
8+
import androidx.activity.compose.setContent
9+
import androidx.activity.enableEdgeToEdge
10+
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
11+
import androidx.compose.material3.windowsizeclass.WindowHeightSizeClass
12+
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
13+
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
14+
import androidx.compose.ui.platform.LocalConfiguration
15+
import com.raulastete.studyappminichallenge.DeviceMode
16+
import com.raulastete.studyappminichallenge.ui.theme.MainPurple
17+
import com.raulastete.studyappminichallenge.ui.theme.StudyAppMiniChallengeTheme
18+
19+
class StudyFeedSwitcherActivity : ComponentActivity() {
20+
21+
@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
22+
override fun onCreate(savedInstanceState: Bundle?) {
23+
super.onCreate(savedInstanceState)
24+
enableEdgeToEdge(
25+
statusBarStyle = SystemBarStyle.dark(
26+
scrim = MainPurple.value.toInt()
27+
)
28+
)
29+
setContent {
30+
val widthSizeClass = calculateWindowSizeClass(this).widthSizeClass
31+
val heightSizeClass = calculateWindowSizeClass(this).heightSizeClass
32+
33+
val configuration = LocalConfiguration.current
34+
35+
val deviceMode = when {
36+
widthSizeClass == WindowWidthSizeClass.Compact &&
37+
configuration.orientation == ORIENTATION_PORTRAIT -> {
38+
DeviceMode.PhonePortrait
39+
}
40+
41+
heightSizeClass == WindowHeightSizeClass.Compact &&
42+
configuration.orientation == ORIENTATION_LANDSCAPE -> {
43+
DeviceMode.PhoneLandscape
44+
}
45+
46+
configuration.orientation == ORIENTATION_PORTRAIT -> {
47+
DeviceMode.TabletPortrait
48+
}
49+
50+
else -> {
51+
DeviceMode.TabletLandscape
52+
}
53+
}
54+
StudyAppMiniChallengeTheme {
55+
StudyFeedSwitcherScreen(deviceMode = deviceMode)
56+
}
57+
}
58+
}
59+
}

0 commit comments

Comments
 (0)