allow printing the yearly view

This commit is contained in:
tibbi 2020-10-25 21:48:27 +01:00
parent abf8998d5b
commit eed880c195
5 changed files with 74 additions and 25 deletions

View file

@ -30,4 +30,8 @@ class MyYearPagerAdapter(fm: FragmentManager, val mYears: List<Int>) : FragmentS
mFragments[pos + i]?.updateCalendar() mFragments[pos + i]?.updateCalendar()
} }
} }
fun printCurrentView(pos: Int) {
mFragments[pos].printCurrentView()
}
} }

View file

@ -1,6 +1,5 @@
package com.simplemobiletools.calendar.pro.fragments package com.simplemobiletools.calendar.pro.fragments
import android.content.res.Resources
import android.os.Bundle import android.os.Bundle
import android.util.SparseArray import android.util.SparseArray
import android.view.LayoutInflater import android.view.LayoutInflater
@ -11,6 +10,8 @@ import androidx.fragment.app.Fragment
import com.simplemobiletools.calendar.pro.R import com.simplemobiletools.calendar.pro.R
import com.simplemobiletools.calendar.pro.activities.MainActivity import com.simplemobiletools.calendar.pro.activities.MainActivity
import com.simplemobiletools.calendar.pro.extensions.config import com.simplemobiletools.calendar.pro.extensions.config
import com.simplemobiletools.calendar.pro.extensions.getViewBitmap
import com.simplemobiletools.calendar.pro.extensions.printBitmap
import com.simplemobiletools.calendar.pro.helpers.YEAR_LABEL import com.simplemobiletools.calendar.pro.helpers.YEAR_LABEL
import com.simplemobiletools.calendar.pro.helpers.YearlyCalendarImpl import com.simplemobiletools.calendar.pro.helpers.YearlyCalendarImpl
import com.simplemobiletools.calendar.pro.interfaces.YearlyCalendar import com.simplemobiletools.calendar.pro.interfaces.YearlyCalendar
@ -25,6 +26,7 @@ import java.util.*
class YearFragment : Fragment(), YearlyCalendar { class YearFragment : Fragment(), YearlyCalendar {
private var mYear = 0 private var mYear = 0
private var mSundayFirst = false private var mSundayFirst = false
private var isPrintVersion = false
private var lastHash = 0 private var lastHash = 0
private var mCalendar: YearlyCalendarImpl? = null private var mCalendar: YearlyCalendarImpl? = null
@ -37,7 +39,6 @@ class YearFragment : Fragment(), YearlyCalendar {
setupMonths() setupMonths()
mCalendar = YearlyCalendarImpl(this, context!!, mYear) mCalendar = YearlyCalendarImpl(this, context!!, mYear)
return mView return mView
} }
@ -65,30 +66,40 @@ class YearFragment : Fragment(), YearlyCalendar {
val days = dateTime.dayOfMonth().maximumValue val days = dateTime.dayOfMonth().maximumValue
mView.month_2.setDays(days) mView.month_2.setDays(days)
val res = resources val now = DateTime()
markCurrentMonth(res)
for (i in 1..12) { for (i in 1..12) {
val monthView = mView.findViewById<SmallMonthView>(res.getIdentifier("month_" + i, "id", context!!.packageName)) val monthView = mView.findViewById<SmallMonthView>(resources.getIdentifier("month_$i", "id", context!!.packageName))
var dayOfWeek = dateTime.withMonthOfYear(i).dayOfWeek().get() var dayOfWeek = dateTime.withMonthOfYear(i).dayOfWeek().get()
if (!mSundayFirst) { if (!mSundayFirst) {
dayOfWeek-- dayOfWeek--
} }
val monthLabel = mView.findViewById<TextView>(resources.getIdentifier("month_${i}_label", "id", context!!.packageName))
val curTextColor = when {
isPrintVersion -> resources.getColor(R.color.theme_light_text_color)
else -> context!!.config.textColor
}
monthLabel.setTextColor(curTextColor)
monthView.firstDay = dayOfWeek monthView.firstDay = dayOfWeek
monthView.setOnClickListener { monthView.setOnClickListener {
(activity as MainActivity).openMonthFromYearly(DateTime().withDate(mYear, i, 1)) (activity as MainActivity).openMonthFromYearly(DateTime().withDate(mYear, i, 1))
} }
} }
if (!isPrintVersion) {
markCurrentMonth(now)
}
} }
private fun markCurrentMonth(res: Resources) { private fun markCurrentMonth(now: DateTime) {
val now = DateTime()
if (now.year == mYear) { if (now.year == mYear) {
val monthLabel = mView.findViewById<TextView>(res.getIdentifier("month_${now.monthOfYear}_label", "id", context!!.packageName)) val monthLabel = mView.findViewById<TextView>(resources.getIdentifier("month_${now.monthOfYear}_label", "id", context!!.packageName))
monthLabel.setTextColor(context!!.getAdjustedPrimaryColor()) monthLabel.setTextColor(context!!.getAdjustedPrimaryColor())
val monthView = mView.findViewById<SmallMonthView>(res.getIdentifier("month_${now.monthOfYear}", "id", context!!.packageName)) val monthView = mView.findViewById<SmallMonthView>(resources.getIdentifier("month_${now.monthOfYear}", "id", context!!.packageName))
monthView.todaysId = now.dayOfMonth monthView.todaysId = now.dayOfMonth
} }
} }
@ -102,10 +113,28 @@ class YearFragment : Fragment(), YearlyCalendar {
} }
lastHash = hashCode lastHash = hashCode
val res = resources
for (i in 1..12) { for (i in 1..12) {
val monthView = mView.findViewById<SmallMonthView>(res.getIdentifier("month_$i", "id", context!!.packageName)) val monthView = mView.findViewById<SmallMonthView>(resources.getIdentifier("month_$i", "id", context!!.packageName))
monthView.setEvents(events.get(i)) monthView.setEvents(events.get(i))
} }
} }
fun printCurrentView() {
isPrintVersion = true
setupMonths()
toggleSmallMonthPrintModes()
context!!.printBitmap(mView.calendar_holder.getViewBitmap())
isPrintVersion = false
setupMonths()
toggleSmallMonthPrintModes()
}
private fun toggleSmallMonthPrintModes() {
for (i in 1..12) {
val monthView = mView.findViewById<SmallMonthView>(resources.getIdentifier("month_$i", "id", context!!.packageName))
monthView.togglePrintMode()
}
}
} }

