Skip to content

Commit

Permalink
Add support for asynchronous events
Browse files Browse the repository at this point in the history
  • Loading branch information
alamkanak committed Jan 3, 2016
1 parent 3f6d4f0 commit a1a9aa4
Showing 5 changed files with 36 additions and 8 deletions.
3 changes: 2 additions & 1 deletion sample/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -2,6 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.alamkanak.weekview.sample" >

<uses-permission android:name="android.permission.INTERNET" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
@@ -12,7 +14,6 @@
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@
import com.alamkanak.weekview.sample.apiclient.MyJsonService;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import retrofit.Callback;
@@ -27,15 +28,28 @@ public List<? extends WeekViewEvent> onMonthChange(int newYear, int newMonth) {
.build();
MyJsonService service = retrofit.create(MyJsonService.class);
service.listEvents(this);
calledNetwork = true;
}
else {

List<WeekViewEvent> matchedEvents = new ArrayList<WeekViewEvent>();
for (WeekViewEvent event : events) {
if (eventMatches(event, newYear, newMonth)) {
matchedEvents.add(event);
}
}
return null;
return matchedEvents;
}

private boolean eventMatches(WeekViewEvent event, int year, int month) {
return (event.getStartTime().get(Calendar.YEAR) == year && event.getStartTime().get(Calendar.MONTH) == month - 1) || (event.getEndTime().get(Calendar.YEAR) == year && event.getEndTime().get(Calendar.MONTH) == month - 1);
}

@Override
public void success(List<Event> events, Response response) {
this.events.clear();
for (Event event : events) {
this.events.add(event.toWeekViewEvent());
}
getWeekView().notifyDatasetChanged();
}

Original file line number Diff line number Diff line change
@@ -2,23 +2,31 @@

import android.annotation.SuppressLint;
import android.graphics.Color;
import android.util.Log;

import com.alamkanak.weekview.WeekViewEvent;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
* Created by alam on 1/3/16.
* Created by Alam Kanak on 1/3/16.
*/
public class Event {

@Expose @SerializedName("name")
private String mName;
@Expose @SerializedName("dayOfMonth")
private int mDayOfMonth;
@Expose @SerializedName("startTime")
private String mStartTime;
@Expose @SerializedName("endTime")
private String mEndTime;
@Expose @SerializedName("color")
private String mColor;

public String getName() {
@@ -88,16 +96,20 @@ public WeekViewEvent toWeekViewEvent(){
startTime.set(Calendar.DAY_OF_MONTH, getDayOfMonth());
Calendar endTime = (Calendar) startTime.clone();
endTime.setTimeInMillis(end.getTime());
startTime.set(Calendar.YEAR, startTime.get(Calendar.YEAR));
startTime.set(Calendar.MONTH, startTime.get(Calendar.MONTH));
startTime.set(Calendar.DAY_OF_MONTH, startTime.get(Calendar.DAY_OF_MONTH));
endTime.set(Calendar.YEAR, startTime.get(Calendar.YEAR));
endTime.set(Calendar.MONTH, startTime.get(Calendar.MONTH));
endTime.set(Calendar.DAY_OF_MONTH, startTime.get(Calendar.DAY_OF_MONTH));

// Create an week view event.
WeekViewEvent weekViewEvent = new WeekViewEvent();
weekViewEvent.setName(getName());
weekViewEvent.setStartTime(startTime);
weekViewEvent.setEndTime(endTime);
weekViewEvent.setColor(Color.parseColor(getColor()));

Log.d("EVENT", "Start time: " + String.format("%d/%d/%d %d:%d", startTime.get(Calendar.DAY_OF_MONTH), startTime.get(Calendar.MONTH) + 1, startTime.get(Calendar.YEAR), startTime.get(Calendar.HOUR_OF_DAY), startTime.get(Calendar.MINUTE)));
Log.d("EVENT", "End time: " + String.format("%d/%d/%d %d:%d", endTime.get(Calendar.DAY_OF_MONTH), endTime.get(Calendar.MONTH) + 1, endTime.get(Calendar.YEAR), endTime.get(Calendar.HOUR_OF_DAY), endTime.get(Calendar.MINUTE)));

return weekViewEvent;
}
}
2 changes: 1 addition & 1 deletion sample/src/main/res/layout/activity_base.xml
Original file line number Diff line number Diff line change
@@ -22,6 +22,6 @@
app:dayBackgroundColor="#05000000"
app:todayBackgroundColor="#1848adff"
app:headerColumnBackground="#ffffffff"
app:todayHeaderTextColor="@color/accent"/>
app:todayHeaderTextColor="@color/accent" />

</RelativeLayout>
1 change: 1 addition & 0 deletions sample/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -7,4 +7,5 @@
<string name="action_week_view">Week view</string>
<string name="title_activity_basic">Basic Example</string>
<string name="title_activity_asynchronous">Asynchronous Events</string>
<string name="async_error">Could not download events from the internet</string>
</resources>

0 comments on commit a1a9aa4

Please sign in to comment.