package com.marshalchen.common.demoofui.sampleModules; import android.app.Activity; import android.graphics.RectF; import android.os.Bundle; import android.util.TypedValue; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import com.marshalchen.common.demoofui.R; import com.marshalchen.common.uimodule.weekview.WeekView; import com.marshalchen.common.uimodule.weekview.WeekViewEvent; import java.util.ArrayList; import java.util.Calendar; import java.util.List; /** * Created by Raquib-ul-Alam Kanak on 7/21/2014. * Website: http://april-shower.com */ public class AndroidWeekViewActivity extends Activity implements WeekView.MonthChangeListener, WeekView.EventClickListener, WeekView.EventLongPressListener { private static final int TYPE_DAY_VIEW = 1; private static final int TYPE_THREE_DAY_VIEW = 2; private static final int TYPE_WEEK_VIEW = 3; private int mWeekViewType = TYPE_THREE_DAY_VIEW; private WeekView mWeekView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.android_week_view_activity); // Get a reference for the week view in the layout. mWeekView = (WeekView) findViewById(R.id.weekView); // Show a toast message about the touched event. mWeekView.setOnEventClickListener(this); // The week view has infinite scrolling horizontally. We have to provide the events of a // month every time the month changes on the week view. mWeekView.setMonthChangeListener(this); // Set long press listener for events. mWeekView.setEventLongPressListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.android_week_view, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.action_today: mWeekView.goToToday(); return true; case R.id.action_day_view: if (mWeekViewType != TYPE_DAY_VIEW) { item.setChecked(!item.isChecked()); mWeekViewType = TYPE_DAY_VIEW; mWeekView.setNumberOfVisibleDays(1); // Lets change some dimensions to best fit the view. mWeekView.setColumnGap((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics())); mWeekView.setTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12, getResources().getDisplayMetrics())); mWeekView.setEventTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12, getResources().getDisplayMetrics())); } return true; case R.id.action_three_day_view: if (mWeekViewType != TYPE_THREE_DAY_VIEW) { item.setChecked(!item.isChecked()); mWeekViewType = TYPE_THREE_DAY_VIEW; mWeekView.setNumberOfVisibleDays(3); // Lets change some dimensions to best fit the view. mWeekView.setColumnGap((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics())); mWeekView.setTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12, getResources().getDisplayMetrics())); mWeekView.setEventTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12, getResources().getDisplayMetrics())); } return true; case R.id.action_week_view: if (mWeekViewType != TYPE_WEEK_VIEW) { item.setChecked(!item.isChecked()); mWeekViewType = TYPE_WEEK_VIEW; mWeekView.setNumberOfVisibleDays(7); // Lets change some dimensions to best fit the view. mWeekView.setColumnGap((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 2, getResources().getDisplayMetrics())); mWeekView.setTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 10, getResources().getDisplayMetrics())); mWeekView.setEventTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 10, getResources().getDisplayMetrics())); } return true; } return super.onOptionsItemSelected(item); } @Override public List<WeekViewEvent> onMonthChange(int newYear, int newMonth) { // Populate the week view with some events. List<WeekViewEvent> events = new ArrayList<WeekViewEvent>(); Calendar startTime = Calendar.getInstance(); startTime.set(Calendar.HOUR_OF_DAY, 3); startTime.set(Calendar.MINUTE, 0); startTime.set(Calendar.MONTH, newMonth - 1); startTime.set(Calendar.YEAR, newYear); Calendar endTime = (Calendar) startTime.clone(); endTime.add(Calendar.HOUR, 1); endTime.set(Calendar.MONTH, newMonth - 1); WeekViewEvent event = new WeekViewEvent(1, getEventTitle(startTime), startTime, endTime); event.setColor(getResources().getColor(R.color.android_view_color_01)); events.add(event); startTime = Calendar.getInstance(); startTime.set(Calendar.HOUR_OF_DAY, 3); startTime.set(Calendar.MINUTE, 30); startTime.set(Calendar.MONTH, newMonth - 1); startTime.set(Calendar.YEAR, newYear); endTime = (Calendar) startTime.clone(); endTime.set(Calendar.HOUR_OF_DAY, 4); endTime.set(Calendar.MINUTE, 30); endTime.set(Calendar.MONTH, newMonth - 1); event = new WeekViewEvent(10, getEventTitle(startTime), startTime, endTime); event.setColor(getResources().getColor(R.color.android_view_color_02)); events.add(event); startTime = Calendar.getInstance(); startTime.set(Calendar.HOUR_OF_DAY, 4); startTime.set(Calendar.MINUTE, 20); startTime.set(Calendar.MONTH, newMonth - 1); startTime.set(Calendar.YEAR, newYear); endTime = (Calendar) startTime.clone(); endTime.set(Calendar.HOUR_OF_DAY, 5); endTime.set(Calendar.MINUTE, 0); event = new WeekViewEvent(10, getEventTitle(startTime), startTime, endTime); event.setColor(getResources().getColor(R.color.android_view_color_03)); events.add(event); startTime = Calendar.getInstance(); startTime.set(Calendar.HOUR_OF_DAY, 5); startTime.set(Calendar.MINUTE, 30); startTime.set(Calendar.MONTH, newMonth - 1); startTime.set(Calendar.YEAR, newYear); endTime = (Calendar) startTime.clone(); endTime.add(Calendar.HOUR_OF_DAY, 2); endTime.set(Calendar.MONTH, newMonth - 1); event = new WeekViewEvent(2, getEventTitle(startTime), startTime, endTime); event.setColor(getResources().getColor(R.color.android_view_color_02)); events.add(event); startTime = Calendar.getInstance(); startTime.set(Calendar.HOUR_OF_DAY, 5); startTime.set(Calendar.MINUTE, 0); startTime.set(Calendar.MONTH, newMonth - 1); startTime.set(Calendar.YEAR, newYear); startTime.add(Calendar.DATE, 1); endTime = (Calendar) startTime.clone(); endTime.add(Calendar.HOUR_OF_DAY, 3); endTime.set(Calendar.MONTH, newMonth - 1); event = new WeekViewEvent(3, getEventTitle(startTime), startTime, endTime); event.setColor(getResources().getColor(R.color.android_view_color_03)); events.add(event); startTime = Calendar.getInstance(); startTime.set(Calendar.DAY_OF_MONTH, 15); startTime.set(Calendar.HOUR_OF_DAY, 3); startTime.set(Calendar.MINUTE, 0); startTime.set(Calendar.MONTH, newMonth - 1); startTime.set(Calendar.YEAR, newYear); endTime = (Calendar) startTime.clone(); endTime.add(Calendar.HOUR_OF_DAY, 3); event = new WeekViewEvent(4, getEventTitle(startTime), startTime, endTime); event.setColor(getResources().getColor(R.color.android_view_color_04)); events.add(event); startTime = Calendar.getInstance(); startTime.set(Calendar.DAY_OF_MONTH, 1); startTime.set(Calendar.HOUR_OF_DAY, 3); startTime.set(Calendar.MINUTE, 0); startTime.set(Calendar.MONTH, newMonth - 1); startTime.set(Calendar.YEAR, newYear); endTime = (Calendar) startTime.clone(); endTime.add(Calendar.HOUR_OF_DAY, 3); event = new WeekViewEvent(5, getEventTitle(startTime), startTime, endTime); event.setColor(getResources().getColor(R.color.android_view_color_01)); events.add(event); startTime = Calendar.getInstance(); startTime.set(Calendar.DAY_OF_MONTH, startTime.getActualMaximum(Calendar.DAY_OF_MONTH)); startTime.set(Calendar.HOUR_OF_DAY, 15); startTime.set(Calendar.MINUTE, 0); startTime.set(Calendar.MONTH, newMonth - 1); startTime.set(Calendar.YEAR, newYear); endTime = (Calendar) startTime.clone(); endTime.add(Calendar.HOUR_OF_DAY, 3); event = new WeekViewEvent(5, getEventTitle(startTime), startTime, endTime); event.setColor(getResources().getColor(R.color.android_view_color_02)); events.add(event); return events; } private String getEventTitle(Calendar time) { return String.format("Event of %02d:%02d %s/%d", time.get(Calendar.HOUR_OF_DAY), time.get(Calendar.MINUTE), time.get(Calendar.MONTH) + 1, time.get(Calendar.DAY_OF_MONTH)); } @Override public void onEventClick(WeekViewEvent event, RectF eventRect) { Toast.makeText(AndroidWeekViewActivity.this, "Clicked " + event.getName(), Toast.LENGTH_SHORT).show(); } @Override public void onEventLongPress(WeekViewEvent event, RectF eventRect) { Toast.makeText(AndroidWeekViewActivity.this, "Long pressed event: " + event.getName(), Toast.LENGTH_SHORT).show(); } }