View file

@ -11,6 +11,7 @@ import androidx.appcompat.app.AlertDialog
import androidx.viewpager.widget.ViewPager import androidx.viewpager.widget.ViewPager
import com.simplemobiletools.calendar.pro.R import com.simplemobiletools.calendar.pro.R
import com.simplemobiletools.calendar.pro.activities.MainActivity import com.simplemobiletools.calendar.pro.activities.MainActivity
import com.simplemobiletools.calendar.pro.adapters.MyMonthPagerAdapter
import com.simplemobiletools.calendar.pro.adapters.MyYearPagerAdapter import com.simplemobiletools.calendar.pro.adapters.MyYearPagerAdapter
import com.simplemobiletools.calendar.pro.extensions.config import com.simplemobiletools.calendar.pro.extensions.config
import com.simplemobiletools.calendar.pro.helpers.Formatter import com.simplemobiletools.calendar.pro.helpers.Formatter
@ -127,5 +128,7 @@ class YearFragmentsHolder : MyFragmentHolder() {
override fun getNewEventDayCode() = Formatter.getTodayCode() override fun getNewEventDayCode() = Formatter.getTodayCode()
override fun printView() {} override fun printView() {
(viewPager?.adapter as? MyYearPagerAdapter)?.printCurrentView(viewPager?.currentItem ?: 0)
}
} }

View file

@ -22,6 +22,7 @@ class SmallMonthView(context: Context, attrs: AttributeSet, defStyle: Int) : Vie
private var textColor = 0 private var textColor = 0
private var days = 31 private var days = 31
private var isLandscape = false private var isLandscape = false
private var isPrintVersion = false
private var mEvents: ArrayList<DayYearly>? = null private var mEvents: ArrayList<DayYearly>? = null
var firstDay = 0 var firstDay = 0
@ -81,7 +82,7 @@ class SmallMonthView(context: Context, attrs: AttributeSet, defStyle: Int) : Vie
if (curId in 1..days) { if (curId in 1..days) {
canvas.drawText(curId.toString(), x * dayWidth - (dayWidth / 4), y * dayWidth, getPaint(curId)) canvas.drawText(curId.toString(), x * dayWidth - (dayWidth / 4), y * dayWidth, getPaint(curId))
if (curId == todaysId) { if (curId == todaysId && !isPrintVersion) {
val dividerConstant = if (isLandscape) 6 else 4 val dividerConstant = if (isLandscape) 6 else 4
canvas.drawCircle(x * dayWidth - dayWidth / 2, y * dayWidth - dayWidth / dividerConstant, dayWidth * 0.41f, todayCirclePaint) canvas.drawCircle(x * dayWidth - dayWidth / 2, y * dayWidth - dayWidth / dividerConstant, dayWidth * 0.41f, todayCirclePaint)
} }
@ -101,4 +102,16 @@ class SmallMonthView(context: Context, attrs: AttributeSet, defStyle: Int) : Vie
return paint return paint
} }
fun togglePrintMode() {
isPrintVersion = !isPrintVersion
textColor = if (isPrintVersion) {
resources.getColor(R.color.theme_light_text_color)
} else {
context.config.textColor.adjustAlpha(MEDIUM_ALPHA)
}
paint.color = textColor
invalidate()
}
} }

