Skip to content

Commit

Permalink
Add offline view for calendar
Browse files Browse the repository at this point in the history
  • Loading branch information
wallforfry committed Jun 6, 2017
1 parent f898d17 commit 9873e26
Show file tree
Hide file tree
Showing 6 changed files with 202 additions and 37 deletions.
Binary file modified app/app-release.apk
Binary file not shown.
1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ dependencies {
compile 'com.android.support:cardview-v7:25.3.0'
compile 'com.miguelcatalan:materialsearchview:1.4.0'
compile 'com.lusfold.spinnerloading:library:1.0.0'
compile 'nl.qbusict:cupboard:2.2.0'
testCompile 'junit:junit:4.12'
}

Expand Down
62 changes: 62 additions & 0 deletions app/src/main/java/fr/esiee/bde/macao/Calendar/CalendarEvent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package fr.esiee.bde.macao.Calendar;

/**
* Created by Wallerand on 06/06/2017.
*/

public class CalendarEvent {
private int id;
private String title, startString,endString, name;

public CalendarEvent(){

}

public CalendarEvent(int id, String title, String startString, String endString, String name){
this.id = id;
this.title = title;
this.startString = startString;
this.endString = endString;
this.name = name;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getStartString() {
return startString;
}

public void setStartString(String startString) {
this.startString = startString;
}

public String getEndString() {
return endString;
}

public void setEndString(String endString) {
this.endString = endString;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
46 changes: 46 additions & 0 deletions app/src/main/java/fr/esiee/bde/macao/DataBaseHelper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package fr.esiee.bde.macao;

/**
* Created by Wallerand on 06/06/2017.
*/

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import fr.esiee.bde.macao.Calendar.CalendarEvent;

import static nl.qbusict.cupboard.CupboardFactory.cupboard;

public class DataBaseHelper extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "Macao.db";
private static final int DATABASE_VERSION = 1;

public DataBaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

static {
// register our models
cupboard().register(CalendarEvent.class);
}

@Override
public void onCreate(SQLiteDatabase db) {
// this will ensure that all tables are created
cupboard().withDatabase(db).createTables();
// add indexes and other database tweaks in this method if you want

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// this will upgrade tables, adding columns and new tables.
// Note that existing columns will not be converted
cupboard().withDatabase(db).upgradeTables();
// do migration work if you have an alteration to make to your schema here

}

}
119 changes: 82 additions & 37 deletions app/src/main/java/fr/esiee/bde/macao/Fragments/CalendarFragment.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package fr.esiee.bde.macao.Fragments;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.RectF;
import android.net.Uri;
import android.os.Bundle;
Expand Down Expand Up @@ -38,12 +40,14 @@
import java.util.TimeZone;

import cz.msebera.android.httpclient.Header;
import fr.esiee.bde.macao.Calendar.CalendarEvent;
import fr.esiee.bde.macao.HttpUtils;
import fr.esiee.bde.macao.Interfaces.OnFragmentInteractionListener;
import fr.esiee.bde.macao.MainActivity;
import fr.esiee.bde.macao.R;

import static android.graphics.Color.parseColor;
import static nl.qbusict.cupboard.CupboardFactory.cupboard;

/**
* A simple {@link Fragment} subclass.
Expand Down Expand Up @@ -139,9 +143,12 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
loader.setPaintMode(1);
loader.setCircleRadius(20);
loader.setItemCount(8);
loader.setVisibility(View.VISIBLE);
loader.setVisibility(View.INVISIBLE);

//getGroups();
retrieveEvents();
getGroups();

return view;
}

Expand Down Expand Up @@ -347,6 +354,14 @@ public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
mListener.makeSnackBar("Connectez vous d'abord sur le site");
loader.setVisibility(View.GONE);
}


@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
super.onFailure(statusCode, headers, throwable, errorResponse);
loader.setVisibility(View.GONE);
}
});
}
Expand All @@ -372,59 +387,89 @@ public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
// Pull out the first event on the public timeline
try {
events.clear();

cupboard().withDatabase(((MainActivity) getActivity()).getDatabase()).delete(CalendarEvent.class, null);
for(int i = 0; i < timeline.length(); i++) {
JSONObject obj = (JSONObject) timeline.get(i);
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.FRANCE);
dateformat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date start = dateformat.parse(obj.get("start").toString());
Date end = dateformat.parse(obj.get("end").toString());
String start = obj.get("start").toString();
String end = obj.get("end").toString();

String title = obj.get("name")+"\n"+obj.get("rooms")+"\n"+obj.get("prof")+"\n"+obj.get("unite");
String name = obj.get("name").toString();
WeekViewEvent event = createWeekViewEvent(i, title, start, end, name);
CalendarEvent calendarEvent = new CalendarEvent(i, title, start, end, name);

Log.d("Start", obj.get("start").toString()+ " "+start.getDate()+" "+ start.getMonth()+" "+ start.getYear() +" "+start.getHours()+" "+start.getMinutes());
Calendar startTime = Calendar.getInstance();
startTime.set(Calendar.DAY_OF_MONTH, start.getDate());
startTime.set(Calendar.HOUR_OF_DAY, start.getHours());
startTime.set(Calendar.MINUTE, start.getMinutes());
startTime.set(Calendar.MONTH, start.getMonth());
startTime.set(Calendar.YEAR, start.getYear()+1900);
Calendar endTime = (Calendar) startTime.clone();
endTime.set(Calendar.HOUR_OF_DAY, end.getHours());
endTime.set(Calendar.MINUTE, end.getMinutes()-1);
endTime.set(Calendar.MONTH, end.getMonth());
endTime.set(Calendar.YEAR, start.getYear()+1900);
WeekViewEvent event = new WeekViewEvent(i, title, startTime, endTime);
if(obj.get("name").toString().contains("CTRL")){
event.setColor(parseColor("#e74c3c"));
}
else if(obj.get("name").toString().contains("TD")){
event.setColor(parseColor("#27ae60"));
}
else if(obj.get("name").toString().contains("PERS")){
event.setColor(parseColor("#95a5a6"));
}
else if(obj.get("name").toString().contains("TP")){
event.setColor(parseColor("#27ae60"));
}
else {
event.setColor(parseColor("#35a9fb"));
}

events.add(event);
//events.add(event);
cupboard().withDatabase(((MainActivity) getActivity()).getDatabase()).put(calendarEvent);

}
} catch (JSONException | ParseException e) {
} catch (JSONException e) {
e.printStackTrace();
}
mWeekView.notifyDatasetChanged();
retrieveEvents();
mListener.makeSnackBar("Agenda à jour");
loader.setVisibility(View.GONE);
}
});
}

private void retrieveEvents(){
events.clear();
//CalendarEvent calendarEvent = cupboard().withDatabase(((MainActivity) getActivity()).getDatabase()).query(CalendarEvent.class).get();
Cursor cursor = cupboard().withDatabase(((MainActivity) this.getActivity()).getDatabase()).query(CalendarEvent.class).getCursor();
// or we can iterate all results
Iterable<CalendarEvent> itr = cupboard().withCursor(cursor).iterate(CalendarEvent.class);
for (CalendarEvent calendarEvent: itr) {
// do something with book
WeekViewEvent event = createWeekViewEvent(calendarEvent.getId(), calendarEvent.getTitle(), calendarEvent.getStartString(), calendarEvent.getEndString(), calendarEvent.getName());
events.add(event);
}
mWeekView.notifyDatasetChanged();
}

private WeekViewEvent createWeekViewEvent(int id, String title, String startString, String endString, String name){
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.FRANCE);
dateformat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date start = null;
Date end = null;
try {
start = dateformat.parse(startString);
end = dateformat.parse(endString);

Calendar startTime = Calendar.getInstance();
startTime.set(Calendar.DAY_OF_MONTH, start.getDate());
startTime.set(Calendar.HOUR_OF_DAY, start.getHours());
startTime.set(Calendar.MINUTE, start.getMinutes());
startTime.set(Calendar.MONTH, start.getMonth());
startTime.set(Calendar.YEAR, start.getYear()+1900);
Calendar endTime = (Calendar) startTime.clone();
endTime.set(Calendar.HOUR_OF_DAY, end.getHours());
endTime.set(Calendar.MINUTE, end.getMinutes()-1);
endTime.set(Calendar.MONTH, end.getMonth());
endTime.set(Calendar.YEAR, start.getYear()+1900);
WeekViewEvent event = new WeekViewEvent(id, title, startTime, endTime);
if(name.contains("CTRL")){
event.setColor(parseColor("#e74c3c"));
}
else if(name.contains("TD")){
event.setColor(parseColor("#27ae60"));
}
else if(name.contains("PERS")){
event.setColor(parseColor("#95a5a6"));
}
else if(name.contains("TP")){
event.setColor(parseColor("#27ae60"));
}
else {
event.setColor(parseColor("#35a9fb"));
}
return event;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
private boolean eventMatches(WeekViewEvent event, int year, int month) {
//noinspection WrongConstant
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);
Expand Down
11 changes: 11 additions & 0 deletions app/src/main/java/fr/esiee/bde/macao/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import android.accounts.OperationCanceledException;
import android.app.ProgressDialog;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
Expand Down Expand Up @@ -79,10 +80,16 @@ public class MainActivity extends AppCompatActivity

private Bundle savedInstanceState;

private SQLiteDatabase database;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

DataBaseHelper dbHelper= new DataBaseHelper(this);
database = dbHelper.getWritableDatabase();

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

Expand Down Expand Up @@ -486,5 +493,9 @@ public String getUsername() {
public String getIdToken() {
return idToken;
}

public SQLiteDatabase getDatabase(){
return this.database;
}
}

0 comments on commit 9873e26

Please sign in to comment.