Skip to content

Commit

Permalink
Feat: Added german language. Select/Deselect
Browse files Browse the repository at this point in the history
  • Loading branch information
Sebastian Schreiber committed Sep 14, 2022
1 parent dd32009 commit 34b2a93
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 23 deletions.
28 changes: 21 additions & 7 deletions pickerlib/src/main/assets/days_list.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,43 +5,57 @@
"arDay": "الأحد",
"enDay": "Sunday",
"arDayAbbrev": "اح",
"enDayAbbrev": "Sun"
"enDayAbbrev": "Sun",
"deDay": "Sonntag",
"deDayAbbrev": "So"
}, {
"dayID": 2,
"arDay": "الأثنين",
"enDay": "Monday",
"arDayAbbrev": "اث",
"enDayAbbrev": "Mon"
"enDayAbbrev": "Mon",
"deDay": "Montag",
"deDayAbbrev": "Mo"
}, {
"dayID": 3,
"arDay": "الثلاثاء",
"enDay": "Tuesday",
"arDayAbbrev": "ثل",
"enDayAbbrev": "Tue"
"enDayAbbrev": "Tue",
"deDay": "Dienstag",
"deDayAbbrev": "Di"
}, {
"dayID": 4,
"arDay": "الأربعاء",
"enDay": "Wednesday",
"arDayAbbrev": "ار",
"enDayAbbrev": "Wed"
"enDayAbbrev": "Wed",
"deDay": "Mittwoch",
"deDayAbbrev": "Mi"
}, {
"dayID": 5,
"arDay": "الخميس",
"enDay": "Thursday",
"arDayAbbrev": "خم",
"enDayAbbrev": "Thu"
"enDayAbbrev": "Thu",
"deDay": "Donnerstag",
"deDayAbbrev": "Do"
}, {
"dayID": 6,
"arDay": "الجمعة",
"enDay": "Friday",
"arDayAbbrev": "جم",
"enDayAbbrev": "Fri"
"enDayAbbrev": "Fri",
"deDay": "Freitag",
"deDayAbbrev": "Fr"
}, {
"dayID": 7,
"arDay": "السبت",
"enDay": "Saturday",
"arDayAbbrev": "سب",
"enDayAbbrev": "Sat"
"enDayAbbrev": "Sat",
"deDay": "Samstag",
"deDayAbbrev": "Sa"
}
]
}
57 changes: 41 additions & 16 deletions pickerlib/src/main/java/com/rohyme/pickerlib/DayPicker.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,20 @@ package com.rohyme.pickerlib

import android.content.Context
import android.graphics.PorterDuff
import android.os.Build
import android.support.v4.content.ContextCompat
import android.util.AttributeSet
import android.view.Gravity
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.widget.LinearLayout
import android.widget.TextView
import java.util.*


class DayPicker : LinearLayout {

private var daysList: ArrayList<DaysModel.Day> = getData<DaysModel>(context, "days_list").days
private val textItemList = hashMapOf<Int, TextView>()
private lateinit var selectionListener: DayPickerListener
private var isSelectedByDefault: Boolean = true
private var selectedColor: Int = ContextCompat.getColor(context, R.color.selected_color)
Expand Down Expand Up @@ -99,7 +103,7 @@ class DayPicker : LinearLayout {
private fun initView() {
val dayTextView = TextView(context)
dayTextView.background = resources.getDrawable(R.drawable.day_bg)
val isArabic = resources.configuration.locale.language == "ar"
val currentLocale = getCurrentLocale(context)
val containerWidth = measuredWidth
val itemHeight = (containerWidth - (mSpaces * 6)) / daysList.size
val params = layoutParams
Expand All @@ -109,12 +113,13 @@ class DayPicker : LinearLayout {
day.isSelected = isSelectedByDefault
val hasMargin = index != 0
val dayItem = initText(day)
dayItem.setDayText(isArabic, day)
dayItem.setDayText(currentLocale, day)
val textParams = LinearLayout.LayoutParams(0, MATCH_PARENT, 1f)
if (hasMargin)
textParams.marginStart = mSpaces
dayItem.layoutParams = textParams
addView(dayItem)
textItemList[index] = dayItem
}
}

Expand Down Expand Up @@ -144,22 +149,18 @@ class DayPicker : LinearLayout {

/**
* Handle text displays in the each day item
* @param isArabic will set the day name in arabic
* @param locale used by the user
*/
private fun TextView.setDayText(isArabic: Boolean, day: DaysModel.Day) {
text = if (isArabic) {
if (isFullText) {
day.arDay
} else {
day.arDayAbbrev
}
} else {
if (isFullText) {
day.enDay
} else {
day.enDayAbbrev
}
private fun TextView.setDayText(locale: Locale, day: DaysModel.Day) {
val targetLang = locale.language.toLowerCase(Locale.ROOT)

text = when (targetLang) {
"ar" -> if(isFullText) day.arDay else day.arDayAbbrev
"en" -> if(isFullText) day.enDay else day.enDayAbbrev
"de" -> if(isFullText) day.deDay else day.deDayAbbrev
else -> "??"
}

}


Expand All @@ -179,6 +180,22 @@ class DayPicker : LinearLayout {
}
}

/**
* Selects or deselects all days.
*
* @param select or deselect all
*/
fun selectAll(select : Boolean) {
daysList.forEach {
it.isSelected = select
}

textItemList.forEach {
it.value.isSelected = select
it.value.configSelection(select)
}
}

/**
* Method to get the selected List
*/
Expand All @@ -201,4 +218,12 @@ class DayPicker : LinearLayout {
fun setOnSelectListener(dayPickerListener: DayPickerListener) {
this.selectionListener = dayPickerListener
}

private fun getCurrentLocale(context: Context): Locale {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
context.resources.configuration.locales[0]
} else {
context.resources.configuration.locale
}
}
}
4 changes: 4 additions & 0 deletions pickerlib/src/main/java/com/rohyme/pickerlib/DaysModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ data class DaysModel(
var enDay: String = "",
@SerializedName("enDayAbbrev")
var enDayAbbrev: String = "",
@SerializedName("deDay")
var deDay: String = "",
@SerializedName("deDayAbbrev")
var deDayAbbrev: String = "",
var isSelected :Boolean = true
)
}

0 comments on commit 34b2a93

Please sign in to comment.