View file

@ -15,7 +15,7 @@
android:layout_marginEnd="@dimen/yearly_padding_full" android:layout_marginEnd="@dimen/yearly_padding_full"
android:layout_weight="1"> android:layout_weight="1">
<com.simplemobiletools.commons.views.MyTextView <TextView
android:id="@+id/month_1_label" android:id="@+id/month_1_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -41,7 +41,7 @@
android:layout_marginEnd="@dimen/yearly_padding_half" android:layout_marginEnd="@dimen/yearly_padding_half"
android:layout_weight="1"> android:layout_weight="1">
<com.simplemobiletools.commons.views.MyTextView <TextView
android:id="@+id/month_2_label" android:id="@+id/month_2_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -65,7 +65,7 @@
android:layout_marginStart="@dimen/yearly_padding_full" android:layout_marginStart="@dimen/yearly_padding_full"
android:layout_weight="1"> android:layout_weight="1">
<com.simplemobiletools.commons.views.MyTextView <TextView
android:id="@+id/month_3_label" android:id="@+id/month_3_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -92,7 +92,7 @@
android:layout_marginEnd="@dimen/yearly_padding_full" android:layout_marginEnd="@dimen/yearly_padding_full"
android:layout_weight="1"> android:layout_weight="1">
<com.simplemobiletools.commons.views.MyTextView <TextView
android:id="@+id/month_4_label" android:id="@+id/month_4_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -118,7 +118,7 @@
android:layout_marginEnd="@dimen/yearly_padding_half" android:layout_marginEnd="@dimen/yearly_padding_half"
android:layout_weight="1"> android:layout_weight="1">
<com.simplemobiletools.commons.views.MyTextView <TextView
android:id="@+id/month_5_label" android:id="@+id/month_5_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -142,7 +142,7 @@
android:layout_marginStart="@dimen/yearly_padding_full" android:layout_marginStart="@dimen/yearly_padding_full"
android:layout_weight="1"> android:layout_weight="1">
<com.simplemobiletools.commons.views.MyTextView <TextView
android:id="@+id/month_6_label" android:id="@+id/month_6_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -169,7 +169,7 @@
android:layout_marginEnd="@dimen/yearly_padding_full" android:layout_marginEnd="@dimen/yearly_padding_full"
android:layout_weight="1"> android:layout_weight="1">
<com.simplemobiletools.commons.views.MyTextView <TextView
android:id="@+id/month_7_label" android:id="@+id/month_7_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -193,7 +193,7 @@
android:layout_marginEnd="@dimen/yearly_padding_half" android:layout_marginEnd="@dimen/yearly_padding_half"
android:layout_weight="1"> android:layout_weight="1">
<com.simplemobiletools.commons.views.MyTextView <TextView
android:id="@+id/month_8_label" android:id="@+id/month_8_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -217,7 +217,7 @@
android:layout_marginStart="@dimen/yearly_padding_full" android:layout_marginStart="@dimen/yearly_padding_full"
android:layout_weight="1"> android:layout_weight="1">
<com.simplemobiletools.commons.views.MyTextView <TextView
android:id="@+id/month_9_label" android:id="@+id/month_9_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -245,7 +245,7 @@
android:layout_marginEnd="@dimen/yearly_padding_full" android:layout_marginEnd="@dimen/yearly_padding_full"
android:layout_weight="1"> android:layout_weight="1">
<com.simplemobiletools.commons.views.MyTextView <TextView
android:id="@+id/month_10_label" android:id="@+id/month_10_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -270,7 +270,7 @@
android:layout_marginEnd="@dimen/yearly_padding_half" android:layout_marginEnd="@dimen/yearly_padding_half"
android:layout_weight="1"> android:layout_weight="1">
<com.simplemobiletools.commons.views.MyTextView <TextView
android:id="@+id/month_11_label" android:id="@+id/month_11_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -295,7 +295,7 @@
android:layout_marginStart="@dimen/yearly_padding_full" android:layout_marginStart="@dimen/yearly_padding_full"
android:layout_weight="1"> android:layout_weight="1">
<com.simplemobiletools.commons.views.MyTextView <TextView
android:id="@+id/month_12_label" android:id="@+id/month_12_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"