package com.github.tibolte.sample; import com.github.tibolte.agendacalendarview.AgendaCalendarView; import com.github.tibolte.agendacalendarview.CalendarManager; import com.github.tibolte.agendacalendarview.CalendarPickerController; import com.github.tibolte.agendacalendarview.models.BaseCalendarEvent; import com.github.tibolte.agendacalendarview.models.CalendarEvent; import com.github.tibolte.agendacalendarview.models.DayItem; import com.github.tibolte.agendacalendarview.models.IDayItem; import com.github.tibolte.agendacalendarview.models.IWeekItem; import com.github.tibolte.agendacalendarview.models.WeekItem; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.util.Log; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.Locale; import butterknife.Bind; import butterknife.ButterKnife; public class MainActivity extends AppCompatActivity implements CalendarPickerController { private static final String LOG_TAG = MainActivity.class.getSimpleName(); @Bind(R.id.activity_toolbar) Toolbar mToolbar; @Bind(R.id.agenda_calendar_view) AgendaCalendarView mAgendaCalendarView; // region Lifecycle methods @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); setSupportActionBar(mToolbar); // minimum and maximum date of our calendar // 2 month behind, one year ahead, example: March 2015 <-> May 2015 <-> May 2016 Calendar minDate = Calendar.getInstance(); Calendar maxDate = Calendar.getInstance(); minDate.add(Calendar.MONTH, -2); minDate.set(Calendar.DAY_OF_MONTH, 1); maxDate.add(Calendar.YEAR, 1); List<CalendarEvent> eventList = new ArrayList<>(); mockList(eventList); // Sync way /* mAgendaCalendarView.init(eventList, minDate, maxDate, Locale.getDefault(), this); mAgendaCalendarView.addEventRenderer(new DrawableEventRenderer()); */ //Async way //////// This can be done once in another thread CalendarManager calendarManager = CalendarManager.getInstance(getApplicationContext()); calendarManager.buildCal(minDate, maxDate, Locale.getDefault(), new DayItem(), new WeekItem()); calendarManager.loadEvents(eventList, new BaseCalendarEvent()); //////// List<CalendarEvent> readyEvents = calendarManager.getEvents(); List<IDayItem> readyDays = calendarManager.getDays(); List<IWeekItem> readyWeeks = calendarManager.getWeeks(); mAgendaCalendarView.init(Locale.getDefault(), readyWeeks,readyDays,readyEvents,this); mAgendaCalendarView.addEventRenderer(new DrawableEventRenderer()); } // endregion // region Interface - CalendarPickerController @Override public void onDaySelected(IDayItem dayItem) { Log.d(LOG_TAG, String.format("Selected day: %s", dayItem)); } @Override public void onEventSelected(CalendarEvent event) { Log.d(LOG_TAG, String.format("Selected event: %s", event)); } @Override public void onScrollToDate(Calendar calendar) { if (getSupportActionBar() != null) { getSupportActionBar().setTitle(calendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault())); } } // endregion // region Private Methods private void mockList(List<CalendarEvent> eventList) { Calendar startTime1 = Calendar.getInstance(); Calendar endTime1 = Calendar.getInstance(); endTime1.add(Calendar.MONTH, 1); BaseCalendarEvent event1 = new BaseCalendarEvent("Thibault travels in Iceland", "A wonderful journey!", "Iceland", ContextCompat.getColor(this, R.color.orange_dark), startTime1, endTime1, true); eventList.add(event1); Calendar startTime2 = Calendar.getInstance(); startTime2.add(Calendar.DAY_OF_YEAR, 1); Calendar endTime2 = Calendar.getInstance(); endTime2.add(Calendar.DAY_OF_YEAR, 3); BaseCalendarEvent event2 = new BaseCalendarEvent("Visit to Dalvík", "A beautiful small town", "Dalvík", ContextCompat.getColor(this, R.color.yellow), startTime2, endTime2, true); eventList.add(event2); Calendar startTime3 = Calendar.getInstance(); Calendar endTime3 = Calendar.getInstance(); startTime3.set(Calendar.HOUR_OF_DAY, 14); startTime3.set(Calendar.MINUTE, 0); endTime3.set(Calendar.HOUR_OF_DAY, 15); endTime3.set(Calendar.MINUTE, 0); DrawableCalendarEvent event3 = new DrawableCalendarEvent("Visit of Harpa", "", "Dalvík", ContextCompat.getColor(this, R.color.blue_dark), startTime3, endTime3, false, android.R.drawable.ic_dialog_info); eventList.add(event3); } // endregion }