From bd820f92816bf833fe239cdc66f9358589c78b41 Mon Sep 17 00:00:00 2001 From: Hani Hashemi Date: Sat, 18 Aug 2018 15:37:59 +0300 Subject: [PATCH 01/12] Update android plugin to 3.1.4 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index f09a2f3..2ca520a 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.0' + classpath 'com.android.tools.build:gradle:3.1.4' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' From eba20208ac6099d508e93b3a99a9e55ec8215343 Mon Sep 17 00:00:00 2001 From: Hani Hashemi Date: Sat, 18 Aug 2018 15:44:34 +0300 Subject: [PATCH 02/12] Change minSdkVersion to 15, update support library --- app/build.gradle | 2 +- collapsiblecalendarview2/build.gradle | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 66432e0..8772b19 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,7 +24,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.android.support:appcompat-v7:27.0.2' + implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support.constraint:constraint-layout:1.0.2' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' diff --git a/collapsiblecalendarview2/build.gradle b/collapsiblecalendarview2/build.gradle index f31a9a6..0011a62 100644 --- a/collapsiblecalendarview2/build.gradle +++ b/collapsiblecalendarview2/build.gradle @@ -5,10 +5,8 @@ group = 'com.github.shrikanth7698' android { compileSdkVersion 27 - - defaultConfig { - minSdkVersion 21 + minSdkVersion 15 targetSdkVersion 27 versionCode 1 versionName "1.0" @@ -26,13 +24,12 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } - } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.android.support:appcompat-v7:27.0.2' + implementation 'com.android.support:appcompat-v7:27.1.1' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' From a1da8d256268f39e262fc644ce92f21697d1efe1 Mon Sep 17 00:00:00 2001 From: Antonio Altieri Date: Thu, 23 Aug 2018 11:45:12 +0200 Subject: [PATCH 03/12] Set the event dot size, small or big --- .idea/misc.xml | 18 +++++-- .idea/modules.xml | 1 + app/build.gradle | 19 ++++--- .../ExampleInstrumentedTest.java | 4 +- .../collapsiblecalendarview/MainActivity.java | 4 +- app/src/main/res/layout/activity_main.xml | 1 + collapsiblecalendarview2/build.gradle | 18 ++++--- .../ExampleInstrumentedTest.java | 4 +- .../data/CalendarAdapter.java | 12 ++++- .../view/ExpandIconView.java | 8 +-- .../widget/CollapsibleCalendar.java | 4 +- .../widget/UICalendar.java | 17 +++++- .../src/main/res/layout/day_layout.xml | 52 +++++++++++-------- .../src/main/res/layout/day_layout_small.xml | 43 +++++++++++++++ .../src/main/res/values/attrs.xml | 5 +- gradle.properties | 2 + 16 files changed, 158 insertions(+), 54 deletions(-) create mode 100644 collapsiblecalendarview2/src/main/res/layout/day_layout_small.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 3aa0ad5..017bb55 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,21 +5,33 @@ @@ -43,7 +55,7 @@ - + diff --git a/.idea/modules.xml b/.idea/modules.xml index afcb1bd..5f5ccf5 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,6 +2,7 @@ + diff --git a/app/build.gradle b/app/build.gradle index 66432e0..58224db 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,14 +2,14 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 27 + compileSdkVersion 28 defaultConfig { applicationId "com.shrikanthravi.collapsiblecalendarview" minSdkVersion 21 - targetSdkVersion 27 + targetSdkVersion 28 versionCode 1 versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } dexOptions { preDexLibraries = false @@ -20,14 +20,19 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + compileOptions { + sourceCompatibility = '1.8' + targetCompatibility = '1.8' + } + buildToolsVersion = '28.0.2' } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.android.support:appcompat-v7:27.0.2' - implementation 'com.android.support.constraint:constraint-layout:1.0.2' + implementation 'androidx.appcompat:appcompat:1.0.0-rc01' + implementation 'androidx.constraintlayout:constraintlayout:1.1.2' testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.1' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' + androidTestImplementation 'androidx.test:runner:1.1.0-alpha4' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4' implementation project(':collapsiblecalendarview2') } diff --git a/app/src/androidTest/java/com/shrikanthravi/collapsiblecalendarview/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/shrikanthravi/collapsiblecalendarview/ExampleInstrumentedTest.java index 5762c9f..b0c94c2 100644 --- a/app/src/androidTest/java/com/shrikanthravi/collapsiblecalendarview/ExampleInstrumentedTest.java +++ b/app/src/androidTest/java/com/shrikanthravi/collapsiblecalendarview/ExampleInstrumentedTest.java @@ -1,8 +1,8 @@ package com.shrikanthravi.collapsiblecalendarview; import android.content.Context; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; +import androidx.test.InstrumentationRegistry; +import androidx.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/app/src/main/java/com/shrikanthravi/collapsiblecalendarview/MainActivity.java b/app/src/main/java/com/shrikanthravi/collapsiblecalendarview/MainActivity.java index 73495d7..1c16cd5 100644 --- a/app/src/main/java/com/shrikanthravi/collapsiblecalendarview/MainActivity.java +++ b/app/src/main/java/com/shrikanthravi/collapsiblecalendarview/MainActivity.java @@ -1,15 +1,13 @@ package com.shrikanthravi.collapsiblecalendarview; import android.graphics.Color; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import com.shrikanthravi.collapsiblecalendarview.widget.CollapsibleCalendar; -import com.shrikanthravi.collapsiblecalendarview.widget.UICalendar; import java.util.Calendar; -import java.util.Date; import java.util.GregorianCalendar; diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 0818ea0..6b4bb8e 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -19,5 +19,6 @@ app:buttonRight_drawableTintColor="@android:color/white" app:expandIconColor="@android:color/white" app:eventColor="@android:color/white" + app:eventDotSize="small" > diff --git a/collapsiblecalendarview2/build.gradle b/collapsiblecalendarview2/build.gradle index f31a9a6..46e95c1 100644 --- a/collapsiblecalendarview2/build.gradle +++ b/collapsiblecalendarview2/build.gradle @@ -3,17 +3,17 @@ apply plugin: 'com.github.dcendents.android-maven' group = 'com.github.shrikanth7698' android { - compileSdkVersion 27 + compileSdkVersion 28 defaultConfig { minSdkVersion 21 - targetSdkVersion 27 + targetSdkVersion 28 versionCode 1 versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } dexOptions { @@ -26,14 +26,20 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + compileOptions { + sourceCompatibility = '1.8' + targetCompatibility = '1.8' + } + buildToolsVersion = '28.0.2' } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.android.support:appcompat-v7:27.0.2' + implementation 'androidx.appcompat:appcompat:1.0.0-beta01' testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.1' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' + androidTestImplementation 'androidx.test:runner:1.1.0-alpha4' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4' + implementation 'androidx.constraintlayout:constraintlayout:1.1.2' } diff --git a/collapsiblecalendarview2/src/androidTest/java/com/shrikanthravi/collapsiblecalendarview/ExampleInstrumentedTest.java b/collapsiblecalendarview2/src/androidTest/java/com/shrikanthravi/collapsiblecalendarview/ExampleInstrumentedTest.java index 2671c9b..49806aa 100644 --- a/collapsiblecalendarview2/src/androidTest/java/com/shrikanthravi/collapsiblecalendarview/ExampleInstrumentedTest.java +++ b/collapsiblecalendarview2/src/androidTest/java/com/shrikanthravi/collapsiblecalendarview/ExampleInstrumentedTest.java @@ -1,8 +1,8 @@ package com.shrikanthravi.collapsiblecalendarview; import android.content.Context; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; +import androidx.test.InstrumentationRegistry; +import androidx.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java index 5f3351a..45303fa 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java @@ -9,6 +9,7 @@ import android.widget.TextView; import com.shrikanthravi.collapsiblecalendarview.R; +import com.shrikanthravi.collapsiblecalendarview.widget.UICalendar; import java.util.ArrayList; import java.util.Calendar; @@ -22,6 +23,7 @@ public class CalendarAdapter { private int mFirstDayOfWeek = 0; private Calendar mCal; private LayoutInflater mInflater; + private int mEventDotSize= UICalendar.EVENT_DOT_BIG; List mItemList = new ArrayList<>(); List mViewList = new ArrayList<>(); @@ -30,7 +32,6 @@ public class CalendarAdapter { public CalendarAdapter(Context context, Calendar cal) { this.mCal = (Calendar) cal.clone(); this.mCal.set(Calendar.DAY_OF_MONTH, 1); - mInflater = LayoutInflater.from(context); refresh(); @@ -52,6 +53,9 @@ public View getView(final int position) { public void setFirstDayOfWeek(int firstDayOfWeek) { mFirstDayOfWeek = firstDayOfWeek; } + public void setEventDotSize(int eventDotSize) { + mEventDotSize = eventDotSize; + } public Calendar getCalendar() { return mCal; @@ -111,8 +115,12 @@ public void refresh() { } Day day = new Day(numYear, numMonth, numDay); + View view; + if(mEventDotSize==UICalendar.EVENT_DOT_SMALL) + view = mInflater.inflate(R.layout.day_layout_small, null); + else + view = mInflater.inflate(R.layout.day_layout, null); - View view = mInflater.inflate(R.layout.day_layout, null); TextView txtDay = (TextView) view.findViewById(R.id.txt_day); ImageView imgEventTag = (ImageView) view.findViewById(R.id.img_event_tag); diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/view/ExpandIconView.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/view/ExpandIconView.java index 44ace25..8130db2 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/view/ExpandIconView.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/view/ExpandIconView.java @@ -28,10 +28,10 @@ import android.graphics.Path; import android.graphics.Point; import android.os.Build; -import android.support.annotation.FloatRange; -import android.support.annotation.IntDef; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.FloatRange; +import androidx.annotation.IntDef; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.util.AttributeSet; import android.view.View; import android.view.animation.DecelerateInterpolator; diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java index 5c1a972..45f6c59 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java @@ -61,9 +61,10 @@ protected void init(Context context) { super.init(context); - + int size=getEventDotSize(); Calendar cal = Calendar.getInstance(); CalendarAdapter adapter = new CalendarAdapter(context, cal); + adapter.setEventDotSize(getEventDotSize()); setAdapter(adapter); @@ -182,6 +183,7 @@ protected void redraw() { @Override protected void reload() { if (mAdapter != null) { + mAdapter.setEventDotSize(getEventDotSize()); mAdapter.refresh(); // reset UI diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java index 8c9bc4a..4c3f268 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java @@ -38,6 +38,8 @@ public abstract class UICalendar extends LinearLayout { public static final int STATE_EXPANDED = 0; public static final int STATE_COLLAPSED = 1; public static final int STATE_PROCESSING = 2; + public static final int EVENT_DOT_BIG = 0; + public static final int EVENT_DOT_SMALL = 1; protected Context mContext; protected LayoutInflater mInflater; @@ -84,6 +86,8 @@ public abstract class UICalendar extends LinearLayout { private int mExpandIconColor = Color.BLACK; private int mEventColor=Color.BLACK; + private int mEventDotSize=EVENT_DOT_BIG; + public UICalendar(Context context) { this(context, null); } @@ -143,7 +147,7 @@ protected void setAttributes(TypedArray attrs) { setPrimaryColor(attrs.getColor(R.styleable.UICalendar_primaryColor, mPrimaryColor)); setEventColor(attrs.getColor(R.styleable.UICalendar_eventColor, mEventColor)); - + setEventDotSize(attrs.getInt(R.styleable.UICalendar_eventDotSize, mEventDotSize)); setTodayItemTextColor(attrs.getColor( R.styleable.UICalendar_todayItem_textColor, mTodayItemTextColor)); @@ -273,6 +277,17 @@ private void setEventColor(int eventColor) { this.mEventColor = eventColor; redraw(); + } + + private void setEventDotSize(int eventDotSize) { + this.mEventDotSize = eventDotSize; + redraw(); + + } + + public int getEventDotSize() { + return mEventDotSize; + } public int getEventColor() { return mEventColor; diff --git a/collapsiblecalendarview2/src/main/res/layout/day_layout.xml b/collapsiblecalendarview2/src/main/res/layout/day_layout.xml index b94b72e..7e01250 100644 --- a/collapsiblecalendarview2/src/main/res/layout/day_layout.xml +++ b/collapsiblecalendarview2/src/main/res/layout/day_layout.xml @@ -1,35 +1,43 @@ - - + android:paddingRight="5dp" + android:paddingBottom="2dp" + android:textColor="@android:color/black" + android:textSize="13sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + - + - - \ No newline at end of file + \ No newline at end of file diff --git a/collapsiblecalendarview2/src/main/res/layout/day_layout_small.xml b/collapsiblecalendarview2/src/main/res/layout/day_layout_small.xml new file mode 100644 index 0000000..3338e21 --- /dev/null +++ b/collapsiblecalendarview2/src/main/res/layout/day_layout_small.xml @@ -0,0 +1,43 @@ + + + + + + + + + + \ No newline at end of file diff --git a/collapsiblecalendarview2/src/main/res/values/attrs.xml b/collapsiblecalendarview2/src/main/res/values/attrs.xml index 2caaecb..4523f0d 100644 --- a/collapsiblecalendarview2/src/main/res/values/attrs.xml +++ b/collapsiblecalendarview2/src/main/res/values/attrs.xml @@ -35,7 +35,10 @@ - + + + + diff --git a/gradle.properties b/gradle.properties index aac7c9b..9e6fce1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,6 +9,8 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. +android.enableJetifier=true +android.useAndroidX=true org.gradle.jvmargs=-Xmx1536m # When configured, Gradle will run in incubating parallel mode. From 662460d0756975f9951c9c2a78b4fab99e31f9c4 Mon Sep 17 00:00:00 2001 From: Antonio Altieri Date: Thu, 23 Aug 2018 14:03:36 +0200 Subject: [PATCH 04/12] Swipe events added --- .../listener/OnSwipeTouchListener.java | 75 +++++++++++++++++++ .../view/LockScrollView.java | 5 +- .../widget/CollapsibleCalendar.java | 31 +++++++- .../widget/UICalendar.java | 1 + 4 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/listener/OnSwipeTouchListener.java diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/listener/OnSwipeTouchListener.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/listener/OnSwipeTouchListener.java new file mode 100644 index 0000000..658da5e --- /dev/null +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/listener/OnSwipeTouchListener.java @@ -0,0 +1,75 @@ +package com.shrikanthravi.collapsiblecalendarview.listener; + +import android.content.Context; +import android.view.GestureDetector; +import android.view.GestureDetector.SimpleOnGestureListener; +import android.view.MotionEvent; +import android.view.View; +import android.view.View.OnTouchListener; + +public class OnSwipeTouchListener implements OnTouchListener { + + private final GestureDetector gestureDetector; + + public OnSwipeTouchListener (Context ctx){ + gestureDetector = new GestureDetector(ctx, new GestureListener()); + } + + @Override + public boolean onTouch(View v, MotionEvent event) { + return gestureDetector.onTouchEvent(event); + } + + private final class GestureListener extends SimpleOnGestureListener { + + private static final int SWIPE_THRESHOLD = 100; + private static final int SWIPE_VELOCITY_THRESHOLD = 100; + + @Override + public boolean onDown(MotionEvent e) { + return true; + } + + @Override + public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { + boolean result = false; + try { + float diffY = e2.getY() - e1.getY(); + float diffX = e2.getX() - e1.getX(); + if (Math.abs(diffX) > Math.abs(diffY)) { + if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { + if (diffX > 0) { + onSwipeRight(); + } else { + onSwipeLeft(); + } + result = true; + } + } + else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) { + if (diffY > 0) { + onSwipeBottom(); + } else { + onSwipeTop(); + } + result = true; + } + } catch (Exception exception) { + exception.printStackTrace(); + } + return result; + } + } + + public void onSwipeRight() { + } + + public void onSwipeLeft() { + } + + public void onSwipeTop() { + } + + public void onSwipeBottom() { + } +} \ No newline at end of file diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/view/LockScrollView.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/view/LockScrollView.java index 5f8397e..bbc7135 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/view/LockScrollView.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/view/LockScrollView.java @@ -3,13 +3,14 @@ import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; +import android.view.View; import android.widget.ScrollView; /** * Created by shrikanthravi on 07/03/18. */ -public class LockScrollView extends ScrollView { +public class LockScrollView extends ScrollView { public LockScrollView(Context context) { super(context); } @@ -24,10 +25,12 @@ public LockScrollView(Context context, AttributeSet attrs, int defStyleAttr) { @Override public boolean onInterceptTouchEvent(MotionEvent ev) { + super.onInterceptTouchEvent(ev); return false; } @Override public boolean onTouchEvent(MotionEvent ev) { + super.onTouchEvent(ev); return false; } } diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java index 45f6c59..0c154c7 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java @@ -25,6 +25,7 @@ import com.shrikanthravi.collapsiblecalendarview.data.CalendarAdapter; import com.shrikanthravi.collapsiblecalendarview.data.Day; import com.shrikanthravi.collapsiblecalendarview.data.Event; +import com.shrikanthravi.collapsiblecalendarview.listener.OnSwipeTouchListener; import com.shrikanthravi.collapsiblecalendarview.view.ExpandIconView; import java.text.SimpleDateFormat; @@ -71,7 +72,7 @@ protected void init(Context context) { // bind events - + mLayoutRoot.setOnTouchListener(getSwipeTouchListener()); mBtnPrevMonth.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -126,6 +127,33 @@ public void run() { } + private OnSwipeTouchListener getSwipeTouchListener() { + return new OnSwipeTouchListener(getContext()) { + public void onSwipeTop() { + collapse(400); + + } + public void onSwipeLeft() { + if (getState() == STATE_COLLAPSED) + nextWeek(); + else if (getState() == STATE_EXPANDED) + nextMonth(); + } + public void onSwipeRight() { + if (getState() == STATE_COLLAPSED) { + prevWeek(); + } + else if (getState() == STATE_EXPANDED) { + prevMonth(); + } + } + public void onSwipeBottom() { + expand(400); + } + + }; + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); @@ -237,6 +265,7 @@ protected void reload() { 0, ViewGroup.LayoutParams.WRAP_CONTENT, 1)); + view.setOnTouchListener(getSwipeTouchListener()); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java index 4c3f268..a4ab78e 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java @@ -19,6 +19,7 @@ import com.shrikanthravi.collapsiblecalendarview.R; import com.shrikanthravi.collapsiblecalendarview.data.Day; +import com.shrikanthravi.collapsiblecalendarview.listener.OnSwipeTouchListener; import com.shrikanthravi.collapsiblecalendarview.view.ExpandIconView; import com.shrikanthravi.collapsiblecalendarview.view.LockScrollView; From ee1eead465e3619511dded04c21bb8edf32a26fa Mon Sep 17 00:00:00 2001 From: Antonio Altieri Date: Thu, 23 Aug 2018 14:58:05 +0200 Subject: [PATCH 05/12] Solved a problem occurring when tapping on a date --- .idea/caches/build_file_checksums.ser | Bin 609 -> 564 bytes .../listener/OnSwipeTouchListener.java | 2 +- .../view/LockScrollView.java | 2 -- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 97e2d1ba6379e461961f934a6702749e4f943721..29eb6a3f8d416314f366fa917464391ce14473b5 100644 GIT binary patch delta 240 zcmaFJvV~>Bbk@{loAZJb=lEE&l`se-78JxJm1gFo=%p7WrsSlS7BMhIJFWRF{)3Gp z4V)}%AaxSB^C#uFmhB^i|klI66la3wU@AZD~ z>Cbmf`2^HU7_^+NVnT~ki;80$^GfpbGV^1gw#7g!o&11NbaE`CkQje)YDr0EUV1Ui zHDE(0^D&A|zQrglc_v!p`M$Wq^~)1QlD=$jPAy>&L>M5L`^J1qm(yl0Mdb|}Jm+5C GSOEYxm|9T) delta 256 zcmdnO@{nc1bk?N8`(-aD&hd$2FJa&>PAw_P%u6rUOD{@H$w@6OVql7PTJu@_2OCGo z111KBiUI}(27%;BJ&Cs&?37(SQlAa zG0U%nfd?cm;PGwY2Xh;NHybPUZ(p625jpt=qpa|(q%J2D_cooZKj~bj6$G}FFbD$e zkQU$48z+42YsaJ56TuH$Z=|j(VGu|xC;(d^n7Q{Z|K^J?9IU3Zz4~#Xa&83xrDSE{ diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/listener/OnSwipeTouchListener.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/listener/OnSwipeTouchListener.java index 658da5e..86d3912 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/listener/OnSwipeTouchListener.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/listener/OnSwipeTouchListener.java @@ -27,7 +27,7 @@ private final class GestureListener extends SimpleOnGestureListener { @Override public boolean onDown(MotionEvent e) { - return true; + return false; } @Override diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/view/LockScrollView.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/view/LockScrollView.java index bbc7135..353ea5e 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/view/LockScrollView.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/view/LockScrollView.java @@ -25,12 +25,10 @@ public LockScrollView(Context context, AttributeSet attrs, int defStyleAttr) { @Override public boolean onInterceptTouchEvent(MotionEvent ev) { - super.onInterceptTouchEvent(ev); return false; } @Override public boolean onTouchEvent(MotionEvent ev) { - super.onTouchEvent(ev); return false; } } From d7ac2da2a5d95a27ad095720342e4faf9da79b7f Mon Sep 17 00:00:00 2001 From: Balakrishnan S <97balakrishnan@gmail.com> Date: Mon, 8 Oct 2018 14:34:01 +0530 Subject: [PATCH 06/12] Create issue_template.md --- issue_template.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 issue_template.md diff --git a/issue_template.md b/issue_template.md new file mode 100644 index 0000000..4647433 --- /dev/null +++ b/issue_template.md @@ -0,0 +1,5 @@ +## Issue title +### Expected behavior and actual behavior: +### Steps to reproduce the problem: +### Specifications (like the version of the project, operating system, or hardware): +### Screenshots: From e67c3f9913b4846e0e5ca30b4f288e6f13b41fc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Sch=C3=BCrg?= Date: Sat, 10 Nov 2018 09:14:09 +0100 Subject: [PATCH 07/12] Updated to gradle 4.6, set android sdk to 28 and cleaned up dependencies. --- app/build.gradle | 14 +++++++------- build.gradle | 7 +++---- collapsiblecalendarview2/build.gradle | 14 +++++--------- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 4 files changed, 17 insertions(+), 22 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c6e3fe4..afd4213 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,15 +24,15 @@ android { sourceCompatibility = '1.8' targetCompatibility = '1.8' } - buildToolsVersion = '28.0.2' } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.android.support:appcompat-v7:27.1.1' - implementation 'com.android.support.constraint:constraint-layout:1.0.2' - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.1.0-alpha4' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4' implementation project(':collapsiblecalendarview2') + implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2' + + testImplementation 'junit:junit:4.12' + + androidTestImplementation 'androidx.test:runner:1.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' } diff --git a/build.gradle b/build.gradle index 2ca520a..748f61c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,15 +1,14 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - + repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' - classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' - + classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/collapsiblecalendarview2/build.gradle b/collapsiblecalendarview2/build.gradle index c62379d..e1af48b 100644 --- a/collapsiblecalendarview2/build.gradle +++ b/collapsiblecalendarview2/build.gradle @@ -29,18 +29,14 @@ android { sourceCompatibility = '1.8' targetCompatibility = '1.8' } - buildToolsVersion = '28.0.2' - - } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - - implementation 'com.android.support:appcompat-v7:27.1.1' + implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.1.0-alpha4' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4' - implementation 'androidx.constraintlayout:constraintlayout:1.1.2' + + androidTestImplementation 'androidx.test:runner:1.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 06e2a04..e556ab6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Mar 06 20:01:26 IST 2018 +#Fri Nov 09 15:35:52 CET 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip From fd97a3e4a21086580f43b8b0c7b07f2ac4f5ba0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Sch=C3=BCrg?= Date: Sat, 10 Nov 2018 14:18:45 +0100 Subject: [PATCH 08/12] Ignoring all idea files but codeStyle. --- .gitignore | 7 +++ .idea/caches/build_file_checksums.ser | Bin 564 -> 0 bytes .idea/dictionaries/shrikanthravi.xml | 3 - .idea/gradle.xml | 19 ------- .idea/misc.xml | 79 -------------------------- .idea/modules.xml | 11 ---- .idea/runConfigurations.xml | 12 ---- .idea/vcs.xml | 6 -- 8 files changed, 7 insertions(+), 130 deletions(-) delete mode 100644 .idea/caches/build_file_checksums.ser delete mode 100644 .idea/dictionaries/shrikanthravi.xml delete mode 100644 .idea/gradle.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/runConfigurations.xml delete mode 100644 .idea/vcs.xml diff --git a/.gitignore b/.gitignore index 39fb081..11b45d2 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,10 @@ /build /captures .externalNativeBuild +.idea/vcs.xml +.idea/runConfigurations.xml +.idea/modules.xml +.idea/misc.xml +.idea/gradle.xml +.idea/dictionaries/shrikanthravi.xml +.idea/caches/build_file_checksums.ser diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser deleted file mode 100644 index 29eb6a3f8d416314f366fa917464391ce14473b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmZ4UmVvdnh`~NNKUXg?FQq6yGexf?KR>5fFEb@IQ7^qHF(oHeub?PDD>b=9F91S2 zm1gFoxMk*~I%lLNXBU^|7Q2L-Ts|(GuF1r}Q#7BMhIJFWRF{)3GpQXSa$-(uUP@w7S!Qav5vp;840Q}_AQKK(2%qz*y%gm2~x*-M;!Ud^CC7G$krEp`e$oAaqXV}E@vVn8Pn;%Yf zz_2P#Eh)*&OD~4`0IoK9QcvP-20LY!n&!9-iJbO8@8;wK-3p3241>=^Ydqf - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 78693c7..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 017bb55..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - Android - - - - - Android - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 5f5ccf5..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 568da1edb4a12916455708bea1e5fe7d689173ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Sch=C3=BCrg?= Date: Sat, 10 Nov 2018 14:53:25 +0100 Subject: [PATCH 09/12] Replaced Day.java by LocalDate. --- app/build.gradle | 1 + .../collapsiblecalendarview/MainActivity.java | 3 +- collapsiblecalendarview2/build.gradle | 1 + .../data/CalendarAdapter.java | 26 ++++--- .../collapsiblecalendarview/data/Day.java | 67 ------------------- .../widget/CollapsibleCalendar.java | 48 +++++-------- .../widget/UICalendar.java | 17 ++--- 7 files changed, 44 insertions(+), 119 deletions(-) delete mode 100644 collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/Day.java diff --git a/app/build.gradle b/app/build.gradle index afd4213..78e765a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -30,6 +30,7 @@ dependencies { implementation project(':collapsiblecalendarview2') implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2' + implementation 'com.jakewharton.threetenabp:threetenabp:1.1.1' testImplementation 'junit:junit:4.12' diff --git a/app/src/main/java/com/shrikanthravi/collapsiblecalendarview/MainActivity.java b/app/src/main/java/com/shrikanthravi/collapsiblecalendarview/MainActivity.java index 1c16cd5..3066276 100644 --- a/app/src/main/java/com/shrikanthravi/collapsiblecalendarview/MainActivity.java +++ b/app/src/main/java/com/shrikanthravi/collapsiblecalendarview/MainActivity.java @@ -3,6 +3,7 @@ import android.graphics.Color; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; +import android.util.Log; import android.view.View; import com.shrikanthravi.collapsiblecalendarview.widget.CollapsibleCalendar; @@ -26,7 +27,7 @@ protected void onCreate(Bundle savedInstanceState) { today.add(Calendar.DATE,1); collapsibleCalendar.addEventTag(today.get(Calendar.YEAR),today.get(Calendar.MONTH),today.get(Calendar.DAY_OF_MONTH),Color.BLUE); - System.out.println("Testing date "+collapsibleCalendar.getSelectedDay().getDay()+"/"+collapsibleCalendar.getSelectedDay().getMonth()+"/"+collapsibleCalendar.getSelectedDay().getYear()); + Log.d("Testing date ", collapsibleCalendar.getSelectedDay().toString()); collapsibleCalendar.setCalendarListener(new CollapsibleCalendar.CalendarListener() { @Override public void onDaySelect() { diff --git a/collapsiblecalendarview2/build.gradle b/collapsiblecalendarview2/build.gradle index e1af48b..f3284bc 100644 --- a/collapsiblecalendarview2/build.gradle +++ b/collapsiblecalendarview2/build.gradle @@ -34,6 +34,7 @@ android { dependencies { implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'com.jakewharton.threetenabp:threetenabp:1.1.1' testImplementation 'junit:junit:4.12' diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java index 45303fa..fea2f1b 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java @@ -11,6 +11,10 @@ import com.shrikanthravi.collapsiblecalendarview.R; import com.shrikanthravi.collapsiblecalendarview.widget.UICalendar; +import org.threeten.bp.LocalDate; +import org.threeten.bp.LocalTime; +import org.threeten.bp.Month; + import java.util.ArrayList; import java.util.Calendar; import java.util.List; @@ -25,9 +29,9 @@ public class CalendarAdapter { private LayoutInflater mInflater; private int mEventDotSize= UICalendar.EVENT_DOT_BIG; - List mItemList = new ArrayList<>(); - List mViewList = new ArrayList<>(); - List mEventList = new ArrayList<>(); + List mItemList = new ArrayList<>(); + List mViewList = new ArrayList<>(); + List mEventList = new ArrayList<>(); public CalendarAdapter(Context context, Calendar cal) { this.mCal = (Calendar) cal.clone(); @@ -42,7 +46,7 @@ public int getCount() { return mItemList.size(); } - public Day getItem(int position) { + public LocalDate getItem(int position) { return mItemList.get(position); } @@ -114,26 +118,26 @@ public void refresh() { numDay = i; } - Day day = new Day(numYear, numMonth, numDay); + LocalDate day = LocalDate.of(numYear, numMonth + 1, numDay); View view; if(mEventDotSize==UICalendar.EVENT_DOT_SMALL) view = mInflater.inflate(R.layout.day_layout_small, null); else view = mInflater.inflate(R.layout.day_layout, null); - TextView txtDay = (TextView) view.findViewById(R.id.txt_day); - ImageView imgEventTag = (ImageView) view.findViewById(R.id.img_event_tag); + TextView txtDay = view.findViewById(R.id.txt_day); + ImageView imgEventTag = view.findViewById(R.id.img_event_tag); - txtDay.setText(String.valueOf(day.getDay())); - if (day.getMonth() != mCal.get(Calendar.MONTH)) { + txtDay.setText(String.valueOf(day.getDayOfMonth())); + if (day.getMonthValue() -1 != mCal.get(Calendar.MONTH)) { txtDay.setAlpha(0.3f); } for (int j = 0; j < mEventList.size(); j++) { Event event = mEventList.get(j); if (day.getYear() == event.getYear() - && day.getMonth() == event.getMonth() - && day.getDay() == event.getDay()) { + && day.getMonthValue() == event.getMonth() + && day.getDayOfMonth() == event.getDay()) { imgEventTag.setVisibility(View.VISIBLE); imgEventTag.setColorFilter(event.getColor(),PorterDuff.Mode.SRC_ATOP); } diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/Day.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/Day.java deleted file mode 100644 index 0c2b1a5..0000000 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/Day.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.shrikanthravi.collapsiblecalendarview.data; - -import android.content.Intent; -import android.os.Parcel; -import android.os.Parcelable; - -/** - * Created by shrikanthravi on 06/03/18. - */ - -public class Day implements Parcelable{ - - private int mYear; - private int mMonth; - private int mDay; - - public Day(int year, int month, int day){ - this.mYear = year; - this.mMonth = month; - this.mDay = day; - } - - public int getMonth(){ - return mMonth; - } - - public int getYear(){ - return mYear; - } - - public int getDay(){ - return mDay; - } - - - - public Day(Parcel in){ - int[] data = new int[3]; - in.readIntArray(data); - this.mYear = data[0]; - this.mMonth = data[1]; - this.mYear = data[2]; - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeIntArray(new int[] {this.mYear, - this.mMonth, - this.mDay}); - } - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - public Day createFromParcel(Parcel in) { - return new Day(in); - } - - public Day[] newArray(int size) { - return new Day[size]; - } - }; - - -} diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java index 0c154c7..0734370 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java @@ -9,8 +9,6 @@ import android.graphics.Color; import android.os.Handler; import android.util.AttributeSet; -import android.view.GestureDetector; -import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; @@ -23,11 +21,12 @@ import com.shrikanthravi.collapsiblecalendarview.R; import com.shrikanthravi.collapsiblecalendarview.data.CalendarAdapter; -import com.shrikanthravi.collapsiblecalendarview.data.Day; import com.shrikanthravi.collapsiblecalendarview.data.Event; import com.shrikanthravi.collapsiblecalendarview.listener.OnSwipeTouchListener; import com.shrikanthravi.collapsiblecalendarview.view.ExpandIconView; +import org.threeten.bp.LocalDate; + import java.text.SimpleDateFormat; import java.util.Calendar; @@ -187,9 +186,9 @@ protected void redraw() { // redraw all views of day if (mAdapter != null) { for (int i = 0; i < mAdapter.getCount(); i++) { - Day day = mAdapter.getItem(i); + LocalDate day = mAdapter.getItem(i); View view = mAdapter.getView(i); - TextView txtDay = (TextView) view.findViewById(R.id.txt_day); + TextView txtDay = view.findViewById(R.id.txt_day); txtDay.setBackgroundColor(Color.TRANSPARENT); txtDay.setTextColor(getTextColor()); @@ -296,17 +295,17 @@ private int getSuitableRowIndex() { } } - public void onItemClicked(View view, Day day) { + public void onItemClicked(View view, LocalDate day) { select(day); Calendar cal = mAdapter.getCalendar(); int newYear = day.getYear(); - int newMonth = day.getMonth(); + int newMonth = day.getMonthValue() - 1; int oldYear = cal.get(Calendar.YEAR); int oldMonth = cal.get(Calendar.MONTH); if (newMonth != oldMonth) { - cal.set(day.getYear(), day.getMonth(), 1); + cal.set(day.getYear(), day.getMonthValue() -1, 1); if (newYear > oldYear || newMonth > oldMonth) { mCurrentWeekIndex = 0; @@ -402,43 +401,32 @@ public int getMonth() { return mAdapter.getCalendar().get(Calendar.MONTH); } - public Day getSelectedDay() { + public LocalDate getSelectedDay() { if (getSelectedItem()==null){ Calendar cal = Calendar.getInstance(); int day = cal.get(Calendar.DAY_OF_MONTH); int month = cal.get(Calendar.MONTH); int year = cal.get(Calendar.YEAR); - return new Day( + return LocalDate.of( year, month+1, day); } - return new Day( - getSelectedItem().getYear(), - getSelectedItem().getMonth(), - getSelectedItem().getDay()); + return getSelectedItem(); } - public boolean isSelectedDay(Day day) { - return day != null - && getSelectedItem() != null - && day.getYear() == getSelectedItem().getYear() - && day.getMonth() == getSelectedItem().getMonth() - && day.getDay() == getSelectedItem().getDay(); + public boolean isSelectedDay(LocalDate day) { + return day != null && day == getSelectedItem(); } - public boolean isToady(Day day) { - Calendar todayCal = Calendar.getInstance(); - return day != null - && day.getYear() == todayCal.get(Calendar.YEAR) - && day.getMonth() == todayCal.get(Calendar.MONTH) - && day.getDay() == todayCal.get(Calendar.DAY_OF_MONTH); + public boolean isToady(LocalDate day) { + return day == LocalDate.now(); } public int getSelectedItemPosition() { int position = -1; for (int i = 0; i < mAdapter.getCount(); i++) { - Day day = mAdapter.getItem(i); + LocalDate day = mAdapter.getItem(i); if (isSelectedDay(day)) { position = i; @@ -451,7 +439,7 @@ public int getSelectedItemPosition() { public int getTodayItemPosition() { int position = -1; for (int i = 0; i < mAdapter.getCount(); i++) { - Day day = mAdapter.getItem(i); + LocalDate day = mAdapter.getItem(i); if (isToady(day)) { position = i; @@ -589,8 +577,8 @@ public void setState(int state) { } } - public void select(Day day) { - setSelectedItem(new Day(day.getYear(), day.getMonth(), day.getDay())); + public void select(LocalDate day) { + setSelectedItem(day); redraw(); diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java index a4ab78e..628ed28 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java @@ -1,16 +1,13 @@ package com.shrikanthravi.collapsiblecalendarview.widget; import android.content.Context; -import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.PorterDuff; -import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; -import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; @@ -18,11 +15,11 @@ import android.widget.TextView; import com.shrikanthravi.collapsiblecalendarview.R; -import com.shrikanthravi.collapsiblecalendarview.data.Day; -import com.shrikanthravi.collapsiblecalendarview.listener.OnSwipeTouchListener; import com.shrikanthravi.collapsiblecalendarview.view.ExpandIconView; import com.shrikanthravi.collapsiblecalendarview.view.LockScrollView; +import org.threeten.bp.LocalDate; + public abstract class UICalendar extends LinearLayout { @@ -79,7 +76,7 @@ public abstract class UICalendar extends LinearLayout { private Drawable mButtonRightDrawable = getResources().getDrawable(R.drawable.right_icon); - private Day mSelectedItem = null; + private LocalDate mSelectedItem = null; private int mButtonLeftDrawableTintColor=Color.BLACK; private int mButtonRightDrawableTintColor=Color.BLACK; @@ -189,7 +186,7 @@ protected void setAttributes(TypedArray attrs) { setButtonLeftDrawableTintColor(attrs.getColor(R.styleable.UICalendar_buttonLeft_drawableTintColor,mButtonLeftDrawableTintColor)); setButtonRightDrawableTintColor(attrs.getColor(R.styleable.UICalendar_buttonRight_drawableTintColor,mButtonRightDrawableTintColor)); setExpandIconColor(attrs.getColor(R.styleable.UICalendar_expandIconColor,mExpandIconColor)); - Day selectedItem = null; + mSelectedItem = null; } public void setButtonLeftDrawableTintColor(int color){ @@ -350,12 +347,12 @@ public void setButtonRightDrawable(Drawable buttonRightDrawable) { mBtnNextWeek.setImageDrawable(buttonRightDrawable); } - public Day getSelectedItem() { + public LocalDate getSelectedItem() { return mSelectedItem; } - public void setSelectedItem(Day selectedItem) { - this.mSelectedItem = selectedItem; + public void setSelectedItem(LocalDate selectedDate) { + this.mSelectedItem = selectedDate; } From 2183f69c1766a9d54d9fa729d27c660f7f524f4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Sch=C3=BCrg?= Date: Sat, 10 Nov 2018 15:55:31 +0100 Subject: [PATCH 10/12] Replaced remaining usages of Calendar. --- .../collapsiblecalendarview/MainActivity.java | 11 +- .../data/CalendarAdapter.java | 90 ++++++++------- .../collapsiblecalendarview/data/Event.java | 33 ++---- .../widget/CollapsibleCalendar.java | 108 +++++++----------- .../widget/UICalendar.java | 35 ++---- 5 files changed, 114 insertions(+), 163 deletions(-) diff --git a/app/src/main/java/com/shrikanthravi/collapsiblecalendarview/MainActivity.java b/app/src/main/java/com/shrikanthravi/collapsiblecalendarview/MainActivity.java index 3066276..b630aaa 100644 --- a/app/src/main/java/com/shrikanthravi/collapsiblecalendarview/MainActivity.java +++ b/app/src/main/java/com/shrikanthravi/collapsiblecalendarview/MainActivity.java @@ -8,7 +8,8 @@ import com.shrikanthravi.collapsiblecalendarview.widget.CollapsibleCalendar; -import java.util.Calendar; +import org.threeten.bp.LocalDate; + import java.util.GregorianCalendar; @@ -22,10 +23,10 @@ protected void onCreate(Bundle savedInstanceState) { getWindow().setStatusBarColor(getResources().getColor(R.color.google_red)); CollapsibleCalendar collapsibleCalendar = findViewById(R.id.collapsibleCalendarView); - Calendar today=new GregorianCalendar(); - collapsibleCalendar.addEventTag(today.get(Calendar.YEAR),today.get(Calendar.MONTH),today.get(Calendar.DAY_OF_MONTH)); - today.add(Calendar.DATE,1); - collapsibleCalendar.addEventTag(today.get(Calendar.YEAR),today.get(Calendar.MONTH),today.get(Calendar.DAY_OF_MONTH),Color.BLUE); + LocalDate today = LocalDate.now(); + collapsibleCalendar.addEventTag(today); + LocalDate tomorrow = today.plusDays(1); + collapsibleCalendar.addEventTag(tomorrow, Color.BLUE); Log.d("Testing date ", collapsibleCalendar.getSelectedDay().toString()); collapsibleCalendar.setCalendarListener(new CollapsibleCalendar.CalendarListener() { diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java index fea2f1b..b742eed 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java @@ -1,7 +1,6 @@ package com.shrikanthravi.collapsiblecalendarview.data; import android.content.Context; -import android.graphics.Color; import android.graphics.PorterDuff; import android.view.LayoutInflater; import android.view.View; @@ -11,31 +10,31 @@ import com.shrikanthravi.collapsiblecalendarview.R; import com.shrikanthravi.collapsiblecalendarview.widget.UICalendar; +import org.threeten.bp.DayOfWeek; import org.threeten.bp.LocalDate; -import org.threeten.bp.LocalTime; -import org.threeten.bp.Month; import java.util.ArrayList; -import java.util.Calendar; import java.util.List; +import static org.threeten.bp.Month.DECEMBER; +import static org.threeten.bp.Month.JANUARY; + /** * Created by shrikanthravi on 06/03/18. */ public class CalendarAdapter { - private int mFirstDayOfWeek = 0; - private Calendar mCal; + private DayOfWeek mFirstDayOfWeek = DayOfWeek.MONDAY; + private LocalDate mCal; private LayoutInflater mInflater; - private int mEventDotSize= UICalendar.EVENT_DOT_BIG; + private int mEventDotSize = UICalendar.EVENT_DOT_BIG; - List mItemList = new ArrayList<>(); - List mViewList = new ArrayList<>(); - List mEventList = new ArrayList<>(); + private List mItemList = new ArrayList<>(); + private List mViewList = new ArrayList<>(); + private List mEventList = new ArrayList<>(); - public CalendarAdapter(Context context, Calendar cal) { - this.mCal = (Calendar) cal.clone(); - this.mCal.set(Calendar.DAY_OF_MONTH, 1); + public CalendarAdapter(Context context) { + this.mCal = LocalDate.now().withDayOfMonth(1); mInflater = LayoutInflater.from(context); refresh(); @@ -54,14 +53,27 @@ public View getView(final int position) { return mViewList.get(position); } - public void setFirstDayOfWeek(int firstDayOfWeek) { + public void nextMonth() { + mCal = mCal.plusMonths(1); + } + + public void previousMonth() { + mCal = mCal.minusMonths(1); + } + + public void setDate(LocalDate date) { + mCal = date; + } + + public void setFirstDayOfWeek(DayOfWeek firstDayOfWeek) { mFirstDayOfWeek = firstDayOfWeek; } + public void setEventDotSize(int eventDotSize) { mEventDotSize = eventDotSize; } - public Calendar getCalendar() { + public LocalDate getCalendar() { return mCal; } @@ -75,42 +87,41 @@ public void refresh() { mViewList.clear(); // set calendar - int year = mCal.get(Calendar.YEAR); - int month = mCal.get(Calendar.MONTH); + int year = mCal.getYear(); + int month = mCal.getMonthValue(); - mCal.set(year, month, 1); + mCal = LocalDate.of(year, month, 1); - int lastDayOfMonth = mCal.getActualMaximum(Calendar.DAY_OF_MONTH); - int firstDayOfWeek = mCal.get(Calendar.DAY_OF_WEEK) - 1; + int lastDayOfMonth = mCal.lengthOfMonth(); + DayOfWeek firstDayOfWeek = mCal.getDayOfWeek(); // generate day list - int offset = 0 - (firstDayOfWeek - mFirstDayOfWeek) + 1; - int length = (int) Math.ceil((float) (lastDayOfMonth - offset + 1) / 7) * 7; + int offset = 0 - (firstDayOfWeek.getValue() - mFirstDayOfWeek.getValue()); + if (offset > 0) offset += -7; + int length = (int) Math.ceil((float) (lastDayOfMonth - offset) / 7) * 7; for (int i = offset; i < length + offset; i++) { int numYear; int numMonth; int numDay; - Calendar tempCal = Calendar.getInstance(); if (i <= 0) { // prev month - if (month == 0) { + if (month == JANUARY.getValue()) { numYear = year - 1; - numMonth = 11; + numMonth = DECEMBER.getValue(); } else { numYear = year; numMonth = month - 1; } - tempCal.set(numYear, numMonth, 1); - numDay = tempCal.getActualMaximum(Calendar.DAY_OF_MONTH) + i; + LocalDate tempCal = LocalDate.of(numYear, numMonth, 1); + numDay = tempCal.lengthOfMonth() + i; } else if (i > lastDayOfMonth) { // next month - if (month == 11) { + if (month == DECEMBER.getValue()) { numYear = year + 1; - numMonth = 0; + numMonth = JANUARY.getValue(); } else { numYear = year; - numMonth = month + 1; + numMonth = month; } - tempCal.set(numYear, numMonth, 1); numDay = i - lastDayOfMonth; } else { numYear = year; @@ -118,28 +129,27 @@ public void refresh() { numDay = i; } - LocalDate day = LocalDate.of(numYear, numMonth + 1, numDay); + LocalDate day = LocalDate.of(numYear, numMonth, numDay); View view; - if(mEventDotSize==UICalendar.EVENT_DOT_SMALL) - view = mInflater.inflate(R.layout.day_layout_small, null); - else + if (mEventDotSize == UICalendar.EVENT_DOT_SMALL) { + view = mInflater.inflate(R.layout.day_layout_small, null); + } else { view = mInflater.inflate(R.layout.day_layout, null); + } TextView txtDay = view.findViewById(R.id.txt_day); ImageView imgEventTag = view.findViewById(R.id.img_event_tag); txtDay.setText(String.valueOf(day.getDayOfMonth())); - if (day.getMonthValue() -1 != mCal.get(Calendar.MONTH)) { + if (day.getMonth() != mCal.getMonth()) { txtDay.setAlpha(0.3f); } for (int j = 0; j < mEventList.size(); j++) { Event event = mEventList.get(j); - if (day.getYear() == event.getYear() - && day.getMonthValue() == event.getMonth() - && day.getDayOfMonth() == event.getDay()) { + if (day.equals(event.getDate())) { imgEventTag.setVisibility(View.VISIBLE); - imgEventTag.setColorFilter(event.getColor(),PorterDuff.Mode.SRC_ATOP); + imgEventTag.setColorFilter(event.getColor(), PorterDuff.Mode.SRC_ATOP); } } diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/Event.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/Event.java index 4ace985..51970bf 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/Event.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/Event.java @@ -1,38 +1,27 @@ package com.shrikanthravi.collapsiblecalendarview.data; +import org.threeten.bp.LocalDate; + /** * Created by shrikanthravi on 06/03/18. */ public class Event { - private int mYear; - private int mMonth; - private int mDay; - private int mColor; - - public Event(int year, int month, int day){ - this.mYear = year; - this.mMonth = month; - this.mDay = day; - } + private final LocalDate date; - public Event(int year, int month, int day, int color){ - this.mYear = year; - this.mMonth = month; - this.mDay = day; - this.mColor=color; - } + private int mColor; - public int getMonth(){ - return mMonth; + public Event(LocalDate date) { + this.date = date; } - public int getYear(){ - return mYear; + public Event(LocalDate date, int color) { + this.date = date; + this.mColor = color; } - public int getDay(){ - return mDay; + public LocalDate getDate() { + return date; } public int getColor() { diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java index 0734370..d5df55a 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java @@ -18,7 +18,6 @@ import android.widget.TableRow; import android.widget.TextView; - import com.shrikanthravi.collapsiblecalendarview.R; import com.shrikanthravi.collapsiblecalendarview.data.CalendarAdapter; import com.shrikanthravi.collapsiblecalendarview.data.Event; @@ -26,20 +25,18 @@ import com.shrikanthravi.collapsiblecalendarview.view.ExpandIconView; import org.threeten.bp.LocalDate; - -import java.text.SimpleDateFormat; -import java.util.Calendar; +import org.threeten.bp.format.DateTimeFormatter; public class CollapsibleCalendar extends UICalendar { - private CalendarAdapter mAdapter; + private CalendarAdapter mAdapter; private CalendarListener mListener; - private boolean expanded=false; + private boolean expanded = false; private int mInitHeight = 0; - private Handler mHandler = new Handler(); + private Handler mHandler = new Handler(); private boolean mIsWaitingForUpdate = false; private int mCurrentWeekIndex; @@ -61,13 +58,10 @@ protected void init(Context context) { super.init(context); - int size=getEventDotSize(); - Calendar cal = Calendar.getInstance(); - CalendarAdapter adapter = new CalendarAdapter(context, cal); - adapter.setEventDotSize(getEventDotSize()); - setAdapter(adapter); - - + int size = getEventDotSize(); + CalendarAdapter adapter = new CalendarAdapter(context); + adapter.setEventDotSize(getEventDotSize()); + setAdapter(adapter); // bind events @@ -100,16 +94,15 @@ public void onClick(View v) { } }); - expandIconView.setState(ExpandIconView.MORE,true); + expandIconView.setState(ExpandIconView.MORE, true); expandIconView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - if(expanded){ + if (expanded) { collapse(400); - } - else{ + } else { expand(400); } } @@ -123,7 +116,6 @@ public void run() { }); - } private OnSwipeTouchListener getSwipeTouchListener() { @@ -132,20 +124,23 @@ public void onSwipeTop() { collapse(400); } + public void onSwipeLeft() { - if (getState() == STATE_COLLAPSED) + if (getState() == STATE_COLLAPSED) { nextWeek(); - else if (getState() == STATE_EXPANDED) + } else if (getState() == STATE_EXPANDED) { nextMonth(); + } } + public void onSwipeRight() { if (getState() == STATE_COLLAPSED) { prevWeek(); - } - else if (getState() == STATE_EXPANDED) { + } else if (getState() == STATE_EXPANDED) { prevMonth(); } } + public void onSwipeBottom() { expand(400); } @@ -214,9 +209,9 @@ protected void reload() { mAdapter.refresh(); // reset UI - SimpleDateFormat dateFormat = new SimpleDateFormat("MMM yyyy"); - dateFormat.setTimeZone(mAdapter.getCalendar().getTimeZone()); - mTxtTitle.setText(dateFormat.format(mAdapter.getCalendar().getTime())); + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("MMMM YYYY"); + String formattedDate = dateFormat.format(mAdapter.getCalendar()); + mTxtTitle.setText(formattedDate); mTableHead.removeAllViews(); mTableBody.removeAllViews(); @@ -239,7 +234,7 @@ protected void reload() { for (int i = 0; i < 7; i++) { View view = mInflater.inflate(R.layout.layout_day_of_week, null); TextView txtDayOfWeek = (TextView) view.findViewById(R.id.txt_day_of_week); - txtDayOfWeek.setText(dayOfWeekIds[(i + getFirstDayOfWeek()) % 7]); + txtDayOfWeek.setText(dayOfWeekIds[(i + getFirstDayOfWeek().getValue()) % 7]); view.setLayoutParams(new TableRow.LayoutParams( 0, ViewGroup.LayoutParams.WRAP_CONTENT, @@ -298,14 +293,15 @@ private int getSuitableRowIndex() { public void onItemClicked(View view, LocalDate day) { select(day); - Calendar cal = mAdapter.getCalendar(); + LocalDate cal = mAdapter.getCalendar(); int newYear = day.getYear(); int newMonth = day.getMonthValue() - 1; - int oldYear = cal.get(Calendar.YEAR); - int oldMonth = cal.get(Calendar.MONTH); + int oldYear = cal.getYear(); + int oldMonth = cal.getMonthValue(); if (newMonth != oldMonth) { - cal.set(day.getYear(), day.getMonthValue() -1, 1); + LocalDate d = day.withDayOfMonth(1); + mAdapter.setDate(d); if (newYear > oldYear || newMonth > oldMonth) { mCurrentWeekIndex = 0; @@ -335,25 +331,20 @@ public void setAdapter(CalendarAdapter adapter) { mCurrentWeekIndex = getSuitableRowIndex(); } - public void addEventTag(int numYear, int numMonth, int numDay) { - mAdapter.addEvent(new Event(numYear, numMonth, numDay,getEventColor())); + public void addEventTag(LocalDate date) { + mAdapter.addEvent(new Event(date, getEventColor())); reload(); } - public void addEventTag(int numYear, int numMonth, int numDay,int color) { - mAdapter.addEvent(new Event(numYear, numMonth, numDay,color)); + public void addEventTag(LocalDate date, int color) { + mAdapter.addEvent(new Event(date, color)); reload(); } public void prevMonth() { - Calendar cal = mAdapter.getCalendar(); - if (cal.get(Calendar.MONTH) == cal.getActualMinimum(Calendar.MONTH)) { - cal.set((cal.get(Calendar.YEAR) - 1), cal.getActualMaximum(Calendar.MONTH), 1); - } else { - cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1); - } + mAdapter.previousMonth(); reload(); if (mListener != null) { mListener.onMonthChange(); @@ -361,12 +352,7 @@ public void prevMonth() { } public void nextMonth() { - Calendar cal = mAdapter.getCalendar(); - if (cal.get(Calendar.MONTH) == cal.getActualMaximum(Calendar.MONTH)) { - cal.set((cal.get(Calendar.YEAR) + 1), cal.getActualMinimum(Calendar.MONTH), 1); - } else { - cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1); - } + mAdapter.nextMonth(); reload(); if (mListener != null) { mListener.onMonthChange(); @@ -393,24 +379,9 @@ public void nextWeek() { } } - public int getYear() { - return mAdapter.getCalendar().get(Calendar.YEAR); - } - - public int getMonth() { - return mAdapter.getCalendar().get(Calendar.MONTH); - } - public LocalDate getSelectedDay() { - if (getSelectedItem()==null){ - Calendar cal = Calendar.getInstance(); - int day = cal.get(Calendar.DAY_OF_MONTH); - int month = cal.get(Calendar.MONTH); - int year = cal.get(Calendar.YEAR); - return LocalDate.of( - year, - month+1, - day); + if (getSelectedItem() == null) { + return LocalDate.now(); } return getSelectedItem(); } @@ -496,7 +467,7 @@ protected void applyTransformation(float interpolatedTime, Transformation t) { startAnimation(anim); } - expandIconView.setState(ExpandIconView.MORE,true); + expandIconView.setState(ExpandIconView.MORE, true); } private void collapseTo(int index) { @@ -563,16 +534,16 @@ protected void applyTransformation(float interpolatedTime, Transformation t) { startAnimation(anim); } - expandIconView.setState(ExpandIconView.LESS,true); + expandIconView.setState(ExpandIconView.LESS, true); } @Override public void setState(int state) { super.setState(state); - if(state == STATE_COLLAPSED) { + if (state == STATE_COLLAPSED) { expanded = false; } - if(state == STATE_EXPANDED) { + if (state == STATE_EXPANDED) { expanded = true; } } @@ -620,6 +591,5 @@ public interface CalendarListener { } - } diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java index 628ed28..fd5f736 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/UICalendar.java @@ -18,20 +18,12 @@ import com.shrikanthravi.collapsiblecalendarview.view.ExpandIconView; import com.shrikanthravi.collapsiblecalendarview.view.LockScrollView; +import org.threeten.bp.DayOfWeek; import org.threeten.bp.LocalDate; public abstract class UICalendar extends LinearLayout { - - // Day of Week - public static final int SUNDAY = 0; - public static final int MONDAY = 1; - public static final int TUESDAY = 2; - public static final int WEDNESDAY = 3; - public static final int THURSDAY = 4; - public static final int FRIDAY = 5; - public static final int SATURDAY = 6; // State public static final int STATE_EXPANDED = 0; public static final int STATE_COLLAPSED = 1; @@ -57,9 +49,9 @@ public abstract class UICalendar extends LinearLayout { protected ExpandIconView expandIconView; // Attributes - private boolean mShowWeek = true; - private int mFirstDayOfWeek = SUNDAY; - private int mState = STATE_COLLAPSED; + private boolean mShowWeek = true; + private DayOfWeek mFirstDayOfWeek = DayOfWeek.SUNDAY; + private int mState = STATE_COLLAPSED; private int mTextColor = Color.BLACK; private int mPrimaryColor = Color.WHITE; @@ -128,17 +120,14 @@ protected void init(Context context) { mBtnPrevWeek = rootView.findViewById(R.id.btn_prev_week); mBtnNextWeek = rootView.findViewById(R.id.btn_next_week); expandIconView = rootView.findViewById(R.id.expandIcon); - - - - } protected void setAttributes(TypedArray attrs) { // set attributes by the values from XML //setStyle(attrs.getInt(R.styleable.UICalendar_style, mStyle)); setShowWeek(attrs.getBoolean(R.styleable.UICalendar_showWeek, mShowWeek)); - setFirstDayOfWeek(attrs.getInt(R.styleable.UICalendar_firstDayOfWeek, mFirstDayOfWeek)); + int dayOfWeekValue = attrs.getInt(R.styleable.UICalendar_firstDayOfWeek, mFirstDayOfWeek.getValue()); + setFirstDayOfWeek(DayOfWeek.of(dayOfWeekValue)); setState(attrs.getInt(R.styleable.UICalendar_state, mState)); setTextColor(attrs.getColor(R.styleable.UICalendar_textColor, mTextColor)); @@ -223,11 +212,11 @@ public void setShowWeek(boolean showWeek) { } } - public int getFirstDayOfWeek() { + public DayOfWeek getFirstDayOfWeek() { return mFirstDayOfWeek; } - public void setFirstDayOfWeek(int firstDayOfWeek) { + public void setFirstDayOfWeek(DayOfWeek firstDayOfWeek) { this.mFirstDayOfWeek = firstDayOfWeek; reload(); } @@ -327,20 +316,12 @@ public void setSelectedItemBackgroundDrawable(Drawable selectedItemBackground) { redraw(); } - public Drawable getButtonLeftDrawable() { - return mButtonLeftDrawable; - } - public void setButtonLeftDrawable(Drawable buttonLeftDrawable) { this.mButtonLeftDrawable = buttonLeftDrawable; mBtnPrevMonth.setImageDrawable(buttonLeftDrawable); mBtnPrevWeek.setImageDrawable(buttonLeftDrawable); } - public Drawable getButtonRightDrawable() { - return mButtonRightDrawable; - } - public void setButtonRightDrawable(Drawable buttonRightDrawable) { this.mButtonRightDrawable = buttonRightDrawable; mBtnNextMonth.setImageDrawable(buttonRightDrawable); From df52f682d6cfcd83149248d1d57dd06bc37e56fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Sch=C3=BCrg?= Date: Sat, 10 Nov 2018 16:27:39 +0100 Subject: [PATCH 11/12] Update collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java --- .../widget/CollapsibleCalendar.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java index d5df55a..3df0a47 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/widget/CollapsibleCalendar.java @@ -27,6 +27,8 @@ import org.threeten.bp.LocalDate; import org.threeten.bp.format.DateTimeFormatter; +import androidx.annotation.NonNull; + public class CollapsibleCalendar extends UICalendar { private CalendarAdapter mAdapter; @@ -386,12 +388,12 @@ public LocalDate getSelectedDay() { return getSelectedItem(); } - public boolean isSelectedDay(LocalDate day) { - return day != null && day == getSelectedItem(); + public boolean isSelectedDay(@NonNull LocalDate day) { + return day.equals(getSelectedItem()); } - public boolean isToady(LocalDate day) { - return day == LocalDate.now(); + public boolean isToady(@NonNull LocalDate day) { + return LocalDate.now().equals(day); } public int getSelectedItemPosition() { From 0f1fc2af4a53d0c180eb6818a94c20d0c4e7464d Mon Sep 17 00:00:00 2001 From: Jay Ellos Date: Fri, 15 Mar 2019 09:40:20 +0800 Subject: [PATCH 12/12] fix calendar adapter crashed - ZoneRulesException --- .../collapsiblecalendarview/data/CalendarAdapter.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java index b742eed..23d05e1 100644 --- a/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java +++ b/collapsiblecalendarview2/src/main/java/com/shrikanthravi/collapsiblecalendarview/data/CalendarAdapter.java @@ -7,6 +7,7 @@ import android.widget.ImageView; import android.widget.TextView; +import com.jakewharton.threetenabp.AndroidThreeTen; import com.shrikanthravi.collapsiblecalendarview.R; import com.shrikanthravi.collapsiblecalendarview.widget.UICalendar; @@ -34,7 +35,8 @@ public class CalendarAdapter { private List mEventList = new ArrayList<>(); public CalendarAdapter(Context context) { - this.mCal = LocalDate.now().withDayOfMonth(1); + AndroidThreeTen.init(context); + this.mCal = LocalDate. now().withDayOfMonth(1); mInflater = LayoutInflater.from(context); refresh();