diff --git a/build.gradle b/build.gradle index c1941f5..c62e35e 100644 --- a/build.gradle +++ b/build.gradle @@ -2,11 +2,15 @@ buildscript { repositories { jcenter() mavenCentral() + maven { + url 'https://maven.google.com/' + name 'Google' + } } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4' - classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1' + classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4' + classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' } } @@ -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 f5fdb9c..9efab0f 100644 --- a/cosmocalendar/build.gradle +++ b/cosmocalendar/build.gradle @@ -25,12 +25,12 @@ ext { } android { - compileSdkVersion 25 - buildToolsVersion "25.0.3" + compileSdkVersion 28 + buildToolsVersion '28.0.3' defaultConfig { minSdkVersion 17 - targetSdkVersion 25 + targetSdkVersion 28 versionCode 5 versionName "1.0.4" } @@ -43,9 +43,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/adapter/viewholder/DayHolder.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java index 4b5399d..dafcdca 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 @@ -21,6 +21,10 @@ public class DayHolder extends BaseDayHolder { public DayHolder(View itemView, CalendarView calendarView) { super(itemView, calendarView); ctvDay = (CircleAnimationTextView) itemView.findViewById(R.id.tv_day_number); + + if(calendarView.getDayTextAppearance() != -1) { + ctvDay.setTextAppearance(calendarView.getContext(), calendarView.getDayTextAppearance()); + } } public void bind(Day day, BaseSelectionManager selectionManager) { 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..16f53bf 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 @@ -19,9 +19,17 @@ public DayOfWeekHolder(View itemView, CalendarView calendarView) { super(itemView, calendarView); tvDay = (TextView) itemView.findViewById(R.id.tv_day_name); mDayOfWeekFormatter = new SimpleDateFormat(Constants.DAY_NAME_FORMAT, Locale.getDefault()); + + if(calendarView.getWeekDayTextAppearance() != -1) { + tvDay.setTextAppearance(calendarView.getContext(), calendarView.getWeekDayTextAppearance()); + } } public void bind(Day day) { + if(calendarView.getWeekDayFormat() != null) { + mDayOfWeekFormatter = new SimpleDateFormat(calendarView.getWeekDayFormat(), Locale.getDefault()); + } + 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..b976581 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 @@ -18,6 +18,7 @@ public class MonthHolder extends RecyclerView.ViewHolder { private TextView tvMonthName; private View viewLeftLine; private View viewRightLine; + private View viewHorizontalDivLine; private MonthView monthView; private SettingsManager appearanceModel; @@ -28,7 +29,12 @@ public MonthHolder(View itemView, SettingsManager appearanceModel) { 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); + viewHorizontalDivLine = itemView.findViewById(R.id.view_div_line); this.appearanceModel = appearanceModel; + + if(appearanceModel.getMonthTextAppearance() != -1) { + tvMonthName.setTextAppearance(tvMonthName.getContext(), appearanceModel.getMonthTextAppearance()); + } } public void setDayAdapter(DaysAdapter adapter) { @@ -39,8 +45,17 @@ public void bind(Month month) { tvMonthName.setText(month.getMonthName()); tvMonthName.setTextColor(appearanceModel.getMonthTextColor()); - viewLeftLine.setVisibility(appearanceModel.getCalendarOrientation() == OrientationHelper.HORIZONTAL ? View.INVISIBLE : View.VISIBLE); - viewRightLine.setVisibility(appearanceModel.getCalendarOrientation() == OrientationHelper.HORIZONTAL ? View.INVISIBLE : View.VISIBLE); + viewLeftLine.setBackgroundColor(appearanceModel.getBorderColor()); + viewRightLine.setBackgroundColor(appearanceModel.getBorderColor()); + viewHorizontalDivLine.setBackgroundColor(appearanceModel.getBorderColor()); + + boolean isLineVisible = appearanceModel.getCalendarOrientation() == OrientationHelper.VERTICAL && appearanceModel.isMonthHorizontalLinesVisible(); + boolean isTitleDivVisible = appearanceModel.isMonthTitleBottomDivVisible(); + + viewLeftLine.setVisibility(isLineVisible ? View.VISIBLE : View.INVISIBLE); + viewRightLine.setVisibility(isLineVisible ? View.VISIBLE : View.INVISIBLE); + viewHorizontalDivLine.setVisibility(isTitleDivVisible ? View.VISIBLE : 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..e603c6c 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 @@ -12,6 +12,10 @@ public class OtherDayHolder extends BaseDayHolder { public OtherDayHolder(View itemView, CalendarView calendarView) { super(itemView, calendarView); tvDay = (TextView) itemView.findViewById(R.id.tv_day_number); + + if(calendarView.getDayTextAppearance() != -1) { + tvDay.setTextAppearance(calendarView.getContext(), calendarView.getDayTextAppearance()); + } } public void bind(Day day) { 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..5e435b4 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java @@ -343,6 +343,76 @@ public void setShowDaysOfWeekTitle(boolean showDaysOfWeekTitle) { calendarView.setShowDaysOfWeekTitle(showDaysOfWeekTitle); } + @Override + public int getMonthTextAppearance() { + return calendarView.getMonthTextAppearance(); + } + + @Override + public void setMonthTextAppearance(int monthTextAppearance) { + calendarView.setMonthTextAppearance(monthTextAppearance); + } + + @Override + public int getWeekDayTextAppearance() { + return calendarView.getWeekDayTextAppearance(); + } + + @Override + public void setWeekDayTextAppearance(int weekDayTextAppearance) { + calendarView.setWeekDayTextAppearance(weekDayTextAppearance); + } + + @Override + public int getDayTextAppearance() { + return calendarView.getDayTextAppearance(); + } + + @Override + public void setDayTextAppearance(int dayTextAppearance) { + calendarView.setDayTextAppearance(dayTextAppearance); + } + + @Override + public boolean isMonthHorizontalLinesVisible() { + return calendarView.isMonthHorizontalLinesVisible(); + } + + @Override + public void setMonthHorizontalLinesVisible(boolean monthHorizontalLinesVisible) { + calendarView.setMonthHorizontalLinesVisible(monthHorizontalLinesVisible); + } + + @Override + public boolean isMonthTitleBottomDivVisible() { + return calendarView.isMonthTitleBottomDivVisible(); + } + + @Override + public void setMonthTitleBottomDivVisible(boolean monthTitleBottomDivVisible) { + calendarView.setMonthTitleBottomDivVisible(monthTitleBottomDivVisible); + } + + @Override + public String getWeekDayFormat() { + return calendarView.getWeekDayFormat(); + } + + @Override + public void setWeekDayFormat(String weekDayFormat) { + calendarView.setWeekDayFormat(weekDayFormat); + } + + @Override + public int getBorderColor() { + return calendarView.getBorderColor(); + } + + @Override + public void setBorderColor(int borderColor) { + calendarView.setBorderColor(borderColor); + } + @Override public Set getDisabledDays() { return calendarView.getDisabledDays(); diff --git a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/model/DayOfWeek.java b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/model/DayOfWeek.java index 2366193..6ffc6c8 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/model/DayOfWeek.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/model/DayOfWeek.java @@ -1,8 +1,26 @@ package com.applikeysolutions.cosmocalendar.model; +import com.applikeysolutions.cosmocalendar.utils.Constants; + import java.util.Date; public class DayOfWeek extends Day { + public enum WeekdayFormat { + SHORT, + MEDIUM; + + public String getFormat() { + switch (this) { + case SHORT: + return "E"; + + case MEDIUM: + return "EEE"; + } + + return Constants.DAY_NAME_FORMAT; + } + } public DayOfWeek(Date date) { super(date); 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..04e4519 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java @@ -282,6 +282,76 @@ public void setShowDaysOfWeekTitle(boolean showDaysOfWeekTitle) { appearanceModel.setShowDaysOfWeekTitle(showDaysOfWeekTitle); } + @Override + public int getMonthTextAppearance() { + return appearanceModel.getMonthTextAppearance(); + } + + @Override + public void setMonthTextAppearance(int monthTextAppearance) { + appearanceModel.setMonthTextAppearance(monthTextAppearance); + } + + @Override + public int getWeekDayTextAppearance() { + return appearanceModel.getWeekDayTextAppearance(); + } + + @Override + public void setWeekDayTextAppearance(int weekDayTextAppearance) { + appearanceModel.setWeekDayTextAppearance(weekDayTextAppearance); + } + + @Override + public int getDayTextAppearance() { + return appearanceModel.getDayTextAppearance(); + } + + @Override + public void setDayTextAppearance(int dayTextAppearance) { + appearanceModel.setDayTextAppearance(dayTextAppearance); + } + + @Override + public boolean isMonthHorizontalLinesVisible() { + return appearanceModel.isMonthHorizontalLinesVisible(); + } + + @Override + public void setMonthHorizontalLinesVisible(boolean monthHorizontalLinesVisible) { + appearanceModel.setMonthHorizontalLinesVisible(monthHorizontalLinesVisible); + } + + @Override + public boolean isMonthTitleBottomDivVisible() { + return appearanceModel.isMonthTitleBottomDivVisible(); + } + + @Override + public void setMonthTitleBottomDivVisible(boolean monthTitleBottomDivVisible) { + appearanceModel.setMonthTitleBottomDivVisible(monthTitleBottomDivVisible); + } + + @Override + public String getWeekDayFormat() { + return appearanceModel.getWeekDayFormat(); + } + + @Override + public void setWeekDayFormat(String weekDayFormat) { + appearanceModel.setWeekDayFormat(weekDayFormat); + } + + @Override + public int getBorderColor() { + return appearanceModel.getBorderColor(); + } + + @Override + public void setBorderColor(int borderColor) { + appearanceModel.setBorderColor(borderColor); + } + @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..24ad609 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 @@ -93,4 +93,27 @@ public interface AppearanceInterface { void setShowDaysOfWeek(boolean showDaysOfWeek); void setShowDaysOfWeekTitle(boolean showDaysOfWeekTitle); + + int getMonthTextAppearance(); + + void setMonthTextAppearance(int monthTextAppearance); + int getWeekDayTextAppearance(); + void setWeekDayTextAppearance(int weekDayTextAppearance); + + int getDayTextAppearance(); + + void setDayTextAppearance(int dayTextAppearance); + + boolean isMonthHorizontalLinesVisible(); + void setMonthHorizontalLinesVisible(boolean monthHorizontalLinesVisible); + + boolean isMonthTitleBottomDivVisible(); + + void setMonthTitleBottomDivVisible(boolean monthTitleBottomDivVisible); + + String getWeekDayFormat(); + void setWeekDayFormat(String weekDayFormat); + + int getBorderColor(); + void setBorderColor(int borderColor); } 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..70276a7 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 @@ -1,5 +1,7 @@ package com.applikeysolutions.cosmocalendar.settings.appearance; +import android.support.annotation.StyleRes; + public class AppearanceModel implements AppearanceInterface { //Background color of whole calendar @@ -62,6 +64,17 @@ public class AppearanceModel implements AppearanceInterface { //Icon resource of next month navigation button private int nextMonthIconRes; + private @StyleRes int monthTextAppearance; + private @StyleRes int weekDayTextAppearance; + private @StyleRes int dayTextAppearance; + + private boolean monthHorizontalLinesVisible; + private boolean monthTitleBottomDivVisible; + + private String weekDayFormat; + + private int borderColor; + /** * Orientation of calendar * possible values: @@ -76,6 +89,37 @@ public class AppearanceModel implements AppearanceInterface { //Defines if we need to display week day title for whole calendar private boolean showDaysOfWeekTitle; + public int getMonthTextAppearance() { + return monthTextAppearance; + } + + public void setMonthTextAppearance(int monthTextAppearance) { + this.monthTextAppearance = monthTextAppearance; + } + + public int getWeekDayTextAppearance() { + return weekDayTextAppearance; + } + + public void setWeekDayTextAppearance(int weekDayTextAppearance) { + this.weekDayTextAppearance = weekDayTextAppearance; + } + + public int getDayTextAppearance() { + return dayTextAppearance; + } + + public void setDayTextAppearance(int dayTextAppearance) { + this.dayTextAppearance = dayTextAppearance; + } + + public boolean isMonthHorizontalLinesVisible() { + return monthHorizontalLinesVisible; + } + + public void setMonthHorizontalLinesVisible(boolean monthHorizontalLinesVisible) { + this.monthHorizontalLinesVisible = monthHorizontalLinesVisible; + } @Override public int getCalendarBackgroundColor() { @@ -306,4 +350,28 @@ public void setShowDaysOfWeek(boolean showDaysOfWeek) { public void setShowDaysOfWeekTitle(boolean showDaysOfWeekTitle) { this.showDaysOfWeekTitle = showDaysOfWeekTitle; } + + public boolean isMonthTitleBottomDivVisible() { + return monthTitleBottomDivVisible; + } + + public void setMonthTitleBottomDivVisible(boolean monthTitleBottomDivVisible) { + this.monthTitleBottomDivVisible = monthTitleBottomDivVisible; + } + + public String getWeekDayFormat() { + return weekDayFormat; + } + + public void setWeekDayFormat(String weekDayFormat) { + this.weekDayFormat = weekDayFormat; + } + + public int getBorderColor() { + return borderColor; + } + + public void setBorderColor(int borderColor) { + this.borderColor = borderColor; + } } 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..415b342 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/utils/CalendarUtils.java @@ -141,7 +141,11 @@ public static String getYearNameTitle(Day day) { * * @return */ - public static int getCircleWidth(Context context) { + public static int getCircleWidth(Context context, Integer parentWidth) { + if(parentWidth != null) { + return parentWidth / Constants.DAYS_IN_WEEK; + } + return getDisplayWidth(context) / Constants.DAYS_IN_WEEK; } 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..bad031b 100644 --- a/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java +++ b/cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java @@ -2,7 +2,10 @@ import android.annotation.TargetApi; import android.content.Context; +import android.content.res.Resources; import android.content.res.TypedArray; +import android.graphics.drawable.GradientDrawable; +import android.graphics.drawable.LayerDrawable; import android.os.AsyncTask; import android.os.Build; import android.support.annotation.AttrRes; @@ -17,6 +20,7 @@ import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SimpleItemAnimator; import android.util.AttributeSet; +import android.util.TypedValue; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; @@ -27,6 +31,7 @@ import android.widget.RelativeLayout; import android.widget.TextView; +import com.applikeysolutions.cosmocalendar.model.DayOfWeek; import com.applikeysolutions.cosmocalendar.selection.NoneSelectionManager; import com.applikeysolutions.cosmocalendar.FetchMonthsAsyncTask; import com.applikeysolutions.cosmocalendar.adapter.MonthAdapter; @@ -174,6 +179,17 @@ private void handleAttributes(TypedArray typedArray) { int previousMonthIconRes = typedArray.getResourceId(R.styleable.CalendarView_previousMonthIconRes, R.drawable.ic_chevron_left_gray); int nextMonthIconRes = typedArray.getResourceId(R.styleable.CalendarView_nextMonthIconRes, R.drawable.ic_chevron_right_gray); + int monthTextAppearance = typedArray.getResourceId(R.styleable.CalendarView_monthTextAppearance, -1); + int weekDayTextAppearance = typedArray.getResourceId(R.styleable.CalendarView_weekDayTextAppearance, -1); + int dayTextAppearance = typedArray.getResourceId(R.styleable.CalendarView_dayTextAppearance, -1); + + boolean horizontalLinesVisible = typedArray.getBoolean(R.styleable.CalendarView_monthHorizontalLinesVisible, true); + boolean monthDivVisible = typedArray.getBoolean(R.styleable.CalendarView_monthTitleBottomDivVisible, false); + + int weekdayFormat = typedArray.getInt(R.styleable.CalendarView_weekdayFormat, -1); + + int borderColor = typedArray.getColor(R.styleable.CalendarView_borderColor, getResources().getColor(R.color.default_border_color)); + setBackgroundColor(calendarBackgroundColor); settingsManager.setCalendarBackgroundColor(calendarBackgroundColor); settingsManager.setMonthTextColor(monthTextColor); @@ -200,6 +216,20 @@ private void handleAttributes(TypedArray typedArray) { settingsManager.setSelectionType(selectionType); settingsManager.setPreviousMonthIconRes(previousMonthIconRes); settingsManager.setNextMonthIconRes(nextMonthIconRes); + + settingsManager.setMonthTextAppearance(monthTextAppearance); + settingsManager.setWeekDayTextAppearance(weekDayTextAppearance); + settingsManager.setDayTextAppearance(dayTextAppearance); + + settingsManager.setMonthHorizontalLinesVisible(horizontalLinesVisible); + settingsManager.setMonthTitleBottomDivVisible(monthDivVisible); + + settingsManager.setBorderColor(borderColor); + + if(weekdayFormat != -1) { + DayOfWeek.WeekdayFormat format = DayOfWeek.WeekdayFormat.values()[weekdayFormat]; + settingsManager.setWeekDayFormat(format.getFormat()); + } } private void handleWeekendDaysAttributes(TypedArray typedArray) { @@ -281,6 +311,9 @@ private void createDaysOfWeekTitle() { for (String title : CalendarUtils.createWeekDayTitles(settingsManager.getFirstDayOfWeek())) { SquareTextView tvDayTitle = new SquareTextView(getContext()); tvDayTitle.setText(title); + if(getWeekDayTextAppearance() != -1) { + tvDayTitle.setTextAppearance(getContext(), getWeekDayTextAppearance()); + } tvDayTitle.setLayoutParams(textViewParam); tvDayTitle.setGravity(Gravity.CENTER); llDaysOfWeekTitles.addView(tvDayTitle); @@ -289,6 +322,9 @@ private void createDaysOfWeekTitle() { //adding borders llDaysOfWeekTitles.setBackgroundResource(R.drawable.border_top_bottom); + LayerDrawable background = (LayerDrawable) llDaysOfWeekTitles.getBackground().mutate(); + ((GradientDrawable)background.getDrawable(0)).setStroke((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics()), settingsManager.getBorderColor()); + if (!isTitleAlreadyAdded) { addView(llDaysOfWeekTitles); } @@ -679,11 +715,13 @@ private void displaySelectedDaysRange() { CircleAnimationTextView catvStart = (CircleAnimationTextView) llRangeSelection.findViewById(R.id.catv_start); catvStart.setText(String.valueOf(days.first.getDayNumber())); + catvStart.setTextAppearance(getContext(), getDayTextAppearance()); catvStart.setTextColor(getSelectedDayTextColor()); catvStart.showAsStartCircle(this, true); CircleAnimationTextView catvEnd = (CircleAnimationTextView) llRangeSelection.findViewById(R.id.catv_end); catvEnd.setText(String.valueOf(days.second.getDayNumber())); + catvEnd.setTextAppearance(getContext(), getDayTextAppearance()); catvEnd.setTextColor(getSelectedDayTextColor()); catvEnd.showAsEndCircle(this, true); @@ -1024,6 +1062,83 @@ public void setShowDaysOfWeekTitle(boolean showDaysOfWeekTitle) { } } + @Override + public int getMonthTextAppearance() { + return settingsManager.getMonthTextAppearance(); + } + + @Override + public void setMonthTextAppearance(int monthTextAppearance) { + settingsManager.setMonthTextAppearance(monthTextAppearance); + update(); + } + + @Override + public int getWeekDayTextAppearance() { + return settingsManager.getWeekDayTextAppearance(); + } + + @Override + public void setWeekDayTextAppearance(int weekDayTextAppearance) { + settingsManager.setWeekDayTextAppearance(weekDayTextAppearance); + update(); + } + + @Override + public int getDayTextAppearance() { + return settingsManager.getDayTextAppearance(); + } + + @Override + public void setDayTextAppearance(int dayTextAppearance) { + settingsManager.setDayTextAppearance(dayTextAppearance); + update(); + } + + @Override + public boolean isMonthHorizontalLinesVisible() { + return settingsManager.isMonthHorizontalLinesVisible(); + } + + @Override + public void setMonthHorizontalLinesVisible(boolean monthHorizontalLinesVisible) { + settingsManager.isMonthHorizontalLinesVisible(); + update(); + } + + @Override + public boolean isMonthTitleBottomDivVisible() { + return settingsManager.isMonthTitleBottomDivVisible(); + } + + @Override + public void setMonthTitleBottomDivVisible(boolean monthTitleBottomDivVisible) { + settingsManager.setMonthTitleBottomDivVisible(monthTitleBottomDivVisible); + update(); + } + + @Override + public String getWeekDayFormat() { + return settingsManager.getWeekDayFormat(); + } + + @Override + public void setWeekDayFormat(String weekDayFormat) { + settingsManager.setWeekDayFormat(weekDayFormat); + update(); + } + + @Override + public int getBorderColor() { + return settingsManager.getBorderColor(); + } + + @Override + public void setBorderColor(int borderColor) { + settingsManager.setBorderColor(borderColor); + update(); + } + @Override public int getFirstDayOfWeek() { return settingsManager.getFirstDayOfWeek(); 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..6f67b5a 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 @@ -59,12 +59,21 @@ public CircleAnimationTextView(Context context, AttributeSet attrs, int defStyle super(context, attrs, defStyleAttr); } + public Integer getCalendarWidth() { + if(calendarView != null) { + return calendarView.getWidth() - calendarView.getPaddingStart() - calendarView.getPaddingEnd(); + } + + return null; + } + //Square view @Override 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); + int circleWidth = CalendarUtils.getCircleWidth(getContext(), getCalendarWidth()); + super.onMeasure(widthMeasureSpec, circleWidth + MeasureSpec.EXACTLY); } else { super.onMeasure(widthMeasureSpec, widthMeasureSpec); } @@ -301,8 +310,11 @@ private void clearVariables() { public void showAsCircle(int circleColor) { this.circleColor = circleColor; animationProgress = 100; - setWidth(CalendarUtils.getCircleWidth(getContext())); - setHeight(CalendarUtils.getCircleWidth(getContext())); + + int circleWidth = CalendarUtils.getCircleWidth(getContext(), getCalendarWidth()); + + setWidth(circleWidth); + setHeight(circleWidth); requestLayout(); } @@ -343,8 +355,11 @@ public void showAsRange(CalendarView calendarView) { clearVariables(); this.calendarView = calendarView; selectionState = SelectionState.RANGE_DAY; - setWidth(CalendarUtils.getCircleWidth(getContext()) / 2); - setHeight(CalendarUtils.getCircleWidth(getContext())); + + int circleWidth = CalendarUtils.getCircleWidth(getContext(), getCalendarWidth()); + + setWidth(circleWidth / 2); + setHeight(circleWidth); requestLayout(); } diff --git a/cosmocalendar/src/main/res/layout/view_month.xml b/cosmocalendar/src/main/res/layout/view_month.xml index 5cdc203..37301e5 100644 --- a/cosmocalendar/src/main/res/layout/view_month.xml +++ b/cosmocalendar/src/main/res/layout/view_month.xml @@ -3,12 +3,14 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical"> + android:orientation="vertical" + android:paddingBottom="@dimen/space_1x" + android:paddingTop="@dimen/space_1x"> @@ -43,9 +44,21 @@ + + + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/space_1x"/> diff --git a/cosmocalendar/src/main/res/values/attrs.xml b/cosmocalendar/src/main/res/values/attrs.xml index cdfd40d..060a607 100644 --- a/cosmocalendar/src/main/res/values/attrs.xml +++ b/cosmocalendar/src/main/res/values/attrs.xml @@ -64,5 +64,19 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a91a603..766dce8 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 +#Wed Dec 26 12:40:06 BDT 2018 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-4.6-all.zip diff --git a/sample/build.gradle b/sample/build.gradle index 203182b..4a5c3e6 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 17 - 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:appcompat-v7:28.0.0' + implementation "com.android.support:recyclerview-v7:28.0.0" } diff --git a/sample/src/main/java/com/applikeysolutions/cosmocalendar/sample/DefaultCalendarActivity.java b/sample/src/main/java/com/applikeysolutions/cosmocalendar/sample/DefaultCalendarActivity.java index 27cc675..944cfa4 100644 --- a/sample/src/main/java/com/applikeysolutions/cosmocalendar/sample/DefaultCalendarActivity.java +++ b/sample/src/main/java/com/applikeysolutions/cosmocalendar/sample/DefaultCalendarActivity.java @@ -53,6 +53,9 @@ private void initViews() { calendarView = (CalendarView) findViewById(R.id.calendar_view); ((RadioGroup) findViewById(R.id.rg_orientation)).setOnCheckedChangeListener(this); ((RadioGroup) findViewById(R.id.rg_selection_type)).setOnCheckedChangeListener(this); + + calendarView.setShowDaysOfWeekTitle(false); + calendarView.setShowDaysOfWeek(true); } private void createCriterias() { diff --git a/sample/src/main/res/font/circularstd_bold.otf b/sample/src/main/res/font/circularstd_bold.otf new file mode 100755 index 0000000..9b61395 Binary files /dev/null and b/sample/src/main/res/font/circularstd_bold.otf differ diff --git a/sample/src/main/res/font/circularstd_book.otf b/sample/src/main/res/font/circularstd_book.otf new file mode 100755 index 0000000..3a1f1ad Binary files /dev/null and b/sample/src/main/res/font/circularstd_book.otf differ diff --git a/sample/src/main/res/font/circularstd_book_italic.otf b/sample/src/main/res/font/circularstd_book_italic.otf new file mode 100755 index 0000000..facc6d2 Binary files /dev/null and b/sample/src/main/res/font/circularstd_book_italic.otf differ diff --git a/sample/src/main/res/font/circularstd_family.xml b/sample/src/main/res/font/circularstd_family.xml new file mode 100644 index 0000000..7d0d51c --- /dev/null +++ b/sample/src/main/res/font/circularstd_family.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sample/src/main/res/font/circularstd_medium.otf b/sample/src/main/res/font/circularstd_medium.otf new file mode 100755 index 0000000..7541a5a Binary files /dev/null and b/sample/src/main/res/font/circularstd_medium.otf differ diff --git a/sample/src/main/res/layout/activity_default_calendar.xml b/sample/src/main/res/layout/activity_default_calendar.xml index 9ae1908..7aa1812 100644 --- a/sample/src/main/res/layout/activity_default_calendar.xml +++ b/sample/src/main/res/layout/activity_default_calendar.xml @@ -2,6 +2,7 @@ diff --git a/sample/src/main/res/values/styles.xml b/sample/src/main/res/values/styles.xml index 4e88d0a..a81609c 100644 --- a/sample/src/main/res/values/styles.xml +++ b/sample/src/main/res/values/styles.xml @@ -4,4 +4,29 @@ @color/colorPrimaryDark @color/colorAccent + + + + + + + +