Skip to content
This repository was archived by the owner on Apr 28, 2023. It is now read-only.

Commit 1c85313

Browse files
committed
Milestone 2
1 parent 58a6073 commit 1c85313

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+840
-67
lines changed

app/build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ dependencies {
4040
implementation 'androidx.appcompat:appcompat:1.1.0'
4141
implementation 'androidx.core:core-ktx:1.2.0'
4242
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
43-
implementation 'androidx.preference:preference:1.1.0-rc01'
43+
implementation 'androidx.preference:preference:1.1.1'
4444
testImplementation 'junit:junit:4.12'
4545
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
4646
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
@@ -53,4 +53,6 @@ dependencies {
5353
implementation "com.squareup.retrofit2:retrofit:2.8.1"
5454
implementation "com.squareup.retrofit2:converter-gson:2.8.1"
5555
implementation 'com.google.code.gson:gson:2.8.6'
56+
57+
implementation 'com.github.prolificinteractive:material-calendarview:2.0.1'
5658
}

app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,20 @@
1313
android:roundIcon="@mipmap/ic_launcher_round"
1414
android:supportsRtl="true"
1515
android:theme="@style/AppTheme">
16-
<activity android:name=".Views.Settings"></activity>
17-
<activity
18-
android:name=".Views.SettingsActivity"
19-
android:label="@string/title_activity_settings" />
2016
<activity
2117
android:name=".Views.WelcomeActivity"
2218
tools:ignore="InnerclassSeparator" />
19+
<activity
20+
android:name=".Views.ReadActivity"
21+
tools:ignore="InnerclassSeparator" />
2322
<activity
2423
android:name=".Views.CongratulationsActivity"
2524
tools:ignore="InnerclassSeparator" />
2625
<activity
27-
android:name=".Views.ReadActivity"
26+
android:name=".Views.ProfileActivity"
27+
tools:ignore="InnerclassSeparator" />
28+
<activity
29+
android:name=".Views.SettingsActivity"
2830
tools:ignore="InnerclassSeparator" />
2931
<activity
3032
android:name=".Views.MainActivity"
@@ -33,7 +35,6 @@
3335
tools:ignore="InnerclassSeparator,LockedOrientationActivity">
3436
<intent-filter>
3537
<action android:name="android.intent.action.MAIN" />
36-
3738
<category android:name="android.intent.category.LAUNCHER" />
3839
</intent-filter>
3940
</activity>

app/src/main/java/it/androidclient/Line/LineAdapter.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.RecyclerView
1111
import it.androidclient.R
1212
import it.androidclient.UserCtx.AchievementsModel
1313
import it.androidclient.UserCtx.UserDataDto
14+
import it.androidclient.Views.ProfileActivity
1415
import it.androidclient.Views.ReadActivity
1516
import java.time.LocalDateTime
1617
import java.time.temporal.ChronoUnit
@@ -40,6 +41,7 @@ class LineAdapter(model: ArrayList<LineModel>?) : RecyclerView.Adapter<LineHolde
4041
3 -> R.color.applicationList4
4142
4 -> R.color.applicationList5
4243
5 -> R.color.applicationList6
44+
6 -> R.color.applicationList7
4345
else -> R.color.applicationList1
4446
}
4547

@@ -57,7 +59,8 @@ class LineAdapter(model: ArrayList<LineModel>?) : RecyclerView.Adapter<LineHolde
5759
3 -> concentrationListener
5860
4 -> praxiasListener
5961
5 -> perceptionListener
60-
else -> readListener
62+
6 -> profileListener
63+
else -> profileListener
6164
}
6265
holder.itemView.setBackgroundColor(ContextCompat.getColor(holder.itemView.context.applicationContext, color))
6366
holder.itemView.setOnClickListener(listener)
@@ -195,6 +198,13 @@ class LineAdapter(model: ArrayList<LineModel>?) : RecyclerView.Adapter<LineHolde
195198
notifyDataSetChanged()
196199
}
197200

201+
private val profileListener =
202+
View.OnClickListener { v ->
203+
val intent = Intent(v.context.applicationContext, ProfileActivity::class.java)
204+
intent.flags += Intent.FLAG_ACTIVITY_NEW_TASK
205+
v.context.applicationContext.startActivity(intent)
206+
}
207+
198208
//endregion
199209

