Skip to content

Commit a6537ea

Browse files
committed
Now it is possible to disable on next month change trigger when scrolling to a certain date
- Update test activity - Add functions to add and remove calendar pages scroll listeners
1 parent d030cb4 commit a6537ea

File tree

4 files changed

+37
-4
lines changed

4 files changed

+37
-4
lines changed

app/src/main/java/com/uxsmobile/materialkalendar/BasicCalendarTestActivity.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ import com.uxsmobile.materialkalendar.presentation.ui.MaterialKalendar
1010
import com.uxsmobile.materialkalendar.presentation.ui.common.formatter.KalendarDayMonthYearDateFormatter
1111
import kotlinx.android.synthetic.main.activity_basic_calendar.calendarView
1212
import kotlinx.android.synthetic.main.activity_basic_calendar.dateTextView
13+
import kotlinx.android.synthetic.main.activity_basic_calendar.disableNextOnMonthChangedTrigger
1314
import kotlinx.android.synthetic.main.activity_basic_calendar.monthYearTextView
15+
import kotlinx.android.synthetic.main.activity_basic_calendar.scrollCurrentDay
1416
import org.threeten.bp.format.DateTimeFormatter
1517
import java.util.Locale
1618

@@ -69,6 +71,7 @@ class BasicCalendarTestActivity: AppCompatActivity() {
6971

7072
dateTextView.text = calendarView.selectedDay?.date?.format(DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.getDefault()))
7173
calendarView.selectedDay?.let { monthYearTextView.text = monthYearFormatter.format(it) }
74+
scrollCurrentDay.setOnClickListener { calendarView.scrollToDate(KalendarDay.today(), disableNextOnMonthChangedTrigger.isChecked) }
7275
}
7376

7477
private fun buildMonthlyAggregationData(day: KalendarDay) {

app/src/main/res/layout/activity_basic_calendar.xml

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,29 @@
3434
android:layout_width="wrap_content"
3535
android:layout_height="wrap_content"
3636
android:layout_gravity="center"
37-
android:layout_margin="16dp"
37+
android:layout_margin="@dimen/space_16dp"
3838
android:textAppearance="?android:attr/textAppearanceMedium"
3939
android:textColor="@android:color/white"
4040
/>
4141

42+
<Button
43+
android:id="@+id/scrollCurrentDay"
44+
android:layout_width="wrap_content"
45+
android:layout_height="wrap_content"
46+
android:text="Scroll Current Day"
47+
android:layout_margin="@dimen/space_16dp"
48+
android:layout_gravity="center"/>
49+
50+
<CheckBox
51+
android:id="@+id/disableNextOnMonthChangedTrigger"
52+
android:layout_width="wrap_content"
53+
android:layout_height="wrap_content"
54+
android:textColor="@android:color/white"
55+
android:buttonTint="@android:color/white"
56+
android:paddingStart="@dimen/space_8dp"
57+
android:layout_margin="@dimen/space_8dp"
58+
android:text="Disable Next OnMonthChanged Trigger"
59+
android:textAllCaps="true"
60+
android:layout_gravity="center"/>
61+
4262
</LinearLayout>

dependencies.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ ext {
44
targetSdkVersion = 28
55
versionMajor = 1
66
versionMinor = 0
7-
versionPatch = 6
7+
versionPatch = 7
88
versionClassifier = null
99
isSnapshot = true
1010

library/src/main/java/com/uxsmobile/materialkalendar/presentation/ui/MaterialKalendar.kt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class MaterialKalendar
5656
pagerScrollState = state
5757
pagerScrollState.let {
5858
if (it == ViewPager.SCROLL_STATE_IDLE) {
59-
dispatchOnMonthChanged(adapter.getItem(pager.currentItem))
59+
if (triggerOnMonthChanged) dispatchOnMonthChanged(adapter.getItem(pager.currentItem)) else triggerOnMonthChanged = true
6060
}
6161
}
6262
}
@@ -87,6 +87,7 @@ class MaterialKalendar
8787
private var allowDynamicWeeksHeightResize: Boolean = false
8888
private var weekLabelsArray: Array<CharSequence>? = null
8989
private var shouldShowWeekDays: Boolean = true
90+
private var triggerOnMonthChanged: Boolean = true
9091

9192
init {
9293
clipToPadding = false
@@ -266,7 +267,8 @@ class MaterialKalendar
266267
scrollToDate(if (minDate.isAfter(currentDay)) minDate else currentDay)
267268
}
268269

269-
fun scrollToDate(date: KalendarDay) {
270+
fun scrollToDate(date: KalendarDay, disableNextOnMonthChangedTrigger: Boolean = false) {
271+
triggerOnMonthChanged = !disableNextOnMonthChangedTrigger
270272
pager.setCurrentItem(adapter.getIndexForDay(date), true)
271273
}
272274

@@ -340,6 +342,14 @@ class MaterialKalendar
340342
monthChangedListener = null
341343
}
342344

345+
fun addOnCalendarPageScrollChangeListener(listener: ViewPager.OnPageChangeListener) {
346+
pager.addOnPageChangeListener(listener)
347+
}
348+
349+
fun removeOnCalendarPageScrollChangeListener(listener: ViewPager.OnPageChangeListener) {
350+
pager.removeOnPageChangeListener(listener)
351+
}
352+
343353
fun setMonthlyAggregationData(data: KalendarMonthlyAggregation) {
344354
(adapter as? KalendarMonthPagerAdapter)?.setMonthlyAggregationData(pager.findViewWithTag(data.provideMonthAggregationDate().date.withDayOfMonth(1).toString()), data)
345355
}

0 commit comments

Comments
 (0)