diff --git a/build.gradle b/build.gradle index 4d25013..b1f2e74 100644 --- a/build.gradle +++ b/build.gradle @@ -5,9 +5,9 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.2' + classpath 'com.android.tools.build:gradle:2.1.3' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4' - classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' + classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/calendar/build.gradle b/calendar/build.gradle index 94312ef..a551f9c 100644 --- a/calendar/build.gradle +++ b/calendar/build.gradle @@ -7,8 +7,8 @@ android { defaultConfig { minSdkVersion 15 targetSdkVersion 23 - versionCode 1 - versionName "1.0" + versionCode 2 + versionName "1.1" } buildTypes { release { diff --git a/calendar/src/main/java/com/riontech/calendar/CustomCalendar.java b/calendar/src/main/java/com/riontech/calendar/CustomCalendar.java index f558be5..89291e9 100644 --- a/calendar/src/main/java/com/riontech/calendar/CustomCalendar.java +++ b/calendar/src/main/java/com/riontech/calendar/CustomCalendar.java @@ -24,7 +24,6 @@ import com.riontech.calendar.dao.EventData; import com.riontech.calendar.fragment.CalendarFragment; import com.riontech.calendar.utils.CalendarUtils; -import com.riontech.calendar.R; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -52,6 +51,7 @@ public class CustomCalendar extends LinearLayout { private ImageView mImgFailed; private ArrayList mEventList; private boolean isValidAttr = true; + private Calendar mCalendar; private Context mContext; private AttributeSet mAttributeSet = null; @@ -311,4 +311,11 @@ protected void onConfigurationChanged(Configuration newConfig) { Log.d(TAG, "screenOrientation: portrait"); } } + + public void refreshCalendar(){ + mCalendar = Calendar.getInstance(); + ((CalendarFragment) mAdapter.getRegisteredFragment(mViewPager.getCurrentItem())).refreshCalendar(); + ((CalendarFragment) mAdapter.getRegisteredFragment(mViewPager.getCurrentItem())) + .fetchEvents(CalendarUtils.getCalendarDBFormat().format(mCalendar.getTime())); + } } diff --git a/calendar/src/main/java/com/riontech/calendar/fragment/CalendarFragment.java b/calendar/src/main/java/com/riontech/calendar/fragment/CalendarFragment.java index 86fe984..9c4eb6a 100644 --- a/calendar/src/main/java/com/riontech/calendar/fragment/CalendarFragment.java +++ b/calendar/src/main/java/com/riontech/calendar/fragment/CalendarFragment.java @@ -13,6 +13,7 @@ import android.widget.TextView; import com.riontech.calendar.CustomCalendar; +import com.riontech.calendar.R; import com.riontech.calendar.Singleton; import com.riontech.calendar.adapter.CalendarGridviewAdapter; import com.riontech.calendar.dao.CalendarDecoratorDao; @@ -20,7 +21,7 @@ import com.riontech.calendar.dao.Event; import com.riontech.calendar.dao.EventData; import com.riontech.calendar.utils.CalendarUtils; -import com.riontech.calendar.R; +import com.riontech.calendar.utils.EventUtils; import java.text.DateFormat; import java.util.ArrayList; @@ -212,32 +213,36 @@ private void setData(CalendarResponse calendarResponse) { mRlHeader.setVisibility(View.VISIBLE); mGridview.setVisibility(View.VISIBLE); - if (calendarResponse.getMonthdata() != null) { - - ArrayList monthDataList = calendarResponse.getMonthdata(); - int m = 0; + if (EventUtils.getEventMap() == null || EventUtils.getEventMap().size() == 0) + EventUtils.generateMonthsEvents(calendarResponse.getMonthdata(), month.get(Calendar.YEAR)); + if (calendarResponse.getMonthdata() != null) { + ArrayList monthDataList; + if (EventUtils.getMonthEvent(EventUtils.getMonthYearString(month.getTime())) == null) { + monthDataList = calendarResponse.getMonthdata(); + } else { + monthDataList = EventUtils.getMonthEvent(EventUtils.getMonthYearString(month.getTime())); + } + // n = 0; n < 35; n++ for (int n = 0; n < mMonthLength; n++) { String mItemValue = mDateFormat.format(mPMonthMaxSet.getTime()); mPMonthMaxSet.add(GregorianCalendar.DATE, 1); - - if (m < monthDataList.size()) { - if (mItemValue.equalsIgnoreCase(monthDataList.get(m).getDate())) { + boolean isAdded = false; + for (Event event : monthDataList) { + if (mItemValue.equalsIgnoreCase(event.getDate())) { CalendarDecoratorDao eventDao = new CalendarDecoratorDao( - monthDataList.get(m).getDate(), - Integer.parseInt(monthDataList.get(m).getCount())); - mEventList.add(eventDao); - m++; - } else { - CalendarDecoratorDao eventDao = new CalendarDecoratorDao(mItemValue, 0); + event.getDate(), + Integer.parseInt(event.getCount())); mEventList.add(eventDao); + isAdded = true; } - } else { + } + + if (!isAdded) { CalendarDecoratorDao eventDao = new CalendarDecoratorDao(mItemValue, 0); mEventList.add(eventDao); } } - mCalendarGridviewAdapter.notifyDataSetChanged(); if (!flagMaxMin) { diff --git a/calendar/src/main/java/com/riontech/calendar/utils/EventUtils.java b/calendar/src/main/java/com/riontech/calendar/utils/EventUtils.java new file mode 100644 index 0000000..fc98eb3 --- /dev/null +++ b/calendar/src/main/java/com/riontech/calendar/utils/EventUtils.java @@ -0,0 +1,101 @@ +package com.riontech.calendar.utils; + +import com.google.gson.Gson; +import com.riontech.calendar.dao.Event; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; + +/** + * Created by Dhaval Riontech on 18/8/16. + */ +public class EventUtils { + private static HashMap> eventMap; + private static String[] monthYearArray; + private static int currentYear; + + private static void generateMonthYearArray(int year) { + if (monthYearArray == null || currentYear != year) { + monthYearArray = new String[12]; + currentYear = year; + for (int i = 0; i < monthYearArray.length; i++) { + monthYearArray[i] = (i + 1) + "-" + year; + } + } + } + + public static void generateMonthsEvents(ArrayList events, int cYear) { +// if (eventMap == null || currentYear != cYear) { + currentYear = cYear; + eventMap = new HashMap<>(); + generateMonthYearArray(currentYear); + System.out.println("Event List=>"+new Gson().toJson(events)); + for (int i = 0; i < monthYearArray.length; i++) { + System.out.println("month-year " + monthYearArray[i]); + ArrayList monthEvents = new ArrayList<>(); + for (Event event : events) { + System.out.println("event date " + event.getDate()); + String monthYear = getMonthYearString(getDateFromString(event.getDate())); + System.out.println("event month-year" + monthYear); + if (monthYear.equalsIgnoreCase(monthYearArray[i])) { + System.out.println("month-year " + monthYear + " matched"); + monthEvents.add(event); + putEvent(monthYear, monthEvents); + } + } + } +// } + + System.out.println(new Gson().toJson(eventMap)); + } + + public static String getMonthYearString(Date date) { + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + return (cal.get(Calendar.MONTH) + 1)+ "-" + cal.get(Calendar.YEAR); + } + + public static Date getDateFromString(String date) { + try { + return CalendarUtils.getCalendarDBFormat().parse(date); + } catch (ParseException e) { + e.printStackTrace(); + return new Date(); + } + } + + public static boolean hasMonth(String monthYear) { + return eventMap.containsKey(monthYear); + } + + public static ArrayList getMonthEvent(String key) { + if (hasMonth(key)) { + return eventMap.get(key); + } + return null; + } + + public static void putEvent(String key, ArrayList events) { + eventMap.put(key, events); + } + +// public static int getDateDecoretorCount(String date){ +// Date currentDate = getDateFromString(date); +// String monthYear = getMonthYearString(currentDate); +// ArrayList events = getMonthEvent(monthYear); +// int counter = 0; +// if(events != null){ +// for (Event event : events) { +// if(date.equalsIgnoreCase(event.getDate())) +// } +// } +// return counter; +// } + + public static HashMap> getEventMap(){ + return eventMap; + } +} diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 122a0dc..41d364b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Dec 28 10:00:20 PST 2015 +#Mon Aug 22 11:12:55 IST 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip diff --git a/sample/src/main/java/com/riontech/sample/MainActivity.java b/sample/src/main/java/com/riontech/sample/MainActivity.java index 208989f..780df7b 100644 --- a/sample/src/main/java/com/riontech/sample/MainActivity.java +++ b/sample/src/main/java/com/riontech/sample/MainActivity.java @@ -1,7 +1,7 @@ package com.riontech.sample; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; import com.riontech.calendar.CustomCalendar; import com.riontech.calendar.dao.EventData; @@ -13,18 +13,18 @@ public class MainActivity extends AppCompatActivity { - private CustomCalendar customCalendar; + private CustomCalendar mCustomCalendar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - customCalendar = (CustomCalendar) findViewById(R.id.customCalendar); + mCustomCalendar = (CustomCalendar) findViewById(R.id.customCalendar); - String[] arr = {"2016-06-10", "2016-06-11", "2016-06-15", "2016-06-16", "2016-06-25"}; + String[] arr = {"2016-08-22", "2016-08-11", "2016-08-15", "2016-09-16", "2016-09-25"}; for (int i = 0; i < 5; i++) { int eventCount = 10; - customCalendar.addAnEvent(arr[i], eventCount, getEventDataList(eventCount)); + mCustomCalendar.addAnEvent(arr[i], eventCount, getEventDataList(eventCount)); } } diff --git a/sample/src/main/res/layout/activity_main.xml b/sample/src/main/res/layout/activity_main.xml index d4591d7..cf887ef 100644 --- a/sample/src/main/res/layout/activity_main.xml +++ b/sample/src/main/res/layout/activity_main.xml @@ -10,7 +10,7 @@ android:id="@+id/customCalendar" android:layout_width="match_parent" android:layout_height="match_parent" - app:endMonth="07" + app:endMonth="12" app:endYear="2016" app:startMonth="01" app:startYear="2016" /> diff --git a/sample/src/main/res/values/strings.xml b/sample/src/main/res/values/strings.xml index 92c5aea..6377cf7 100644 --- a/sample/src/main/res/values/strings.xml +++ b/sample/src/main/res/values/strings.xml @@ -1,3 +1,4 @@ Custom Calendar Demo + Loading...