200210
init {

app/src/main/java/it/androidclient/UserCtx/Preferences.kt

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,6 @@ import java.time.LocalDateTime
1010
import java.time.ZonedDateTime
1111
import kotlin.reflect.KProperty
1212

13-
14-
/**
15-
* Represents a single [SharedPreferences] file.
16-
*
17-
* Usage:
18-
*
19-
* ```kotlin
20-
* class UserPreferences(ctx: Context) : Preferences(ctx) {
21-
* var emailAccount by stringPref()
22-
* var showSystemAppsPreference by booleanPref()
23-
* }
24-
* ```
25-
*/
26-
2713
@Suppress("UNCHECKED_CAST", "unused")
2814
abstract class Preferences(private var context: Context, private val name: String? = null) {
2915
private val prefs: SharedPreferences by lazy {
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package it.androidclient.Util
2+
3+
import it.androidclient.UserCtx.AchievementsModel
4+
import it.androidclient.UserCtx.UserDataDto
5+
import java.time.LocalDateTime
6+
import java.time.temporal.ChronoUnit
7+
8+
class AchievementCounterHelper {
9+
fun countTodaysAchievements(userDataDto: UserDataDto, localDate: LocalDateTime): Int{
10+
val userAchievements = safeStuff(userDataDto, localDate)
11+
var count = 0
12+
AchievementsModel.DailyMilestonesAchieved (
13+
achievedAbstractThinking = userAchievements.achievedAbstractThinking.also { achievedAbstractThinking->
14+
if (achievedAbstractThinking){
15+
count += 1
16+
}
17+
},
18+
achievedConcentration = userAchievements.achievedConcentration.also { achievedConcentration ->
19+
if (achievedConcentration){
20+
count += 1
21+
}
22+
},
23+
achievedLanguage = userAchievements.achievedLanguage.also { achievedLanguage ->
24+
if (achievedLanguage){
25+
count += 1
26+
}
27+
},
28+
achievedPraxias = userAchievements.achievedPraxias.also { achievedPraxias ->
29+
if (achievedPraxias){
30+
count += 1
31+
}
32+
},
33+
achievedReading = userAchievements.achievedReading.also { achievedReading ->
34+
if (achievedReading){
35+
count += 1
36+
}
37+
},
38+
achievedSensorial = userAchievements.achievedSensorial.also { achievedSensorial ->
39+
if (achievedSensorial){
40+
count += 1
41+
}
42+
}
43+
)
44+
45+
return count
46+
}
47+
48+
private fun safeStuff(userDataDto: UserDataDto, parsedDate: LocalDateTime): AchievementsModel.DailyMilestonesAchieved {
49+
if (userDataDto.userAchievements == null){
50+
userDataDto.userAchievements = AchievementsModel.UserCalendarModel(hashMapOf())
51+
}
52+
53+
val currentAchievements = userDataDto.userAchievements as AchievementsModel.UserCalendarModel
54+
if (currentAchievements.achievementList[parsedDate] == null) {
55+
currentAchievements.achievementList[parsedDate] =
56+
AchievementsModel.DailyMilestonesAchieved(
57+
achievedReading = false,
58+
achievedLanguage = false,
59+
achievedAbstractThinking = false,
60+
achievedConcentration = false,
61+
achievedPraxias = false,
62+
achievedSensorial = false
63+
)
64+
}
65+
return currentAchievements.achievementList[parsedDate.truncatedTo(ChronoUnit.DAYS)] as AchievementsModel.DailyMilestonesAchieved
66+
}
67+
68+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package it.androidclient.Util
2+
3+
4+
import android.app.Activity
5+
import android.graphics.drawable.Drawable
6+
import androidx.core.content.ContextCompat
7+
import com.prolificinteractive.materialcalendarview.CalendarDay
8+
import com.prolificinteractive.materialcalendarview.DayViewDecorator
9+
import com.prolificinteractive.materialcalendarview.DayViewFacade
10+
import it.androidclient.R
11+
import it.androidclient.UserCtx.UserDataDto
12+
import java.time.LocalDateTime
13+
14+
class DateHas0ActivityDecorator(context: Activity?, private val achievementCounterHelper: AchievementCounterHelper) : DayViewDecorator {
15+
private val drawable: Drawable?
16+
private val ctx = context as Activity
17+
override fun shouldDecorate(day: CalendarDay): Boolean {
18+
val userDataDto = UserDataDto(ctx.applicationContext)
19+
val localDate = LocalDateTime.of(day.year, day.month, day.day, 0, 0, 0)
20+
val count: Int = achievementCounterHelper.countTodaysAchievements(userDataDto, localDate)
21+
22+
return count == 0
23+
}
24+
25+
override fun decorate(view: DayViewFacade) {
26+
view.setSelectionDrawable(drawable!!)
27+
}
28+
29+
init {
30+
// You can set background for Decorator via drawable here
31+
drawable = ContextCompat.getDrawable(context!!, R.drawable.day_decorator_0)
32+
}
33+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package it.androidclient.Util
2+
3+
4+
import android.app.Activity
5+
import android.graphics.drawable.Drawable
6+
import androidx.core.content.ContextCompat
7+
import com.prolificinteractive.materialcalendarview.CalendarDay
8+
import com.prolificinteractive.materialcalendarview.DayViewDecorator
9+
import com.prolificinteractive.materialcalendarview.DayViewFacade
10+
import it.androidclient.R
11+
import it.androidclient.UserCtx.UserDataDto
12+
import java.time.LocalDateTime
13+
14+
class DateHas1ActivityDecorator(context: Activity?, private val achievementCounterHelper: AchievementCounterHelper) : DayViewDecorator {
15+
private val drawable: Drawable?
16+
private val ctx = context as Activity
17+
override fun shouldDecorate(day: CalendarDay): Boolean {
18+
val userDataDto = UserDataDto(ctx.applicationContext)
19+
val localDate = LocalDateTime.of(day.year, day.month, day.day, 0, 0, 0)
20+
val count: Int = achievementCounterHelper.countTodaysAchievements(userDataDto, localDate)
21+
22+
return count == 1
23+
}
24+
25+
override fun decorate(view: DayViewFacade) {
26+
view.setSelectionDrawable(drawable!!)
27+
}
28+
29+
init {
30+
// You can set background for Decorator via drawable here
31+
drawable = ContextCompat.getDrawable(context!!, R.drawable.day_decorator_1)
32+
}
33+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package it.androidclient.Util
2+
3+
import android.app.Activity
4+
import android.graphics.drawable.Drawable
5+
import androidx.core.content.ContextCompat
6+
import com.prolificinteractive.materialcalendarview.CalendarDay
7+
import com.prolificinteractive.materialcalendarview.DayViewDecorator
8+
import com.prolificinteractive.materialcalendarview.DayViewFacade
9+
import it.androidclient.R
10+
import it.androidclient.UserCtx.UserDataDto
11+
import java.time.LocalDateTime
12+
13+
class DateHas2ActivityDecorator(context: Activity?, private val achievementCounterHelper: AchievementCounterHelper) : DayViewDecorator {
14+
private val drawable: Drawable?
15+
private val ctx = context as Activity
16+
override fun shouldDecorate(day: CalendarDay): Boolean {
17+
val userDataDto = UserDataDto(ctx.applicationContext)
18+
val localDate = LocalDateTime.of(day.year, day.month, day.day, 0, 0, 0)
19+
val count: Int = achievementCounterHelper.countTodaysAchievements(userDataDto, localDate)
20+
21+
return count == 2
22+
}
23+
24+
override fun decorate(view: DayViewFacade) {
25+
view.setSelectionDrawable(drawable!!)
26+
}
27+
28+
init {
29+
// You can set background for Decorator via drawable here
30+
drawable = ContextCompat.getDrawable(context!!, R.drawable.day_decorator_2)
31+
}
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package it.androidclient.Util
2+
3+
import android.app.Activity
4+
import android.graphics.drawable.Drawable
5+
import androidx.core.content.ContextCompat
6+
import com.prolificinteractive.materialcalendarview.CalendarDay
7+
import com.prolificinteractive.materialcalendarview.DayViewDecorator
8+
import com.prolificinteractive.materialcalendarview.DayViewFacade
9+
import it.androidclient.R
10+
import it.androidclient.UserCtx.UserDataDto
11+
import java.time.LocalDateTime
12+
13+
class DateHas3ActivityDecorator(context: Activity?, private val achievementCounterHelper: AchievementCounterHelper) : DayViewDecorator {
14+
private val drawable: Drawable?
15+
private val ctx = context as Activity
16+
override fun shouldDecorate(day: CalendarDay): Boolean {
17+
val userDataDto = UserDataDto(ctx.applicationContext)
18+
val localDate = LocalDateTime.of(day.year, day.month, day.day, 0, 0, 0)
19+
val count: Int = achievementCounterHelper.countTodaysAchievements(userDataDto, localDate)
20+
21+
return count == 3
22+
}
23+
24+
override fun decorate(view: DayViewFacade) {
25+
view.setSelectionDrawable(drawable!!)
26+
}
27+
28+
init {
29+
// You can set background for Decorator via drawable here
30+
drawable = ContextCompat.getDrawable(context!!, R.drawable.day_decorator_3)
31+
}
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package it.androidclient.Util
2+
3+
import android.app.Activity
4+
import android.graphics.drawable.Drawable
5+
import androidx.core.content.ContextCompat
6+
import com.prolificinteractive.materialcalendarview.CalendarDay
7+
import com.prolificinteractive.materialcalendarview.DayViewDecorator
8+
import com.prolificinteractive.materialcalendarview.DayViewFacade
9+
import it.androidclient.R
10+
import it.androidclient.UserCtx.UserDataDto
11+
import java.time.LocalDateTime
12+
13+
class DateHas4ActivityDecorator(context: Activity?, private val achievementCounterHelper: AchievementCounterHelper) : DayViewDecorator {
14+
private val drawable: Drawable?
15+
private val ctx = context as Activity
16+
override fun shouldDecorate(day: CalendarDay): Boolean {
17+
val userDataDto = UserDataDto(ctx.applicationContext)
18+
val localDate = LocalDateTime.of(day.year, day.month, day.day, 0, 0, 0)
19+
val count: Int = achievementCounterHelper.countTodaysAchievements(userDataDto, localDate)
20+
21+
return count == 4
22+
}
23+
24+
override fun decorate(view: DayViewFacade) {
25+
view.setSelectionDrawable(drawable!!)
26+
}
27+
28+
init {
29+
// You can set background for Decorator via drawable here
30+
drawable = ContextCompat.getDrawable(context!!, R.drawable.day_decorator_4)
31+
}
32+
}

0 commit comments

Comments
 (0)