diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml new file mode 100644 index 0000000..4a53bee --- /dev/null +++ b/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/appInsightsSettings.xml b/.idea/appInsightsSettings.xml new file mode 100644 index 0000000..371f2e2 --- /dev/null +++ b/.idea/appInsightsSettings.xml @@ -0,0 +1,26 @@ + + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b86273d --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..f929636 --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,18 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/markdown.xml b/.idea/markdown.xml new file mode 100644 index 0000000..c61ea33 --- /dev/null +++ b/.idea/markdown.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..c902d2f --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..16660f1 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 7cf72c6..ced1af6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 27 - buildToolsVersion "28.0.2" + compileSdkVersion 34 + buildToolsVersion "34.0.0" defaultConfig { applicationId "com.appeaser.sublimepicker" - minSdkVersion 14 - targetSdkVersion 27 + minSdkVersion 21 + targetSdkVersion 34 versionCode 5 versionName "1.4" } @@ -17,10 +17,24 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + namespace "com.appeaser.sublimepicker" } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation project(':sublimepickerlibrary') - implementation 'com.android.support:appcompat-v7:27.1.1' + implementation 'androidx.appcompat:appcompat:1.7.0' + + constraints { + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22") { + because("kotlin-stdlib-jdk7 is now part of kotlin-stdlib") + } + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22") { + because("kotlin-stdlib-jdk8 is now part of kotlin-stdlib") + } + } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8f91992..8222c1d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,7 +9,8 @@ + android:label="@string/app_name" + android:exported="true"> diff --git a/app/src/main/java/com/appeaser/sublimepicker/Sampler.java b/app/src/main/java/com/appeaser/sublimepicker/Sampler.java index 94efe41..4a3f500 100644 --- a/app/src/main/java/com/appeaser/sublimepicker/Sampler.java +++ b/app/src/main/java/com/appeaser/sublimepicker/Sampler.java @@ -20,9 +20,9 @@ import android.graphics.PorterDuff; import android.graphics.Typeface; import android.os.Bundle; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; +import androidx.fragment.app.DialogFragment; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.style.StyleSpan; diff --git a/app/src/main/java/com/appeaser/sublimepicker/SublimePickerFragment.java b/app/src/main/java/com/appeaser/sublimepicker/SublimePickerFragment.java index 34051a6..3c9db7b 100644 --- a/app/src/main/java/com/appeaser/sublimepicker/SublimePickerFragment.java +++ b/app/src/main/java/com/appeaser/sublimepicker/SublimePickerFragment.java @@ -17,8 +17,8 @@ package com.appeaser.sublimepicker; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -100,7 +100,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa }*/ mSublimePicker = (SublimePicker) getActivity() - .getLayoutInflater().inflate(R.layout.sublime_picker, container); + .getLayoutInflater().inflate(com.appeaser.sublimepickerlibrary.R.layout.sublime_picker, container); // Retrieve SublimeOptions Bundle arguments = getArguments(); diff --git a/app/src/main/res/layout/sampler.xml b/app/src/main/res/layout/sampler.xml index 790a06a..78a91fd 100644 --- a/app/src/main/res/layout/sampler.xml +++ b/app/src/main/res/layout/sampler.xml @@ -334,11 +334,11 @@ android:background="@drawable/floating_button_shape" android:contentDescription="launch sublime picker" /> - - \ No newline at end of file + diff --git a/build.gradle b/build.gradle index be27285..4b465cc 100644 --- a/build.gradle +++ b/build.gradle @@ -2,19 +2,11 @@ buildscript { repositories { - jcenter() google() + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.+' - } -} - -allprojects { - repositories { - jcenter() - google() + classpath 'com.android.tools.build:gradle:8.13.0' } } diff --git a/gradle.properties b/gradle.properties index 1d3591c..027ef9d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,4 +15,7 @@ # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true \ No newline at end of file +# org.gradle.parallel=true + +android.useAndroidX=true +android.enableJetifier=true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a7c872c..f0e7c59 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip diff --git a/settings.gradle b/settings.gradle index 4acc72a..cd15375 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,24 @@ -include ':app', ':sublimepickerlibrary' +pluginManagement { + repositories { + google { + content { + includeGroupByRegex("com\\.android.*") + includeGroupByRegex("com\\.google.*") + includeGroupByRegex("androidx.*") + } + } + mavenCentral() + gradlePluginPortal() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + maven { url 'https://jitpack.io' } + } +} + +//rootProject.name = "OfficePunch" +include(":app", ":sublimepickerlibrary") \ No newline at end of file diff --git a/sublimepickerlibrary/build.gradle b/sublimepickerlibrary/build.gradle index 698c4d4..ff871d8 100644 --- a/sublimepickerlibrary/build.gradle +++ b/sublimepickerlibrary/build.gradle @@ -1,47 +1,12 @@ -buildscript { - repositories { - mavenCentral() - } - - dependencies { - classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' - } -} - apply plugin: 'com.android.library' -apply plugin: 'com.github.dcendents.android-maven' - -ext { - bintrayRepo = 'maven' - bintrayName = 'sublime-picker' - - publishedGroupId = 'com.appeaser.sublimepickerlibrary' - libraryName = 'SublimePicker' - artifact = 'sublimepickerlibrary' - - libraryDescription = 'A material-styled android view that provisions picking of a date, time & recurrence option, all from a single user-interface.' - - siteUrl = 'https://github.com/vikramkakkar/SublimePicker' - gitUrl = 'https://github.com/vikramkakkar/SublimePicker.git' - - libraryVersion = '2.1.2' - - developerId = 'vikramkakkar' - developerName = 'Vikram Kakkar' - developerEmail = 'vikram.kakkar.85@gmail.com' - - licenseName = 'The Apache Software License, Version 2.0' - licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt' - allLicenses = ["Apache-2.0"] -} android { - compileSdkVersion 27 - buildToolsVersion "28.0.2" + compileSdkVersion 34 + buildToolsVersion "34.0.0" defaultConfig { - minSdkVersion 14 - targetSdkVersion 27 + minSdkVersion 21 + targetSdkVersion 34 versionCode 4 versionName "2.1.2" } @@ -53,24 +18,15 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 } + namespace "com.appeaser.sublimepickerlibrary" } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'com.android.support:appcompat-v7:27.1.1' - implementation 'com.android.support:support-v4:27.1.1' - implementation 'com.android.support:gridlayout-v7:27.1.1' - implementation 'com.android.support:support-annotations:27.1.1' + implementation 'androidx.appcompat:appcompat:1.7.0' + implementation 'androidx.gridlayout:gridlayout:1.0.0' + implementation 'androidx.annotation:annotation:1.8.2' } - -apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle' -apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle' - -javadoc { - options { - encoding = 'UTF-8' - } -} \ No newline at end of file diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/SublimePicker.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/SublimePicker.java index 9966947..9767d4f 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/SublimePicker.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/SublimePicker.java @@ -23,7 +23,7 @@ import android.os.Build; import android.os.Parcel; import android.os.Parcelable; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.text.TextUtils; import android.text.format.DateUtils; import android.util.AttributeSet; diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/ButtonHandler.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/ButtonHandler.java index baf13f2..af0b8a7 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/ButtonHandler.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/ButtonHandler.java @@ -6,8 +6,8 @@ import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.PorterDuff; -import android.support.annotation.NonNull; -import android.support.v4.content.ContextCompat; +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; import android.util.TypedValue; import android.view.View; import android.widget.Button; diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/ButtonLayout.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/ButtonLayout.java index 84daac2..46831c8 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/ButtonLayout.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/ButtonLayout.java @@ -23,7 +23,7 @@ import android.graphics.Color; import android.graphics.PorterDuff; import android.os.Build; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.util.AttributeSet; import android.util.TypedValue; import android.view.Gravity; diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/DateTimePatternHelper.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/DateTimePatternHelper.java index 7540461..e716114 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/DateTimePatternHelper.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/DateTimePatternHelper.java @@ -1,6 +1,6 @@ package com.appeaser.sublimepickerlibrary.common; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.util.Log; import com.appeaser.sublimepickerlibrary.datepicker.SublimeDatePicker; diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/DecisionButtonLayout.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/DecisionButtonLayout.java index f94553f..183b9bc 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/DecisionButtonLayout.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/common/DecisionButtonLayout.java @@ -7,7 +7,7 @@ import android.graphics.Color; import android.graphics.PorterDuff; import android.os.Build; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.util.AttributeSet; import android.util.TypedValue; import android.view.Gravity; diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/CircularIndicatorTextView.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/CircularIndicatorTextView.java index f0d8d0a..6ad2323 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/CircularIndicatorTextView.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/CircularIndicatorTextView.java @@ -22,9 +22,9 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Typeface; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; +import androidx.appcompat.widget.AppCompatTextView; import android.util.AttributeSet; -import android.widget.TextView; import com.appeaser.sublimepickerlibrary.R; @@ -32,7 +32,7 @@ * Indicator used for selected year in YearPickerView * Needs fixing. */ -class CircularIndicatorTextView extends TextView { +class CircularIndicatorTextView extends AppCompatTextView { private static final int SELECTED_CIRCLE_ALPHA = 60; private final Paint mCirclePaint = new Paint(); @@ -88,7 +88,7 @@ public void onDraw(@NonNull Canvas canvas) { final int width = getWidth(); final int height = getHeight(); int radius = Math.min(width, height) / 2; - canvas.drawCircle(width / 2, height / 2, radius, mCirclePaint); + canvas.drawCircle(width / 2f, height / 2f, radius, mCirclePaint); } } diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/DayPickerPagerAdapter.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/DayPickerPagerAdapter.java index 9184bea..24b2f96 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/DayPickerPagerAdapter.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/DayPickerPagerAdapter.java @@ -19,18 +19,18 @@ import android.content.Context; import android.content.res.ColorStateList; import android.content.res.TypedArray; -import android.support.annotation.IdRes; -import android.support.annotation.LayoutRes; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.view.PagerAdapter; import android.util.Log; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import com.appeaser.sublimepickerlibrary.R; +import androidx.annotation.IdRes; +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.viewpager.widget.PagerAdapter; + import com.appeaser.sublimepickerlibrary.utilities.Config; import com.appeaser.sublimepickerlibrary.utilities.SUtils; @@ -79,7 +79,7 @@ public DayPickerPagerAdapter(@NonNull Context context, @LayoutRes int layoutResI mCalendarViewId = calendarViewId; final TypedArray ta = context.obtainStyledAttributes(new int[]{ - R.attr.colorControlHighlight}); + androidx.appcompat.R.attr.colorControlHighlight}); mDayHighlightColor = ta.getColorStateList(0); ta.recycle(); } @@ -363,9 +363,9 @@ public int getItemPosition(Object object) { @Override public CharSequence getPageTitle(int position) { - final SimpleMonthView v = mItems.get(position).calendar; - if (v != null) { - return v.getTitle(); + final ViewHolder holder = mItems.get(position); + if (holder != null && holder.calendar != null) { + return holder.calendar.getTitle(); } return null; } diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/DayPickerView.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/DayPickerView.java index afae491..5a91b78 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/DayPickerView.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/DayPickerView.java @@ -19,9 +19,9 @@ import android.content.Context; import android.content.res.ColorStateList; import android.content.res.TypedArray; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.view.ViewPager; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.viewpager.widget.ViewPager; import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; @@ -278,6 +278,7 @@ protected void onLayout(boolean changed, int left, int top, int right, int botto final SimpleMonthView monthView = (SimpleMonthView) mViewPager.getChildAt(0) .findViewById(R.id.month_view); + if (monthView == null) return; final int monthHeight = monthView.getMonthHeight(); final int cellWidth = monthView.getCellWidth(); diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/DayPickerViewPager.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/DayPickerViewPager.java index b885291..327efd2 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/DayPickerViewPager.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/DayPickerViewPager.java @@ -19,8 +19,8 @@ import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Parcelable; -import android.support.v4.view.PagerAdapter; -import android.support.v4.view.ViewPager; +import androidx.viewpager.widget.PagerAdapter; +import androidx.viewpager.widget.ViewPager; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/RecurrenceEndDatePicker.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/RecurrenceEndDatePicker.java index 811fece..a1fe71b 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/RecurrenceEndDatePicker.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/RecurrenceEndDatePicker.java @@ -9,8 +9,8 @@ import android.os.Build; import android.os.Parcel; import android.os.Parcelable; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.text.format.DateUtils; import android.util.AttributeSet; import android.util.Log; @@ -83,17 +83,17 @@ public RecurrenceEndDatePicker(Context context) { this(context, null); } - public RecurrenceEndDatePicker(Context context, AttributeSet attrs) { + public RecurrenceEndDatePicker(Context context, @Nullable AttributeSet attrs) { this(context, attrs, R.attr.spDatePickerStyle); } - public RecurrenceEndDatePicker(Context context, AttributeSet attrs, int defStyleAttr) { + public RecurrenceEndDatePicker(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initializeLayout(attrs, defStyleAttr, R.style.SublimeDatePickerStyle); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) - public RecurrenceEndDatePicker(Context context, AttributeSet attrs, + public RecurrenceEndDatePicker(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); initializeLayout(attrs, defStyleAttr, defStyleRes); diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/SimpleMonthView.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/SimpleMonthView.java index 13d8dba..3b26353 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/SimpleMonthView.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/SimpleMonthView.java @@ -28,9 +28,9 @@ import android.graphics.Typeface; import android.os.Build; import android.os.Bundle; -import android.support.v4.view.ViewCompat; -import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; -import android.support.v4.widget.ExploreByTouchHelper; +import androidx.core.view.ViewCompat; +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; +import androidx.customview.widget.ExploreByTouchHelper; import android.text.TextPaint; import android.text.format.DateFormat; import android.util.AttributeSet; diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/SublimeDatePicker.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/SublimeDatePicker.java index d9eecaa..2172b8e 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/SublimeDatePicker.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/datepicker/SublimeDatePicker.java @@ -27,8 +27,8 @@ import android.os.Build; import android.os.Parcel; import android.os.Parcelable; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.text.Layout; import android.text.SpannableString; import android.text.Spanned; diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/helpers/SublimeOptions.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/helpers/SublimeOptions.java index 9523414..be14c76 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/helpers/SublimeOptions.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/helpers/SublimeOptions.java @@ -18,7 +18,7 @@ import android.os.Parcel; import android.os.Parcelable; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.text.TextUtils; import com.appeaser.sublimepickerlibrary.datepicker.SelectedDate; diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/recurrencepicker/RecurrenceOptionCreator.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/recurrencepicker/RecurrenceOptionCreator.java index 779049a..3cca691 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/recurrencepicker/RecurrenceOptionCreator.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/recurrencepicker/RecurrenceOptionCreator.java @@ -27,8 +27,8 @@ import android.os.Build; import android.os.Parcel; import android.os.Parcelable; -import android.support.annotation.NonNull; -import android.support.v4.content.ContextCompat; +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; @@ -223,7 +223,7 @@ SublimeRecurrencePicker.RecurrenceOption resolveRepeatOption() { return SublimeRecurrencePicker.RecurrenceOption.CUSTOM; } - private class RecurrenceModel implements Parcelable { + private static class RecurrenceModel implements Parcelable { // Should match EventRecurrence.DAILY, etc static final int FREQ_DAILY = 0; @@ -321,7 +321,20 @@ public RecurrenceModel() { } public RecurrenceModel(Parcel in) { - readFromParcel(in); + freq = in.readInt(); + interval = in.readInt(); + end = in.readInt(); + endDate = new Time(); + endDate.year = in.readInt(); + endDate.month = in.readInt(); + endDate.monthDay = in.readInt(); + endCount = in.readInt(); + weeklyByDayOfWeek = in.createBooleanArray(); + monthlyRepeat = in.readInt(); + monthlyByMonthDay = in.readInt(); + monthlyByDayOfWeek = in.readInt(); + monthlyByNthDayOfWeek = in.readInt(); + recurrenceState = in.readInt(); } @Override @@ -341,26 +354,9 @@ public void writeToParcel(Parcel dest, int flags) { dest.writeInt(recurrenceState); } - private void readFromParcel(Parcel in) { - freq = in.readInt(); - interval = in.readInt(); - end = in.readInt(); - endDate = new Time(); - endDate.year = in.readInt(); - endDate.month = in.readInt(); - endDate.monthDay = in.readInt(); - endCount = in.readInt(); - in.readBooleanArray(weeklyByDayOfWeek); - monthlyRepeat = in.readInt(); - monthlyByMonthDay = in.readInt(); - monthlyByDayOfWeek = in.readInt(); - monthlyByNthDayOfWeek = in.readInt(); - recurrenceState = in.readInt(); - } - @SuppressWarnings("all") // suppress unused and hiding - public final Parcelable.Creator CREATOR = new Creator() { + public static final Parcelable.Creator CREATOR = new Creator() { public RecurrenceModel createFromParcel(Parcel in) { return new RecurrenceModel(in); @@ -372,7 +368,7 @@ public RecurrenceModel[] newArray(int size) { }; } - class minMaxTextWatcher implements TextWatcher { + abstract class minMaxTextWatcher implements TextWatcher { private int mMin; private int mMax; private int mDefault; @@ -415,8 +411,7 @@ public void afterTextChanged(Editable s) { /** * Override to be called after each key stroke */ - void onChange(int value) { - } + abstract void onChange(int value); @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { @@ -769,7 +764,8 @@ void initializeLayout() { freqAdapter.setDropDownViewResource(R.layout.roc_spinner_dropdown_item); mFreqSpinner.setAdapter(freqAdapter); - Drawable freqSpinnerBg = ContextCompat.getDrawable(getContext(), R.drawable.abc_spinner_mtrl_am_alpha); + // abc_spinner_mtrl_am_alpha is internal to appcompat, using a standard drawable if not found + Drawable freqSpinnerBg = ContextCompat.getDrawable(getContext(), androidx.appcompat.R.drawable.abc_spinner_mtrl_am_alpha); PorterDuffColorFilter cfFreqSpinner = new PorterDuffColorFilter(SUtils.COLOR_TEXT_PRIMARY_INVERSE, PorterDuff.Mode.SRC_IN); @@ -1534,4 +1530,3 @@ public View getDropDownView(int position, View convertView, ViewGroup parent) { } } } - diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/timepicker/RadialTimePickerView.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/timepicker/RadialTimePickerView.java index 8bffc1c..da8b4b0 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/timepicker/RadialTimePickerView.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/timepicker/RadialTimePickerView.java @@ -37,10 +37,11 @@ import android.graphics.Typeface; import android.os.Build; import android.os.Bundle; -import android.support.v4.content.ContextCompat; -import android.support.v4.view.ViewCompat; -import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; -import android.support.v4.widget.ExploreByTouchHelper; +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.core.view.ViewCompat; +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; +import androidx.customview.widget.ExploreByTouchHelper; import android.util.AttributeSet; import android.util.Log; import android.util.TypedValue; @@ -701,7 +702,7 @@ private void drawMinutes(Canvas canvas, float alphaMod) { // Exclude the selector region, then draw minutes with no // activated states. - canvas.save(Canvas.CLIP_SAVE_FLAG); + canvas.save(); canvas.clipPath(mSelectorPath, Region.Op.DIFFERENCE); drawTextElements(canvas, mTextSize[MINUTES], mTypeface, mTextColor[MINUTES], mMinutesText, mOuterTextX[MINUTES], mOuterTextY[MINUTES], mPaint[MINUTES], @@ -710,7 +711,7 @@ private void drawMinutes(Canvas canvas, float alphaMod) { // Intersect the selector region, then draw minutes with only // activated states. - canvas.save(Canvas.CLIP_SAVE_FLAG); + canvas.save(); canvas.clipPath(mSelectorPath, Region.Op.INTERSECT); drawTextElements(canvas, mTextSize[MINUTES], mTypeface, mTextColor[MINUTES], mMinutesText, mOuterTextX[MINUTES], mOuterTextY[MINUTES], mPaint[MINUTES], @@ -1119,11 +1120,6 @@ protected void onPopulateNodeForVirtualView(int virtualViewId, AccessibilityNode final boolean selected = isVirtualViewSelected(type, value); node.setSelected(selected); - - final int nextId = getVirtualViewIdAfter(type, value); - if (nextId != INVALID_ID) { - node.setTraversalBefore(RadialTimePickerView.this, nextId); - } } @Override @@ -1143,7 +1139,6 @@ protected boolean onPerformActionForVirtualView(int virtualViewId, int action, B return false; } - @Override public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) { super.onInitializeAccessibilityNodeInfo(host, info); @@ -1252,27 +1247,6 @@ private int getCircularDiff(int first, int second, int max) { return (diff > midpoint) ? (max - diff) : diff; } - private int getVirtualViewIdAfter(int type, int value) { - if (type == TYPE_HOUR) { - final int nextValue = value + 1; - final int max = mIs24HourMode ? 23 : 12; - if (nextValue <= max) { - return makeId(type, nextValue); - } - } else if (type == TYPE_MINUTE) { - final int current = getCurrentMinute(); - final int snapValue = value - (value % MINUTE_INCREMENT); - final int nextValue = snapValue + MINUTE_INCREMENT; - if (value < current && nextValue > current) { - // The current value is between two snap values. - return makeId(type, current); - } else if (nextValue < MINUTES_IN_CIRCLE) { - return makeId(type, nextValue); - } - } - return INVALID_ID; - } - private int hour12To24(int hour12, int amOrPm) { int hour24 = hour12; if (hour12 == 12) { diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/timepicker/SublimeTimePicker.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/timepicker/SublimeTimePicker.java index 6d3a25e..3497456 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/timepicker/SublimeTimePicker.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/timepicker/SublimeTimePicker.java @@ -26,9 +26,9 @@ import android.os.Build; import android.os.Parcel; import android.os.Parcelable; -import android.support.v4.view.AccessibilityDelegateCompat; -import android.support.v4.view.ViewCompat; -import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; +import androidx.core.view.AccessibilityDelegateCompat; +import androidx.core.view.ViewCompat; +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.text.format.DateFormat; diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/utilities/AccessibilityUtils.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/utilities/AccessibilityUtils.java index 74a826b..7cb5c7b 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/utilities/AccessibilityUtils.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/utilities/AccessibilityUtils.java @@ -17,8 +17,8 @@ package com.appeaser.sublimepickerlibrary.utilities; import android.content.Context; -import android.support.v4.view.accessibility.AccessibilityEventCompat; -import android.support.v4.view.accessibility.AccessibilityRecordCompat; +import androidx.core.view.accessibility.AccessibilityEventCompat; +import androidx.core.view.accessibility.AccessibilityRecordCompat; import android.view.View; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; diff --git a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/utilities/SUtils.java b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/utilities/SUtils.java index eef2db1..0e0557a 100644 --- a/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/utilities/SUtils.java +++ b/sublimepickerlibrary/src/main/java/com/appeaser/sublimepickerlibrary/utilities/SUtils.java @@ -30,9 +30,9 @@ import android.graphics.drawable.shapes.OvalShape; import android.graphics.drawable.shapes.RoundRectShape; import android.os.Build; -import android.support.annotation.NonNull; -import android.support.v4.graphics.drawable.DrawableCompat; -import android.support.v4.view.ViewCompat; +import androidx.annotation.NonNull; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.core.view.ViewCompat; import android.util.Log; import android.view.ContextThemeWrapper; import android.view.HapticFeedbackConstants; @@ -78,12 +78,12 @@ public class SUtils { public static void initializeResources(Context context) { TypedArray a = context.obtainStyledAttributes( - new int[]{R.attr.colorAccent, R.attr.colorControlHighlight, - R.attr.colorControlActivated, - R.attr.colorButtonNormal, android.R.attr.textColorPrimary, + new int[]{androidx.appcompat.R.attr.colorAccent, androidx.appcompat.R.attr.colorControlHighlight, + androidx.appcompat.R.attr.colorControlActivated, + androidx.appcompat.R.attr.colorButtonNormal, android.R.attr.textColorPrimary, android.R.attr.textColorPrimaryInverse, - R.attr.colorPrimary, - R.attr.colorPrimaryDark, + androidx.appcompat.R.attr.colorPrimary, + androidx.appcompat.R.attr.colorPrimaryDark, android.R.attr.textColorSecondary, android.R.attr.colorBackground, android.R.attr.textColorSecondaryInverse}); diff --git a/sublimepickerlibrary/src/main/res/layout-land/time_picker_layout.xml b/sublimepickerlibrary/src/main/res/layout-land/time_picker_layout.xml index c1c1ff5..bf7270e 100644 --- a/sublimepickerlibrary/src/main/res/layout-land/time_picker_layout.xml +++ b/sublimepickerlibrary/src/main/res/layout-land/time_picker_layout.xml @@ -15,7 +15,7 @@ limitations under the License. --> - - + + android:paddingEnd="?attr/dialogPreferredPadding"> + android:gravity="end" /> + android:gravity="start" /> @@ -180,9 +167,7 @@ app:layout_gravity="bottom|fill_horizontal" android:layoutDirection="locale" android:paddingStart="@dimen/sp_button_bar_padding_start" - android:paddingLeft="@dimen/sp_button_bar_padding_start" android:paddingEnd="@dimen/sp_button_bar_padding_end" - android:paddingRight="@dimen/sp_button_bar_padding_end" android:paddingTop="@dimen/sp_button_bar_padding_top" android:paddingBottom="@dimen/sp_button_bar_padding_bottom"> @@ -197,6 +182,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" + android:focusable="true" android:src="?attr/spLandscapeCancelActionDrawable" android:minWidth="@dimen/sp_dialog_button_bar_height" android:minHeight="@dimen/sp_dialog_button_bar_height" @@ -210,6 +196,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" + android:focusable="true" android:src="?attr/spLandscapeOkActionDrawable" android:minWidth="@dimen/sp_dialog_button_bar_height" android:minHeight="@dimen/sp_dialog_button_bar_height" @@ -235,4 +222,4 @@ android:layout_weight="0" /> - \ No newline at end of file + diff --git a/sublimepickerlibrary/src/main/res/layout/time_picker_layout.xml b/sublimepickerlibrary/src/main/res/layout/time_picker_layout.xml index a1c1e25..4eb0e3a 100644 --- a/sublimepickerlibrary/src/main/res/layout/time_picker_layout.xml +++ b/sublimepickerlibrary/src/main/res/layout/time_picker_layout.xml @@ -35,8 +35,6 @@ android:layout_gravity="center" android:layout_marginTop="@dimen/sp_timepicker_radial_picker_top_margin" android:layout_marginStart="@dimen/sp_timepicker_radial_picker_horizontal_margin" - android:layout_marginEnd="@dimen/sp_timepicker_radial_picker_horizontal_margin" - android:layout_marginLeft="@dimen/sp_timepicker_radial_picker_horizontal_margin" - android:layout_marginRight="@dimen/sp_timepicker_radial_picker_horizontal_margin"/> + android:layout_marginEnd="@dimen/sp_timepicker_radial_picker_horizontal_margin" /> - \ No newline at end of file + diff --git a/sublimepickerlibrary/src/main/res/values/strings.xml b/sublimepickerlibrary/src/main/res/values/strings.xml index 3f83182..b0cfb34 100644 --- a/sublimepickerlibrary/src/main/res/values/strings.xml +++ b/sublimepickerlibrary/src/main/res/values/strings.xml @@ -120,6 +120,7 @@ ok, set date/time Cancel, do not set date/time + recurrence picker repeat options does not repeat