From 0a46941b9c21e31802583f9a5207cae4f3988e92 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 4 Feb 2017 22:47:31 +0100 Subject: [PATCH] update the weekly view grid so it scales better on different densities --- .../calendar/fragments/WeekFragment.kt | 26 +- app/src/main/res/drawable/stroke_bottom.xml | 10 +- .../main/res/drawable/stroke_bottom_right.xml | 16 ++ app/src/main/res/drawable/stroke_right.xml | 10 +- app/src/main/res/layout/activity_main.xml | 10 +- app/src/main/res/layout/fragment_week.xml | 267 +++++++++--------- 6 files changed, 175 insertions(+), 164 deletions(-) create mode 100644 app/src/main/res/drawable/stroke_bottom_right.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/WeekFragment.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/WeekFragment.kt index c6dc83b48..fb0033083 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/WeekFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/WeekFragment.kt @@ -41,7 +41,6 @@ class WeekFragment : Fragment(), WeeklyCalendar { private var isFragmentVisible = false private var wasFragmentInit = false private var wasExtraHeightAdded = false - private var oneDP = 1 lateinit var mView: View lateinit var mCalendar: WeeklyCalendarImpl @@ -53,7 +52,6 @@ class WeekFragment : Fragment(), WeeklyCalendar { mWeekTimestamp = arguments.getInt(WEEK_START_TIMESTAMP) primaryColor = context.config.primaryColor mRes = resources - oneDP = mRes.displayMetrics.density.toInt() mView = inflater.inflate(R.layout.fragment_week, container, false).apply { week_events_scrollview.setOnScrollviewListener(object : MyScrollView.ScrollViewListener { @@ -171,9 +169,11 @@ class WeekFragment : Fragment(), WeeklyCalendar { activity.runOnUiThread { mView.week_all_day_holder.removeAllViews() } + var hadAllDayEvent = false val sorted = events.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { it.description })) for (event in sorted) { if (event.isAllDay() || Formatter.getDayCodeFromTS(event.startTS) != Formatter.getDayCodeFromTS(event.endTS)) { + hadAllDayEvent = true addAllDayEvent(event) } else { val startDateTime = Formatter.getDateTimeFromTS(event.startTS) @@ -190,10 +190,9 @@ class WeekFragment : Fragment(), WeeklyCalendar { activity.runOnUiThread { layout.addView(this) (layoutParams as RelativeLayout.LayoutParams).apply { - rightMargin = oneDP topMargin = (startMinutes * minuteHeight).toInt() - width = layout.width - minHeight = if (event.startTS == event.endTS) minimalHeight else (duration * minuteHeight).toInt() - oneDP + width = layout.width - 1 + minHeight = if (event.startTS == event.endTS) minimalHeight else (duration * minuteHeight).toInt() - 1 } } setOnClickListener { @@ -205,6 +204,17 @@ class WeekFragment : Fragment(), WeeklyCalendar { } } } + + if (!hadAllDayEvent) { + mView.week_top_holder.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { + override fun onGlobalLayout() { + mView.week_top_holder.viewTreeObserver.removeOnGlobalLayoutListener(this) + if (isFragmentVisible) { + (activity as MainActivity).updateHoursTopMargin(mView.week_top_holder.height) + } + } + }) + } } private fun addAllDayEvent(event: Event) { @@ -226,9 +236,9 @@ class WeekFragment : Fragment(), WeeklyCalendar { mView.week_all_day_holder.addView(this) (layoutParams as LinearLayout.LayoutParams).apply { topMargin = mRes.getDimension(R.dimen.tiny_margin).toInt() - bottomMargin = oneDP - leftMargin = firstDayIndex % 7 * dayColumnWidth - width = (daysCnt + 1) * dayColumnWidth - oneDP + leftMargin = getColumnWithId(firstDayIndex).x.toInt() + bottomMargin = 1 + width = getColumnWithId(firstDayIndex + daysCnt).right - leftMargin - 1 } mView.week_top_holder.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { diff --git a/app/src/main/res/drawable/stroke_bottom.xml b/app/src/main/res/drawable/stroke_bottom.xml index 58b807a11..d851d1192 100644 --- a/app/src/main/res/drawable/stroke_bottom.xml +++ b/app/src/main/res/drawable/stroke_bottom.xml @@ -1,15 +1,15 @@ + android:bottom="0px" + android:left="-2px" + android:right="-2px" + android:top="-2px"> diff --git a/app/src/main/res/drawable/stroke_bottom_right.xml b/app/src/main/res/drawable/stroke_bottom_right.xml new file mode 100644 index 000000000..206722803 --- /dev/null +++ b/app/src/main/res/drawable/stroke_bottom_right.xml @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/stroke_right.xml b/app/src/main/res/drawable/stroke_right.xml index 48cc5673d..9bd8e4265 100644 --- a/app/src/main/res/drawable/stroke_right.xml +++ b/app/src/main/res/drawable/stroke_right.xml @@ -1,15 +1,15 @@ + android:bottom="-2px" + android:left="-2px" + android:right="0px" + android:top="-2px"> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 125f38242..8fd339fef 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -24,13 +24,14 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignRight="@+id/week_view_hours_scrollview" - android:background="@drawable/stroke_bottom"/> + android:background="@drawable/stroke_bottom_right"/> @@ -41,6 +42,7 @@ android:layout_height="wrap_content" android:orientation="vertical" android:paddingBottom="@dimen/weekly_view_row_height"/> + - - diff --git a/app/src/main/res/layout/fragment_week.xml b/app/src/main/res/layout/fragment_week.xml index 85bac25d7..5ba2b0f24 100644 --- a/app/src/main/res/layout/fragment_week.xml +++ b/app/src/main/res/layout/fragment_week.xml @@ -1,16 +1,137 @@ - + android:layout_height="match_parent"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:orientation="horizontal" + android:paddingBottom="@dimen/small_margin"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +