From 19c8b6524272d76521efc33c657de7697eab7c5e Mon Sep 17 00:00:00 2001 From: Dhaval Date: Mon, 22 Aug 2016 12:35:22 +0530 Subject: [PATCH 1/3] Bug Solved. --- build.gradle | 4 +- .../com/riontech/calendar/CustomCalendar.java | 9 +- .../calendar/fragment/CalendarFragment.java | 42 +++++++- .../riontech/calendar/utils/EventUtils.java | 101 ++++++++++++++++++ gradle/wrapper/gradle-wrapper.properties | 4 +- .../com/riontech/sample/MainActivity.java | 10 +- sample/src/main/res/layout/activity_main.xml | 2 +- sample/src/main/res/values/strings.xml | 1 + 8 files changed, 160 insertions(+), 13 deletions(-) create mode 100644 calendar/src/main/java/com/riontech/calendar/utils/EventUtils.java 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/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..5abf0f9 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,7 +213,44 @@ private void setData(CalendarResponse calendarResponse) { mRlHeader.setVisibility(View.VISIBLE); mGridview.setVisibility(View.VISIBLE); + 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); + boolean isAdded = false; + for (Event event : monthDataList) { + if (mItemValue.equalsIgnoreCase(event.getDate())) { + CalendarDecoratorDao eventDao = new CalendarDecoratorDao( + event.getDate(), + Integer.parseInt(event.getCount())); + mEventList.add(eventDao); + isAdded = true; + } + } + + if (!isAdded) { + CalendarDecoratorDao eventDao = new CalendarDecoratorDao(mItemValue, 0); + mEventList.add(eventDao); + } + } + mCalendarGridviewAdapter.notifyDataSetChanged(); + + if (!flagMaxMin) { + flagMaxMin = true; + } + } + + /*if (calendarResponse.getMonthdata() != null) { ArrayList monthDataList = calendarResponse.getMonthdata(); int m = 0; @@ -243,7 +281,7 @@ private void setData(CalendarResponse calendarResponse) { if (!flagMaxMin) { flagMaxMin = true; } - } + }*/ } /** 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... From 022258d26bc3ee2c49c52725e50d0489afcbb770 Mon Sep 17 00:00:00 2001 From: Dhaval Date: Mon, 22 Aug 2016 12:38:36 +0530 Subject: [PATCH 2/3] Version Updated. --- calendar/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 { From b494661508bef736253fc65b147406e9595767c0 Mon Sep 17 00:00:00 2001 From: Dhaval Date: Sat, 10 Sep 2016 12:47:37 +0530 Subject: [PATCH 3/3] Some Minor bug Solved. --- .../calendar/fragment/CalendarFragment.java | 33 ------------------- 1 file changed, 33 deletions(-) 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 5abf0f9..9c4eb6a 100644 --- a/calendar/src/main/java/com/riontech/calendar/fragment/CalendarFragment.java +++ b/calendar/src/main/java/com/riontech/calendar/fragment/CalendarFragment.java @@ -249,39 +249,6 @@ private void setData(CalendarResponse calendarResponse) { flagMaxMin = true; } } - - /*if (calendarResponse.getMonthdata() != null) { - - ArrayList monthDataList = calendarResponse.getMonthdata(); - int m = 0; - - 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())) { - 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); - mEventList.add(eventDao); - } - } else { - CalendarDecoratorDao eventDao = new CalendarDecoratorDao(mItemValue, 0); - mEventList.add(eventDao); - } - } - - mCalendarGridviewAdapter.notifyDataSetChanged(); - - if (!flagMaxMin) { - flagMaxMin = true; - } - }*/ } /**