Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some development improvements and fixes (from master) #2

Open
wants to merge 19 commits into
base: master
Choose a base branch
from
Open
25 changes: 12 additions & 13 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@ apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'

android {
compileSdkVersion 25
buildToolsVersion "23.0.3"
compileSdkVersion 30

defaultConfig {
applicationId "io.blackbox_vision.wheelview.sample"
minSdkVersion 14
targetSdkVersion 25
minSdkVersion 19
targetSdkVersion 30
versionCode 1
versionName "1.0"
}
Expand Down Expand Up @@ -36,15 +35,15 @@ retrolambda {
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(dir: 'libs', include: ['*.jar'])

testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
testCompile 'org.robolectric:robolectric:3.1'
testCompile 'org.powermock:powermock-module-junit4:1.6.3'
testCompile 'org.powermock:powermock-api-mockito:1.6.3'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:1.10.19'
testImplementation 'org.robolectric:robolectric:4.2.1'
testImplementation 'org.powermock:powermock-module-junit4:1.6.3'
testImplementation 'org.powermock:powermock-api-mockito:1.6.3'

compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:design:25.1.0'
compile project(':materialwheelview')
implementation 'com.android.support:appcompat-v7:25.1.0'
implementation 'com.android.support:design:25.1.0'
implementation project(':materialwheelview')
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.widget.Toast;

import io.blackbox_vision.wheelview.view.DatePickerPopUpWindow;
Expand Down
10 changes: 5 additions & 5 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
Expand All @@ -8,19 +8,19 @@
android:fitsSystemWindows="true"
tools:context=".MainActivity">

<android.support.design.widget.AppBarLayout
<com.google.android.material.appbar.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:theme="@style/AppTheme.AppBarOverlay">

<android.support.v7.widget.Toolbar
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"/>

</android.support.design.widget.AppBarLayout>
</com.google.android.material.appbar.AppBarLayout>

<include layout="@layout/content_main"/>

Expand All @@ -32,4 +32,4 @@
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_email"/>

</android.support.design.widget.CoordinatorLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
40 changes: 20 additions & 20 deletions materialwheelview/build.gradle
Original file line number Diff line number Diff line change
@@ -1,23 +1,16 @@
apply plugin: 'com.android.library'
apply plugin: 'me.tatarka.retrolambda'

version = "1.1.1"

android {
compileSdkVersion 25
buildToolsVersion "23.0.3"
compileSdkVersion 30


defaultConfig {
minSdkVersion 14
targetSdkVersion 25
versionCode 2
versionName "1.1.1"
minSdkVersion 19
targetSdkVersion 30
versionCode 3
versionName "1.1.2"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
disable "InvalidPackage"
Expand All @@ -32,12 +25,19 @@ android {
}
}

retrolambda {
jvmArgs "-noverify"
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:25.1.0'
implementation fileTree(include: ['*.jar'], dir: 'libs')

implementation 'androidx.appcompat:appcompat:1.3.0-alpha02'
implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test:rules:1.3.0'

implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
implementation 'androidx.fragment:fragment-ktx:1.2.5'
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.blackbox_vision.wheelview.data;

import android.support.annotation.NonNull;
import androidx.annotation.NonNull;


public interface ItemMapper {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.blackbox_vision.wheelview.utils;

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import java.text.ParseException;
import java.text.SimpleDateFormat;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
Expand All @@ -26,6 +26,7 @@
public final class DatePickerWheelView extends LinearLayout {
private static final String TAG = DatePickerWheelView.class.getSimpleName();

private static final String LONG_MONTH_FORMAT = "MMMM";
private static final String SHORT_MONTH_FORMAT = "MMM";
private static final String YEAR_FORMAT = "yyyy";
private static final String MONTH_FORMAT = "MM";
Expand All @@ -49,6 +50,7 @@ public final class DatePickerWheelView extends LinearLayout {

private boolean showDayMonthYear;
private boolean showShortMonths;
private boolean showLongMonths;

@NonNull
private final List<String> years = new ArrayList<>();
Expand All @@ -72,6 +74,8 @@ public final class DatePickerWheelView extends LinearLayout {
private Locale locale = Locale.getDefault();

private View rootView;
private String fontTypeface;
private boolean canLoop;

public DatePickerWheelView(Context context) {
this(context, null, 0);
Expand Down Expand Up @@ -105,13 +109,16 @@ private void takeStyles(@NonNull AttributeSet attrs) {

showDayMonthYear = array.getBoolean(R.styleable.DatePickerWheelView_datePickerWheelViewShowDayMonthYear, false);
showShortMonths = array.getBoolean(R.styleable.DatePickerWheelView_datePickerWheelViewShowShortMonths, false);
showLongMonths = array.getBoolean(R.styleable.DatePickerWheelView_datePickerWheelViewShowLongMonths, false);

textSize = array.getDimension(R.styleable.DatePickerWheelView_datePickerWheelViewTextSize, 16F);

minYear = array.getInt(R.styleable.DatePickerWheelView_datePickerWheelViewMinYear, 1980);
maxYear = array.getInt(R.styleable.DatePickerWheelView_datePickerWheelViewMaxYear, 2100);

initialDate = array.getString(R.styleable.DatePickerWheelView_datePickerWheelViewInitialDate);
fontTypeface = array.getString(R.styleable.DatePickerWheelView_datePickerWheelViewFontTypeface);
canLoop = array.getBoolean(R.styleable.DatePickerWheelView_datePickerWheelViewIsLoopEnabled, false);
}
} finally {
if (null != array) {
Expand Down Expand Up @@ -144,6 +151,10 @@ private void drawDatePickerWheelView() {
monthSpinner.setTextSize(textSize);
daySpinner.setTextSize(textSize);

yearSpinner.setIsLoopEnabled(canLoop);
monthSpinner.setIsLoopEnabled(canLoop);
daySpinner.setIsLoopEnabled(canLoop);

yearSpinner.addOnLoopScrollListener(this::updateYearPosition);
yearSpinner.addOnLoopScrollListener(this::onDateSelected);

Expand All @@ -158,10 +169,13 @@ private void drawDatePickerWheelView() {
drawDayPickerView();

setInitialPositions();
setFontTypeface(fontTypeface);
}

private void updateYearPosition(@NonNull Object item, int position) {
this.yearPos = position;
// Leap years have 29 days in February
drawDayPickerView();
invalidate();
}

Expand All @@ -182,7 +196,8 @@ private void onDateSelected(@NonNull Object item, int position) {

calendar.set(Calendar.YEAR, Integer.valueOf(years.get(yearPos)));
calendar.set(Calendar.MONTH, monthPos);
calendar.set(Calendar.DAY_OF_MONTH, Integer.valueOf(days.get(dayPos)));
// Prevent an IndexOutOfBoundsException
calendar.set(Calendar.DAY_OF_MONTH, Integer.valueOf(days.get(Math.min(days.size() - 1, dayPos))));

final int year = calendar.get(Calendar.YEAR);
final int month = calendar.get(Calendar.MONTH);
Expand All @@ -196,8 +211,14 @@ private void setInitialPositions() {
final Calendar calendar = DateUtils.parseDateString(initialDate);

yearPos = years.indexOf(String.valueOf(calendar.get(Calendar.YEAR)));
monthPos = months.indexOf(String.valueOf(calendar.get(Calendar.MONTH) + 1));
dayPos = days.indexOf(String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)));
String dateFormat = showShortMonths ? SHORT_MONTH_FORMAT : MONTH_FORMAT;
dateFormat = showLongMonths ? LONG_MONTH_FORMAT : dateFormat;
String formattedMonth = formatDate(calendar, locale, dateFormat);
formattedMonth = showShortMonths ? formattedMonth.toUpperCase(locale) : formattedMonth;
// Fixed: months array was accessed without custom format
monthPos = months.indexOf(formattedMonth);
// Fixed: days was accessed without "dd"
dayPos = days.indexOf(formatDate(calendar, locale, DAY_FORMAT));

yearSpinner.setInitialPosition(yearPos);
monthSpinner.setInitialPosition(monthPos);
Expand All @@ -223,7 +244,9 @@ private void drawMonthPickerView() {
deleteAll(months);
calendar = Calendar.getInstance(locale);

final String dateFormat = showShortMonths ? SHORT_MONTH_FORMAT : MONTH_FORMAT;
String dateFormat = showShortMonths ? SHORT_MONTH_FORMAT : MONTH_FORMAT;
// Support long months
dateFormat = showLongMonths ? LONG_MONTH_FORMAT : dateFormat;

for (int j = 0; j <= calendar.getActualMaximum(Calendar.MONTH); j++) {
calendar.set(Calendar.YEAR, Integer.valueOf(years.get(yearPos)));
Expand All @@ -246,6 +269,20 @@ private void drawDayPickerView() {

calendar = Calendar.getInstance(locale);

// Fixed: dayPos while changing to a shorter month
Calendar cl = Calendar.getInstance(locale);
cl.set(Calendar.YEAR, year);
cl.set(Calendar.DAY_OF_MONTH, 1);
cl.set(Calendar.MONTH, monthPos);
int actualMaximum = cl.getActualMaximum(Calendar.DAY_OF_MONTH);

if (dayPos > actualMaximum - 1) {
int delta = dayPos - actualMaximum + 1;
dayPos = delta - 1;
daySpinner.forceScroll(delta);
}
///

for (int i = 0; i < calendar.getActualMaximum(Calendar.DAY_OF_MONTH); i++) {
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, monthPos);
Expand Down Expand Up @@ -289,6 +326,7 @@ public DatePickerWheelView setMaxYear(int maxYear) {
}

this.maxYear = maxYear;
drawYearPickerView();
invalidate();
return this;
}
Expand All @@ -312,6 +350,13 @@ public DatePickerWheelView setShowShortMonths(boolean showShortMonths) {
return this;
}

public DatePickerWheelView setShowLongMonths(boolean showLongMonths) {
this.showLongMonths = showLongMonths;
drawMonthPickerView();
invalidate();
return this;
}

public DatePickerWheelView setTextSize(float textSize) {
this.textSize = textSize;
invalidate();
Expand Down Expand Up @@ -342,4 +387,11 @@ public DatePickerWheelView setInitialDate(String initialDate) {
invalidate();
return this;
}

public DatePickerWheelView setFontTypeface(String fontTypeface) {
yearSpinner.setFontTypeface(fontTypeface);
monthSpinner.setFontTypeface(fontTypeface);
daySpinner.setFontTypeface(fontTypeface);
return this;
}
}
Loading