From 94e198be3264f7e378e0de9360636da97d702a0c Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 17 Sep 2016 11:43:24 +0200 Subject: [PATCH] prefill the days viewpager with 2 months --- .../calendar/NavigationListener.kt | 11 +++ .../calendar/activities/DayActivity.kt | 78 +++++++++++++------ .../calendar/activities/MainActivity.kt | 11 +-- .../calendar/adapters/MyDayPagerAdapter.kt | 28 +++++++ ...PagerAdapter.kt => MyMonthPagerAdapter.kt} | 3 +- .../calendar/fragments/DayFragment.kt | 11 +++ .../calendar/fragments/MonthFragment.kt | 8 -- app/src/main/res/layout/top_navigation.xml | 1 - 8 files changed, 112 insertions(+), 39 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/calendar/NavigationListener.kt create mode 100644 app/src/main/kotlin/com/simplemobiletools/calendar/adapters/MyDayPagerAdapter.kt rename app/src/main/kotlin/com/simplemobiletools/calendar/adapters/{MyPagerAdapter.kt => MyMonthPagerAdapter.kt} (76%) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/NavigationListener.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/NavigationListener.kt new file mode 100644 index 000000000..ccd605cf7 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/NavigationListener.kt @@ -0,0 +1,11 @@ +package com.simplemobiletools.calendar + +import org.joda.time.DateTime + +interface NavigationListener { + fun goLeft() + + fun goRight() + + fun goToDateTime(dateTime: DateTime) +} diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/DayActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/DayActivity.kt index 8e5e6266c..a4515be74 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/DayActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/DayActivity.kt @@ -10,14 +10,30 @@ import android.view.MenuItem import android.view.View import android.widget.AbsListView import android.widget.AdapterView -import com.simplemobiletools.calendar.Constants -import com.simplemobiletools.calendar.DBHelper +import butterknife.OnClick +import com.simplemobiletools.calendar.* import com.simplemobiletools.calendar.Formatter -import com.simplemobiletools.calendar.R +import com.simplemobiletools.calendar.adapters.MyDayPagerAdapter import com.simplemobiletools.calendar.models.Event +import kotlinx.android.synthetic.main.activity_day.* +import org.joda.time.DateTime import java.util.* -class DayActivity : SimpleActivity(), DBHelper.DBOperationsListener, AdapterView.OnItemClickListener, AbsListView.MultiChoiceModeListener { +class DayActivity : SimpleActivity(), NavigationListener, DBHelper.DBOperationsListener, AdapterView.OnItemClickListener, +AbsListView.MultiChoiceModeListener { + + private val PREFILLED_DAYS = 61 + private var mDayCode: String? = null + private var mEvents: MutableList? = null + private var mSelectedItemsCnt: Int = 0 + private var mSnackbar: Snackbar? = null + private var mToBeDeleted: MutableList? = null + private val EDIT_EVENT = 1 + + companion object { + val DELETED_ID = "deleted_id" + } + /*@BindView(R.id.month_value) internal var mDateTV: TextView? = null @BindView(R.id.day_events) internal var mEventsList: ListView? = null @BindView(R.id.day_coordinator) internal var mCoordinatorLayout: CoordinatorLayout? = null @@ -29,15 +45,15 @@ class DayActivity : SimpleActivity(), DBHelper.DBOperationsListener, AdapterView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_day) - //ButterKnife.bind(this) val intent = intent ?: return - mDayCode = intent.getStringExtra(Constants.DAY_CODE) if (mDayCode == null || mDayCode!!.isEmpty()) return - val date = Formatter.getEventDate(applicationContext, mDayCode) + //val date = Formatter.getEventDate(applicationContext, dayCode) + fillViewPager(mDayCode!!) + /*mDateTV!!.text = date mToBeDeleted = ArrayList() @@ -63,14 +79,31 @@ class DayActivity : SimpleActivity(), DBHelper.DBOperationsListener, AdapterView checkDeleteEvents() } - /*@OnClick(R.id.day_fab) + private fun fillViewPager(targetDay: String) { + val codes = getDays(targetDay) + val adapter = MyDayPagerAdapter(supportFragmentManager, codes, this) + view_pager.adapter = adapter + view_pager.currentItem = codes.size / 2 + } + + private fun getDays(code: String): List { + val days = ArrayList(PREFILLED_DAYS) + val today = Formatter.getDateTimeFromCode(code) + for (i in -PREFILLED_DAYS / 2..PREFILLED_DAYS / 2) { + days.add(Formatter.getDayCodeFromDateTime(today.plusDays(i))) + } + + return days + } + + @OnClick(R.id.day_fab) fun fabClicked(view: View) { val intent = Intent(applicationContext, EventActivity::class.java) intent.putExtra(Constants.DAY_CODE, mDayCode) startActivity(intent) } - @OnClick(R.id.top_left_arrow) + /*@OnClick(R.id.top_left_arrow) fun leftArrowClicked() { val dateTime = Formatter.getDateTimeFromCode(mDayCode) val yesterdayCode = Formatter.getDayCodeFromDateTime(dateTime.minusDays(1)) @@ -128,13 +161,13 @@ class DayActivity : SimpleActivity(), DBHelper.DBOperationsListener, AdapterView DBHelper.newInstance(applicationContext, this).getEvents(startTS, endTS) } - private fun updateEvents(events: MutableList) { + /*private fun updateEvents(events: MutableList) { mEvents = ArrayList(events) - /*val eventsToShow = getEventsToShow(events) + val eventsToShow = getEventsToShow(events) val adapter = EventsAdapter(this, eventsToShow) mEventsList!!.adapter = adapter mEventsList!!.onItemClickListener = this - mEventsList!!.setMultiChoiceModeListener(this)*/ + mEventsList!!.setMultiChoiceModeListener(this) } private fun getEventsToShow(events: MutableList): List { @@ -145,7 +178,7 @@ class DayActivity : SimpleActivity(), DBHelper.DBOperationsListener, AdapterView } } return events - } + }*/ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { if (requestCode == EDIT_EVENT && resultCode == Activity.RESULT_OK && data != null) { @@ -201,7 +234,7 @@ class DayActivity : SimpleActivity(), DBHelper.DBOperationsListener, AdapterView } override fun gotEvents(events: MutableList) { - updateEvents(events) + //updateEvents(events) } override fun onItemClick(parent: AdapterView<*>, view: View, position: Int, id: Long) { @@ -267,14 +300,15 @@ class DayActivity : SimpleActivity(), DBHelper.DBOperationsListener, AdapterView mSelectedItemsCnt = 0 } - companion object { - private val EDIT_EVENT = 1 - val DELETED_ID = "deleted_id" + override fun goLeft() { + + } + + override fun goRight() { + + } + + override fun goToDateTime(dateTime: DateTime) { - private var mDayCode: String? = null - private var mEvents: MutableList? = null - private var mSelectedItemsCnt: Int = 0 - private var mSnackbar: Snackbar? = null - private var mToBeDeleted: MutableList? = null } } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt index c0845cdf5..a4dedf785 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt @@ -6,18 +6,15 @@ import android.view.Menu import android.view.MenuItem import android.view.View import butterknife.OnClick -import com.simplemobiletools.calendar.Config -import com.simplemobiletools.calendar.Constants +import com.simplemobiletools.calendar.* import com.simplemobiletools.calendar.Formatter -import com.simplemobiletools.calendar.R -import com.simplemobiletools.calendar.adapters.MyPagerAdapter -import com.simplemobiletools.calendar.fragments.MonthFragment +import com.simplemobiletools.calendar.adapters.MyMonthPagerAdapter import kotlinx.android.synthetic.main.activity_main.* import org.joda.time.DateTime import org.joda.time.DateTimeZone import java.util.* -class MainActivity : SimpleActivity(), MonthFragment.NavigationListener { +class MainActivity : SimpleActivity(), NavigationListener { private val PREFILLED_MONTHS = 73 override fun onCreate(savedInstanceState: Bundle?) { @@ -62,7 +59,7 @@ class MainActivity : SimpleActivity(), MonthFragment.NavigationListener { private fun fillViewPager(targetMonth: String) { val codes = getMonths(targetMonth) - val adapter = MyPagerAdapter(supportFragmentManager, codes, this) + val adapter = MyMonthPagerAdapter(supportFragmentManager, codes, this) view_pager.adapter = adapter view_pager.currentItem = codes.size / 2 } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/MyDayPagerAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/MyDayPagerAdapter.kt new file mode 100644 index 000000000..99da903ed --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/MyDayPagerAdapter.kt @@ -0,0 +1,28 @@ +package com.simplemobiletools.calendar.adapters + +import android.os.Bundle +import android.support.v4.app.Fragment +import android.support.v4.app.FragmentManager +import android.support.v4.app.FragmentStatePagerAdapter +import com.simplemobiletools.calendar.Constants +import com.simplemobiletools.calendar.NavigationListener +import com.simplemobiletools.calendar.fragments.DayFragment + +class MyDayPagerAdapter(fm: FragmentManager, private val mCodes: List, private val mListener: NavigationListener) : + FragmentStatePagerAdapter(fm) { + + override fun getCount(): Int { + return mCodes.size + } + + override fun getItem(position: Int): Fragment { + val bundle = Bundle() + val code = mCodes[position] + bundle.putString(Constants.DAY_CODE, code) + + val fragment = DayFragment() + fragment.arguments = bundle + fragment.setListener(mListener) + return fragment + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/MyPagerAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/MyMonthPagerAdapter.kt similarity index 76% rename from app/src/main/kotlin/com/simplemobiletools/calendar/adapters/MyPagerAdapter.kt rename to app/src/main/kotlin/com/simplemobiletools/calendar/adapters/MyMonthPagerAdapter.kt index bf021b450..3a6ba561f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/MyPagerAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/MyMonthPagerAdapter.kt @@ -6,9 +6,10 @@ import android.support.v4.app.FragmentManager import android.support.v4.app.FragmentStatePagerAdapter import com.simplemobiletools.calendar.Constants +import com.simplemobiletools.calendar.NavigationListener import com.simplemobiletools.calendar.fragments.MonthFragment -class MyPagerAdapter(fm: FragmentManager, private val mCodes: List, private val mListener: MonthFragment.NavigationListener) : FragmentStatePagerAdapter(fm) { +class MyMonthPagerAdapter(fm: FragmentManager, private val mCodes: List, private val mListener: NavigationListener) : FragmentStatePagerAdapter(fm) { override fun getCount(): Int { return mCodes.size diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/DayFragment.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/DayFragment.kt index 8fc7ab4c2..0e5ff5cd3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/DayFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/DayFragment.kt @@ -5,12 +5,23 @@ import android.support.v4.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import com.simplemobiletools.calendar.Constants +import com.simplemobiletools.calendar.NavigationListener import com.simplemobiletools.calendar.R class DayFragment : Fragment() { + private var mCode: String = "" + + private var mListener: NavigationListener? = null + override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater!!.inflate(R.layout.day_fragment, container, false) + mCode = arguments.getString(Constants.DAY_CODE) return view } + + fun setListener(listener: NavigationListener) { + mListener = listener + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/MonthFragment.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/MonthFragment.kt index f9849773c..8d853d8ad 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/MonthFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/MonthFragment.kt @@ -183,12 +183,4 @@ class MonthFragment : Fragment(), Calendar { intent.putExtra(Constants.DAY_CODE, code) startActivity(intent) } - - interface NavigationListener { - fun goLeft() - - fun goRight() - - fun goToDateTime(dateTime: DateTime) - } } diff --git a/app/src/main/res/layout/top_navigation.xml b/app/src/main/res/layout/top_navigation.xml index adf6e179f..c4f319221 100644 --- a/app/src/main/res/layout/top_navigation.xml +++ b/app/src/main/res/layout/top_navigation.xml @@ -23,7 +23,6 @@ android:gravity="center_horizontal" android:paddingBottom="@dimen/activity_margin" android:paddingTop="@dimen/top_padding" - android:text="January" android:textSize="@dimen/month_text_size"/>