From 7a0213b62b3e4553eb54b80e35a46ba0bb9b3b54 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Fri, 30 Nov 2018 11:17:42 +0300 Subject: [PATCH 01/23] Supported api 16. --- cosmocalendar/build.gradle | 2 +- .../cosmocalendar/utils/ViewIDGenerator.java | 34 +++++++++++++++++++ .../cosmocalendar/view/CalendarView.java | 9 ++--- sample/build.gradle | 2 +- 4 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/ViewIDGenerator.java diff --git a/cosmocalendar/build.gradle b/cosmocalendar/build.gradle index f5fdb9c..888f86c 100644 --- a/cosmocalendar/build.gradle +++ b/cosmocalendar/build.gradle @@ -29,7 +29,7 @@ android { buildToolsVersion "25.0.3" defaultConfig { - minSdkVersion 17 + minSdkVersion 16 targetSdkVersion 25 versionCode 5 versionName "1.0.4" diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/ViewIDGenerator.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/ViewIDGenerator.java new file mode 100644 index 0000000..8aaab79 --- /dev/null +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/ViewIDGenerator.java @@ -0,0 +1,34 @@ +package com.applikeysolutions.cosmocalendar.utils; + +import android.annotation.SuppressLint; +import android.os.Build; +import android.view.View; + +import java.util.concurrent.atomic.AtomicInteger; + +/** + * Created by Mustafa Bayram on 30.11.2018. + */ +public class ViewIDGenerator { + private static final AtomicInteger sNextGeneratedId = new AtomicInteger(1); + + @SuppressLint("NewApi") + public static int generateViewId() { + + if (Build.VERSION.SDK_INT < 17) { + for (; ; ) { + final int result = sNextGeneratedId.get(); + // aapt-generated IDs have the high byte nonzero; clamp to the range under that. + int newValue = result + 1; + if (newValue > 0x00FFFFFF) + newValue = 1; // Roll over to 1, not 0. + if (sNextGeneratedId.compareAndSet(result, newValue)) { + return result; + } + } + } else { + return View.generateViewId(); + } + + } +} diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java index 8d224b7..8e77c80 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java @@ -50,6 +50,7 @@ import com.applikeysolutions.cosmocalendar.settings.selection.SelectionInterface; import com.applikeysolutions.cosmocalendar.utils.CalendarUtils; import com.applikeysolutions.cosmocalendar.utils.SelectionType; +import com.applikeysolutions.cosmocalendar.utils.ViewIDGenerator; import com.applikeysolutions.cosmocalendar.utils.WeekDay; import com.applikeysolutions.cosmocalendar.utils.snap.GravitySnapHelper; import com.applikeysolutions.cosmocalendar.view.customviews.CircleAnimationTextView; @@ -268,7 +269,7 @@ private void createDaysOfWeekTitle() { boolean isTitleAlreadyAdded = llDaysOfWeekTitles != null; if (!isTitleAlreadyAdded) { llDaysOfWeekTitles = new LinearLayout(getContext()); - llDaysOfWeekTitles.setId(View.generateViewId()); + llDaysOfWeekTitles.setId(ViewIDGenerator.generateViewId()); llDaysOfWeekTitles.setOrientation(LinearLayout.HORIZONTAL); llDaysOfWeekTitles.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); } else { @@ -300,7 +301,7 @@ private void createDaysOfWeekTitle() { private void createBottomSelectionBar() { flBottomSelectionBar = new FrameLayout(getContext()); // flBottomSelectionBar.setLayoutTransition(new LayoutTransition()); - flBottomSelectionBar.setId(View.generateViewId()); + flBottomSelectionBar.setId(ViewIDGenerator.generateViewId()); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.BELOW, rvMonths.getId()); flBottomSelectionBar.setLayoutParams(params); @@ -318,7 +319,7 @@ private void createBottomSelectionBar() { */ private void createMultipleSelectionBarRecycler() { rvMultipleSelectedList = new RecyclerView(getContext()); - rvMultipleSelectedList.setId(View.generateViewId()); + rvMultipleSelectedList.setId(ViewIDGenerator.generateViewId()); rvMultipleSelectedList.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); rvMultipleSelectedList.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false)); multipleSelectionBarAdapter = new MultipleSelectionBarAdapter(this, this); @@ -381,7 +382,7 @@ public void update() { private void createRecyclerView() { rvMonths = new SlowdownRecyclerView(getContext()); - rvMonths.setId(View.generateViewId()); + rvMonths.setId(ViewIDGenerator.generateViewId()); rvMonths.setHasFixedSize(true); rvMonths.setNestedScrollingEnabled(false); ((SimpleItemAnimator) rvMonths.getItemAnimator()).setSupportsChangeAnimations(false); diff --git a/sample/build.gradle b/sample/build.gradle index 203182b..8358c68 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -5,7 +5,7 @@ android { buildToolsVersion "25.0.3" defaultConfig { applicationId "com.applikeysolutions.cosmocalendar" - minSdkVersion 17 + minSdkVersion 16 targetSdkVersion 25 versionCode 1 versionName "1.0" From 366eb14534112c69066e132c69c1472995a18c08 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Fri, 30 Nov 2018 14:14:10 +0300 Subject: [PATCH 02/23] Version updated. --- cosmocalendar/build.gradle | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cosmocalendar/build.gradle b/cosmocalendar/build.gradle index 888f86c..41148d8 100644 --- a/cosmocalendar/build.gradle +++ b/cosmocalendar/build.gradle @@ -1,5 +1,7 @@ apply plugin: 'com.android.library' +apply plugin: 'com.github.dcendents.android-maven' +group = 'com.github.mustafabayram' ext { bintrayRepo = 'maven' bintrayName = 'cosmocalendar' @@ -13,7 +15,7 @@ ext { siteUrl = 'https://github.com/AppliKeySolutions/CosmoCalendar' gitUrl = 'https://github.com/AppliKeySolutions/CosmoCalendar.git' - libraryVersion = '1.0.4' + libraryVersion = '1.0.5' developerId = 'devilbrain666' developerName = 'Ostapenko Yura' @@ -32,7 +34,7 @@ android { minSdkVersion 16 targetSdkVersion 25 versionCode 5 - versionName "1.0.4" + versionName "1.0.5" } buildTypes { release { From b48d96e6683b1e1fa886e6dc13fd2802ae0e2386 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Fri, 30 Nov 2018 14:15:43 +0300 Subject: [PATCH 03/23] README updated. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 67e156b..9b5c1ae 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Made by [Applikey Solutions](https://applikeysolutions.com) # Usage ```xml - compile 'com.github.applikeysolutions:cosmocalendar:1.0.4' + compile 'com.github.applikeysolutions:cosmocalendar:1.0.5' ``` # Customization From f80b111a50fdb9acf5840c9a04013e4231748fe8 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Fri, 30 Nov 2018 14:16:07 +0300 Subject: [PATCH 04/23] README updated. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b5c1ae..5bafc2e 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Made by [Applikey Solutions](https://applikeysolutions.com) # Usage ```xml - compile 'com.github.applikeysolutions:cosmocalendar:1.0.5' + compile 'com.github.mustafabayram:cosmocalendar:1.0.5' ``` # Customization From 18bddd86f6bc3fd84d1e15d3dfcdcbe4f9e6fb5a Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Fri, 30 Nov 2018 14:25:49 +0300 Subject: [PATCH 05/23] README updated. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5bafc2e..83a8088 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # CosmoCalendar [![GitHub license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/AppliKeySolutions/CosmoCalendar/blob/master/LICENSE) -Made by [Applikey Solutions](https://applikeysolutions.com) +Made by [Applikey Solutions](https://applikeysolutions.com) and updated by Mustafa Bayram. ![](pictures/cosmo-calendar.png) @@ -23,7 +23,7 @@ Made by [Applikey Solutions](https://applikeysolutions.com) # Usage ```xml - compile 'com.github.mustafabayram:cosmocalendar:1.0.5' + compile 'com.github.mustafabayram:CosmoCalendar:v1.0.5' ``` # Customization From d48e6acf242d1f2eeeda9634ae8903036c6367df Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Fri, 30 Nov 2018 17:13:50 +0300 Subject: [PATCH 06/23] Month name ui updated. Custom text appearance property added into month name, week day name and day number textViews. --- .../adapter/viewholder/DayHolder.java | 20 ++++---- .../adapter/viewholder/DayOfWeekHolder.java | 2 + .../adapter/viewholder/MonthHolder.java | 6 ++- .../adapter/viewholder/OtherDayHolder.java | 2 + .../cosmocalendar/dialog/CalendarDialog.java | 30 +++++++++++ .../cosmocalendar/model/Month.java | 2 +- .../settings/SettingsManager.java | 30 +++++++++++ .../appearance/AppearanceInterface.java | 17 +++++++ .../settings/appearance/AppearanceModel.java | 39 ++++++++++++++ .../cosmocalendar/view/CalendarView.java | 51 ++++++++++++++++--- .../src/main/res/layout/view_month.xml | 11 ++-- cosmocalendar/src/main/res/values/dimen.xml | 4 +- 12 files changed, 190 insertions(+), 24 deletions(-) diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java index 4b5399d..ad0afeb 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java @@ -1,6 +1,7 @@ package com.applikeysolutions.cosmocalendar.adapter.viewholder; import android.content.res.Resources; +import android.support.v4.widget.TextViewCompat; import android.view.View; import com.applikeysolutions.cosmocalendar.settings.appearance.ConnectedDayIconPosition; @@ -26,6 +27,7 @@ public DayHolder(View itemView, CalendarView calendarView) { public void bind(Day day, BaseSelectionManager selectionManager) { this.selectionManager = selectionManager; ctvDay.setText(String.valueOf(day.getDayNumber())); + TextViewCompat.setTextAppearance(ctvDay, calendarView.getDayTextAppearance()); boolean isSelected = selectionManager.isDaySelected(day); if (isSelected && !day.isDisabled()) { @@ -38,19 +40,19 @@ public void bind(Day day, BaseSelectionManager selectionManager) { addCurrentDayIcon(isSelected); } - if(day.isDisabled()){ + if (day.isDisabled()) { ctvDay.setTextColor(calendarView.getDisabledDayTextColor()); } } - private void addCurrentDayIcon(boolean isSelected){ + private void addCurrentDayIcon(boolean isSelected) { ctvDay.setCompoundDrawablePadding(getPadding(getCurrentDayIconHeight(isSelected)) * -1); ctvDay.setCompoundDrawablesWithIntrinsicBounds(0, isSelected ? calendarView.getCurrentDaySelectedIconRes() : calendarView.getCurrentDayIconRes(), 0, 0); } - private int getCurrentDayIconHeight(boolean isSelected){ + private int getCurrentDayIconHeight(boolean isSelected) { if (isSelected) { return CalendarUtils.getIconHeight(calendarView.getContext().getResources(), calendarView.getCurrentDaySelectedIconRes()); } else { @@ -58,7 +60,7 @@ private int getCurrentDayIconHeight(boolean isSelected){ } } - private int getConnectedDayIconHeight(boolean isSelected){ + private int getConnectedDayIconHeight(boolean isSelected) { if (isSelected) { return CalendarUtils.getIconHeight(calendarView.getContext().getResources(), calendarView.getConnectedDaySelectedIconRes()); } else { @@ -68,7 +70,7 @@ private int getConnectedDayIconHeight(boolean isSelected){ private void select(Day day) { if (day.isFromConnectedCalendar()) { - if(day.isDisabled()){ + if (day.isDisabled()) { ctvDay.setTextColor(day.getConnectedDaysDisabledTextColor()); } else { ctvDay.setTextColor(day.getConnectedDaysSelectedTextColor()); @@ -88,10 +90,10 @@ private void select(Day day) { animateDay(state, day); } - private void addConnectedDayIcon(boolean isSelected){ + private void addConnectedDayIcon(boolean isSelected) { ctvDay.setCompoundDrawablePadding(getPadding(getConnectedDayIconHeight(isSelected)) * -1); - switch (calendarView.getConnectedDayIconPosition()){ + switch (calendarView.getConnectedDayIconPosition()) { case ConnectedDayIconPosition.TOP: ctvDay.setCompoundDrawablesWithIntrinsicBounds(0, isSelected ? calendarView.getConnectedDaySelectedIconRes() @@ -161,7 +163,7 @@ private void animateDay(SelectionState state, Day day) { private void unselect(Day day) { int textColor; if (day.isFromConnectedCalendar()) { - if(day.isDisabled()){ + if (day.isDisabled()) { textColor = day.getConnectedDaysDisabledTextColor(); } else { textColor = day.getConnectedDaysTextColor(); @@ -179,7 +181,7 @@ private void unselect(Day day) { ctvDay.clearView(); } - private int getPadding(int iconHeight){ + private int getPadding(int iconHeight) { return (int) (iconHeight * Resources.getSystem().getDisplayMetrics().density); } } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayOfWeekHolder.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayOfWeekHolder.java index 6d63934..5ad42d7 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayOfWeekHolder.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayOfWeekHolder.java @@ -1,5 +1,6 @@ package com.applikeysolutions.cosmocalendar.adapter.viewholder; +import android.support.v4.widget.TextViewCompat; import android.view.View; import android.widget.TextView; @@ -22,6 +23,7 @@ public DayOfWeekHolder(View itemView, CalendarView calendarView) { } public void bind(Day day) { + TextViewCompat.setTextAppearance(tvDay, calendarView.getDayTextAppearance()); tvDay.setText(mDayOfWeekFormatter.format(day.getCalendar().getTime())); tvDay.setTextColor(calendarView.getWeekDayTitleTextColor()); } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/MonthHolder.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/MonthHolder.java index 0a4074c..e579319 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/MonthHolder.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/MonthHolder.java @@ -1,5 +1,6 @@ package com.applikeysolutions.cosmocalendar.adapter.viewholder; +import android.support.v4.widget.TextViewCompat; import android.support.v7.widget.OrientationHelper; import android.support.v7.widget.RecyclerView; import android.view.View; @@ -38,9 +39,10 @@ public void setDayAdapter(DaysAdapter adapter) { public void bind(Month month) { tvMonthName.setText(month.getMonthName()); tvMonthName.setTextColor(appearanceModel.getMonthTextColor()); + TextViewCompat.setTextAppearance(tvMonthName, appearanceModel.getMonthTextAppearance()); - viewLeftLine.setVisibility(appearanceModel.getCalendarOrientation() == OrientationHelper.HORIZONTAL ? View.INVISIBLE : View.VISIBLE); - viewRightLine.setVisibility(appearanceModel.getCalendarOrientation() == OrientationHelper.HORIZONTAL ? View.INVISIBLE : View.VISIBLE); + viewLeftLine.setVisibility(appearanceModel.getCalendarOrientation() == OrientationHelper.HORIZONTAL ? View.INVISIBLE : View.GONE); + viewRightLine.setVisibility(appearanceModel.getCalendarOrientation() == OrientationHelper.HORIZONTAL ? View.INVISIBLE : View.GONE); llMonthHeader.setBackgroundResource(appearanceModel.getCalendarOrientation() == OrientationHelper.HORIZONTAL ? R.drawable.border_top_bottom : 0); monthView.initAdapter(month); diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/OtherDayHolder.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/OtherDayHolder.java index 9eebf85..f74f385 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/OtherDayHolder.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/OtherDayHolder.java @@ -1,5 +1,6 @@ package com.applikeysolutions.cosmocalendar.adapter.viewholder; +import android.support.v4.widget.TextViewCompat; import android.view.View; import android.widget.TextView; @@ -15,6 +16,7 @@ public OtherDayHolder(View itemView, CalendarView calendarView) { } public void bind(Day day) { + TextViewCompat.setTextAppearance(tvDay, calendarView.getDayTextAppearance()); tvDay.setText(String.valueOf(day.getDayNumber())); tvDay.setTextColor(calendarView.getOtherDayTextColor()); } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java index 440f7f1..6c61157 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java @@ -218,6 +218,21 @@ public int getNextMonthIconRes() { return calendarView.getNextMonthIconRes(); } + @Override + public int getDayTextAppearance() { + return calendarView.getDayTextAppearance(); + } + + @Override + public int getWeekTextAppearance() { + return calendarView.getWeekTextAppearance(); + } + + @Override + public int getMonthTextAppearance() { + return calendarView.getMonthTextAppearance(); + } + @Override public boolean isShowDaysOfWeek() { return calendarView.isShowDaysOfWeek(); @@ -343,6 +358,21 @@ public void setShowDaysOfWeekTitle(boolean showDaysOfWeekTitle) { calendarView.setShowDaysOfWeekTitle(showDaysOfWeekTitle); } + @Override + public void setDayTextAppearance(int dayTextAppearance) { + calendarView.setDayTextAppearance(dayTextAppearance); + } + + @Override + public void setWeekTextAppearance(int weekTextAppearance) { + calendarView.setWeekTextAppearance(weekTextAppearance); + } + + @Override + public void setMonthTextAppearance(int monthTextAppearance) { + calendarView.setMonthTextAppearance(monthTextAppearance); + } + @Override public Set getDisabledDays() { return calendarView.getDisabledDays(); diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/model/Month.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/model/Month.java index 00d2b09..1f803b2 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/model/Month.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/model/Month.java @@ -49,7 +49,7 @@ public List getDaysWithoutTitlesAndOnlyCurrent() { } public String getMonthName() { - return new SimpleDateFormat("MMMM yyyy", Locale.getDefault()).format(firstDay.getCalendar().getTime()); + return new SimpleDateFormat("MMMM", Locale.getDefault()).format(firstDay.getCalendar().getTime()); } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java index b8b016c..9dcc98c 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java @@ -157,6 +157,21 @@ public int getNextMonthIconRes() { return appearanceModel.getNextMonthIconRes(); } + @Override + public int getDayTextAppearance() { + return appearanceModel.getDayTextAppearance(); + } + + @Override + public int getWeekTextAppearance() { + return appearanceModel.getWeekTextAppearance(); + } + + @Override + public int getMonthTextAppearance() { + return appearanceModel.getMonthTextAppearance(); + } + @Override public boolean isShowDaysOfWeek() { return appearanceModel.isShowDaysOfWeek(); @@ -282,6 +297,21 @@ public void setShowDaysOfWeekTitle(boolean showDaysOfWeekTitle) { appearanceModel.setShowDaysOfWeekTitle(showDaysOfWeekTitle); } + @Override + public void setDayTextAppearance(int dayTextAppearance) { + appearanceModel.setDayTextAppearance(dayTextAppearance); + } + + @Override + public void setWeekTextAppearance(int weekTextAppearance) { + appearanceModel.setWeekTextAppearance(weekTextAppearance); + } + + @Override + public void setMonthTextAppearance(int monthTextAppearance) { + appearanceModel.setMonthTextAppearance(monthTextAppearance); + } + @Override public Set getDisabledDays() { return calendarListsModel.getDisabledDays(); diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceInterface.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceInterface.java index 90574df..fad4396 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceInterface.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceInterface.java @@ -1,5 +1,7 @@ package com.applikeysolutions.cosmocalendar.settings.appearance; +import android.support.annotation.StyleRes; + public interface AppearanceInterface { int getCalendarBackgroundColor(); @@ -44,6 +46,15 @@ public interface AppearanceInterface { int getNextMonthIconRes(); + @StyleRes + int getDayTextAppearance(); + + @StyleRes + int getWeekTextAppearance(); + + @StyleRes + int getMonthTextAppearance(); + boolean isShowDaysOfWeek(); boolean isShowDaysOfWeekTitle(); @@ -93,4 +104,10 @@ public interface AppearanceInterface { void setShowDaysOfWeek(boolean showDaysOfWeek); void setShowDaysOfWeekTitle(boolean showDaysOfWeekTitle); + + void setDayTextAppearance(@StyleRes int dayTextAppearance); + + void setWeekTextAppearance(@StyleRes int weekTextAppearance); + + void setMonthTextAppearance(@StyleRes int monthTextAppearance); } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceModel.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceModel.java index 18b1415..b9b7af5 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceModel.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceModel.java @@ -62,6 +62,15 @@ public class AppearanceModel implements AppearanceInterface { //Icon resource of next month navigation button private int nextMonthIconRes; + //Text Appearance resource of day text + private int dayTextAppearanceRes; + + //Text Appearance resource of week text + private int weekTextAppearanceRes; + + //Text Appearance resource of month text + private int monthTextAppearanceRes; + /** * Orientation of calendar * possible values: @@ -182,6 +191,21 @@ public int getNextMonthIconRes() { return nextMonthIconRes; } + @Override + public int getDayTextAppearance() { + return dayTextAppearanceRes; + } + + @Override + public int getWeekTextAppearance() { + return weekTextAppearanceRes; + } + + @Override + public int getMonthTextAppearance() { + return monthTextAppearanceRes; + } + @Override public boolean isShowDaysOfWeek() { return showDaysOfWeek; @@ -306,4 +330,19 @@ public void setShowDaysOfWeek(boolean showDaysOfWeek) { public void setShowDaysOfWeekTitle(boolean showDaysOfWeekTitle) { this.showDaysOfWeekTitle = showDaysOfWeekTitle; } + + @Override + public void setDayTextAppearance(int dayTextAppearance) { + this.dayTextAppearanceRes = dayTextAppearance; + } + + @Override + public void setWeekTextAppearance(int weekTextAppearance) { + this.weekTextAppearanceRes = weekTextAppearance; + } + + @Override + public void setMonthTextAppearance(int monthTextAppearance) { + this.monthTextAppearanceRes = monthTextAppearance; + } } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java index 8e77c80..718a4f6 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java @@ -11,6 +11,7 @@ import android.support.annotation.StyleRes; import android.support.v4.content.ContextCompat; import android.support.v4.util.Pair; +import android.support.v4.widget.TextViewCompat; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.OrientationHelper; @@ -126,7 +127,7 @@ public CalendarView(@NonNull Context context, @Nullable AttributeSet attrs, @Att protected void onDetachedFromWindow() { super.onDetachedFromWindow(); - if(asyncTask != null && !asyncTask.isCancelled()){ + if (asyncTask != null && !asyncTask.isCancelled()) { asyncTask.cancel(false); } } @@ -284,6 +285,7 @@ private void createDaysOfWeekTitle() { tvDayTitle.setText(title); tvDayTitle.setLayoutParams(textViewParam); tvDayTitle.setGravity(Gravity.CENTER); + TextViewCompat.setTextAppearance(tvDayTitle, settingsManager.getWeekTextAppearance()); llDaysOfWeekTitles.addView(tvDayTitle); } @@ -497,8 +499,8 @@ private int getFirstVisiblePosition(RecyclerView.LayoutManager manager) { } } - private void loadAsyncMonths(final boolean future){ - if(asyncTask != null && (asyncTask.getStatus() == AsyncTask.Status.PENDING || asyncTask.getStatus() == AsyncTask.Status.RUNNING)) + private void loadAsyncMonths(final boolean future) { + if (asyncTask != null && (asyncTask.getStatus() == AsyncTask.Status.PENDING || asyncTask.getStatus() == AsyncTask.Status.RUNNING)) return; asyncTask = new FetchMonthsAsyncTask(); @@ -575,9 +577,9 @@ public void clearSelections() { */ public List getSelectedDays() { List selectedDays = new ArrayList<>(); - for(Iterator monthIterator = monthAdapter.getData().iterator(); monthIterator.hasNext();) { + for (Iterator monthIterator = monthAdapter.getData().iterator(); monthIterator.hasNext(); ) { Month month = monthIterator.next(); - for(Iterator dayIterator = month.getDaysWithoutTitlesAndOnlyCurrent().iterator(); dayIterator.hasNext();) { + for (Iterator dayIterator = month.getDaysWithoutTitlesAndOnlyCurrent().iterator(); dayIterator.hasNext(); ) { Day day = dayIterator.next(); if (selectionManager.isDaySelected(day)) { selectedDays.add(day); @@ -849,6 +851,21 @@ public int getNextMonthIconRes() { return settingsManager.getNextMonthIconRes(); } + @Override + public int getDayTextAppearance() { + return settingsManager.getDayTextAppearance(); + } + + @Override + public int getWeekTextAppearance() { + return settingsManager.getWeekTextAppearance(); + } + + @Override + public int getMonthTextAppearance() { + return settingsManager.getMonthTextAppearance(); + } + @Override public boolean isShowDaysOfWeek() { return settingsManager.isShowDaysOfWeek(); @@ -1025,6 +1042,24 @@ public void setShowDaysOfWeekTitle(boolean showDaysOfWeekTitle) { } } + @Override + public void setDayTextAppearance(int dayTextAppearance) { + settingsManager.setDayTextAppearance(dayTextAppearance); + update(); + } + + @Override + public void setWeekTextAppearance(int weekTextAppearance) { + settingsManager.setWeekTextAppearance(weekTextAppearance); + update(); + } + + @Override + public void setMonthTextAppearance(int monthTextAppearance) { + settingsManager.setMonthTextAppearance(monthTextAppearance); + update(); + } + @Override public int getFirstDayOfWeek() { return settingsManager.getFirstDayOfWeek(); @@ -1062,16 +1097,16 @@ public void onMultipleSelectionListItemClick(final Day day) { } } - public void setOnMonthChangeListener(OnMonthChangeListener onMonthChangeListener){ + public void setOnMonthChangeListener(OnMonthChangeListener onMonthChangeListener) { this.onMonthChangeListener = onMonthChangeListener; } @Override public void onSnap(int position) { Month month = monthAdapter.getData().get(position); - if(onMonthChangeListener != null + if (onMonthChangeListener != null && (previousSelectedMonth == null || !previousSelectedMonth.getMonthName().equals(month.getMonthName()))) { - onMonthChangeListener.onMonthChanged(month); + onMonthChangeListener.onMonthChanged(month); previousSelectedMonth = month; } } diff --git a/cosmocalendar/src/main/res/layout/view_month.xml b/cosmocalendar/src/main/res/layout/view_month.xml index 5cdc203..75a367c 100644 --- a/cosmocalendar/src/main/res/layout/view_month.xml +++ b/cosmocalendar/src/main/res/layout/view_month.xml @@ -19,15 +19,19 @@ android:layout_marginLeft="@dimen/space_1x" android:layout_marginRight="@dimen/space_1x" android:layout_weight="1" - android:background="@color/default_border_color" /> + android:background="@color/default_border_color" + android:visibility="gone" /> @@ -39,7 +43,8 @@ android:layout_marginLeft="@dimen/space_1x" android:layout_marginRight="@dimen/space_1x" android:layout_weight="1" - android:background="@color/default_border_color" /> + android:background="@color/default_border_color" + android:visibility="gone" /> diff --git a/cosmocalendar/src/main/res/values/dimen.xml b/cosmocalendar/src/main/res/values/dimen.xml index 63f7999..0e6b731 100644 --- a/cosmocalendar/src/main/res/values/dimen.xml +++ b/cosmocalendar/src/main/res/values/dimen.xml @@ -2,6 +2,7 @@ 8dp 16dp + 20dp 24dp 32dp 40dp @@ -20,6 +21,7 @@ 18sp 14sp - 8dp + @dimen/space_1x + @dimen/space_2.5x From 69a32d15e7a10c031a2380e822bbef0deeb228a3 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Fri, 30 Nov 2018 17:17:34 +0300 Subject: [PATCH 07/23] README updated. --- README.md | 2 +- cosmocalendar/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 83a8088..6cec012 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Made by [Applikey Solutions](https://applikeysolutions.com) and updated by Musta # Usage ```xml - compile 'com.github.mustafabayram:CosmoCalendar:v1.0.5' + compile 'com.github.mustafabayram:CosmoCalendar:1.0.6' ``` # Customization diff --git a/cosmocalendar/build.gradle b/cosmocalendar/build.gradle index 41148d8..922416b 100644 --- a/cosmocalendar/build.gradle +++ b/cosmocalendar/build.gradle @@ -15,7 +15,7 @@ ext { siteUrl = 'https://github.com/AppliKeySolutions/CosmoCalendar' gitUrl = 'https://github.com/AppliKeySolutions/CosmoCalendar.git' - libraryVersion = '1.0.5' + libraryVersion = '1.0.4' developerId = 'devilbrain666' developerName = 'Ostapenko Yura' @@ -34,7 +34,7 @@ android { minSdkVersion 16 targetSdkVersion 25 versionCode 5 - versionName "1.0.5" + versionName "1.0.6" } buildTypes { release { From 1ee82b5fe269fbf77ad68c7c7005cfe6a956b2a8 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Mon, 3 Dec 2018 15:29:16 +0300 Subject: [PATCH 08/23] Added visible min date and max date configuration. Added enable min date and max date configuration. Disabled last item auto scroll. --- .../cosmocalendar/adapter/MonthAdapter.java | 26 +++++- .../cosmocalendar/dialog/CalendarDialog.java | 41 ++++++++++ .../settings/SettingsManager.java | 50 ++++++++++++ .../lists/CalendarListsInterface.java | 18 +++++ .../settings/lists/CalendarListsModel.java | 48 +++++++++++ .../cosmocalendar/utils/CalendarUtils.java | 77 ++++++++++++++++-- .../cosmocalendar/view/CalendarView.java | 80 +++++++++++++++---- 7 files changed, 316 insertions(+), 24 deletions(-) diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/MonthAdapter.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/MonthAdapter.java index 043ef89..c302326 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/MonthAdapter.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/MonthAdapter.java @@ -125,6 +125,28 @@ public void setWeekendDays(Set weekendDays) { setDaysAccordingToSet(weekendDays, DayFlag.WEEKEND); } + public void setEnableMinDate(Calendar minDate) { + for (Month month : months) { + for (Day day : month.getDays()) { + if (!day.isDisabled()) { + day.setDisabled(CalendarUtils.isDayDisabledByMinDate(day, minDate)); + } + } + } + notifyDataSetChanged(); + } + + public void setEnableMaxDate(Calendar maxDate) { + for (Month month : months) { + for (Day day : month.getDays()) { + if (!day.isDisabled()) { + day.setDisabled(CalendarUtils.isDayDisabledByMaxDate(day, maxDate)); + } + } + } + notifyDataSetChanged(); + } + public void setDisabledDays(Set disabledDays) { setDaysAccordingToSet(disabledDays, DayFlag.DISABLED); } @@ -133,10 +155,10 @@ public void setConnectedCalendarDays(Set connectedCalendarDays) { setDaysAccordingToSet(connectedCalendarDays, DayFlag.FROM_CONNECTED_CALENDAR); } - public void setDisabledDaysCriteria(DisabledDaysCriteria criteria){ + public void setDisabledDaysCriteria(DisabledDaysCriteria criteria) { for (Month month : months) { for (Day day : month.getDays()) { - if(!day.isDisabled()){ + if (!day.isDisabled()) { day.setDisabled(CalendarUtils.isDayDisabledByCriteria(day, criteria)); } } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java index 6c61157..74b87bc 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java @@ -26,6 +26,7 @@ import com.applikeysolutions.cosmocalendar.settings.selection.SelectionInterface; import com.applikeysolutions.cosmocalendar.view.CalendarView; +import java.util.Calendar; import java.util.List; import java.util.Set; @@ -373,6 +374,26 @@ public void setMonthTextAppearance(int monthTextAppearance) { calendarView.setMonthTextAppearance(monthTextAppearance); } + @Override + public Calendar getEnableMinDate() { + return calendarView.getEnableMinDate(); + } + + @Override + public Calendar getEnableMaxDate() { + return calendarView.getEnableMaxDate(); + } + + @Override + public Calendar getVisibleMinDate() { + return calendarView.getVisibleMinDate(); + } + + @Override + public Calendar getVisibleMaxDate() { + return calendarView.getVisibleMaxDate(); + } + @Override public Set getDisabledDays() { return calendarView.getDisabledDays(); @@ -398,6 +419,26 @@ public void setDisabledDays(Set disabledDays) { calendarView.setDisabledDays(disabledDays); } + @Override + public void setEnableMinDate(Calendar minDate) { + calendarView.setEnableMinDate(minDate); + } + + @Override + public void setEnableMaxDate(Calendar maxDate) { + calendarView.setEnableMaxDate(maxDate); + } + + @Override + public void setVisibleMinDate(Calendar minDate) { + calendarView.setVisibleMinDate(minDate); + } + + @Override + public void setVisibleMaxDate(Calendar maxDate) { + calendarView.setVisibleMaxDate(maxDate); + } + @Override public void setWeekendDays(Set weekendDays) { calendarView.setWeekendDays(weekendDays); diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java index 9dcc98c..b310c6a 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java @@ -23,6 +23,7 @@ public class SettingsManager implements AppearanceInterface, DateInterface, Cale //Default values public static final int DEFAULT_MONTH_COUNT = 20; + public static final int DEFAULT_INITIAL_POSITION = 0; public static final int DEFAULT_SELECTION_TYPE = SelectionType.SINGLE; public static final int DEFAULT_FIRST_DAY_OF_WEEK = Calendar.MONDAY; public static final int DEFAULT_ORIENTATION = LinearLayoutManager.VERTICAL; @@ -33,6 +34,7 @@ public class SettingsManager implements AppearanceInterface, DateInterface, Cale private DateModel dateModel; private CalendarListsModel calendarListsModel; private SelectionModel selectionModel; + private int initialPosition = DEFAULT_INITIAL_POSITION; public SettingsManager() { appearanceModel = new AppearanceModel(); @@ -41,6 +43,10 @@ public SettingsManager() { selectionModel = new SelectionModel(); } + public int getInitialPosition() { + return initialPosition; + } + @Override @SelectionType public int getSelectionType() { @@ -182,6 +188,10 @@ public boolean isShowDaysOfWeekTitle() { return appearanceModel.isShowDaysOfWeekTitle(); } + public void setInitialPosition(int initialPosition) { + this.initialPosition = initialPosition; + } + @Override public void setCalendarBackgroundColor(int calendarBackgroundColor) { appearanceModel.setCalendarBackgroundColor(calendarBackgroundColor); @@ -312,6 +322,26 @@ public void setMonthTextAppearance(int monthTextAppearance) { appearanceModel.setMonthTextAppearance(monthTextAppearance); } + @Override + public Calendar getEnableMinDate() { + return calendarListsModel.getEnableMinDate(); + } + + @Override + public Calendar getEnableMaxDate() { + return calendarListsModel.getEnableMaxDate(); + } + + @Override + public Calendar getVisibleMinDate() { + return calendarListsModel.getVisibleMinDate(); + } + + @Override + public Calendar getVisibleMaxDate() { + return calendarListsModel.getVisibleMaxDate(); + } + @Override public Set getDisabledDays() { return calendarListsModel.getDisabledDays(); @@ -361,4 +391,24 @@ public int getFirstDayOfWeek() { public void setFirstDayOfWeek(int firstDayOfWeek) { dateModel.setFirstDayOfWeek(firstDayOfWeek); } + + @Override + public void setEnableMinDate(Calendar minDate) { + calendarListsModel.setEnableMinDate(minDate); + } + + @Override + public void setEnableMaxDate(Calendar maxDate) { + calendarListsModel.setEnableMaxDate(maxDate); + } + + @Override + public void setVisibleMinDate(Calendar minDate) { + calendarListsModel.setVisibleMinDate(minDate); + } + + @Override + public void setVisibleMaxDate(Calendar maxDate) { + calendarListsModel.setVisibleMaxDate(maxDate); + } } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/lists/CalendarListsInterface.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/lists/CalendarListsInterface.java index 6b5f64a..dd39525 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/lists/CalendarListsInterface.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/lists/CalendarListsInterface.java @@ -3,10 +3,19 @@ import com.applikeysolutions.cosmocalendar.settings.lists.connected_days.ConnectedDays; import com.applikeysolutions.cosmocalendar.settings.lists.connected_days.ConnectedDaysManager; +import java.util.Calendar; import java.util.Set; public interface CalendarListsInterface { + Calendar getEnableMinDate(); + + Calendar getEnableMaxDate(); + + Calendar getVisibleMinDate(); + + Calendar getVisibleMaxDate(); + Set getDisabledDays(); ConnectedDaysManager getConnectedDaysManager(); @@ -17,9 +26,18 @@ public interface CalendarListsInterface { void setDisabledDays(Set disabledDays); + void setEnableMinDate(Calendar minDate); + + void setEnableMaxDate(Calendar maxDate); + + void setVisibleMinDate(Calendar minDate); + + void setVisibleMaxDate(Calendar maxDate); + void setWeekendDays(Set weekendDays); void setDisabledDaysCriteria(DisabledDaysCriteria criteria); + void addConnectedDays(ConnectedDays connectedDays); } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/lists/CalendarListsModel.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/lists/CalendarListsModel.java index 0d9d53c..8352bff 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/lists/CalendarListsModel.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/lists/CalendarListsModel.java @@ -10,6 +10,14 @@ public class CalendarListsModel implements CalendarListsInterface { + private Calendar enableMinDate; + + private Calendar enableMaxDate; + + private Calendar visibleMinDate; + + private Calendar visibleMaxDate; + //Disabled days cannot be selected private Set disabledDays = new TreeSet<>(); @@ -22,6 +30,26 @@ public class CalendarListsModel implements CalendarListsInterface { add(Calendar.SUNDAY); }}; + @Override + public Calendar getEnableMinDate() { + return enableMinDate; + } + + @Override + public Calendar getEnableMaxDate() { + return enableMaxDate; + } + + @Override + public Calendar getVisibleMinDate() { + return visibleMinDate; + } + + @Override + public Calendar getVisibleMaxDate() { + return visibleMaxDate; + } + @Override public Set getDisabledDays() { return disabledDays; @@ -42,6 +70,26 @@ public DisabledDaysCriteria getDisabledDaysCriteria() { return disabledDaysCriteria; } + @Override + public void setEnableMinDate(Calendar minDate) { + this.enableMinDate = minDate; + } + + @Override + public void setEnableMaxDate(Calendar maxDate) { + this.enableMaxDate = maxDate; + } + + @Override + public void setVisibleMinDate(Calendar minDate) { + this.visibleMinDate = minDate; + } + + @Override + public void setVisibleMaxDate(Calendar maxDate) { + this.visibleMaxDate = maxDate; + } + @Override public void setDisabledDays(Set disabledDays) { this.disabledDays = disabledDays; diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java index 0cc63c3..94c42e6 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java @@ -93,7 +93,11 @@ public static List createWeekDayTitles(int firstDayOfWeek) { return titles; } - public static List createInitialMonths(SettingsManager settingsManager) { + public static List createInitialMonths(SettingsManager settingsManager, boolean hasLimit) { + return hasLimit ? createInitialMonthsWithLimit(settingsManager) : createInitialMonthsDefault(settingsManager); + } + + private static List createInitialMonthsDefault(SettingsManager settingsManager) { final List months = new ArrayList<>(); final Calendar calendar = Calendar.getInstance(); @@ -108,6 +112,42 @@ public static List createInitialMonths(SettingsManager settingsManager) { return months; } + + private static List createInitialMonthsWithLimit(SettingsManager settingsManager) { + final List months = new ArrayList<>(); + + final Calendar calendar = Calendar.getInstance(); + + int previousMonthCount; + + if (settingsManager.getVisibleMaxDate() == null) { + return new ArrayList<>(); + } + + if (settingsManager.getVisibleMinDate() != null) { + + previousMonthCount = monthsBetween(settingsManager.getVisibleMinDate(), calendar); + settingsManager.setInitialPosition(previousMonthCount); + + while (calendar.compareTo(settingsManager.getVisibleMinDate()) >= 0) { + calendar.add(Calendar.DAY_OF_MONTH, -1); + } + } + + do { + months.add(createMonth(calendar.getTime(), settingsManager)); + DateUtils.addMonth(calendar); + } while (calendar.compareTo(settingsManager.getVisibleMaxDate()) <= 0); + + return months; + } + + public static int monthsBetween(Calendar startDate, Calendar endDate) { + int diffYear = endDate.get(Calendar.YEAR) - startDate.get(Calendar.YEAR); + int diffMonth = diffYear * 12 + endDate.get(Calendar.MONTH) - startDate.get(Calendar.MONTH); + return diffMonth; + } + /** * Returns selected Days grouped by month/year * @@ -157,12 +197,23 @@ public static void setDay(Day day, SettingsManager settingsManager) { day.setWeekend(settingsManager.getWeekendDays().contains(day.getCalendar().get(Calendar.DAY_OF_WEEK))); } + if (settingsManager.getEnableMinDate() != null) { + day.setDisabled(isDayDisabledByMinDate(day, settingsManager.getEnableMinDate())); + } + if (settingsManager.getEnableMaxDate() != null) { + if (!day.isDisabled()) { + day.setDisabled(isDayDisabledByMaxDate(day, settingsManager.getEnableMaxDate())); + } + } + if (settingsManager.getDisabledDays() != null) { - day.setDisabled(isDayInSet(day, settingsManager.getDisabledDays())); + if (!day.isDisabled()) { + day.setDisabled(isDayInSet(day, settingsManager.getDisabledDays())); + } } if (settingsManager.getDisabledDaysCriteria() != null) { - if(!day.isDisabled()){ + if (!day.isDisabled()) { day.setDisabled(isDayDisabledByCriteria(day, settingsManager.getDisabledDaysCriteria())); } } @@ -183,9 +234,21 @@ public static boolean isDayInSet(Day day, Set daysInSet) { return false; } + public static boolean isDayDisabledByMinDate(Day day, Calendar minDate) { + return day.getCalendar().get(Calendar.YEAR) < minDate.get(Calendar.YEAR) + || day.getCalendar().get(Calendar.YEAR) == minDate.get(Calendar.YEAR) + && day.getCalendar().get(Calendar.DAY_OF_YEAR) < minDate.get(Calendar.DAY_OF_YEAR); + } + + public static boolean isDayDisabledByMaxDate(Day day, Calendar maxDate) { + return day.getCalendar().get(Calendar.YEAR) > maxDate.get(Calendar.YEAR) + || day.getCalendar().get(Calendar.YEAR) == maxDate.get(Calendar.YEAR) + && day.getCalendar().get(Calendar.DAY_OF_YEAR) > maxDate.get(Calendar.DAY_OF_YEAR); + } + public static boolean isDayDisabledByCriteria(Day day, DisabledDaysCriteria criteria) { int field = -1; - switch (criteria.getCriteriaType()){ + switch (criteria.getCriteriaType()) { case DAYS_OF_MONTH: field = Calendar.DAY_OF_MONTH; break; @@ -195,15 +258,15 @@ public static boolean isDayDisabledByCriteria(Day day, DisabledDaysCriteria crit break; } - for(int dayInt : criteria.getDays()){ - if(dayInt == day.getCalendar().get(field)){ + for (int dayInt : criteria.getDays()) { + if (dayInt == day.getCalendar().get(field)) { return true; } } return false; } - public static int getIconHeight(Resources resources, int iconResId){ + public static int getIconHeight(Resources resources, int iconResId) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(resources, iconResId, options); diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java index 718a4f6..4e71284 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java @@ -98,13 +98,13 @@ public class CalendarView extends RelativeLayout implements OnDaySelectedListene private OnMonthChangeListener onMonthChangeListener; private Month previousSelectedMonth; - private int lastVisibleMonthPosition = SettingsManager.DEFAULT_MONTH_COUNT / 2; + private int lastVisibleMonthPosition = SettingsManager.DEFAULT_INITIAL_POSITION; + private boolean hasMinOrMaxVisibleDateLimit; private FetchMonthsAsyncTask asyncTask; public CalendarView(Context context) { - super(context); - init(); + this(context, null); } public CalendarView(Context context, @Nullable AttributeSet attrs) { @@ -399,7 +399,7 @@ private void createRecyclerView() { changeSnapHelper(); rvMonths.setAdapter(monthAdapter); - rvMonths.scrollToPosition(SettingsManager.DEFAULT_MONTH_COUNT / 2); + rvMonths.scrollToPosition(settingsManager.getInitialPosition()); rvMonths.addOnScrollListener(pagingScrollListener); rvMonths.getRecycledViewPool().setMaxRecycledViews(ItemViewType.MONTH, 10); addView(rvMonths); @@ -443,7 +443,7 @@ public void onClick(View v) { private MonthAdapter createAdapter() { return new MonthAdapter.MonthAdapterBuilder() - .setMonths(CalendarUtils.createInitialMonths(settingsManager)) + .setMonths(CalendarUtils.createInitialMonths(settingsManager, false)) .setMonthDelegate(new MonthDelegate(settingsManager)) .setCalendarView(this) .setSelectionManager(selectionManager) @@ -483,9 +483,9 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) { int firstVisibleItemPosition = getFirstVisiblePosition(manager); lastVisibleMonthPosition = firstVisibleItemPosition; - if (firstVisibleItemPosition < 2) { + if (firstVisibleItemPosition < 2 && getVisibleMinDate() == null) { loadAsyncMonths(false); - } else if (firstVisibleItemPosition >= totalItemCount - 2) { + } else if (firstVisibleItemPosition >= totalItemCount - 2 && getVisibleMaxDate() == null) { loadAsyncMonths(true); } } @@ -515,6 +515,26 @@ private void loadAsyncMonths(final boolean future) { asyncTask.execute(new FetchMonthsAsyncTask.FetchParams(future, month, settingsManager, monthAdapter, SettingsManager.DEFAULT_MONTH_COUNT)); } + @Override + public Calendar getEnableMinDate() { + return settingsManager.getEnableMinDate(); + } + + @Override + public Calendar getEnableMaxDate() { + return settingsManager.getEnableMaxDate(); + } + + @Override + public Calendar getVisibleMinDate() { + return settingsManager.getVisibleMinDate(); + } + + @Override + public Calendar getVisibleMaxDate() { + return settingsManager.getVisibleMaxDate(); + } + @Override public Set getDisabledDays() { return settingsManager.getDisabledDays(); @@ -535,6 +555,36 @@ public DisabledDaysCriteria getDisabledDaysCriteria() { return settingsManager.getDisabledDaysCriteria(); } + @Override + public void setEnableMinDate(Calendar minDate) { + settingsManager.setEnableMinDate(minDate); + monthAdapter.setEnableMinDate(minDate); + update(); + } + + @Override + public void setEnableMaxDate(Calendar maxDate) { + settingsManager.setEnableMaxDate(maxDate); + monthAdapter.setEnableMaxDate(maxDate); + update(); + } + + @Override + public void setVisibleMinDate(Calendar minDate) { + settingsManager.setVisibleMinDate(minDate); + hasMinOrMaxVisibleDateLimit = minDate != null; + recreateInitialMonth(hasMinOrMaxVisibleDateLimit); + update(); + } + + @Override + public void setVisibleMaxDate(Calendar maxDate) { + settingsManager.setVisibleMaxDate(maxDate); + hasMinOrMaxVisibleDateLimit = maxDate != null; + recreateInitialMonth(hasMinOrMaxVisibleDateLimit); + update(); + } + public void setDisabledDays(Set disabledDays) { settingsManager.setDisabledDays(disabledDays); monthAdapter.setDisabledDays(disabledDays); @@ -554,7 +604,7 @@ public void setDisabledDaysCriteria(DisabledDaysCriteria criteria) { @Override public void addConnectedDays(ConnectedDays connectedDays) { settingsManager.getConnectedDaysManager().addConnectedDays(connectedDays); - recreateInitialMonth(); + recreateInitialMonth(hasMinOrMaxVisibleDateLimit); } /** @@ -626,10 +676,10 @@ public SettingsManager getSettingsManager() { return settingsManager; } - private void recreateInitialMonth() { + private void recreateInitialMonth(boolean hasLimit) { monthAdapter.getData().clear(); - monthAdapter.getData().addAll(CalendarUtils.createInitialMonths(settingsManager)); - lastVisibleMonthPosition = SettingsManager.DEFAULT_MONTH_COUNT / 2; + monthAdapter.getData().addAll(CalendarUtils.createInitialMonths(settingsManager, hasLimit)); + lastVisibleMonthPosition = settingsManager.getInitialPosition(); } @Override @@ -962,7 +1012,7 @@ public void setCalendarOrientation(int calendarOrientation) { clearSelections(); settingsManager.setCalendarOrientation(calendarOrientation); setDaysOfWeekTitles(); - recreateInitialMonth(); + recreateInitialMonth(hasMinOrMaxVisibleDateLimit); rvMonths.setLayoutManager(new GridLayoutManager(getContext(), 1, getCalendarOrientation(), false)); @@ -1029,7 +1079,7 @@ public void setNextMonthIconRes(int nextMonthIconRes) { @Override public void setShowDaysOfWeek(boolean showDaysOfWeek) { settingsManager.setShowDaysOfWeek(showDaysOfWeek); - recreateInitialMonth(); + recreateInitialMonth(hasMinOrMaxVisibleDateLimit); } @Override @@ -1069,7 +1119,7 @@ public int getFirstDayOfWeek() { public void setFirstDayOfWeek(int firstDayOfWeek) { if (firstDayOfWeek > 0 && firstDayOfWeek < 8) { settingsManager.setFirstDayOfWeek(firstDayOfWeek); - recreateInitialMonth(); + recreateInitialMonth(hasMinOrMaxVisibleDateLimit); createDaysOfWeekTitle(); } else { throw new IllegalArgumentException("First day of week must be 1 - 7"); @@ -1079,7 +1129,7 @@ public void setFirstDayOfWeek(int firstDayOfWeek) { private void changeSnapHelper() { rvMonths.setOnFlingListener(null); if (snapHelper == null) { - snapHelper = new GravitySnapHelper(settingsManager.getCalendarOrientation() == LinearLayoutManager.VERTICAL ? Gravity.TOP : Gravity.START, true, this); + snapHelper = new GravitySnapHelper(settingsManager.getCalendarOrientation() == LinearLayoutManager.VERTICAL ? Gravity.TOP : Gravity.START, false, this); snapHelper.attachToRecyclerView(rvMonths); } else { snapHelper.setGravity(settingsManager.getCalendarOrientation() == LinearLayoutManager.VERTICAL ? Gravity.TOP : Gravity.START); From 878978a911a9098a7f67a8c7c0a2c85ebbc404f7 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Mon, 3 Dec 2018 15:30:38 +0300 Subject: [PATCH 09/23] Version updated. README updated. --- README.md | 2 +- cosmocalendar/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6cec012..6d96ee6 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Made by [Applikey Solutions](https://applikeysolutions.com) and updated by Musta # Usage ```xml - compile 'com.github.mustafabayram:CosmoCalendar:1.0.6' + compile 'com.github.mustafabayram:CosmoCalendar:1.0.7' ``` # Customization diff --git a/cosmocalendar/build.gradle b/cosmocalendar/build.gradle index 922416b..24fbe12 100644 --- a/cosmocalendar/build.gradle +++ b/cosmocalendar/build.gradle @@ -33,8 +33,8 @@ android { defaultConfig { minSdkVersion 16 targetSdkVersion 25 - versionCode 5 - versionName "1.0.6" + versionCode 7 + versionName "1.0.7" } buildTypes { release { From 88359604a8cdd6d4ac8453dd6cb0edca65ae2a89 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Mon, 3 Dec 2018 16:04:59 +0300 Subject: [PATCH 10/23] Version updated. README updated. --- README.md | 2 +- cosmocalendar/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6d96ee6..6ffe70b 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Made by [Applikey Solutions](https://applikeysolutions.com) and updated by Musta # Usage ```xml - compile 'com.github.mustafabayram:CosmoCalendar:1.0.7' + compile 'com.github.mustafabayram:CosmoCalendar:1.0.8' ``` # Customization diff --git a/cosmocalendar/build.gradle b/cosmocalendar/build.gradle index 24fbe12..570ae8e 100644 --- a/cosmocalendar/build.gradle +++ b/cosmocalendar/build.gradle @@ -33,8 +33,8 @@ android { defaultConfig { minSdkVersion 16 targetSdkVersion 25 - versionCode 7 - versionName "1.0.7" + versionCode 8 + versionName "1.0.8" } buildTypes { release { From 2d1c993b8ca3817dbf33de6158505d6c00475852 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Mon, 3 Dec 2018 18:13:12 +0300 Subject: [PATCH 11/23] Nested scrolling enabled. Current day text color bug fixed. Initial position bug fixed. --- .../cosmocalendar/adapter/viewholder/DayHolder.java | 9 ++++++++- .../cosmocalendar/utils/CalendarUtils.java | 2 ++ .../cosmocalendar/view/CalendarView.java | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java index ad0afeb..70b93f1 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java @@ -38,6 +38,7 @@ public void bind(Day day, BaseSelectionManager selectionManager) { if (day.isCurrent()) { addCurrentDayIcon(isSelected); + ctvDay.setTextColor(calendarView.getCurrentDayTextColor()); } if (day.isDisabled()) { @@ -172,7 +173,13 @@ private void unselect(Day day) { } else if (day.isWeekend()) { textColor = calendarView.getWeekendDayTextColor(); ctvDay.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); - } else { + } + else if (day.isCurrent()) { + textColor = calendarView.getCurrentDayTextColor(); + ctvDay.setCompoundDrawablesWithIntrinsicBounds(0, calendarView.getCurrentDayIconRes(), 0, 0); + } + + else { textColor = calendarView.getDayTextColor(); ctvDay.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java index 94c42e6..dab04b5 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java @@ -105,6 +105,8 @@ private static List createInitialMonthsDefault(SettingsManager settingsMa calendar.add(Calendar.MONTH, -1); } + settingsManager.setInitialPosition(SettingsManager.DEFAULT_MONTH_COUNT / 2); + for (int i = 0; i < SettingsManager.DEFAULT_MONTH_COUNT; i++) { months.add(createMonth(calendar.getTime(), settingsManager)); DateUtils.addMonth(calendar); diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java index 4e71284..12dcc55 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java @@ -386,7 +386,7 @@ private void createRecyclerView() { rvMonths = new SlowdownRecyclerView(getContext()); rvMonths.setId(ViewIDGenerator.generateViewId()); rvMonths.setHasFixedSize(true); - rvMonths.setNestedScrollingEnabled(false); + rvMonths.setNestedScrollingEnabled(true); ((SimpleItemAnimator) rvMonths.getItemAnimator()).setSupportsChangeAnimations(false); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); From 0368ed19d2d3ab4e655900b23fb88f74f2c45980 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Tue, 4 Dec 2018 11:47:35 +0300 Subject: [PATCH 12/23] Other day visibility configuration added. --- .../adapter/viewholder/OtherDayHolder.java | 1 + .../cosmocalendar/dialog/CalendarDialog.java | 10 ++++++++++ .../cosmocalendar/settings/SettingsManager.java | 10 ++++++++++ .../settings/appearance/AppearanceInterface.java | 4 ++++ .../settings/appearance/AppearanceModel.java | 13 +++++++++++++ .../cosmocalendar/view/CalendarView.java | 11 +++++++++++ 6 files changed, 49 insertions(+) diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/OtherDayHolder.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/OtherDayHolder.java index f74f385..55edfb6 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/OtherDayHolder.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/OtherDayHolder.java @@ -19,5 +19,6 @@ public void bind(Day day) { TextViewCompat.setTextAppearance(tvDay, calendarView.getDayTextAppearance()); tvDay.setText(String.valueOf(day.getDayNumber())); tvDay.setTextColor(calendarView.getOtherDayTextColor()); + tvDay.setVisibility(calendarView.getOtherDayVisibility() ? View.VISIBLE : View.INVISIBLE); } } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java index 74b87bc..cc8618a 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java @@ -219,6 +219,11 @@ public int getNextMonthIconRes() { return calendarView.getNextMonthIconRes(); } + @Override + public boolean getOtherDayVisibility() { + return calendarView.getOtherDayVisibility(); + } + @Override public int getDayTextAppearance() { return calendarView.getDayTextAppearance(); @@ -374,6 +379,11 @@ public void setMonthTextAppearance(int monthTextAppearance) { calendarView.setMonthTextAppearance(monthTextAppearance); } + @Override + public void setOtherDayVisibility(boolean isVisible) { + calendarView.setOtherDayVisibility(isVisible); + } + @Override public Calendar getEnableMinDate() { return calendarView.getEnableMinDate(); diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java index b310c6a..5f4fcc6 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java @@ -163,6 +163,11 @@ public int getNextMonthIconRes() { return appearanceModel.getNextMonthIconRes(); } + @Override + public boolean getOtherDayVisibility() { + return appearanceModel.getOtherDayVisibility(); + } + @Override public int getDayTextAppearance() { return appearanceModel.getDayTextAppearance(); @@ -322,6 +327,11 @@ public void setMonthTextAppearance(int monthTextAppearance) { appearanceModel.setMonthTextAppearance(monthTextAppearance); } + @Override + public void setOtherDayVisibility(boolean isVisible) { + appearanceModel.setOtherDayVisibility(isVisible); + } + @Override public Calendar getEnableMinDate() { return calendarListsModel.getEnableMinDate(); diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceInterface.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceInterface.java index fad4396..4c1c698 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceInterface.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceInterface.java @@ -46,6 +46,8 @@ public interface AppearanceInterface { int getNextMonthIconRes(); + boolean getOtherDayVisibility(); + @StyleRes int getDayTextAppearance(); @@ -110,4 +112,6 @@ public interface AppearanceInterface { void setWeekTextAppearance(@StyleRes int weekTextAppearance); void setMonthTextAppearance(@StyleRes int monthTextAppearance); + + void setOtherDayVisibility(boolean isVisible); } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceModel.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceModel.java index b9b7af5..212ec2c 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceModel.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceModel.java @@ -71,6 +71,9 @@ public class AppearanceModel implements AppearanceInterface { //Text Appearance resource of month text private int monthTextAppearanceRes; + //Other day text visibility + private boolean isOtherDayVisible = true; + /** * Orientation of calendar * possible values: @@ -191,6 +194,11 @@ public int getNextMonthIconRes() { return nextMonthIconRes; } + @Override + public boolean getOtherDayVisibility() { + return isOtherDayVisible; + } + @Override public int getDayTextAppearance() { return dayTextAppearanceRes; @@ -345,4 +353,9 @@ public void setWeekTextAppearance(int weekTextAppearance) { public void setMonthTextAppearance(int monthTextAppearance) { this.monthTextAppearanceRes = monthTextAppearance; } + + @Override + public void setOtherDayVisibility(boolean isVisible) { + isOtherDayVisible = isVisible; + } } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java index 12dcc55..4f9b13e 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java @@ -901,6 +901,11 @@ public int getNextMonthIconRes() { return settingsManager.getNextMonthIconRes(); } + @Override + public boolean getOtherDayVisibility() { + return settingsManager.getOtherDayVisibility(); + } + @Override public int getDayTextAppearance() { return settingsManager.getDayTextAppearance(); @@ -1110,6 +1115,12 @@ public void setMonthTextAppearance(int monthTextAppearance) { update(); } + @Override + public void setOtherDayVisibility(boolean isVisible) { + settingsManager.setOtherDayVisibility(isVisible); + update(); + } + @Override public int getFirstDayOfWeek() { return settingsManager.getFirstDayOfWeek(); From 829ec4e1a18e97a5a1dbdfbd1a3628fc5b956b91 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Tue, 4 Dec 2018 14:11:54 +0300 Subject: [PATCH 13/23] Month header updated. Set gravity center and border line added. --- .../adapter/viewholder/MonthHolder.java | 15 ++---- .../src/main/res/layout/view_month.xml | 54 +++++-------------- 2 files changed, 18 insertions(+), 51 deletions(-) diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/MonthHolder.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/MonthHolder.java index e579319..f3ea7ff 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/MonthHolder.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/MonthHolder.java @@ -4,7 +4,6 @@ import android.support.v7.widget.OrientationHelper; import android.support.v7.widget.RecyclerView; import android.view.View; -import android.widget.LinearLayout; import android.widget.TextView; import com.applikeysolutions.cosmocalendar.settings.SettingsManager; @@ -15,20 +14,16 @@ public class MonthHolder extends RecyclerView.ViewHolder { - private LinearLayout llMonthHeader; private TextView tvMonthName; - private View viewLeftLine; - private View viewRightLine; private MonthView monthView; + private View monthHeaderBorder; private SettingsManager appearanceModel; public MonthHolder(View itemView, SettingsManager appearanceModel) { super(itemView); - llMonthHeader = (LinearLayout) itemView.findViewById(R.id.ll_month_header); monthView = (MonthView) itemView.findViewById(R.id.month_view); tvMonthName = (TextView) itemView.findViewById(R.id.tv_month_name); - viewLeftLine = itemView.findViewById(R.id.view_left_line); - viewRightLine = itemView.findViewById(R.id.view_right_line); + monthHeaderBorder = itemView.findViewById(R.id.month_header_border); this.appearanceModel = appearanceModel; } @@ -41,10 +36,8 @@ public void bind(Month month) { tvMonthName.setTextColor(appearanceModel.getMonthTextColor()); TextViewCompat.setTextAppearance(tvMonthName, appearanceModel.getMonthTextAppearance()); - viewLeftLine.setVisibility(appearanceModel.getCalendarOrientation() == OrientationHelper.HORIZONTAL ? View.INVISIBLE : View.GONE); - viewRightLine.setVisibility(appearanceModel.getCalendarOrientation() == OrientationHelper.HORIZONTAL ? View.INVISIBLE : View.GONE); - llMonthHeader.setBackgroundResource(appearanceModel.getCalendarOrientation() == OrientationHelper.HORIZONTAL ? R.drawable.border_top_bottom : 0); - + tvMonthName.setBackgroundResource(appearanceModel.getCalendarOrientation() == OrientationHelper.HORIZONTAL ? R.drawable.border_top_bottom : 0); + monthHeaderBorder.setVisibility(appearanceModel.getCalendarOrientation() == OrientationHelper.HORIZONTAL ? View.GONE : View.VISIBLE); monthView.initAdapter(month); } diff --git a/cosmocalendar/src/main/res/layout/view_month.xml b/cosmocalendar/src/main/res/layout/view_month.xml index 75a367c..72798fb 100644 --- a/cosmocalendar/src/main/res/layout/view_month.xml +++ b/cosmocalendar/src/main/res/layout/view_month.xml @@ -5,48 +5,22 @@ android:layout_height="wrap_content" android:orientation="vertical"> - + android:layout_height="wrap_content" + android:layout_gravity="center" + android:gravity="center" + android:letterSpacing="0.1" + android:padding="16dp" + android:textSize="@dimen/text_big" + tools:text="April 2015" /> - - - - - - - + Date: Tue, 4 Dec 2018 14:12:39 +0300 Subject: [PATCH 14/23] Current day text color cause a bug and disabled. --- .../cosmocalendar/adapter/viewholder/DayHolder.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java index 70b93f1..6849150 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java @@ -38,7 +38,7 @@ public void bind(Day day, BaseSelectionManager selectionManager) { if (day.isCurrent()) { addCurrentDayIcon(isSelected); - ctvDay.setTextColor(calendarView.getCurrentDayTextColor()); + //ctvDay.setTextColor(calendarView.getCurrentDayTextColor()); } if (day.isDisabled()) { @@ -173,13 +173,7 @@ private void unselect(Day day) { } else if (day.isWeekend()) { textColor = calendarView.getWeekendDayTextColor(); ctvDay.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); - } - else if (day.isCurrent()) { - textColor = calendarView.getCurrentDayTextColor(); - ctvDay.setCompoundDrawablesWithIntrinsicBounds(0, calendarView.getCurrentDayIconRes(), 0, 0); - } - - else { + } else { textColor = calendarView.getDayTextColor(); ctvDay.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); } From e51bf6ea154a2311fa990b54e13e84e672f3faf7 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Tue, 4 Dec 2018 14:20:24 +0300 Subject: [PATCH 15/23] Version updated. README updated. --- README.md | 2 +- cosmocalendar/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6ffe70b..11ef346 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Made by [Applikey Solutions](https://applikeysolutions.com) and updated by Musta # Usage ```xml - compile 'com.github.mustafabayram:CosmoCalendar:1.0.8' + compile 'com.github.mustafabayram:CosmoCalendar:1.0.9' ``` # Customization diff --git a/cosmocalendar/build.gradle b/cosmocalendar/build.gradle index 570ae8e..d248ddb 100644 --- a/cosmocalendar/build.gradle +++ b/cosmocalendar/build.gradle @@ -33,8 +33,8 @@ android { defaultConfig { minSdkVersion 16 targetSdkVersion 25 - versionCode 8 - versionName "1.0.8" + versionCode 9 + versionName "1.0.9" } buildTypes { release { From 348d39eb47a54c54ad1b06d73a05c36e8450cd79 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Tue, 18 Dec 2018 15:26:49 +0300 Subject: [PATCH 16/23] Snap helper removed from calendar view. Max date bug fixed. --- .../applikeysolutions/cosmocalendar/utils/CalendarUtils.java | 3 ++- .../applikeysolutions/cosmocalendar/view/CalendarView.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java index dab04b5..6312de8 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java @@ -139,7 +139,8 @@ private static List createInitialMonthsWithLimit(SettingsManager settings do { months.add(createMonth(calendar.getTime(), settingsManager)); DateUtils.addMonth(calendar); - } while (calendar.compareTo(settingsManager.getVisibleMaxDate()) <= 0); + } while (calendar.compareTo(settingsManager.getVisibleMaxDate()) <= 0 + || calendar.get(Calendar.MONTH) == settingsManager.getVisibleMaxDate().get(Calendar.MONTH)); return months; } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java index 4f9b13e..b7f3ed4 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java @@ -396,7 +396,7 @@ private void createRecyclerView() { rvMonths.setLayoutManager(new GridLayoutManager(getContext(), 1, settingsManager.getCalendarOrientation(), false)); monthAdapter = createAdapter(); - changeSnapHelper(); + //changeSnapHelper(); rvMonths.setAdapter(monthAdapter); rvMonths.scrollToPosition(settingsManager.getInitialPosition()); @@ -1021,7 +1021,7 @@ public void setCalendarOrientation(int calendarOrientation) { rvMonths.setLayoutManager(new GridLayoutManager(getContext(), 1, getCalendarOrientation(), false)); - changeSnapHelper(); + //changeSnapHelper(); if (getCalendarOrientation() == LinearLayout.HORIZONTAL) { if (flNavigationButtons != null) { From 1ec9aa478a0b5cae477a29dc3336f94d17412e14 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Tue, 18 Dec 2018 15:40:13 +0300 Subject: [PATCH 17/23] Added selected date listener --- .../listeners/DateSelectedListener.java | 10 ++++++++++ .../cosmocalendar/view/CalendarView.java | 14 ++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/listeners/DateSelectedListener.java diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/listeners/DateSelectedListener.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/listeners/DateSelectedListener.java new file mode 100644 index 0000000..525694a --- /dev/null +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/listeners/DateSelectedListener.java @@ -0,0 +1,10 @@ +package com.applikeysolutions.cosmocalendar.listeners; + +import java.util.Calendar; + +/** + * Created by Mustafa Bayram on 18.12.2018. + */ +public interface DateSelectedListener { + void onDateSelected(Calendar calendar); +} diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java index b7f3ed4..b80f973 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java @@ -28,6 +28,7 @@ import android.widget.RelativeLayout; import android.widget.TextView; +import com.applikeysolutions.cosmocalendar.listeners.DateSelectedListener; import com.applikeysolutions.cosmocalendar.selection.NoneSelectionManager; import com.applikeysolutions.cosmocalendar.FetchMonthsAsyncTask; import com.applikeysolutions.cosmocalendar.adapter.MonthAdapter; @@ -103,6 +104,8 @@ public class CalendarView extends RelativeLayout implements OnDaySelectedListene private FetchMonthsAsyncTask asyncTask; + private DateSelectedListener dateSelectedListener; + public CalendarView(Context context) { this(context, null); } @@ -686,6 +689,9 @@ private void recreateInitialMonth(boolean hasLimit) { public void onDaySelected() { selectedDays = getSelectedDays(); displaySelectedDays(); + if (dateSelectedListener != null) { + dateSelectedListener.onDateSelected(selectedDays.get(0).getCalendar()); + } } /** @@ -1137,6 +1143,14 @@ public void setFirstDayOfWeek(int firstDayOfWeek) { } } + public DateSelectedListener getDateSelectedListener() { + return dateSelectedListener; + } + + public void setDateSelectedListener(DateSelectedListener dateSelectedListener) { + this.dateSelectedListener = dateSelectedListener; + } + private void changeSnapHelper() { rvMonths.setOnFlingListener(null); if (snapHelper == null) { From 139b4570a7467aa4f2bd02aa5cd71166fa7c1e7a Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Tue, 18 Dec 2018 16:08:23 +0300 Subject: [PATCH 18/23] When select a day calendar view auto scroll to selected position. --- .../cosmocalendar/view/CalendarView.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java index b80f973..e01c347 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java @@ -689,6 +689,17 @@ private void recreateInitialMonth(boolean hasLimit) { public void onDaySelected() { selectedDays = getSelectedDays(); displaySelectedDays(); + + int index = 0; + Calendar selectedCalendar = selectedDays.get(0).getCalendar(); + for (Month month : monthAdapter.getData()) { + if (month.getFirstDay().getCalendar().compareTo(selectedCalendar) > 0) { + lastVisibleMonthPosition = index - 1; + rvMonths.scrollToPosition(lastVisibleMonthPosition); + break; + } + index++; + } if (dateSelectedListener != null) { dateSelectedListener.onDateSelected(selectedDays.get(0).getCalendar()); } From f78fc910cd49eb022e2bb0f86f7379bc6a72ac0d Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Tue, 18 Dec 2018 16:10:12 +0300 Subject: [PATCH 19/23] Version updated. README updated. --- README.md | 2 +- cosmocalendar/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 11ef346..022c1c3 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Made by [Applikey Solutions](https://applikeysolutions.com) and updated by Musta # Usage ```xml - compile 'com.github.mustafabayram:CosmoCalendar:1.0.9' + compile 'com.github.mustafabayram:CosmoCalendar:1.1' ``` # Customization diff --git a/cosmocalendar/build.gradle b/cosmocalendar/build.gradle index d248ddb..485f7f1 100644 --- a/cosmocalendar/build.gradle +++ b/cosmocalendar/build.gradle @@ -33,8 +33,8 @@ android { defaultConfig { minSdkVersion 16 targetSdkVersion 25 - versionCode 9 - versionName "1.0.9" + versionCode 10 + versionName "1.1" } buildTypes { release { From aed20664ffabf6f20bce142627e60d73a6a30b0b Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Fri, 28 Dec 2018 16:48:18 +0300 Subject: [PATCH 20/23] CalendarView grid margin reduced and nested scrolling disabled. --- .../cosmocalendar/utils/CalendarUtils.java | 4 ++++ .../cosmocalendar/view/CalendarView.java | 10 +++++++--- .../view/customviews/CircleAnimationTextView.java | 6 +++--- cosmocalendar/src/main/res/layout/view_day.xml | 1 - cosmocalendar/src/main/res/layout/view_month.xml | 5 ++--- cosmocalendar/src/main/res/values/dimen.xml | 8 ++++---- 6 files changed, 20 insertions(+), 14 deletions(-) diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java index 6312de8..5790da5 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java @@ -188,6 +188,10 @@ public static int getCircleWidth(Context context) { return getDisplayWidth(context) / Constants.DAYS_IN_WEEK; } + public static int getCircleHeight(Context context) { + return getDisplayWidth(context) / (Constants.DAYS_IN_WEEK + 2); + } + public static int getDisplayWidth(Context context) { return ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth(); } diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java index e01c347..2c8ac42 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java @@ -101,6 +101,7 @@ public class CalendarView extends RelativeLayout implements OnDaySelectedListene private int lastVisibleMonthPosition = SettingsManager.DEFAULT_INITIAL_POSITION; private boolean hasMinOrMaxVisibleDateLimit; + private boolean isFirstSelect = true; private FetchMonthsAsyncTask asyncTask; @@ -388,8 +389,8 @@ public void update() { private void createRecyclerView() { rvMonths = new SlowdownRecyclerView(getContext()); rvMonths.setId(ViewIDGenerator.generateViewId()); - rvMonths.setHasFixedSize(true); - rvMonths.setNestedScrollingEnabled(true); + rvMonths.setHasFixedSize(false); + rvMonths.setNestedScrollingEnabled(false); ((SimpleItemAnimator) rvMonths.getItemAnimator()).setSupportsChangeAnimations(false); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); @@ -695,7 +696,10 @@ public void onDaySelected() { for (Month month : monthAdapter.getData()) { if (month.getFirstDay().getCalendar().compareTo(selectedCalendar) > 0) { lastVisibleMonthPosition = index - 1; - rvMonths.scrollToPosition(lastVisibleMonthPosition); + if (isFirstSelect) { + rvMonths.scrollToPosition(lastVisibleMonthPosition); + isFirstSelect = false; + } break; } index++; diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/customviews/CircleAnimationTextView.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/customviews/CircleAnimationTextView.java index 92f4106..facc36b 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/customviews/CircleAnimationTextView.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/customviews/CircleAnimationTextView.java @@ -43,7 +43,7 @@ public class CircleAnimationTextView extends AppCompatTextView { private Paint backgroundRectanglePaint; private Rect backgroundRectangle; - public static final int DEFAULT_PADDING = 10; + public static final int DEFAULT_PADDING = 25; public static final int MAX_PROGRESS = 100; public static final long SELECTION_ANIMATION_DURATION = 300; @@ -64,7 +64,7 @@ public CircleAnimationTextView(Context context, AttributeSet attrs, int defStyle public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.EXACTLY) { //For making all day views same height (ex. screen width 1080 and we have days with width 154/154/155/154/154/155/154) - super.onMeasure(widthMeasureSpec, CalendarUtils.getCircleWidth(getContext()) + MeasureSpec.EXACTLY); + super.onMeasure(widthMeasureSpec, CalendarUtils.getCircleHeight(getContext()) + MeasureSpec.EXACTLY); } else { super.onMeasure(widthMeasureSpec, widthMeasureSpec); } @@ -132,7 +132,7 @@ private void drawCircle(Canvas canvas) { final int diameterProgress = animationProgress * diameter / MAX_PROGRESS; setBackgroundColor(Color.TRANSPARENT); - canvas.drawCircle(getWidth() / 2, getWidth() / 2, diameterProgress / 2, circlePaint); + canvas.drawCircle(getWidth() / 2, getHeight() / 2, diameterProgress / 2, circlePaint); } private void drawCircleUnder(Canvas canvas) { diff --git a/cosmocalendar/src/main/res/layout/view_day.xml b/cosmocalendar/src/main/res/layout/view_day.xml index b94f553..7d3be1b 100644 --- a/cosmocalendar/src/main/res/layout/view_day.xml +++ b/cosmocalendar/src/main/res/layout/view_day.xml @@ -10,7 +10,6 @@ android:layout_height="match_parent" android:layout_gravity="center" android:gravity="center" - android:padding="@dimen/day_text_padding" android:textColor="@color/default_day_text_color" android:textSize="@dimen/day_text_size" tools:text="10" /> diff --git a/cosmocalendar/src/main/res/layout/view_month.xml b/cosmocalendar/src/main/res/layout/view_month.xml index 72798fb..c4f0ad5 100644 --- a/cosmocalendar/src/main/res/layout/view_month.xml +++ b/cosmocalendar/src/main/res/layout/view_month.xml @@ -11,9 +11,8 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" - android:letterSpacing="0.1" - android:padding="16dp" - android:textSize="@dimen/text_big" + android:padding="6dp" + android:textSize="@dimen/text_medium" tools:text="April 2015" /> - 8dp - 16dp - 20dp + 4dp + 8dp + 10dp 24dp 32dp 40dp @@ -20,7 +20,7 @@ 16sp 18sp - 14sp + 12sp @dimen/space_1x @dimen/space_2.5x From 300f9c9264c948317eb32ecc74b7b06fe6bdda1a Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Fri, 28 Dec 2018 16:49:29 +0300 Subject: [PATCH 21/23] version updated. README updated. --- README.md | 2 +- cosmocalendar/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 022c1c3..6f858af 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Made by [Applikey Solutions](https://applikeysolutions.com) and updated by Musta # Usage ```xml - compile 'com.github.mustafabayram:CosmoCalendar:1.1' + compile 'com.github.mustafabayram:CosmoCalendar:1.2' ``` # Customization diff --git a/cosmocalendar/build.gradle b/cosmocalendar/build.gradle index 485f7f1..5db7fbd 100644 --- a/cosmocalendar/build.gradle +++ b/cosmocalendar/build.gradle @@ -33,8 +33,8 @@ android { defaultConfig { minSdkVersion 16 targetSdkVersion 25 - versionCode 10 - versionName "1.1" + versionCode 12 + versionName "1.2" } buildTypes { release { From 1ba2b31509d2588890282ab6eef64ea4c3f35bb2 Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Fri, 15 Feb 2019 14:03:07 +0300 Subject: [PATCH 22/23] selected date circle padding updated. version updated. README updated. --- README.md | 2 +- build.gradle | 8 ++++++++ cosmocalendar/build.gradle | 4 ++-- .../cosmocalendar/utils/CalendarUtils.java | 8 ++++++++ .../view/customviews/CircleAnimationTextView.java | 5 ++++- 5 files changed, 23 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6f858af..8944b24 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Made by [Applikey Solutions](https://applikeysolutions.com) and updated by Musta # Usage ```xml - compile 'com.github.mustafabayram:CosmoCalendar:1.2' + compile 'com.github.mustafabayram:CosmoCalendar:1.3' ``` # Customization diff --git a/build.gradle b/build.gradle index c1941f5..c815498 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,10 @@ buildscript { repositories { jcenter() mavenCentral() + maven { + url 'https://maven.google.com/' + name 'Google' + } } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' @@ -14,6 +18,10 @@ allprojects { repositories { jcenter() mavenCentral() + maven { + url 'https://maven.google.com/' + name 'Google' + } } tasks.withType(Javadoc).all { diff --git a/cosmocalendar/build.gradle b/cosmocalendar/build.gradle index 5db7fbd..0f70dbb 100644 --- a/cosmocalendar/build.gradle +++ b/cosmocalendar/build.gradle @@ -33,8 +33,8 @@ android { defaultConfig { minSdkVersion 16 targetSdkVersion 25 - versionCode 12 - versionName "1.2" + versionCode 13 + versionName "1.3" } buildTypes { release { diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java index 5790da5..67d6cf1 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.BitmapFactory; +import android.util.DisplayMetrics; import android.view.WindowManager; import com.applikeysolutions.cosmocalendar.settings.SettingsManager; @@ -196,6 +197,13 @@ public static int getDisplayWidth(Context context) { return ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth(); } + public static int dipToPx(Context context, float dipValue) { + Resources resources = context.getResources(); + DisplayMetrics displayMetrics = resources.getDisplayMetrics(); + float scale = displayMetrics.density; + return (int) (dipValue * scale + 0.5f); + } + /** * Sets variables(isWeekend, isDisabled, isFromConnectedCalendar) to day */ diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/customviews/CircleAnimationTextView.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/customviews/CircleAnimationTextView.java index facc36b..722c994 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/customviews/CircleAnimationTextView.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/customviews/CircleAnimationTextView.java @@ -43,20 +43,23 @@ public class CircleAnimationTextView extends AppCompatTextView { private Paint backgroundRectanglePaint; private Rect backgroundRectangle; - public static final int DEFAULT_PADDING = 25; + public static int DEFAULT_PADDING = 25; public static final int MAX_PROGRESS = 100; public static final long SELECTION_ANIMATION_DURATION = 300; public CircleAnimationTextView(Context context) { super(context); + DEFAULT_PADDING = CalendarUtils.dipToPx(context, 12); } public CircleAnimationTextView(Context context, AttributeSet attrs) { super(context, attrs); + DEFAULT_PADDING = CalendarUtils.dipToPx(context, 12); } public CircleAnimationTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + DEFAULT_PADDING = CalendarUtils.dipToPx(context, 12); } //Square view From 81db085d126dc18fa1e67140a83faaf4302e900f Mon Sep 17 00:00:00 2001 From: Mustafa Bayram Date: Mon, 29 Jul 2019 14:00:52 +0300 Subject: [PATCH 23/23] Bug fixed. Version updated. README updated. --- README.md | 2 +- build.gradle | 4 ++-- cosmocalendar/build.gradle | 16 ++++++++-------- .../cosmocalendar/view/CalendarView.java | 3 +++ gradle/wrapper/gradle-wrapper.properties | 4 ++-- sample/build.gradle | 12 +++++++----- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 8944b24..ffbccb8 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Made by [Applikey Solutions](https://applikeysolutions.com) and updated by Musta # Usage ```xml - compile 'com.github.mustafabayram:CosmoCalendar:1.3' + compile 'com.github.mustafabayram:CosmoCalendar:1.4' ``` # Customization diff --git a/build.gradle b/build.gradle index c815498..a4e6c49 100644 --- a/build.gradle +++ b/build.gradle @@ -8,9 +8,9 @@ buildscript { } } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'com.android.tools.build:gradle:3.4.2' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4' - classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1' + classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' } } diff --git a/cosmocalendar/build.gradle b/cosmocalendar/build.gradle index 0f70dbb..247263a 100644 --- a/cosmocalendar/build.gradle +++ b/cosmocalendar/build.gradle @@ -27,14 +27,14 @@ ext { } android { - compileSdkVersion 25 - buildToolsVersion "25.0.3" + compileSdkVersion 28 + buildToolsVersion "28.0.3" defaultConfig { minSdkVersion 16 - targetSdkVersion 25 - versionCode 13 - versionName "1.3" + targetSdkVersion 28 + versionCode 14 + versionName "1.4" } buildTypes { release { @@ -45,9 +45,9 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:25.3.1' - compile "com.android.support:recyclerview-v7:25.3.1" + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.android.support:appcompat-v7:28.0.0' + implementation "com.android.support:recyclerview-v7:28.0.0" } // Place it at the end of the file diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java index 2c8ac42..cebac0d 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java @@ -689,6 +689,9 @@ private void recreateInitialMonth(boolean hasLimit) { @Override public void onDaySelected() { selectedDays = getSelectedDays(); + if (selectedDays == null || selectedDays.isEmpty()) { + return; + } displaySelectedDays(); int index = 0; diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a91a603..cff195c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Mar 15 15:07:26 EET 2017 +#Mon Jul 29 11:58:23 EET 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip diff --git a/sample/build.gradle b/sample/build.gradle index 8358c68..0847a75 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 25 - buildToolsVersion "25.0.3" + compileSdkVersion 28 + buildToolsVersion "28.0.3" defaultConfig { applicationId "com.applikeysolutions.cosmocalendar" minSdkVersion 16 - targetSdkVersion 25 + targetSdkVersion 28 versionCode 1 versionName "1.0" } @@ -19,6 +19,8 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile project(path: ':cosmocalendar') + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation project(path: ':cosmocalendar') + + implementation "com.android.support:design:28.0.0" }