From b39ce5ebfdf151b2f5ac98282309aa38c8fb7b03 Mon Sep 17 00:00:00 2001 From: vend Date: Fri, 25 Feb 2022 18:54:11 +0500 Subject: [PATCH 01/11] added android X migration and implemented BS date picker --- android-json-form-wizard/build.gradle | 122 ++--- .../vijay/jsonwizard/NativeFormLibrary.java | 4 +- .../FormConfigurationJsonFormActivity.java | 8 +- .../activities/JsonFormActivity.java | 10 +- .../activities/JsonFormBaseActivity.java | 8 +- .../activities/MultiLanguageActivity.java | 2 +- .../adapter/DynamicLabelAdapter.java | 4 +- .../adapter/MultiSelectListAdapter.java | 4 +- .../MultiSelectListSelectedAdapter.java | 4 +- .../customviews/BikramSambatCalendar.java | 274 +++++++++++ .../customviews/CompoundButton.java | 2 +- .../customviews/DatePickerDialog.java | 44 +- .../ExpansionPanelGenericPopupDialog.java | 6 +- .../jsonwizard/customviews/FormErrorView.java | 2 +- .../customviews/GenericPopupDialog.java | 2 +- .../jsonwizard/customviews/GpsDialog.java | 4 +- .../customviews/MaterialSpinner.java | 2 +- .../customviews/NativeEditText.java | 6 +- .../customviews/NumberSelectorSpinner.java | 2 +- .../customviews/NumericDatePicker.java | 2 +- .../jsonwizard/customviews/TextableView.java | 2 +- .../customviews/TimePickerDialog.java | 2 +- .../customviews/ToasterLinearLayout.java | 2 +- .../customviews/TreeViewDialog.java | 2 +- .../delegates/JsonWizardFormDelegate.java | 4 +- .../jsonwizard/domain/MultiSelectItem.java | 2 +- .../domain/MultiSelectListAccessory.java | 2 +- .../factory/FileSourceFactoryHelper.java | 2 +- .../jsonwizard/filesource/DiskFileSource.java | 2 +- .../fragments/JsonFormErrorFragment.java | 8 +- .../fragments/JsonFormFragment.java | 27 +- .../fragments/JsonWizardFormFragment.java | 4 +- .../interactors/JsonFormInteractor.java | 2 +- .../jsonwizard/interfaces/FormFileSource.java | 2 +- .../interfaces/FormWidgetFactory.java | 2 +- .../interfaces/OnFormFetchedCallback.java | 2 +- .../interfaces/RollbackDialogCallback.java | 2 +- ...ExpansionPanelUndoButtonClickListener.java | 2 +- .../vijay/jsonwizard/mvp/BaseActivity.java | 2 +- .../vijay/jsonwizard/mvp/BaseFragment.java | 4 +- .../com/vijay/jsonwizard/mvp/MvpFragment.java | 2 +- .../presenters/JsonFormFragmentPresenter.java | 33 +- .../jsonwizard/rules/RulesEngineDateUtil.java | 2 +- .../jsonwizard/rules/RulesEngineFactory.java | 2 +- .../vijay/jsonwizard/utils/AppExecutors.java | 2 +- .../vijay/jsonwizard/utils/DateConverter.java | 264 +++++++++++ .../jsonwizard/utils/DatePickerUtils.java | 7 + .../utils/DateRangeNotSupported.java | 12 + .../utils/FormRollbackDialogUtil.java | 4 +- .../com/vijay/jsonwizard/utils/FormUtils.java | 13 +- .../vijay/jsonwizard/utils/ImageUtils.java | 6 +- .../utils/InvalidBsDayOfMonthException.java | 12 + .../utils/InvalidDateFormatException.java | 13 + .../com/vijay/jsonwizard/utils/Lookup.java | 441 ++++++++++++++++++ .../utils/MultiSelectListUtils.java | 2 +- .../utils/NativeFormsProperties.java | 2 + .../jsonwizard/utils/PermissionUtils.java | 6 +- .../jsonwizard/utils/PropertyManager.java | 2 +- .../com/vijay/jsonwizard/utils/Utils.java | 22 +- .../barcode/JsonFormCameraSourcePreview.java | 2 +- .../edittext/CumulativeTotalValidator.java | 4 +- .../edittext/MaxNumericValidator.java | 2 +- .../edittext/MinNumericValidator.java | 2 +- .../edittext/ReferenceValidator.java | 2 +- .../edittext/RelativeNumericValidator.java | 2 +- .../jsonwizard/views/CustomTextView.java | 4 +- .../views/JsonFormFragmentView.java | 4 +- .../widgets/BasicRDTCaptureFactory.java | 2 +- .../jsonwizard/widgets/CheckBoxFactory.java | 4 +- .../widgets/CountDownTimerFactory.java | 2 +- .../jsonwizard/widgets/DatePickerFactory.java | 84 +++- .../widgets/ExpansionPanelFactory.java | 2 +- .../ExtendedRadioButtonWidgetFactory.java | 2 +- .../widgets/FingerPrintFactory.java | 2 +- .../vijay/jsonwizard/widgets/GpsFactory.java | 12 +- .../widgets/ImagePickerFactory.java | 10 +- .../jsonwizard/widgets/ImageViewFactory.java | 2 +- .../jsonwizard/widgets/LabelFactory.java | 2 +- .../widgets/MultiSelectListFactory.java | 14 +- .../widgets/NativeRadioButtonFactory.java | 12 +- .../widgets/NumberSelectorFactory.java | 10 +- .../widgets/OptiBPWidgetFactory.java | 13 +- .../jsonwizard/widgets/RDTCaptureFactory.java | 2 +- .../widgets/RadioButtonFactory.java | 2 +- .../widgets/RepeatingGroupFactory.java | 6 +- .../jsonwizard/widgets/SpinnerFactory.java | 8 +- .../jsonwizard/widgets/TimePickerFactory.java | 4 +- .../widgets/ToasterNotesFactory.java | 4 +- .../main/res/layout/multiselectlistdialog.xml | 4 +- .../layout/native_form_activity_json_form.xml | 2 +- .../res/layout/native_form_custom_dialog.xml | 6 +- .../layout/native_form_dialog_date_picker.xml | 5 + .../res/layout/native_form_dynamic_dialog.xml | 4 +- .../res/layout/native_form_error_fragment.xml | 10 +- .../res/layout/native_form_error_item.xml | 4 +- .../res/layout/native_form_image_view.xml | 4 +- .../main/res/layout/native_form_labels.xml | 4 +- .../res/layout/number_selector_dialog.xml | 2 +- .../main/res/layout/toolbar_barcode_scan.xml | 8 +- .../res/layout/toolbar_container_form.xml | 8 +- .../res/layout/toolbar_generic_dialog.xml | 8 +- ...FormConfigurationJsonFormActivityTest.java | 2 +- .../activities/JsonFormActivityTest.java | 4 +- .../adapter/DynamicLabelAdapterTest.java | 2 +- .../adapter/MultiSelectListAdapterTest.java | 2 +- .../domain/MultiSelectListAccessoryTest.java | 2 +- ...FormFragmentPresenterRoboElectricTest.java | 2 +- ...FormFragmentPresenterRoboelectricTest.java | 2 +- .../shadow/ShadowContextCompat.java | 4 +- .../jsonwizard/shadow/ShadowFileProvider.java | 4 +- .../vijay/jsonwizard/shadow/ShadowIntent.java | 2 +- .../shadow/ShadowPermissionUtils.java | 2 +- .../widgets/CheckBoxFactoryTest.java | 2 +- .../widgets/DatePickerFactoryTest.java | 2 +- .../ExtendedRadioButtonWidgetFactoryTest.java | 2 +- .../jsonwizard/widgets/LabelFactoryTest.java | 2 +- .../widgets/MultiSelectListFactoryTest.java | 2 +- build.gradle | 1 + form_tester/build.gradle | 13 +- form_tester/src/main/AndroidManifest.xml | 2 +- form_tester/src/main/assets/app.properties | 3 +- .../main/assets/json.form/single_form.json | 68 +-- .../nativeform_tester/FormTesterActivity.java | 20 +- .../nativeform_tester/MainActivity.java | 4 +- .../adapter/NativeFormAdapter.java | 4 +- .../contract/FormTesterContract.java | 6 +- .../nativeform_tester/domain/JsonForm.java | 6 +- .../interactor/FormTesterInteractor.java | 10 +- .../presenter/FormTesterPresenter.java | 4 +- .../src/main/res/layout/activity_main.xml | 10 +- .../main/res/layout/form_tester_activity.xml | 8 +- form_tester/src/main/res/values/strings.xml | 3 + gradle.properties | 2 + sample/build.gradle | 4 +- sample/src/main/AndroidManifest.xml | 2 +- sample/src/main/assets/app.properties | 3 +- .../nativeform/MainActivity.java | 4 +- sample/src/main/res/layout/activity_main.xml | 10 +- 138 files changed, 1562 insertions(+), 389 deletions(-) create mode 100644 android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/BikramSambatCalendar.java create mode 100644 android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/DateConverter.java create mode 100644 android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/DateRangeNotSupported.java create mode 100644 android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/InvalidBsDayOfMonthException.java create mode 100644 android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/InvalidDateFormatException.java create mode 100644 android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/Lookup.java diff --git a/android-json-form-wizard/build.gradle b/android-json-form-wizard/build.gradle index 087c6eee6..de25e0d2c 100644 --- a/android-json-form-wizard/build.gradle +++ b/android-json-form-wizard/build.gradle @@ -10,13 +10,14 @@ buildscript { } apply plugin: 'com.android.library' -apply plugin: 'jacoco' -apply plugin: 'com.github.kt3k.coveralls' +//apply plugin: 'jacoco' +//apply plugin: 'com.github.kt3k.coveralls' + +//jacoco { +// toolVersion = "0.8.3" +// reportsDir = file("$buildDir/reports/jacoco") +//} -jacoco { - toolVersion = "0.8.3" - reportsDir = file("$buildDir/reports/jacoco") -} android { compileSdkVersion androidCompileSdkVersion @@ -27,8 +28,8 @@ android { defaultConfig { minSdkVersion androidMinSdkVersion targetSdkVersion androidTargetSdkVersion - versionCode Integer.parseInt(project.VERSION_CODE) - versionName project.VERSION_NAME + versionCode 1 + versionName "123" multiDexEnabled true testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner" @@ -68,8 +69,12 @@ android { } -tasks.withType(Test) { - jacoco.includeNoLocationClasses = true +//tasks.withType(Test) { +// jacoco.includeNoLocationClasses = true +//} +configurations { + cleanedAnnotations + compile.exclude group: 'org.jetbrains' , module:'annotations' } repositories { @@ -84,7 +89,7 @@ dependencies { exclude group: 'com.android.support', module: 'design' } implementation 'com.github.bmelnychuk:atv:1.2.9' - implementation('com.android.support:design:28.0.0') { + implementation('com.google.android.material:material:1.0.0') { exclude group: 'com.android.support', module: 'recyclerview-v7' exclude group: 'com.android.support', module: 'appcompat-v7' exclude group: 'com.android.support', module: 'support-v4' @@ -93,7 +98,7 @@ dependencies { implementation 'com.github.johnkil.print:print:1.3.1' implementation 'com.github.rey5137:material:1.2.5' implementation 'org.smartregister:opensrp-client-materialedittext:2.1.6-SNAPSHOT' - implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation('com.github.ganfra:material-spinner:2.0.0') { exclude group: 'com.nineoldandroids', module: 'library' exclude group: 'com.android.support', module: 'appcompat-v7' @@ -138,7 +143,8 @@ dependencies { } implementation 'com.jakewharton.timber:timber:4.7.1' implementation 'org.greenrobot:eventbus:3.1.1' - implementation 'com.android.support:multidex:1.0.3' + implementation 'androidx.multidex:multidex:2.0.0' + // PowerMock def powerMockVersion = '2.0.4' @@ -154,18 +160,22 @@ dependencies { androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2' androidTestImplementation 'junit:junit:4.12' - androidTestImplementation("com.android.support.test:runner:1.0.2") { + androidTestImplementation('androidx.test.ext:junit:1.1.1') { exclude group: 'com.android.support', module: 'appcompat-v7' } - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2', { + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0', { exclude group: 'com.android.support', module: 'support-annotations' } - androidTestImplementation('com.android.support.test:rules:1.0.2') { + androidTestImplementation('androidx.test:rules:1.1.1') { exclude group: 'com.android.support', module: 'appcompat-v7' } + implementation ('com.github.keyrunHORNET:date_picker_converter:3.0.0') { + exclude group: 'org.jetbrains' , module:'annotations' + } + testImplementation 'junit:junit:4.12' testImplementation 'org.apache.maven:maven-ant-tasks:2.1.3' testImplementation 'org.mockito:mockito-core:3.1.0' @@ -174,43 +184,43 @@ dependencies { testImplementation "org.json:json:20190722" } -task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) { - - reports { - - xml.enabled = true - xml.destination = file("${buildDir}/reports/jacoco/jacocoRootReport/merged.xml") - - html.enabled = true - html.destination file("${buildDir}/reports/jacoco/jacocoRootReport/html") - } - - def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*', '**/*$ViewBinder*.*'] - def debugTree = fileTree(dir: "$project.buildDir/intermediates/javac/debug/classes/", excludes: fileFilter) - def mainSrc = "$project.projectDir/src/main/java" - - sourceDirectories.from = files([mainSrc]) - classDirectories.from = files([debugTree]) - executionData.from = fileTree(dir: project.buildDir, includes: [ - 'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec' - ]) -} - -tasks.coveralls { - dependsOn 'jacocoTestReport' -} - -coveralls { - jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/merged.xml" -} - - -apply from: '../maven.gradle' - -task javadoc(type: Javadoc) { - failOnError false - def mainSrc = "$project.projectDir/src/main/java" - source = files([mainSrc]) - classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) - classpath += configurations.compile -} +//task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) { +// +// reports { +// +// xml.enabled = true +// xml.destination = file("${buildDir}/reports/jacoco/jacocoRootReport/merged.xml") +// +// html.enabled = true +// html.destination file("${buildDir}/reports/jacoco/jacocoRootReport/html") +// } +// +// def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*', '**/*$ViewBinder*.*'] +// def debugTree = fileTree(dir: "$project.buildDir/intermediates/javac/debug/classes/", excludes: fileFilter) +// def mainSrc = "$project.projectDir/src/main/java" +// +// sourceDirectories.from = files([mainSrc]) +// classDirectories.from = files([debugTree]) +// executionData.from = fileTree(dir: project.buildDir, includes: [ +// 'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec' +// ]) +//} + +//tasks.coveralls { +// dependsOn 'jacocoTestReport' +//} +// +//coveralls { +// jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/merged.xml" +//} + + +//apply from: '../maven.gradle' +// +//task javadoc(type: Javadoc) { +// failOnError false +// def mainSrc = "$project.projectDir/src/main/java" +// source = files([mainSrc]) +// classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) +// classpath += configurations.compile +//} diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/NativeFormLibrary.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/NativeFormLibrary.java index 43bbc2023..46a5efd46 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/NativeFormLibrary.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/NativeFormLibrary.java @@ -1,7 +1,7 @@ package com.vijay.jsonwizard; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import org.smartregister.client.utils.contract.ClientFormContract; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/FormConfigurationJsonFormActivity.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/FormConfigurationJsonFormActivity.java index 0ee860ee0..3b6019920 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/FormConfigurationJsonFormActivity.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/FormConfigurationJsonFormActivity.java @@ -3,10 +3,10 @@ import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; -import android.support.v7.app.AlertDialog; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; +import androidx.appcompat.app.AlertDialog; import android.widget.Toast; import com.vijay.jsonwizard.NativeFormLibrary; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/JsonFormActivity.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/JsonFormActivity.java index 075c898a7..857b721d3 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/JsonFormActivity.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/JsonFormActivity.java @@ -14,11 +14,11 @@ import android.graphics.drawable.GradientDrawable; import android.os.AsyncTask; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.LocalBroadcastManager; -import android.support.v4.util.Pair; -import android.support.v7.widget.AppCompatRadioButton; +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; +import androidx.core.util.Pair; +import androidx.appcompat.widget.AppCompatRadioButton; import android.text.Html; import android.text.Spanned; import android.text.TextUtils; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/JsonFormBaseActivity.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/JsonFormBaseActivity.java index 9c7e70a84..c1f9aaa5f 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/JsonFormBaseActivity.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/JsonFormBaseActivity.java @@ -4,10 +4,10 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.content.LocalBroadcastManager; -import android.support.v7.widget.Toolbar; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; +import androidx.appcompat.widget.Toolbar; import android.view.View; import com.google.gson.Gson; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/MultiLanguageActivity.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/MultiLanguageActivity.java index ef9563f77..23e7f8b6b 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/MultiLanguageActivity.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/MultiLanguageActivity.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.activities; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import com.vijay.jsonwizard.utils.NativeFormLangUtils; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/adapter/DynamicLabelAdapter.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/adapter/DynamicLabelAdapter.java index 6fb22ed37..cb6d018fe 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/adapter/DynamicLabelAdapter.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/adapter/DynamicLabelAdapter.java @@ -1,8 +1,8 @@ package com.vijay.jsonwizard.adapter; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/adapter/MultiSelectListAdapter.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/adapter/MultiSelectListAdapter.java index 62b780d7d..9ad5eef25 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/adapter/MultiSelectListAdapter.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/adapter/MultiSelectListAdapter.java @@ -1,7 +1,7 @@ package com.vijay.jsonwizard.adapter; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/adapter/MultiSelectListSelectedAdapter.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/adapter/MultiSelectListSelectedAdapter.java index c2b7fe9ad..2e2be2088 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/adapter/MultiSelectListSelectedAdapter.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/adapter/MultiSelectListSelectedAdapter.java @@ -1,8 +1,8 @@ package com.vijay.jsonwizard.adapter; import android.graphics.Typeface; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/BikramSambatCalendar.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/BikramSambatCalendar.java new file mode 100644 index 000000000..6cb3b03bc --- /dev/null +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/BikramSambatCalendar.java @@ -0,0 +1,274 @@ +package com.vijay.jsonwizard.customviews; + +import android.app.Activity; +import android.content.Context; +import android.os.Parcelable; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.view.animation.AlphaAnimation; +import android.view.animation.Animation; +import android.widget.LinearLayout; + +import androidx.annotation.Nullable; + +import com.hornet.dateconverter.DateConverter; +import com.hornet.dateconverter.DatePicker.AccessibleDateAnimator; +import com.hornet.dateconverter.DatePicker.DatePickerController; +import com.hornet.dateconverter.DatePicker.DatePickerDialog; +import com.hornet.dateconverter.DatePicker.DateRangeLimiter; +import com.hornet.dateconverter.DatePicker.DayPickerGroup; +import com.hornet.dateconverter.DatePicker.DefaultDateRangeLimiter; +import com.hornet.dateconverter.DatePicker.MonthAdapter; +import com.hornet.dateconverter.Model; +import com.hornet.dateconverter.Utils; +import com.vijay.jsonwizard.R; + + +import java.util.GregorianCalendar; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.TimeZone; + +/** + * Created by Kiran Gyawali on 10/28/2018. + */ +public class BikramSambatCalendar extends LinearLayout + implements View.OnClickListener, DatePickerController { + + private OnDateSetListener mCallback; + private DefaultDateRangeLimiter mDefaultLimiter = new DefaultDateRangeLimiter(); + // MdtpDatePickerViewAnimatorV2Binding mainBinding; + private DayPickerGroup mDayPickerView; + private AccessibleDateAnimator mAnimator; + private Model mCalendar; + private HashSet highlightedDays = new HashSet<>(); + private DateRangeLimiter mDateRangeLimiter = mDefaultLimiter; + private boolean highlightSaturdays; + + public BikramSambatCalendar(Context context) { + this(context, null); + } + + + public BikramSambatCalendar(Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + public BikramSambatCalendar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(attrs, context); + + } + + public void setOnDateSetListener(OnDateSetListener listener) { + this.mCallback = listener; + } + + private void init(AttributeSet attrs, Context context) { + /*LayoutInflater inflater = (LayoutInflater) + context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + mainBinding= MdtpDatePickerViewAnimatorV2Binding.inflate(inflater); + */ + LayoutInflater.from(context) + .inflate(R.layout.mdtp_date_picker_view_animator_v2, this, true); + mCalendar = new DateConverter().getTodayNepaliDate(); + mAnimator = findViewById(R.id.mdtp_animator); + mDayPickerView = new DayPickerGroup(context, this); + mDefaultLimiter.setController(this); + mAnimator.addView(mDayPickerView); + mAnimator.setDateMillis(java.util.Calendar.getInstance().getTimeInMillis()); + Animation animation = new AlphaAnimation(0.0f, 1.0f); + animation.setDuration(300); + mAnimator.setInAnimation(animation); + Animation animation2 = new AlphaAnimation(1.0f, 0.0f); + animation2.setDuration(300); + mAnimator.setOutAnimation(animation2); + } + + + @Nullable + @Override + protected Parcelable onSaveInstanceState() { + return super.onSaveInstanceState(); + } + + @Override + public void onClick(View view) { + + } + + @Override + public void onYearSelected(int year) { + + } + + @Override + public void onDayOfMonthSelected(int year, int month, int day, int dayOfWeek) { + mCalendar.setDayOfWeek(dayOfWeek); + mCalendar.setYear(year); + mCalendar.setMonth(month); + mCalendar.setDay(day); + notifyDateSet(); + } + + @Override + public void registerOnDateChangedListener(DatePickerDialog.OnDateChangedListener listener) { + + } + + @Override + public void unregisterOnDateChangedListener(DatePickerDialog.OnDateChangedListener listener) { + + } + + @Override + public MonthAdapter.CalendarDay getSelectedDay() { + return new MonthAdapter.CalendarDay(new DateConverter().getTodayNepaliDate()); + } + + @Override + public boolean isThemeDark() { + return false; + } + + @Override + public int getAccentColor() { + return Utils.getAccentColorFromThemeIfAvailable(getContext()); + } + + @Override + public boolean isHighlighted(int year, int month, int day) { + java.util.Calendar date = java.util.Calendar.getInstance(getTimeZone()); + date.set(java.util.Calendar.YEAR, year); + date.set(java.util.Calendar.MONTH, month); + date.set(java.util.Calendar.DAY_OF_MONTH, day); + Utils.trimToMidnight(date); + return highlightedDays.contains(date); + } + + @Override + public int getFirstDayOfWeek() { + return 1;//week start is sunday by default + } + + @Override + public int getMinYear() { + return mDateRangeLimiter.getMinYear(); + } + + @Override + public int getMaxYear() { + return mDateRangeLimiter.getMaxYear(); + } + + @Override + public java.util.Calendar getStartDate() { + return mDateRangeLimiter.getStartDate(); + } + + @Override + public java.util.Calendar getEndDate() { + return mDateRangeLimiter.getEndDate(); + } + + @Override + public boolean isOutOfRange(int year, int month, int day) { + return mDateRangeLimiter.isOutOfRange(year, month, day); + } + + @Override + public void tryVibrate() { + + } + + @Override + public TimeZone getTimeZone() { + return TimeZone.getDefault(); + } + + @Override + public Locale getLocale() { + return Locale.getDefault(); + } + + @Override + public DatePickerDialog.Version getVersion() { + return DatePickerDialog.Version.VERSION_2; //default version 2 + } + + @Override + public DatePickerDialog.ScrollOrientation getScrollOrientation() { + return DatePickerDialog.ScrollOrientation.HORIZONTAL; + } + + public void setHighlightedDays(List myHighlightedDays) { + + java.util.Calendar[] days = new java.util.Calendar[myHighlightedDays.size()]; + for (int i = 0; i < myHighlightedDays.size(); i++) { + java.util.Calendar mDay = new GregorianCalendar(myHighlightedDays.get(i).getYear(), myHighlightedDays.get(i).getMonth(), myHighlightedDays.get(i).getDay()); + days[i] = mDay; + } + + for (java.util.Calendar highlightedDay : days) { + this.highlightedDays.add(Utils.trimToMidnight((java.util.Calendar) highlightedDay.clone())); + } + // Sort the array to optimize searching over it later on + ///Arrays.sort(highlightedDays); + if (mDayPickerView != null) mDayPickerView.onChange(); + } + + + private void setSelectableDays(List myList) { + java.util.Calendar[] days = new java.util.Calendar[myList.size()]; + for (int i = 0; i < myList.size(); i++) { + java.util.Calendar mDay = new GregorianCalendar(myList.get(i).getYear(), myList.get(i).getMonth(), myList.get(i).getDay()); + days[i] = mDay; + } + mDefaultLimiter.setSelectableDays(days); + if (mDayPickerView != null) mDayPickerView.onChange(); + } + + private void highlightAllSaturdays(boolean highlight) { + highlightSaturdays = highlight; + + if (highlightSaturdays) { + highlightedDays.addAll(getSaturdays()); + } else { + if (highlightedDays.containsAll(getSaturdays())) { + highlightedDays.removeAll(getSaturdays()); + } + } + } + + private HashSet getSaturdays() { + HashSet saturdaysHashSet = new HashSet<>(); + List saturdays = DateConverter.getAllSaturdays(); + java.util.Calendar[] days = new java.util.Calendar[saturdays.size()]; + for (int i = 0; i < saturdays.size(); i++) { + java.util.Calendar mDay = new GregorianCalendar(saturdays.get(i).getYear(), saturdays.get(i).getMonth(), saturdays.get(i).getDay()); + days[i] = mDay; + } + for (java.util.Calendar highlightedDay : days) { + saturdaysHashSet.add(Utils.trimToMidnight((java.util.Calendar) highlightedDay.clone())); + } + return saturdaysHashSet; + } + + + public void notifyDateSet() { + if (mCallback != null) { + mCallback.onDateClick(BikramSambatCalendar.this, mCalendar.getYear(), + mCalendar.getMonth(), mCalendar.getDay()); + } + } + + + public interface OnDateSetListener { + + + void onDateClick(View calendar, int year, int month, int day); + } + +} diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/CompoundButton.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/CompoundButton.java index 93b92ed40..05931f5f8 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/CompoundButton.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/CompoundButton.java @@ -5,7 +5,7 @@ import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.os.Build; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.util.AttributeSet; import android.view.MotionEvent; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/DatePickerDialog.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/DatePickerDialog.java index 303529736..274efdd23 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/DatePickerDialog.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/DatePickerDialog.java @@ -5,7 +5,9 @@ import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; + +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -13,19 +15,24 @@ import android.widget.Button; import android.widget.DatePicker; +import com.hornet.dateconverter.Model; import com.vijay.jsonwizard.R; +import com.vijay.jsonwizard.utils.DateConverter; import com.vijay.jsonwizard.utils.DatePickerUtils; +import java.sql.Time; import java.util.Calendar; import java.util.Date; +import timber.log.Timber; + import static android.view.inputmethod.InputMethodManager.HIDE_NOT_ALWAYS; /** * Created by Jason Rogena - jrogena@ona.io on 08/05/2017. */ -public class DatePickerDialog extends DialogFragment { +public class DatePickerDialog extends DialogFragment implements BikramSambatCalendar.OnDateSetListener { private DatePicker datePicker; private android.app.DatePickerDialog.OnDateSetListener onDateSetListener; private DialogInterface.OnShowListener onShowListener; @@ -36,6 +43,7 @@ public class DatePickerDialog extends DialogFragment { private Context context; private char[] ymdOrder = new char[]{'d', 'm', 'y'}; private boolean isNumericDatePicker = false; + private BikramSambatCalendar BSCalendar; public DatePickerDialog() { this.minDate = -1; @@ -81,7 +89,10 @@ public void onShow(DialogInterface dialog) { }); datePicker = dialogView.findViewById(isNumericDatePicker ? R.id.date_picker_numeric : R.id.date_picker); - datePicker.setVisibility(View.VISIBLE); + datePicker.setVisibility(View.GONE); +// BS logic from the gradle properties. + BSCalendar = dialogView.findViewById(R.id.calendar); + BSCalendar.setOnDateSetListener(this); if (minDate != -1) { datePicker.setMinDate(minDate); @@ -129,6 +140,15 @@ public void onClick(View v) { public void onClick(View v) { if (onDateSetListener != null) { DatePickerDialog.this.dismiss(); + boolean bikramSambat = true; + if(bikramSambat) + { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + onDateSetListener.onDateSet(datePicker, calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); + } + else onDateSetListener.onDateSet(datePicker, datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth()); } @@ -179,4 +199,22 @@ public DatePicker getDatePicker() { public void setNumericDatePicker(boolean numericDatePicker) { isNumericDatePicker = numericDatePicker; } + + @Override + public void onDateClick(View calendar, int year, int month, int day) { + DateConverter dateConverter = new DateConverter(); + month = month+1; + String dayFiller = ""; + String monthFiller = ""; + if(day<=9) + dayFiller = "0"; + if(month <=9) + monthFiller = "0"; + date = dateConverter.convertBsToAd(dayFiller+day+monthFiller+month+year); + setDate(date); + +// Model model = dateConverter.getEnglishDate(year,month,day); +// Calendar convertedCalendar = DateConverter.convertModelToCalendar(model); +// setDate(convertedCalendar); + } } diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/ExpansionPanelGenericPopupDialog.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/ExpansionPanelGenericPopupDialog.java index dce150406..41d533c32 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/ExpansionPanelGenericPopupDialog.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/ExpansionPanelGenericPopupDialog.java @@ -6,9 +6,9 @@ import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v7.widget.AppCompatImageButton; -import android.support.v7.widget.Toolbar; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatImageButton; +import androidx.appcompat.widget.Toolbar; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/FormErrorView.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/FormErrorView.java index f8621b3b0..186793b63 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/FormErrorView.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/FormErrorView.java @@ -1,7 +1,7 @@ package com.vijay.jsonwizard.customviews; import android.content.Context; -import android.support.v7.widget.LinearLayoutCompat; +import androidx.appcompat.widget.LinearLayoutCompat; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/GenericPopupDialog.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/GenericPopupDialog.java index fbc747ba8..750046a3d 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/GenericPopupDialog.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/GenericPopupDialog.java @@ -6,7 +6,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/GpsDialog.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/GpsDialog.java index f22dc8cec..e889af1d9 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/GpsDialog.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/GpsDialog.java @@ -5,8 +5,8 @@ import android.content.DialogInterface; import android.location.Location; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.view.View; import android.widget.Button; import android.widget.Toast; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/MaterialSpinner.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/MaterialSpinner.java index 53e347684..93476e4c2 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/MaterialSpinner.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/MaterialSpinner.java @@ -8,7 +8,7 @@ import android.graphics.Point; import android.graphics.Typeface; import android.os.Build; -import android.support.v7.widget.AppCompatSpinner; +import androidx.appcompat.widget.AppCompatSpinner; import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/NativeEditText.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/NativeEditText.java index 01345c54a..51724f3cd 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/NativeEditText.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/NativeEditText.java @@ -2,9 +2,9 @@ import android.app.Activity; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.widget.AppCompatEditText; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatEditText; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/NumberSelectorSpinner.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/NumberSelectorSpinner.java index 7e9dbde3b..d7b0552f1 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/NumberSelectorSpinner.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/NumberSelectorSpinner.java @@ -1,7 +1,7 @@ package com.vijay.jsonwizard.customviews; import android.content.Context; -import android.support.v7.widget.AppCompatSpinner; +import androidx.appcompat.widget.AppCompatSpinner; import android.util.AttributeSet; /** diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/NumericDatePicker.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/NumericDatePicker.java index 8ff47a6e2..8d6915513 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/NumericDatePicker.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/NumericDatePicker.java @@ -3,7 +3,7 @@ import android.annotation.TargetApi; import android.content.Context; import android.os.Build; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.VisibleForTesting; import android.util.AttributeSet; import android.view.View; import android.widget.DatePicker; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/TextableView.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/TextableView.java index 315db3ac2..14e0ccb6e 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/TextableView.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/TextableView.java @@ -4,7 +4,7 @@ import android.content.Context; import android.content.res.TypedArray; import android.os.Build; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.util.AttributeSet; import android.widget.LinearLayout; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/TimePickerDialog.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/TimePickerDialog.java index 5b93a75cf..a6cfc94dd 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/TimePickerDialog.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/TimePickerDialog.java @@ -7,7 +7,7 @@ import android.content.DialogInterface; import android.os.Build; import android.os.Bundle; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/ToasterLinearLayout.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/ToasterLinearLayout.java index 6d0d35854..3e5b6d282 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/ToasterLinearLayout.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/ToasterLinearLayout.java @@ -1,7 +1,7 @@ package com.vijay.jsonwizard.customviews; import android.content.Context; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.util.AttributeSet; import android.widget.TextView; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/TreeViewDialog.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/TreeViewDialog.java index 9c1f97636..da8a39053 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/TreeViewDialog.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/TreeViewDialog.java @@ -2,7 +2,7 @@ import android.app.Dialog; import android.content.Context; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.VisibleForTesting; import android.view.Window; import android.widget.LinearLayout; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/delegates/JsonWizardFormDelegate.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/delegates/JsonWizardFormDelegate.java index 1cb137682..3c72f9375 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/delegates/JsonWizardFormDelegate.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/delegates/JsonWizardFormDelegate.java @@ -1,7 +1,7 @@ package com.vijay.jsonwizard.delegates; -import android.support.annotation.NonNull; -import android.support.v4.app.FragmentManager; +import androidx.annotation.NonNull; +import androidx.fragment.app.FragmentManager; import com.vijay.jsonwizard.constants.JsonFormConstants; import com.vijay.jsonwizard.fragments.JsonWizardFormFragment; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/domain/MultiSelectItem.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/domain/MultiSelectItem.java index a72c5343c..1098081bf 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/domain/MultiSelectItem.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/domain/MultiSelectItem.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.domain; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; public class MultiSelectItem { private String key; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/domain/MultiSelectListAccessory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/domain/MultiSelectListAccessory.java index d0cd913c4..ff8e35053 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/domain/MultiSelectListAccessory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/domain/MultiSelectListAccessory.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.domain; -import android.support.v7.app.AlertDialog; +import androidx.appcompat.app.AlertDialog; import com.vijay.jsonwizard.adapter.MultiSelectListAdapter; import com.vijay.jsonwizard.adapter.MultiSelectListSelectedAdapter; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/factory/FileSourceFactoryHelper.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/factory/FileSourceFactoryHelper.java index 638d1cf70..aa024d64b 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/factory/FileSourceFactoryHelper.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/factory/FileSourceFactoryHelper.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.factory; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.vijay.jsonwizard.constants.JsonFormConstants; import com.vijay.jsonwizard.filesource.AssetsFileSource; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/filesource/DiskFileSource.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/filesource/DiskFileSource.java index e356b4448..cf0bab4a6 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/filesource/DiskFileSource.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/filesource/DiskFileSource.java @@ -2,7 +2,7 @@ import android.content.Context; import android.os.Environment; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.VisibleForTesting; import com.vijay.jsonwizard.constants.JsonFormConstants; import com.vijay.jsonwizard.interfaces.FormFileSource; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/fragments/JsonFormErrorFragment.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/fragments/JsonFormErrorFragment.java index f4cb8fef5..ee21bd8b0 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/fragments/JsonFormErrorFragment.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/fragments/JsonFormErrorFragment.java @@ -2,10 +2,10 @@ import android.content.Context; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v7.widget.Toolbar; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; +import androidx.appcompat.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/fragments/JsonFormFragment.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/fragments/JsonFormFragment.java index 895fe3330..ac7053e4d 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/fragments/JsonFormFragment.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/fragments/JsonFormFragment.java @@ -9,12 +9,12 @@ import android.os.Handler; import android.os.Looper; import android.os.Message; -import android.support.annotation.DrawableRes; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.AppCompatRadioButton; -import android.support.v7.widget.Toolbar; +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.AppCompatRadioButton; +import androidx.appcompat.widget.Toolbar; import android.text.SpannableString; import android.text.TextUtils; import android.text.style.ForegroundColorSpan; @@ -50,7 +50,6 @@ import com.vijay.jsonwizard.viewstates.JsonFormFragmentViewState; import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -77,7 +76,7 @@ public class JsonFormFragment extends MvpFragment> lookUpMap = new HashMap<>(); + private Map> lookUpMap = new HashMap<>(); private Button previousButton; private Button nextButton; private String stepName; @@ -87,7 +86,7 @@ public class JsonFormFragment extends MvpFragment= 0) { + //number of days in Nepali months + daysInMonth = monthDay[nepMonth]; + nepDay++; + if (nepDay > daysInMonth) { + nepMonth++; + nepDay = 1; + } + if (nepMonth >= 12) { + equivalentNepaliYear++; + nepMonth = 0; + } + difference--; + } + } +//month index is initialised as 0 so increasing by 1 + String nepDayString; + String nepMonthString; + nepMonth += 1; + if(nepDay<=9) + { + nepDayString = "0"+nepDay; + } + else + nepDayString = ""+nepDay; + if(nepMonth<=9) + { + nepMonthString = "0"+nepMonth; + } + else + { + nepMonthString = ""+nepMonth; + } + return equivalentNepaliYear + "-" + nepMonthString + "-" + nepDayString; + } + + /** + * Converts nepali bikram sambat date to Gregorian date + * + * @param nepaliMonth nepali date month + * @param nepaliDayOfMonth nepali date day of month + * @param nepaliYear index to look number of days in month + * @return english date + */ + private Date convertBsToAd(int nepaliMonth, int nepaliDayOfMonth, + int nepaliYear) { + // number of days + // passed + // since + // start of year + // 1 is decreased as year start day has already included + int numberOfDaysPassed = nepaliDayOfMonth - 1; + for (int i = 0; i <= nepaliMonth - 2; i++) { + numberOfDaysPassed += Lookup.numberOfDaysInNepaliMonth.get(nepaliYear)[i]; + } + // From look up table we need to find corresponding english date + // for + // nepali new year + // we need to add number of days passed from new year to english + // date + // which will find + // corresponding english date + // we need what starts + // where... + String dateFormat = "dd-MMM-yyyy"; + java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat( + dateFormat); + sdf.setLenient(false); + Calendar c1 = Calendar.getInstance(); + try { + c1.setTime(sdf.parse(Lookup.adEquivalentDatesForNewNepaliYear.get(getLookupIndex(nepaliYear)))); + } catch (ParseException e) { + logger.error("error", e); + } + c1.add(Calendar.DATE, numberOfDaysPassed); + return c1.getTime(); + } + + /** + * validates nepali date + * + * @param bsYear nepali date year part + * @param bsMonth nepali date month part + * @param bsDayOfMonth nepali date day of month + * @return boolean returns false if there is no lookup for provided year , + */ + private boolean validateBsDate(int bsYear, int bsMonth, int bsDayOfMonth) { + if (bsYear < Lookup.lookupNepaliYearStart) { + throw new DateRangeNotSupported("Bikam Sambat is earlier than supported date"); + } else if (bsYear > (Lookup.lookupNepaliYearStart + Lookup.numberOfDaysInNepaliMonth.size() - 1)) { + throw new DateRangeNotSupported("Bikram Sambat is later than supported date"); + } else { + logger.debug("debug: converter supports year {} ", bsYear); + if (bsMonth >= 1 && bsMonth <= 12) { + logger.debug("debug: month between 1 and 12"); + int dayOfMonth = Lookup.numberOfDaysInNepaliMonth.get(bsYear)[bsMonth - 1]; + logger.debug("debug:total days in month {} ", dayOfMonth); + if (bsDayOfMonth <= dayOfMonth) { + return true; + } else { + String message = String.format("invalid day of month %d for year %d and month %d ", bsDayOfMonth, bsYear, bsMonth); + logger.warn(message); + throw new InvalidBsDayOfMonthException( + message); + } + } + } + return false; + } + + /** + * gets array lookup index in lookup datastructure + * + * @param bsYear nepali year + * @return index where year is + */ + private int getLookupIndex(int bsYear) { + logger.debug("lookup index {} ", (bsYear - Lookup.lookupNepaliYearStart)); + return bsYear - Lookup.lookupNepaliYearStart; + } + + /** + * confirms whether date format is valid or not. date format should be + * mm-dd-yyyy + * + * @param bsDate nepali date + * @return true if format matches + */ + boolean matchFormat(String bsDate) { + if (format.equals(DEFAULT_FORMAT)) { + logger.debug("date format want to test is {} real text is {}", format, bsDate); + Pattern p = Pattern.compile("\\d{2}\\d{2}\\d{4}"); + return p.matcher(bsDate).matches(); + } else { + logger.debug("date format is {}", format); + return Pattern.matches("\\d{2}-\\d{2}-\\d{4}", bsDate); + } + } +} diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/DatePickerUtils.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/DatePickerUtils.java index 2c10ad168..2434a0305 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/DatePickerUtils.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/DatePickerUtils.java @@ -9,6 +9,8 @@ import android.widget.NumberPicker; import android.widget.TextView; +import com.vijay.jsonwizard.fragments.JsonFormFragment; + /** * Created by keyman on 25/04/2017. @@ -22,6 +24,11 @@ public static void themeDatePicker(DatePickerDialog dialog, char[] ymdOrder) { throw new IllegalStateException("Dialog must be showing"); } +// // properties configs +// NativeFormsProperties properties = JsonFormFragment.getNativeFormProperties(); +// if(properties.isTrue(NativeFormsProperties.KEY.WIDGET_DATEPICKER_IS_NEPAL)) +// // config end + themeDatePicker(dialog.getDatePicker(), ymdOrder); } diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/DateRangeNotSupported.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/DateRangeNotSupported.java new file mode 100644 index 000000000..2d1a5a692 --- /dev/null +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/DateRangeNotSupported.java @@ -0,0 +1,12 @@ +package com.vijay.jsonwizard.utils; + + +/** + * @author bbaniya + */ +public class DateRangeNotSupported extends RuntimeException { + DateRangeNotSupported(String message) { + super(message); + } + +} \ No newline at end of file diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/FormRollbackDialogUtil.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/FormRollbackDialogUtil.java index 99c65cc66..a5d0b328d 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/FormRollbackDialogUtil.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/FormRollbackDialogUtil.java @@ -3,8 +3,8 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; -import android.support.annotation.NonNull; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; import android.widget.ArrayAdapter; import android.widget.Toast; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/FormUtils.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/FormUtils.java index 66e6f05e7..730b173e7 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/FormUtils.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/FormUtils.java @@ -9,11 +9,11 @@ import android.graphics.Point; import android.graphics.Typeface; import android.graphics.drawable.Drawable; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.constraint.ConstraintLayout; -import android.support.v7.widget.AppCompatEditText; -import android.support.v7.widget.AppCompatTextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.appcompat.widget.AppCompatEditText; +import androidx.appcompat.widget.AppCompatTextView; import android.text.Html; import android.text.Spannable; import android.text.SpannableString; @@ -50,7 +50,6 @@ import org.apache.commons.lang3.CharEncoding; import org.apache.commons.lang3.StringUtils; import org.jeasy.rules.api.Facts; -import org.jetbrains.annotations.NotNull; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -410,7 +409,7 @@ private void attachRefreshLogic(Context context, String relevance, String calcul } } - @NotNull + @NonNull public ConstraintLayout getConstraintLayout(String stepName, JSONArray canvasIds, JSONObject jsonObject, Context context, String openMrsEntityParent, String openMrsEntity, String openMrsEntityId) throws JSONException { ConstraintLayout constraintLayout = getRootConstraintLayout(context); constraintLayout.setId(ViewUtil.generateViewId()); diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/ImageUtils.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/ImageUtils.java index a4d10dbb8..c21f0b4c5 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/ImageUtils.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/ImageUtils.java @@ -7,10 +7,12 @@ import android.graphics.Matrix; import android.media.ExifInterface; import android.net.Uri; -import android.support.v4.util.LruCache; + +import androidx.annotation.Nullable; +import androidx.collection.LruCache; import android.util.Log; -import org.jetbrains.annotations.Nullable; + import java.io.File; import java.io.IOException; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/InvalidBsDayOfMonthException.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/InvalidBsDayOfMonthException.java new file mode 100644 index 000000000..373faa186 --- /dev/null +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/InvalidBsDayOfMonthException.java @@ -0,0 +1,12 @@ +package com.vijay.jsonwizard.utils; + + +/** + * @author bbaniya + */ +public class InvalidBsDayOfMonthException extends RuntimeException { + + InvalidBsDayOfMonthException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/InvalidDateFormatException.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/InvalidDateFormatException.java new file mode 100644 index 000000000..931f48971 --- /dev/null +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/InvalidDateFormatException.java @@ -0,0 +1,13 @@ +package com.vijay.jsonwizard.utils; + + +/** + * + */ +class InvalidDateFormatException extends RuntimeException { + + InvalidDateFormatException(String message) { + super(message); + } + +} \ No newline at end of file diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/Lookup.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/Lookup.java new file mode 100644 index 000000000..6e5553aff --- /dev/null +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/Lookup.java @@ -0,0 +1,441 @@ +package com.vijay.jsonwizard.utils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +/** + * This class has a mapping from Bikram Sambat to Gregorian date + * Current mapping is in range of 1970-2100 + * If you need extension in date range, + * add more dates referring to sites mentioned in README.md. + *

+ * todo it would be better if these lookup tables could be maintained in XML or JSON or in memory database. + *

+ *

+ * There are certain year where there is not 365 days per year, verify these year with other calendar. + *

+ */ +public class Lookup { + /** + * Bikram Sambat new year equivalent Gregorian date + *

+ * TODO map would be good format for faster calculation. + */ + static ArrayList adEquivalentDatesForNewNepaliYear = new ArrayList<>(); + /* + * lookup table starting year + */ + static int lookupNepaliYearStart = 1970; + /* + * number of days in each Nepali month for subsequent years we need to extend this + * year adding more entries + * * TODO map would be good format for faster calculation and readability + */ + static Map numberOfDaysInNepaliMonth = new HashMap<>(); + + static { + //todo create some csv or sort sort of external collaborative data others can update who does not know java + adEquivalentDatesForNewNepaliYear.add("13-Apr-1913");// 1970 Baisakh 1 english equivalent date + adEquivalentDatesForNewNepaliYear.add("13-Apr-1914"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1915"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1916"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1917"); + adEquivalentDatesForNewNepaliYear.add("12-Apr-1918"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1919"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1920"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1921"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1922"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1923"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1924"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1925"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1926"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1927"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1928"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1929"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1930"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1931"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1932"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1933");// 1990 Baisakh 1 + adEquivalentDatesForNewNepaliYear.add("13-Apr-1934"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1935"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1936"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1937"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1938"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1939"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1940"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1941"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1942"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1943");// 2000 Baisakh 1 + adEquivalentDatesForNewNepaliYear.add("13-Apr-1944");// 2001 Baisakh 1 + adEquivalentDatesForNewNepaliYear.add("13-Apr-1945"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1946"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1947");// 2004 + adEquivalentDatesForNewNepaliYear.add("13-Apr-1948"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1949"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1950"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1951"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1952"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1953"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1954"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1955"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1956"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1957"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1958"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1959"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1960"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1961"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1962"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1963");// 2020 + adEquivalentDatesForNewNepaliYear.add("13-Apr-1964"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1965"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1966"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1967"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1968"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1969"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1970"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1971"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1972"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1973"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1974"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1975"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1976"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1977"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1978"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1979"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1980"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1981"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1982"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1983"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1984"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1985"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1986"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1987"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1988"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1989"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1990"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1991"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1992"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1993"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1994");// 2051 + adEquivalentDatesForNewNepaliYear.add("14-Apr-1995");// 2052 + adEquivalentDatesForNewNepaliYear.add("13-Apr-1996"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-1997"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1998"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-1999"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-2000"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2001"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2002"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2003");// 2060 + adEquivalentDatesForNewNepaliYear.add("13-Apr-2004"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2005"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2006"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2007"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-2008"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2009"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2010"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2011"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-2012"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2013");// 2070 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2014"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2015"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-2016"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2017"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2018"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2019"); + adEquivalentDatesForNewNepaliYear.add("13-Apr-2020"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2021"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2022"); + adEquivalentDatesForNewNepaliYear.add("14-Apr-2023");// 2080 + adEquivalentDatesForNewNepaliYear.add("13-Apr-2024");// 2081 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2025");// 2082 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2026");// 2083 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2027");// 2084 + adEquivalentDatesForNewNepaliYear.add("13-Apr-2028");// 2085 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2029");// 2086 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2030");// 2087 + adEquivalentDatesForNewNepaliYear.add("15-Apr-2031");// 2088 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2032");// 2089 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2033");// 2090 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2034");// 2091 + adEquivalentDatesForNewNepaliYear.add("13-Apr-2035");// 2092 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2036");// 2093 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2037");// 2094 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2038");// 2095 + adEquivalentDatesForNewNepaliYear.add("15-Apr-2039");// 2096 + adEquivalentDatesForNewNepaliYear.add("13-Apr-2040");// 2097 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2041");// 2098 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2042");// 2099 + adEquivalentDatesForNewNepaliYear.add("14-Apr-2043");// 2100 + } + + private Lookup() { + } + + static { + //number after // is Nepali year + numberOfDaysInNepaliMonth.put(1970, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30});// 1970 + numberOfDaysInNepaliMonth.put(1971, new Byte[]{31, 31, 32, 31, 32, 30, 30, 29, 30, 29, + 30, 30});// 1971 + numberOfDaysInNepaliMonth.put(1972, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 30});// 1972 + numberOfDaysInNepaliMonth.put(1973, new Byte[]{30, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 29, 31});// 1973 + numberOfDaysInNepaliMonth.put(1974, new Byte[]{31, 31, 32, 30, 31, 31, 30, 29, 30, 29, + 30, 30});// 1974 + numberOfDaysInNepaliMonth.put(1975, new Byte[]{31, 31, 32, 32, 30, 31, 30, 29, 30, 29, + 30, 30});// 1975 + numberOfDaysInNepaliMonth.put(1976, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31});// 1976 + numberOfDaysInNepaliMonth.put(1977, new Byte[]{30, 32, 31, 32, 31, 31, 29, 30, 29, 30, + 29, 31});// 1977 + numberOfDaysInNepaliMonth.put(1978, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30});// 1978 + numberOfDaysInNepaliMonth.put(1979, new Byte[]{31, 31, 32, 32, 31, 30, 30, 29, 30, 29, + 30, 30});// 1979 + numberOfDaysInNepaliMonth.put(1980, new Byte[]{30, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31});// 1980 + numberOfDaysInNepaliMonth.put(1981, new Byte[]{31, 31, 31, 32, 31, 31, 29, 30, 30, 29, + 30, 30});// 1981 + numberOfDaysInNepaliMonth.put(1982, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30});// 1982 + numberOfDaysInNepaliMonth.put(1983, new Byte[]{31, 31, 32, 32, 31, 30, 30, 29, 30, 29, + 30, 30});// 1983 + numberOfDaysInNepaliMonth.put(1984, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31});// 1984 + numberOfDaysInNepaliMonth.put(1985, new Byte[]{31, 31, 31, 32, 31, 31, 29, 30, 30, 29, + 30, 30});// 1985 + numberOfDaysInNepaliMonth.put(1986, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30});// 1986 + numberOfDaysInNepaliMonth.put(1987, new Byte[]{31, 32, 31, 32, 31, 30, 30, 29, 30, 29, + 30, 30});// 1987 + numberOfDaysInNepaliMonth.put(1988, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31});// 1988 + numberOfDaysInNepaliMonth.put(1989, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30});// 1989 + numberOfDaysInNepaliMonth.put(1990, new Byte[]{30, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30});// 1990 + numberOfDaysInNepaliMonth.put(1991, new Byte[]{31, 32, 31, 32, 31, 30, 30, 29, 30, 29, + 30, 30});// 1991 + numberOfDaysInNepaliMonth.put(1992, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 29, 30});// 1992 + numberOfDaysInNepaliMonth.put(1993, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30});// 1993 + numberOfDaysInNepaliMonth.put(1994, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30});// 1994 + numberOfDaysInNepaliMonth.put(1995, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30});// 1995 + numberOfDaysInNepaliMonth.put(1996, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30});// 1996 + numberOfDaysInNepaliMonth.put(1997, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30});// 1997 + numberOfDaysInNepaliMonth.put(1998, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30});// 1998 + numberOfDaysInNepaliMonth.put(1999, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30});// 1999 + numberOfDaysInNepaliMonth.put(2000, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 29, 31});// 2000 + numberOfDaysInNepaliMonth.put(2001, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30});// 2001 + numberOfDaysInNepaliMonth.put(2002, new Byte[]{31, 31, 32, 32, 31, 30, 30, 29, 30, 29, + 30, 30});// 2002 366 days + numberOfDaysInNepaliMonth.put(2003, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); //2003 + numberOfDaysInNepaliMonth.put(2004, new Byte[]{30, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 29, 31}); + numberOfDaysInNepaliMonth.put(2005, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); //2005 + numberOfDaysInNepaliMonth.put(2006, new Byte[]{31, 31, 32, 32, 31, 30, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2007, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); + numberOfDaysInNepaliMonth.put(2008, new Byte[]{31, 31, 31, 32, 31, 31, 29, 30, 30, 29, + 29, 31}); + numberOfDaysInNepaliMonth.put(2009, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2010, new Byte[]{31, 31, 32, 32, 31, 30, 30, 29, 30, 29, + 30, 30}); //2010 + numberOfDaysInNepaliMonth.put(2011, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); + numberOfDaysInNepaliMonth.put(2012, new Byte[]{31, 31, 31, 32, 31, 31, 29, 30, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2013, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2014, new Byte[]{31, 31, 32, 32, 31, 30, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2015, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); //2015 + numberOfDaysInNepaliMonth.put(2016, new Byte[]{31, 31, 31, 32, 31, 31, 29, 30, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2017, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2018, new Byte[]{31, 32, 31, 32, 31, 30, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2019, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 29, 31}); + numberOfDaysInNepaliMonth.put(2020, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30}); //2020 + numberOfDaysInNepaliMonth.put(2021, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2022, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2023, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 29, 31}); + numberOfDaysInNepaliMonth.put(2024, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2025, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30});// 2025 + numberOfDaysInNepaliMonth.put(2026, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); + numberOfDaysInNepaliMonth.put(2027, new Byte[]{30, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 29, 31}); + numberOfDaysInNepaliMonth.put(2028, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2029, new Byte[]{31, 31, 32, 31, 32, 30, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2030, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); //2030 + numberOfDaysInNepaliMonth.put(2031, new Byte[]{30, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 29, 31}); + numberOfDaysInNepaliMonth.put(2032, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2033, new Byte[]{31, 31, 32, 32, 31, 30, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2034, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); + numberOfDaysInNepaliMonth.put(2035, new Byte[]{30, 32, 31, 32, 31, 31, 29, 30, 30, 29, + 29, 31}); //2035 + numberOfDaysInNepaliMonth.put(2036, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30});// 2036 + numberOfDaysInNepaliMonth.put(2037, new Byte[]{31, 31, 32, 32, 31, 30, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2038, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); + numberOfDaysInNepaliMonth.put(2039, new Byte[]{31, 31, 31, 32, 31, 31, 29, 30, 30, 29, + 30, 30});//2039 + numberOfDaysInNepaliMonth.put(2040, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2041, new Byte[]{31, 31, 32, 32, 31, 30, 30, 29, 30, 29, + 30, 30}); // 2041 + numberOfDaysInNepaliMonth.put(2042, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); + numberOfDaysInNepaliMonth.put(2043, new Byte[]{31, 31, 31, 32, 31, 31, 29, 30, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2044, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2045, new Byte[]{31, 32, 31, 32, 31, 30, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2046, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); + numberOfDaysInNepaliMonth.put(2047, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2048, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30});// 2048 + numberOfDaysInNepaliMonth.put(2049, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2050, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 29, 31}); + numberOfDaysInNepaliMonth.put(2051, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2052, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30});// 2052 + numberOfDaysInNepaliMonth.put(2053, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 30}); //2053 + numberOfDaysInNepaliMonth.put(2054, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 29, 31}); + numberOfDaysInNepaliMonth.put(2055, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2056, new Byte[]{31, 31, 32, 31, 32, 30, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2057, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); + numberOfDaysInNepaliMonth.put(2058, new Byte[]{30, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 29, 31}); + numberOfDaysInNepaliMonth.put(2059, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2060, new Byte[]{31, 31, 32, 32, 31, 30, 30, 29, 30, 29, + 30, 30});// 2060 + numberOfDaysInNepaliMonth.put(2061, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); + numberOfDaysInNepaliMonth.put(2062, new Byte[]{30, 32, 31, 32, 31, 31, 29, 30, 29, 30, + 29, 31}); + numberOfDaysInNepaliMonth.put(2063, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2064, new Byte[]{31, 31, 32, 32, 31, 30, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2065, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); + numberOfDaysInNepaliMonth.put(2066, new Byte[]{31, 31, 31, 32, 31, 31, 29, 30, 30, 29, + 29, 31}); + numberOfDaysInNepaliMonth.put(2067, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2068, new Byte[]{31, 31, 32, 32, 31, 30, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2069, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); + numberOfDaysInNepaliMonth.put(2070, new Byte[]{31, 31, 31, 32, 31, 31, 29, 30, 30, 29, + 30, 30});// 2070 + numberOfDaysInNepaliMonth.put(2071, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2072, new Byte[]{31, 32, 31, 32, 31, 30, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2073, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 31}); + numberOfDaysInNepaliMonth.put(2074, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2075, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2076, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2077, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 29, 31}); + numberOfDaysInNepaliMonth.put(2078, new Byte[]{31, 31, 31, 32, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2079, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 29, + 30, 30}); + numberOfDaysInNepaliMonth.put(2080, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 29, + 30, 30});// 2080 + numberOfDaysInNepaliMonth.put(2081, new Byte[]{31, 31, 32, 32, 31, 30, 30, 30, 29, 30, + 30, 30});// 2081 + numberOfDaysInNepaliMonth.put(2082, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 30, 30});// 2082 + numberOfDaysInNepaliMonth.put(2083, new Byte[]{31, 31, 32, 31, 31, 30, 30, 30, 29, 30, + 30, 30});// 2083 + numberOfDaysInNepaliMonth.put(2084, new Byte[]{31, 31, 32, 31, 31, 30, 30, 30, 29, 30, + 30, 30});// 2084 + numberOfDaysInNepaliMonth.put(2085, new Byte[]{31, 32, 31, 32, 31, 31, 30, 30, 29, 30, + 30, 30});// 2085 + numberOfDaysInNepaliMonth.put(2086, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 30, 30});// 2086 + numberOfDaysInNepaliMonth.put(2087, new Byte[]{31, 31, 32, 31, 31, 31, 30, 30, 29, 30, + 30, 30});// 2087 + numberOfDaysInNepaliMonth.put(2088, new Byte[]{30, 31, 32, 32, 30, 31, 30, 30, 29, 30, + 30, 30});// 2088 + numberOfDaysInNepaliMonth.put(2089, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 30, 30});// 2089 + numberOfDaysInNepaliMonth.put(2090, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 30, 30});// 2090 + numberOfDaysInNepaliMonth.put(2091, new Byte[]{31, 31, 32, 31, 31, 31, 30, 30, 29, 30, + 30, 30});// 2091 + numberOfDaysInNepaliMonth.put(2092, new Byte[]{31, 31, 32, 32, 31, 30, 30, 30, 29, 30, + 30, 30});// 2092 + numberOfDaysInNepaliMonth.put(2093, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 30, 30});// 2093 + numberOfDaysInNepaliMonth.put(2094, new Byte[]{31, 31, 32, 31, 31, 30, 30, 30, 29, 30, + 30, 30});// 2094 + numberOfDaysInNepaliMonth.put(2095, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 30, 30, + 30, 30});// 2095 + numberOfDaysInNepaliMonth.put(2096, new Byte[]{30, 31, 32, 32, 31, 30, 30, 29, 30, 29, + 30, 30});// 2096 + numberOfDaysInNepaliMonth.put(2097, new Byte[]{31, 32, 31, 32, 31, 30, 30, 30, 29, 30, + 30, 30});// 2097 + numberOfDaysInNepaliMonth.put(2098, new Byte[]{31, 31, 32, 31, 31, 31, 29, 30, 29, 30, + 30, 31});// 2098 + numberOfDaysInNepaliMonth.put(2099, new Byte[]{31, 31, 32, 31, 31, 31, 30, 29, 29, 30, + 30, 30});// 2099 + numberOfDaysInNepaliMonth.put(2100, new Byte[]{31, 32, 31, 32, 30, 31, 30, 29, 30, 29, + 30, 30});// 2100 + } + +} \ No newline at end of file diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/MultiSelectListUtils.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/MultiSelectListUtils.java index d21b15bb4..215cf6ad9 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/MultiSelectListUtils.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/MultiSelectListUtils.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.utils; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.vijay.jsonwizard.constants.JsonFormConstants; import com.vijay.jsonwizard.domain.MultiSelectItem; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/NativeFormsProperties.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/NativeFormsProperties.java index 84b0a74df..feb211085 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/NativeFormsProperties.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/NativeFormsProperties.java @@ -22,6 +22,8 @@ public Boolean isTrue(String key) { public final static class KEY { //Widgets public static final String WIDGET_DATEPICKER_IS_NUMERIC = "widget.datepicker.is.numeric"; + public static final String WIDGET_DATEPICKER_IS_NEPAL = "widget.datepicker.is.nepal"; + } } diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/PermissionUtils.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/PermissionUtils.java index 632b7627a..f504e8b89 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/PermissionUtils.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/PermissionUtils.java @@ -2,9 +2,9 @@ import android.app.Activity; import android.content.pm.PackageManager; -import android.support.v4.app.ActivityCompat; -import android.support.v4.app.Fragment; -import android.support.v4.content.ContextCompat; +import androidx.core.app.ActivityCompat; +import androidx.fragment.app.Fragment; +import androidx.core.content.ContextCompat; import java.util.ArrayList; import java.util.HashMap; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/PropertyManager.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/PropertyManager.java index 3ffc94311..e4cd016fb 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/PropertyManager.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/PropertyManager.java @@ -23,7 +23,7 @@ import android.net.wifi.WifiManager; import android.os.Build; import android.provider.Settings; -import android.support.v4.app.ActivityCompat; +import androidx.core.app.ActivityCompat; import android.telephony.TelephonyManager; import com.vijay.jsonwizard.interfaces.JsonApi; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/Utils.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/Utils.java index 8980dc9f5..090a3b4cf 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/Utils.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/Utils.java @@ -9,10 +9,11 @@ import android.content.DialogInterface; import android.content.res.AssetManager; import android.os.Looper; -import android.support.annotation.NonNull; -import android.support.annotation.StringRes; -import android.support.design.widget.Snackbar; -import android.support.v4.util.TimeUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import com.google.android.material.snackbar.Snackbar; +import androidx.core.util.TimeUtils; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; @@ -37,8 +38,7 @@ import org.apache.commons.lang3.StringUtils; import org.greenrobot.eventbus.EventBus; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; + import org.joda.time.LocalDate; import org.json.JSONArray; import org.json.JSONException; @@ -584,13 +584,13 @@ public void setExpansionPanelDetails(String type, String toolbarHeader, String c } /** - * Gets the {@link android.support.v4.app.FragmentTransaction} from the {@link Context} and removes any {@link android.support.v4.app.Fragment} with the tag `GenericPopup` from the transaction. - * Then nullifies the stack by calling {@link android.support.v4.app.FragmentTransaction#addToBackStack(String)} with a null value. + * Gets the {@link androidx.fragment.app.FragmentTransaction} from the {@link Context} and removes any {@link androidx.fragment.app.Fragment} with the tag `GenericPopup` from the transaction. + * Then nullifies the stack by calling {@link androidx.fragment.app.FragmentTransaction#addToBackStack(String)} with a null value. * * @param context {@link Activity} The activity context where this transaction called from - * @return fragmentTransaction {@link android.support.v4.app.FragmentTransaction} + * @return fragmentTransaction {@link androidx.fragment.app.FragmentTransaction} */ - @NotNull + @NonNull public FragmentTransaction getFragmentTransaction(Activity context) { FragmentTransaction fragmentTransaction = context.getFragmentManager().beginTransaction(); Fragment fragment = context.getFragmentManager().findFragmentByTag("GenericPopup"); @@ -929,7 +929,7 @@ public static boolean isEmptyJsonObject(JSONObject jsonObject) { * @throws JSONException */ @Nullable - public static JSONObject getRepeatingGroupCountObj(@NotNull WidgetArgs widgetArgs) throws JSONException { + public static JSONObject getRepeatingGroupCountObj(@NonNull WidgetArgs widgetArgs) throws JSONException { String repeatingGroupCountObjKey = widgetArgs.getJsonObject().get(KEY) + "_count"; JSONObject stepJsonObject = widgetArgs.getFormFragment().getStep(widgetArgs.getStepName()); if (stepJsonObject == null) { diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/barcode/JsonFormCameraSourcePreview.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/barcode/JsonFormCameraSourcePreview.java index a3642a077..9e87a408c 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/barcode/JsonFormCameraSourcePreview.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/barcode/JsonFormCameraSourcePreview.java @@ -18,7 +18,7 @@ import android.Manifest; import android.content.Context; -import android.support.annotation.RequiresPermission; +import androidx.annotation.RequiresPermission; import android.util.AttributeSet; import android.util.Log; import android.view.SurfaceHolder; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/CumulativeTotalValidator.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/CumulativeTotalValidator.java index f0a8cee75..51e0949b2 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/CumulativeTotalValidator.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/CumulativeTotalValidator.java @@ -1,7 +1,7 @@ package com.vijay.jsonwizard.validators.edittext; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.text.TextUtils; import android.util.Log; import android.view.View; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/MaxNumericValidator.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/MaxNumericValidator.java index 44113140a..4575a5764 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/MaxNumericValidator.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/MaxNumericValidator.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.validators.edittext; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.rengwuxian.materialedittext.validation.METValidator; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/MinNumericValidator.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/MinNumericValidator.java index db6f9a8b5..c1279a6e7 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/MinNumericValidator.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/MinNumericValidator.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.validators.edittext; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.rengwuxian.materialedittext.validation.METValidator; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/ReferenceValidator.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/ReferenceValidator.java index 490a2620f..624a5e9b1 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/ReferenceValidator.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/ReferenceValidator.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.validators.edittext; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.rengwuxian.materialedittext.MaterialEditText; import com.rengwuxian.materialedittext.validation.METValidator; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/RelativeNumericValidator.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/RelativeNumericValidator.java index e243acf54..c6d15d597 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/RelativeNumericValidator.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/validators/edittext/RelativeNumericValidator.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.validators.edittext; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.rengwuxian.materialedittext.validation.METValidator; import com.vijay.jsonwizard.constants.JsonFormConstants; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/views/CustomTextView.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/views/CustomTextView.java index 98fc4923c..90761d754 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/views/CustomTextView.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/views/CustomTextView.java @@ -2,8 +2,8 @@ import android.content.Context; import android.content.res.ColorStateList; -import android.support.annotation.ColorInt; -import android.support.v7.widget.AppCompatTextView; +import androidx.annotation.ColorInt; +import androidx.appcompat.widget.AppCompatTextView; import android.text.SpannableString; import android.text.style.ForegroundColorSpan; import android.util.AttributeSet; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/views/JsonFormFragmentView.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/views/JsonFormFragmentView.java index c88115f20..5bb4a1ffc 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/views/JsonFormFragmentView.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/views/JsonFormFragmentView.java @@ -4,8 +4,8 @@ import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.Toolbar; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.Toolbar; import android.view.View; import android.widget.CompoundButton; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/BasicRDTCaptureFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/BasicRDTCaptureFactory.java index 50e6e0f7b..7bf0a7c65 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/BasicRDTCaptureFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/BasicRDTCaptureFactory.java @@ -5,7 +5,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.os.AsyncTask; -import android.support.v4.content.ContextCompat; +import androidx.core.content.ContextCompat; import android.util.Log; import com.vijay.jsonwizard.R; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/CheckBoxFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/CheckBoxFactory.java index 30479a911..aadfccdd6 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/CheckBoxFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/CheckBoxFactory.java @@ -3,8 +3,8 @@ import android.app.Activity; import android.content.Context; import android.graphics.Color; -import android.support.annotation.NonNull; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/CountDownTimerFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/CountDownTimerFactory.java index 3ff47e33e..7d47480db 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/CountDownTimerFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/CountDownTimerFactory.java @@ -7,7 +7,7 @@ import android.net.Uri; import android.os.CountDownTimer; import android.provider.Settings; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.VisibleForTesting; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/DatePickerFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/DatePickerFactory.java index 5ca71b6e7..2fea60d52 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/DatePickerFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/DatePickerFactory.java @@ -6,8 +6,10 @@ import android.content.Context; import android.os.Build; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; + +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.DatePicker; @@ -26,6 +28,7 @@ import com.vijay.jsonwizard.interfaces.CommonListener; import com.vijay.jsonwizard.interfaces.FormWidgetFactory; import com.vijay.jsonwizard.interfaces.JsonApi; +import com.vijay.jsonwizard.utils.DateConverter; import com.vijay.jsonwizard.utils.DateUtil; import com.vijay.jsonwizard.utils.FormUtils; import com.vijay.jsonwizard.utils.NativeFormLangUtils; @@ -34,11 +37,12 @@ import com.vijay.jsonwizard.validators.edittext.RequiredValidator; import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; @@ -95,6 +99,28 @@ private void updateDateText(Context context, final MaterialEditText editText, fi ((JsonApi) context).getAppExecutors().mainThread().execute(new Runnable() { @Override public void run() { + boolean bikramSambatDate = true; + if(bikramSambatDate) + { + if(!date.isEmpty()) + { + try { + DateConverter dateConverter = new DateConverter(); + String[] dateString = StringUtils.split(date, "-"); + String day = dateString[0]; + int monthValue = Integer.parseInt(dateString[1]); + String month = monthValue <= 9 ? "0"+monthValue : ""+monthValue; + String year = dateString[2]; + String BSDate = dateConverter.convertAdToBs(day + "-" + month + "-" + year); + editText.setText(BSDate); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + } + else editText.setText(StringUtils.isNoneBlank(Form.getDatePickerDisplayFormat()) ? Utils.formatDateToPattern(date, DATE_FORMAT.toPattern(), Form.getDatePickerDisplayFormat()) : date); @@ -118,13 +144,13 @@ public void run() { } } - @NotNull + @NonNull @VisibleForTesting protected String getDurationText(Context context, String date, Locale locale) { return DateUtil.getDuration(DateUtil.getDurationTimeDifference(date, null), locale.getLanguage().equals("ar") ? Locale.ENGLISH : locale, context); } - @NotNull + @NonNull @VisibleForTesting protected Locale getSetLanguage(Context context) { return new Locale(NativeFormLangUtils.getLanguage(context)); @@ -359,6 +385,7 @@ protected DatePickerDialog createDateDialog(final Context context, final TextVie datePickerDialog.setOnDateSetListener(new android.app.DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { + boolean isBSDate = true; Calendar calendarDate = Calendar.getInstance(); calendarDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); calendarDate.set(Calendar.MONTH, monthOfYear); @@ -366,15 +393,46 @@ public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth editText.setTag(R.id.locale_independent_value, DATE_FORMAT_LOCALE_INDEPENDENT.format(calendarDate.getTime())); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB - && calendarDate.getTimeInMillis() >= view.getMinDate() - && calendarDate.getTimeInMillis() <= view.getMaxDate()) { - updateDateText(context, editText, duration, - DATE_FORMAT.format(calendarDate.getTime())); - } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - updateDateText(context, editText, duration, ""); - } + +// if(isBSDate) +// { +// DateConverter dateConverter = new DateConverter(); +// int month = monthOfYear+1; +// String BSDay = dayOfMonth+""; +// String BSMonth = monthOfYear+""; +// +// try { +// if(dayOfMonth<=9) +// { +// BSDay = "0"+BSDay; +// } +// if(month <= 9) +// { +// BSMonth = "0"+month; +// } +// +// String date = dateConverter.convertAdToBs(BSDay+"-"+BSMonth+"-"+year); +// Log.d("BS date",date); +// updateDateText(context,editText,duration,date); +// } catch (ParseException e) { +// e.printStackTrace(); +// } + + // } + //else { + + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB + && calendarDate.getTimeInMillis() >= view.getMinDate() + && calendarDate.getTimeInMillis() <= view.getMaxDate()) { + updateDateText(context, editText, duration, + DATE_FORMAT.format(calendarDate.getTime())); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + updateDateText(context, editText, duration, ""); + } + } + // } }); if (jsonObject.has(JsonFormConstants.MIN_DATE) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ExpansionPanelFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ExpansionPanelFactory.java index 25fe83961..0f9d5fb5d 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ExpansionPanelFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ExpansionPanelFactory.java @@ -1,7 +1,7 @@ package com.vijay.jsonwizard.widgets; import android.content.Context; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ExtendedRadioButtonWidgetFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ExtendedRadioButtonWidgetFactory.java index 163994c7d..e7590b40c 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ExtendedRadioButtonWidgetFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ExtendedRadioButtonWidgetFactory.java @@ -2,7 +2,7 @@ import android.content.Context; import android.graphics.Color; -import android.support.v7.widget.AppCompatRadioButton; +import androidx.appcompat.widget.AppCompatRadioButton; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/FingerPrintFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/FingerPrintFactory.java index 576a8f20a..05b927732 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/FingerPrintFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/FingerPrintFactory.java @@ -5,7 +5,7 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.os.Build; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.TypedValue; import android.view.View; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/GpsFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/GpsFactory.java index 837826f10..e768533f9 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/GpsFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/GpsFactory.java @@ -5,9 +5,9 @@ import android.content.Context; import android.content.pm.PackageManager; import android.location.Location; -import android.support.annotation.NonNull; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; @@ -30,7 +30,7 @@ import com.vijay.jsonwizard.views.JsonFormFragmentView; import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -196,7 +196,7 @@ public boolean onLongClick(View view) { }); } - @NotNull + @NonNull public GpsDialog getGpsDialog(Button recordButton, Context context, TextView latitudeTV, TextView longitudeTV, TextView altitudeTV, TextView accuracyTV) { return new GpsDialog(context, recordButton, latitudeTV, longitudeTV, altitudeTV, accuracyTV); } @@ -256,7 +256,7 @@ private static String constructString(Object[] coordinateElements) { return StringUtils.join(coordinateElements, " "); } - @NotNull + @NonNull public String getText(Context context, String latitude, int p) { return String.format(context.getResources().getString(p), latitude); } diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ImagePickerFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ImagePickerFactory.java index 3ff951186..4701b2560 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ImagePickerFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ImagePickerFactory.java @@ -4,7 +4,9 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.os.Build; -import android.support.annotation.VisibleForTesting; + +import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.TypedValue; import android.view.View; @@ -25,7 +27,7 @@ import com.vijay.jsonwizard.utils.ValidationStatus; import com.vijay.jsonwizard.views.JsonFormFragmentView; -import org.jetbrains.annotations.NotNull; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -132,7 +134,7 @@ private List attachJson(String stepName, Context context, JSONObject jsonO return views; } - @NotNull + @NonNull @VisibleForTesting protected Button getButton(Context context) { return new Button(context); @@ -187,7 +189,7 @@ private void createImageView(Context context, JSONArray canvasIds, JSONObject js views.add(imageView); } - @NotNull + @NonNull @VisibleForTesting protected ImageView getImageView(Context context) { return new ImageView(context); diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ImageViewFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ImageViewFactory.java index a5a9d633c..2a2b066d2 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ImageViewFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ImageViewFactory.java @@ -3,7 +3,7 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.Color; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.VisibleForTesting; import android.text.Html; import android.text.TextUtils; import android.view.LayoutInflater; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/LabelFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/LabelFactory.java index b2e9af367..22515a4f8 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/LabelFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/LabelFactory.java @@ -3,7 +3,7 @@ import android.content.Context; import android.graphics.Color; import android.os.Build; -import android.support.constraint.ConstraintLayout; +import androidx.constraintlayout.widget.ConstraintLayout; import android.text.Html; import android.text.Spanned; import android.text.TextUtils; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/MultiSelectListFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/MultiSelectListFactory.java index 2e43c2cc9..24199452c 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/MultiSelectListFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/MultiSelectListFactory.java @@ -3,13 +3,13 @@ import android.app.Activity; import android.content.Context; import android.graphics.Typeface; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.app.AlertDialog; -import android.support.v7.widget.DividerItemDecoration; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.SearchView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.appcompat.widget.SearchView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/NativeRadioButtonFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/NativeRadioButtonFactory.java index b90d11433..6dda36fdf 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/NativeRadioButtonFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/NativeRadioButtonFactory.java @@ -7,9 +7,9 @@ import android.content.Intent; import android.graphics.Color; import android.os.Build; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.constraint.ConstraintLayout; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.constraintlayout.widget.ConstraintLayout; import android.text.TextUtils; import android.util.Log; import android.util.TypedValue; @@ -39,7 +39,7 @@ import com.vijay.jsonwizard.views.JsonFormFragmentView; import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -486,7 +486,7 @@ protected View addRadioButtonOptionsElements(JSONObject jsonObject, Context cont return radioGroup; } - @NotNull + @NonNull public RadioGroup getRadioGroup(JSONObject jsonObject, Context context, String stepName, boolean popup, String openMrsEntityParent, String openMrsEntity, String openMrsEntityId, Boolean extraRelCheck, String extraRelArray) throws JSONException { RadioGroup radioGroup = new RadioGroup(context); radioGroup.setTag(R.id.key, jsonObject.getString(JsonFormConstants.KEY)); @@ -502,7 +502,7 @@ public RadioGroup getRadioGroup(JSONObject jsonObject, Context context, String s return radioGroup; } - @NotNull + @NonNull public RelativeLayout getRadioGroupLayout(JSONObject jsonObject, Context context, String stepName, boolean popup, String openMrsEntityParent, String openMrsEntity, String openMrsEntityId, JSONObject item) throws JSONException { RelativeLayout radioGroupLayout = getRadioGroupLayout(context); radioGroupLayout.setId(ViewUtil.generateViewId()); diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/NumberSelectorFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/NumberSelectorFactory.java index 5bc71463c..011aad498 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/NumberSelectorFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/NumberSelectorFactory.java @@ -6,7 +6,9 @@ import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.GradientDrawable; -import android.support.annotation.VisibleForTesting; + +import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; @@ -26,7 +28,7 @@ import com.vijay.jsonwizard.views.CustomTextView; import com.vijay.jsonwizard.views.JsonFormFragmentView; -import org.jetbrains.annotations.NotNull; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -297,7 +299,7 @@ private List attachJson(String stepName, Context context, JSONObject jsonO return views; } - @NotNull + @NonNull @VisibleForTesting protected LinearLayout getRootLayout(Context context) { return new LinearLayout(context); @@ -384,7 +386,7 @@ private CustomTextView createCustomView(Context context, JSONObject jsonObject, return customTextView; } - @NotNull + @NonNull @VisibleForTesting protected CustomTextView getCustomTextView(Context context, JSONObject jsonObject, int numberOfSelectors, int item) throws JSONException { String openMrsEntityParent = jsonObject.getString(JsonFormConstants.OPENMRS_ENTITY_PARENT); diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/OptiBPWidgetFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/OptiBPWidgetFactory.java index 1e4525377..84f585b7e 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/OptiBPWidgetFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/OptiBPWidgetFactory.java @@ -9,7 +9,7 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.ShapeDrawable; -import android.support.v4.content.ContextCompat; + import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; @@ -19,6 +19,9 @@ import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; + import com.rey.material.util.ViewUtil; import com.rey.material.widget.Button; import com.vijay.jsonwizard.R; @@ -32,7 +35,7 @@ import com.vijay.jsonwizard.utils.FormUtils; import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -164,7 +167,8 @@ private void formatButtonWidget(Button button, JSONObject jsonObject) throws JSO String colorString = jsonObject.getString(JsonFormConstants.OptibpConstants.OPTIBP_KEY_BUTTON_TEXT_COLOR); button.setTextColor(Color.parseColor(colorString)); } - if(jsonObject.has(JsonFormConstants.OptibpConstants.OPTIBP_KEY_BUTTON_TEXT)) { + if(jsonObject.has(JsonFormConstants.OptibpConstants.OPTIBP_KEY_BUTTON_TEXT)) + { String buttonText = jsonObject.getString(JsonFormConstants.OptibpConstants.OPTIBP_KEY_BUTTON_TEXT); button.setText(buttonText); } @@ -322,7 +326,8 @@ public LinearLayout getRootLayout(Context context) { } @Override - public @NotNull Set getCustomTranslatableWidgetFields() { + public @NonNull + Set getCustomTranslatableWidgetFields() { Set customTranslatableWidgetFields = new HashSet<>(); customTranslatableWidgetFields.add(JsonFormConstants.LABEL); return customTranslatableWidgetFields; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/RDTCaptureFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/RDTCaptureFactory.java index 326f880d2..399cbcb2d 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/RDTCaptureFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/RDTCaptureFactory.java @@ -1,7 +1,7 @@ package com.vijay.jsonwizard.widgets; import android.content.Context; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.VisibleForTesting; import android.view.LayoutInflater; import android.view.View; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/RadioButtonFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/RadioButtonFactory.java index e84e892af..9db4e1061 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/RadioButtonFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/RadioButtonFactory.java @@ -1,7 +1,7 @@ package com.vijay.jsonwizard.widgets; import android.content.Context; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.text.TextUtils; import android.view.Gravity; import android.view.LayoutInflater; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/RepeatingGroupFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/RepeatingGroupFactory.java index a99bd511a..98526f013 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/RepeatingGroupFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/RepeatingGroupFactory.java @@ -1,9 +1,9 @@ package com.vijay.jsonwizard.widgets; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import android.text.Editable; import android.text.InputType; import android.text.TextUtils; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/SpinnerFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/SpinnerFactory.java index 413670eab..d9e735a52 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/SpinnerFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/SpinnerFactory.java @@ -2,8 +2,8 @@ import android.content.Context; import android.graphics.Color; -import android.support.annotation.NonNull; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; @@ -26,7 +26,7 @@ import com.vijay.jsonwizard.utils.ValidationStatus; import com.vijay.jsonwizard.views.JsonFormFragmentView; -import org.jetbrains.annotations.NotNull; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -237,7 +237,7 @@ public Set getCustomTranslatableWidgetFields() { return customTranslatableWidgetFields; } - @NotNull + @NonNull @VisibleForTesting public MaterialSpinner getMaterialSpinner(View view) { return view.findViewById(R.id.material_spinner); diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/TimePickerFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/TimePickerFactory.java index 0979c5887..13c42656f 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/TimePickerFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/TimePickerFactory.java @@ -4,8 +4,8 @@ import android.app.Fragment; import android.app.FragmentTransaction; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; import android.view.LayoutInflater; import android.view.View; import android.widget.RelativeLayout; diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ToasterNotesFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ToasterNotesFactory.java index 6acde6eeb..709947271 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ToasterNotesFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/ToasterNotesFactory.java @@ -2,8 +2,8 @@ import android.content.Context; import android.graphics.Color; -import android.support.annotation.NonNull; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; diff --git a/android-json-form-wizard/src/main/res/layout/multiselectlistdialog.xml b/android-json-form-wizard/src/main/res/layout/multiselectlistdialog.xml index a09c8a9d6..139aaf209 100644 --- a/android-json-form-wizard/src/main/res/layout/multiselectlistdialog.xml +++ b/android-json-form-wizard/src/main/res/layout/multiselectlistdialog.xml @@ -34,7 +34,7 @@ android:background="@drawable/multi_select_search_view_bg" android:layout_height="wrap_content" > - - diff --git a/android-json-form-wizard/src/main/res/layout/native_form_activity_json_form.xml b/android-json-form-wizard/src/main/res/layout/native_form_activity_json_form.xml index 6190053c4..dc39a7713 100644 --- a/android-json-form-wizard/src/main/res/layout/native_form_activity_json_form.xml +++ b/android-json-form-wizard/src/main/res/layout/native_form_activity_json_form.xml @@ -6,7 +6,7 @@ android:background="@color/white" android:theme="@style/NativeFormsAppTheme"> - - @@ -38,7 +38,7 @@ android:scaleType="fitXY" android:visibility="gone" /> - - \ No newline at end of file + \ No newline at end of file diff --git a/android-json-form-wizard/src/main/res/layout/native_form_dialog_date_picker.xml b/android-json-form-wizard/src/main/res/layout/native_form_dialog_date_picker.xml index 19324c009..2313e7657 100644 --- a/android-json-form-wizard/src/main/res/layout/native_form_dialog_date_picker.xml +++ b/android-json-form-wizard/src/main/res/layout/native_form_dialog_date_picker.xml @@ -21,6 +21,11 @@ android:layout_marginEnd="@dimen/dialog_content_margin" android:visibility="gone" /> + + - - - - - - + - \ No newline at end of file + \ No newline at end of file diff --git a/android-json-form-wizard/src/main/res/layout/native_form_error_item.xml b/android-json-form-wizard/src/main/res/layout/native_form_error_item.xml index 68843c6f9..d251de244 100644 --- a/android-json-form-wizard/src/main/res/layout/native_form_error_item.xml +++ b/android-json-form-wizard/src/main/res/layout/native_form_error_item.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/android-json-form-wizard/src/main/res/layout/native_form_image_view.xml b/android-json-form-wizard/src/main/res/layout/native_form_image_view.xml index d2447135f..3ceae1b27 100644 --- a/android-json-form-wizard/src/main/res/layout/native_form_image_view.xml +++ b/android-json-form-wizard/src/main/res/layout/native_form_image_view.xml @@ -1,5 +1,5 @@ - - + diff --git a/android-json-form-wizard/src/main/res/layout/native_form_labels.xml b/android-json-form-wizard/src/main/res/layout/native_form_labels.xml index c12947f16..30fd3aff8 100644 --- a/android-json-form-wizard/src/main/res/layout/native_form_labels.xml +++ b/android-json-form-wizard/src/main/res/layout/native_form_labels.xml @@ -1,5 +1,5 @@ - - + diff --git a/android-json-form-wizard/src/main/res/layout/number_selector_dialog.xml b/android-json-form-wizard/src/main/res/layout/number_selector_dialog.xml index 6e24c8d91..934f044ac 100644 --- a/android-json-form-wizard/src/main/res/layout/number_selector_dialog.xml +++ b/android-json-form-wizard/src/main/res/layout/number_selector_dialog.xml @@ -11,7 +11,7 @@ android:clipChildren="false" android:clipToPadding="false"> - - - - + - + \ No newline at end of file diff --git a/android-json-form-wizard/src/main/res/layout/toolbar_container_form.xml b/android-json-form-wizard/src/main/res/layout/toolbar_container_form.xml index c37a7c05a..7955de2b2 100644 --- a/android-json-form-wizard/src/main/res/layout/toolbar_container_form.xml +++ b/android-json-form-wizard/src/main/res/layout/toolbar_container_form.xml @@ -1,11 +1,11 @@ - - - + - + diff --git a/android-json-form-wizard/src/main/res/layout/toolbar_generic_dialog.xml b/android-json-form-wizard/src/main/res/layout/toolbar_generic_dialog.xml index f32c6a481..4b9f09499 100644 --- a/android-json-form-wizard/src/main/res/layout/toolbar_generic_dialog.xml +++ b/android-json-form-wizard/src/main/res/layout/toolbar_generic_dialog.xml @@ -6,12 +6,12 @@ android:layout_height="wrap_content" android:orientation="horizontal"> - - - + - + \ No newline at end of file diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/activities/FormConfigurationJsonFormActivityTest.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/activities/FormConfigurationJsonFormActivityTest.java index 014393a3f..a1e5c5a6b 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/activities/FormConfigurationJsonFormActivityTest.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/activities/FormConfigurationJsonFormActivityTest.java @@ -3,7 +3,7 @@ import android.app.Dialog; import android.os.Bundle; -import android.support.v7.app.AlertDialog; +import androidx.appcompat.app.AlertDialog; import android.view.Window; import com.vijay.jsonwizard.NativeFormLibrary; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/activities/JsonFormActivityTest.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/activities/JsonFormActivityTest.java index 257c215e5..5d0b7211f 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/activities/JsonFormActivityTest.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/activities/JsonFormActivityTest.java @@ -2,8 +2,8 @@ import android.content.Context; import android.content.Intent; -import android.support.v4.util.Pair; -import android.support.v7.widget.AppCompatRadioButton; +import androidx.core.util.Pair; +import androidx.appcompat.widget.AppCompatRadioButton; import android.text.Html; import android.text.Spanned; import android.view.View; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/adapter/DynamicLabelAdapterTest.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/adapter/DynamicLabelAdapterTest.java index 97a4a1e23..46d97f03c 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/adapter/DynamicLabelAdapterTest.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/adapter/DynamicLabelAdapterTest.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.adapter; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; import android.widget.LinearLayout; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/adapter/MultiSelectListAdapterTest.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/adapter/MultiSelectListAdapterTest.java index a68234eec..9da1ff335 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/adapter/MultiSelectListAdapterTest.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/adapter/MultiSelectListAdapterTest.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.adapter; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.widget.LinearLayout; import com.vijay.jsonwizard.BaseTest; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/domain/MultiSelectListAccessoryTest.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/domain/MultiSelectListAccessoryTest.java index 22f897511..cb0a29d06 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/domain/MultiSelectListAccessoryTest.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/domain/MultiSelectListAccessoryTest.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.domain; -import android.support.v7.app.AlertDialog; +import androidx.appcompat.app.AlertDialog; import com.vijay.jsonwizard.adapter.MultiSelectListAdapter; import com.vijay.jsonwizard.adapter.MultiSelectListSelectedAdapter; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/presenters/JsonFormFragmentPresenterRoboElectricTest.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/presenters/JsonFormFragmentPresenterRoboElectricTest.java index f60165844..c60f7ab7f 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/presenters/JsonFormFragmentPresenterRoboElectricTest.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/presenters/JsonFormFragmentPresenterRoboElectricTest.java @@ -6,7 +6,7 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.v7.widget.AppCompatSpinner; +import androidx.appcompat.widget.AppCompatSpinner; import android.view.MenuItem; import android.view.View; import android.widget.CheckBox; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/presenters/JsonWizardFormFragmentPresenterRoboelectricTest.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/presenters/JsonWizardFormFragmentPresenterRoboelectricTest.java index d6c8d9791..d56012b52 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/presenters/JsonWizardFormFragmentPresenterRoboelectricTest.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/presenters/JsonWizardFormFragmentPresenterRoboelectricTest.java @@ -6,7 +6,7 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.provider.MediaStore; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowContextCompat.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowContextCompat.java index f5f30e0d9..363320189 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowContextCompat.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowContextCompat.java @@ -1,8 +1,8 @@ package com.vijay.jsonwizard.shadow; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.v4.content.ContextCompat; +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowFileProvider.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowFileProvider.java index 34ecfebdd..ecb2f9ac8 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowFileProvider.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowFileProvider.java @@ -2,8 +2,8 @@ import android.content.Context; import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.v4.content.FileProvider; +import androidx.annotation.NonNull; +import androidx.core.content.FileProvider; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowIntent.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowIntent.java index abc5ff303..f83397262 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowIntent.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowIntent.java @@ -3,7 +3,7 @@ import android.content.ComponentName; import android.content.Intent; import android.content.pm.PackageManager; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import org.robolectric.annotation.Implements; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowPermissionUtils.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowPermissionUtils.java index 129b1082c..67831fe06 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowPermissionUtils.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/shadow/ShadowPermissionUtils.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.shadow; -import android.support.v4.app.Fragment; +import androidx.fragment.app.Fragment; import com.vijay.jsonwizard.utils.PermissionUtils; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/CheckBoxFactoryTest.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/CheckBoxFactoryTest.java index 26b499d13..338bf2b0b 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/CheckBoxFactoryTest.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/CheckBoxFactoryTest.java @@ -1,7 +1,7 @@ package com.vijay.jsonwizard.widgets; import android.content.res.Resources; -import android.support.constraint.ConstraintLayout; +import androidx.constraintlayout.widget.ConstraintLayout; import android.util.DisplayMetrics; import android.view.View; import android.widget.CheckBox; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/DatePickerFactoryTest.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/DatePickerFactoryTest.java index e6764c038..29f07ce74 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/DatePickerFactoryTest.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/DatePickerFactoryTest.java @@ -2,7 +2,7 @@ import android.app.FragmentManager; import android.content.res.Resources; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/ExtendedRadioButtonWidgetFactoryTest.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/ExtendedRadioButtonWidgetFactoryTest.java index bdbd25f1d..1b4d52258 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/ExtendedRadioButtonWidgetFactoryTest.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/ExtendedRadioButtonWidgetFactoryTest.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.widgets; -import android.support.constraint.ConstraintLayout; +import androidx.constraintlayout.widget.ConstraintLayout; import android.view.View; import android.widget.LinearLayout; import android.widget.RadioGroup; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/LabelFactoryTest.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/LabelFactoryTest.java index e1dcc25d2..b3e49aa47 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/LabelFactoryTest.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/LabelFactoryTest.java @@ -1,7 +1,7 @@ package com.vijay.jsonwizard.widgets; import android.content.res.Resources; -import android.support.constraint.ConstraintLayout; +import androidx.constraintlayout.widget.ConstraintLayout; import android.view.View; import com.vijay.jsonwizard.BaseTest; diff --git a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/MultiSelectListFactoryTest.java b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/MultiSelectListFactoryTest.java index 0cd07d9d0..13d77e416 100644 --- a/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/MultiSelectListFactoryTest.java +++ b/android-json-form-wizard/src/test/java/com/vijay/jsonwizard/widgets/MultiSelectListFactoryTest.java @@ -1,6 +1,6 @@ package com.vijay.jsonwizard.widgets; -import android.support.v7.app.AlertDialog; +import androidx.appcompat.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.widget.RelativeLayout; diff --git a/build.gradle b/build.gradle index ac7592ee7..dba350609 100644 --- a/build.gradle +++ b/build.gradle @@ -21,6 +21,7 @@ configure(allprojects) { project -> mavenCentral() maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } maven { url 'https://plugins.gradle.org/m2/'} + maven { url "https://jitpack.io" } mavenLocal() jcenter() } diff --git a/form_tester/build.gradle b/form_tester/build.gradle index 04b343f76..b418feabf 100644 --- a/form_tester/build.gradle +++ b/form_tester/build.gradle @@ -17,6 +17,11 @@ repositories { apply plugin: 'com.android.application' +configurations { + cleanedAnnotations + compile.exclude group: 'org.jetbrains' , module:'annotations' +} + android { compileSdkVersion androidCompileSdkVersion @@ -51,15 +56,15 @@ dependencies { implementation project(':android-json-form-wizard') implementation fileTree(include: ['*.jar'], dir: 'libs') testImplementation 'junit:junit:4.12' - implementation('com.android.support:design:28.0.0') { + implementation('com.google.android.material:material:1.0.0') { exclude group: 'com.android.support', module: 'recyclerview-v7' } - implementation 'com.android.support:multidex:1.0.3' + implementation 'androidx.multidex:multidex:2.0.0' implementation 'com.jakewharton.timber:timber:4.7.1' implementation 'org.greenrobot:eventbus:3.1.1' - implementation 'com.android.support:support-v4:28.0.0' - implementation 'com.android.support:recyclerview-v7:28.0.0' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'androidx.recyclerview:recyclerview:1.0.0' implementation 'com.google.code.gson:gson:2.8.6' implementation 'org.smartregister:opensrp-client-utils:0.0.4-SNAPSHOT' } diff --git a/form_tester/src/main/AndroidManifest.xml b/form_tester/src/main/AndroidManifest.xml index 258a0444f..44f2711f6 100644 --- a/form_tester/src/main/AndroidManifest.xml +++ b/form_tester/src/main/AndroidManifest.xml @@ -39,7 +39,7 @@ diff --git a/form_tester/src/main/assets/app.properties b/form_tester/src/main/assets/app.properties index 4129df05e..2474d8f15 100644 --- a/form_tester/src/main/assets/app.properties +++ b/form_tester/src/main/assets/app.properties @@ -1 +1,2 @@ -widget.datepicker.is.numeric=true \ No newline at end of file +widget.datepicker.is.numeric=true +widget.datepicker.is.nepal = true \ No newline at end of file diff --git a/form_tester/src/main/assets/json.form/single_form.json b/form_tester/src/main/assets/json.form/single_form.json index a8f14a811..087c52c41 100644 --- a/form_tester/src/main/assets/json.form/single_form.json +++ b/form_tester/src/main/assets/json.form/single_form.json @@ -189,7 +189,7 @@ "openmrs_entity_id": "Child_Birth_Certificate", "read_only": true, "v_required": { - "value": "true", + "value": "false", "err": "Please enter child's birth certificate" }, "type": "edit_text", @@ -224,7 +224,7 @@ "label_info_title": "GA from SFH or abdominal palpation - weeks", "edit_type": "name", "v_required": { - "value": "true", + "value": "false", "err": "Please enter the last name" }, "v_regex": { @@ -244,7 +244,7 @@ "Female" ], "v_required": { - "value": "true", + "value": "false", "err": "Please enter the sex" } }, @@ -264,7 +264,7 @@ "Single" ], "v_required": { - "value": "true", + "value": "false", "err": "Please enter the sex" }, "openmrs_choice_ids": { @@ -288,7 +288,7 @@ "min_date": "today-5y", "max_date": "today", "v_required": { - "value": "true", + "value": "false", "err": "Please enter the date of birth" } }, @@ -304,7 +304,7 @@ "label": "Birth Time" }, "v_required": { - "value": true, + "value": false, "err": "Please enter the time of birth" } }, @@ -320,7 +320,7 @@ "min_date": "today-5y", "max_date": "today", "v_required": { - "value": "true", + "value": "false", "err": "Enter the date that the child was first seen at a health facility for immunization services" }, "constraints": [ @@ -340,7 +340,7 @@ "type": "edit_text", "hint": "Hb test result - haemoglobinometer\ncomplete test (g/dl)", "v_required": { - "value": "true", + "value": "false", "err": "Please enter cool text" } }, @@ -355,7 +355,7 @@ "edit_type": "name", "look_up": "true", "v_required": { - "value": "true", + "value": "false", "err": "Please enter the mother/guardian's first name" }, "v_regex": { @@ -374,7 +374,7 @@ "edit_type": "name", "look_up": "true", "v_required": { - "value": "true", + "value": "false", "err": "Please enter the mother/guardian's last name" }, "v_regex": { @@ -455,7 +455,7 @@ } ], "v_required": { - "value": "true", + "value": "false", "err": "Please answer the question" } }, @@ -505,7 +505,7 @@ "Home": "1536AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" }, "v_required": { - "value": true, + "value": false, "err": "Please enter the place of birth" } }, @@ -520,7 +520,7 @@ "tree": [ ], "v_required": { - "value": true, + "value": false, "err": "Please enter the birth facility name" }, "relevance": { @@ -539,7 +539,7 @@ "hint": "Other health facility", "edit_type": "name", "v_required": { - "value": true, + "value": false, "err": "Please specify the health facility the child was born in" }, "relevance": { @@ -558,7 +558,7 @@ "hint": "Home address", "edit_type": "name", "v_required": { - "value": true, + "value": false, "err": "Please enter the home address" } }, @@ -800,7 +800,7 @@ } ], "v_required": { - "value": true, + "value": false, "err": "Please specify any other symptoms or select none" } }, @@ -845,7 +845,7 @@ "text_size": "22px", "text_color": "#000000", "v_required": { - "value": true + "value": false } }, { @@ -858,7 +858,7 @@ "openmrs_entity": "", "openmrs_entity_id": "", "v_required": { - "value": true + "value": false }, "label_info_text": "Checking out the display oof the info icon needed to display this infomation", "label_info_title": "Highest Level of School" @@ -874,7 +874,7 @@ "openmrs_entity": "", "openmrs_entity_id": "", "v_required": { - "value": true + "value": false }, "label_info_text": "Checking out the display oof the info icon needed to display this infomation", "label_info_title": "Highest Level of School" @@ -973,7 +973,7 @@ ], "value": "1", "v_required": { - "value": true, + "value": false, "err": "Please select where stock was issued" } }, @@ -998,7 +998,7 @@ ], "value": "1", "v_required": { - "value": true, + "value": false, "err": "Please select where stock was issued" } }, @@ -1049,7 +1049,7 @@ } ], "v_required": { - "value": true + "value": false } }, { @@ -1084,7 +1084,7 @@ ], "value": "", "v_required": { - "value": true + "value": false } }, { @@ -1108,7 +1108,7 @@ ], "value": "", "v_required": { - "value": true + "value": false }, "relevance": { "step1:native_radio_tertiary_education": { @@ -1268,7 +1268,7 @@ ], "value": "", "v_required": { - "value": true + "value": false } }, { @@ -1295,7 +1295,7 @@ "text": "This is a bold text label that is also required.", "text_color": "#000000", "v_required": { - "value": true + "value": false } }, { @@ -1313,7 +1313,7 @@ "text": "This is the normal edit text design", "text_color": "#000000", "v_required": { - "value": true + "value": false } }, { @@ -1327,7 +1327,7 @@ "value": "1909319333", "editable": true, "v_required": { - "value": "true", + "value": "false", "err": "Please enter the last name" }, "v_regex": { @@ -1347,7 +1347,7 @@ "editable": true, "edit_text_style": "bordered", "v_required": { - "value": true, + "value": false, "err": "Please enter the guardians name" }, "v_regex": { @@ -1368,7 +1368,7 @@ "text_color": "#000000", "selected_text_color": "#ffffff", "v_required": { - "value": true + "value": false }, "value": "3" }, @@ -1393,7 +1393,7 @@ "text_color": "#000000", "selected_text_color": "#ffffff", "v_required": { - "value": true + "value": false }, "value": "13" }, @@ -1418,7 +1418,7 @@ "text_color": "#000000", "selected_text_color": "#ffffff", "v_required": { - "value": true + "value": false } }, { @@ -1453,7 +1453,7 @@ } ], "v_required": { - "value": true, + "value": false, "err": "Please select if you use any tobacco products" } }, @@ -1489,7 +1489,7 @@ "text": "This is the normal edit text design", "text_color": "#000000", "v_required": { - "value": true + "value": false } }, { diff --git a/form_tester/src/main/java/org/smartregister/nativeform_tester/FormTesterActivity.java b/form_tester/src/main/java/org/smartregister/nativeform_tester/FormTesterActivity.java index 995debe45..e9ce37303 100644 --- a/form_tester/src/main/java/org/smartregister/nativeform_tester/FormTesterActivity.java +++ b/form_tester/src/main/java/org/smartregister/nativeform_tester/FormTesterActivity.java @@ -6,14 +6,14 @@ import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.ActivityCompat; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.DividerItemDecoration; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.Toolbar; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.app.ActivityCompat; +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.appcompat.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -25,7 +25,7 @@ import com.vijay.jsonwizard.constants.JsonFormConstants; import com.vijay.jsonwizard.domain.Form; -import org.jetbrains.annotations.NotNull; + import org.json.JSONObject; import org.smartregister.nativeform.R; import org.smartregister.nativeform_tester.adapter.NativeFormAdapter; @@ -222,7 +222,7 @@ public void checkOrRequestPermissions(List requiredPermissions, AndroidP @Override public void onRequestPermissionsResult(int requestCode, - @NotNull String[] permissions, @NotNull int[] grantResults) { + @NonNull String[] permissions, @NonNull int[] grantResults) { AndroidPermissionHelper.Requester requester = requesterMap.get(requestCode); if (requester != null) { diff --git a/form_tester/src/main/java/org/smartregister/nativeform_tester/MainActivity.java b/form_tester/src/main/java/org/smartregister/nativeform_tester/MainActivity.java index 6787defd7..0b3e70408 100644 --- a/form_tester/src/main/java/org/smartregister/nativeform_tester/MainActivity.java +++ b/form_tester/src/main/java/org/smartregister/nativeform_tester/MainActivity.java @@ -2,8 +2,8 @@ import android.content.Intent; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuItem; diff --git a/form_tester/src/main/java/org/smartregister/nativeform_tester/adapter/NativeFormAdapter.java b/form_tester/src/main/java/org/smartregister/nativeform_tester/adapter/NativeFormAdapter.java index 7fdf19b86..701f28434 100644 --- a/form_tester/src/main/java/org/smartregister/nativeform_tester/adapter/NativeFormAdapter.java +++ b/form_tester/src/main/java/org/smartregister/nativeform_tester/adapter/NativeFormAdapter.java @@ -1,7 +1,7 @@ package org.smartregister.nativeform_tester.adapter; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/form_tester/src/main/java/org/smartregister/nativeform_tester/contract/FormTesterContract.java b/form_tester/src/main/java/org/smartregister/nativeform_tester/contract/FormTesterContract.java index df1137131..1aeff934f 100644 --- a/form_tester/src/main/java/org/smartregister/nativeform_tester/contract/FormTesterContract.java +++ b/form_tester/src/main/java/org/smartregister/nativeform_tester/contract/FormTesterContract.java @@ -1,9 +1,9 @@ package org.smartregister.nativeform_tester.contract; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.StringRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; import com.vijay.jsonwizard.domain.Form; diff --git a/form_tester/src/main/java/org/smartregister/nativeform_tester/domain/JsonForm.java b/form_tester/src/main/java/org/smartregister/nativeform_tester/domain/JsonForm.java index d6cc8668b..4afa56c9a 100644 --- a/form_tester/src/main/java/org/smartregister/nativeform_tester/domain/JsonForm.java +++ b/form_tester/src/main/java/org/smartregister/nativeform_tester/domain/JsonForm.java @@ -1,8 +1,8 @@ package org.smartregister.nativeform_tester.domain; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.WorkerThread; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.WorkerThread; import com.vijay.jsonwizard.constants.JsonFormConstants; import com.vijay.jsonwizard.domain.Form; diff --git a/form_tester/src/main/java/org/smartregister/nativeform_tester/interactor/FormTesterInteractor.java b/form_tester/src/main/java/org/smartregister/nativeform_tester/interactor/FormTesterInteractor.java index b9a57cf31..60fc6ed38 100644 --- a/form_tester/src/main/java/org/smartregister/nativeform_tester/interactor/FormTesterInteractor.java +++ b/form_tester/src/main/java/org/smartregister/nativeform_tester/interactor/FormTesterInteractor.java @@ -5,14 +5,16 @@ import android.os.Environment; import android.os.Handler; import android.os.Looper; -import android.support.annotation.Nullable; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.google.gson.Gson; import com.vijay.jsonwizard.constants.JsonFormConstants; import com.vijay.jsonwizard.domain.Form; import com.vijay.jsonwizard.utils.Utils; -import org.jetbrains.annotations.NotNull; + import org.smartregister.nativeform_tester.contract.FormTesterContract; import org.smartregister.nativeform_tester.domain.ConfigForm; import org.smartregister.nativeform_tester.domain.JsonForm; @@ -129,7 +131,7 @@ public boolean verifyFormsDirectoryExists() { } @Override - public void readForms(@NotNull Context context, FormTesterContract.Presenter presenter) { + public void readForms(@NonNull Context context, FormTesterContract.Presenter presenter) { executorService.execute(() -> { String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString(); File myDir = new File(root + "/" + JsonFormConstants.DEFAULT_FORMS_DIRECTORY + "/" + JsonFormConstants.JSON_FORM_DIRECTORY + "/"); @@ -150,7 +152,7 @@ public void readForms(@NotNull Context context, FormTesterContract.Presenter pre } @Override - public void executeOnMainThread(@NotNull Runnable runnable) { + public void executeOnMainThread(@NonNull Runnable runnable) { new Handler(Looper.getMainLooper()).post(runnable); } diff --git a/form_tester/src/main/java/org/smartregister/nativeform_tester/presenter/FormTesterPresenter.java b/form_tester/src/main/java/org/smartregister/nativeform_tester/presenter/FormTesterPresenter.java index b4c16e373..8d723f49e 100644 --- a/form_tester/src/main/java/org/smartregister/nativeform_tester/presenter/FormTesterPresenter.java +++ b/form_tester/src/main/java/org/smartregister/nativeform_tester/presenter/FormTesterPresenter.java @@ -1,8 +1,8 @@ package org.smartregister.nativeform_tester.presenter; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import org.smartregister.nativeform.R; import org.smartregister.nativeform_tester.contract.AndroidPermissionHelper; diff --git a/form_tester/src/main/res/layout/activity_main.xml b/form_tester/src/main/res/layout/activity_main.xml index f8a33d058..50e053f91 100644 --- a/form_tester/src/main/res/layout/activity_main.xml +++ b/form_tester/src/main/res/layout/activity_main.xml @@ -1,5 +1,5 @@ - - - - + - + diff --git a/form_tester/src/main/res/layout/form_tester_activity.xml b/form_tester/src/main/res/layout/form_tester_activity.xml index a9d6b0271..514fba2a7 100644 --- a/form_tester/src/main/res/layout/form_tester_activity.xml +++ b/form_tester/src/main/res/layout/form_tester_activity.xml @@ -3,22 +3,22 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - + - Rudi Tuma Basic Form + Stay still… + SHARPNESS: %2s
BRIGHTNESS: %3s
NO SHADOW: %s]]>
+ %2s
%s
%3s]]>
Your device needs the requested permssions in order to function properly diff --git a/gradle.properties b/gradle.properties index 014527c99..a55dd30cd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,3 +11,5 @@ POM_SETTING_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt POM_SETTING_LICENCE_DIST=repo POM_SETTING_DEVELOPER_ID=opensrp POM_SETTING_DEVELOPER_NAME=OpenSRP Onadev +android.useAndroidX=true +android.enableJetifier=true diff --git a/sample/build.gradle b/sample/build.gradle index 5df5cf5ac..138f6e0f5 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -51,10 +51,10 @@ dependencies { implementation project(':android-json-form-wizard') implementation fileTree(include: ['*.jar'], dir: 'libs') testImplementation 'junit:junit:4.12' - implementation('com.android.support:design:28.0.0') { + implementation('com.google.android.material:material:1.0.0') { exclude group: 'com.android.support', module: 'recyclerview-v7' } - implementation 'com.android.support:multidex:1.0.3' + implementation 'androidx.multidex:multidex:2.0.0' implementation 'com.jakewharton.timber:timber:4.7.1' implementation 'org.greenrobot:eventbus:3.1.1' diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index b1643b6ff..0f11c3684 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:windowSoftInputMode="stateAlwaysHidden|adjustResize" /> diff --git a/sample/src/main/assets/app.properties b/sample/src/main/assets/app.properties index 4129df05e..b20ba1011 100644 --- a/sample/src/main/assets/app.properties +++ b/sample/src/main/assets/app.properties @@ -1 +1,2 @@ -widget.datepicker.is.numeric=true \ No newline at end of file +widget.datepicker.is.numeric=true +widget.datepicker.is.nepal = true // same thing to ANC \ No newline at end of file diff --git a/sample/src/main/java/org/smartregister/nativeform/MainActivity.java b/sample/src/main/java/org/smartregister/nativeform/MainActivity.java index e66ce82ff..d5f3dce8c 100644 --- a/sample/src/main/java/org/smartregister/nativeform/MainActivity.java +++ b/sample/src/main/java/org/smartregister/nativeform/MainActivity.java @@ -2,8 +2,8 @@ import android.content.Intent; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuItem; diff --git a/sample/src/main/res/layout/activity_main.xml b/sample/src/main/res/layout/activity_main.xml index 994c66ed8..20e9c0f6d 100644 --- a/sample/src/main/res/layout/activity_main.xml +++ b/sample/src/main/res/layout/activity_main.xml @@ -1,5 +1,5 @@ - - - - + - + From 16e70ebee7b9cffe06e34639d4806afe35b46aed Mon Sep 17 00:00:00 2001 From: vend Date: Fri, 4 Mar 2022 12:03:23 +0500 Subject: [PATCH 02/11] changes made for the build --- android-json-form-wizard/build.gradle | 74 +++++++++++++-------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/android-json-form-wizard/build.gradle b/android-json-form-wizard/build.gradle index de25e0d2c..b40b87546 100644 --- a/android-json-form-wizard/build.gradle +++ b/android-json-form-wizard/build.gradle @@ -10,13 +10,13 @@ buildscript { } apply plugin: 'com.android.library' -//apply plugin: 'jacoco' -//apply plugin: 'com.github.kt3k.coveralls' +apply plugin: 'jacoco' +apply plugin: 'com.github.kt3k.coveralls' -//jacoco { -// toolVersion = "0.8.3" -// reportsDir = file("$buildDir/reports/jacoco") -//} +jacoco { + toolVersion = "0.8.3" + reportsDir = file("$buildDir/reports/jacoco") +} android { @@ -69,9 +69,9 @@ android { } -//tasks.withType(Test) { -// jacoco.includeNoLocationClasses = true -//} +tasks.withType(Test) { + jacoco.includeNoLocationClasses = true +} configurations { cleanedAnnotations compile.exclude group: 'org.jetbrains' , module:'annotations' @@ -184,35 +184,35 @@ dependencies { testImplementation "org.json:json:20190722" } -//task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) { -// -// reports { -// -// xml.enabled = true -// xml.destination = file("${buildDir}/reports/jacoco/jacocoRootReport/merged.xml") -// -// html.enabled = true -// html.destination file("${buildDir}/reports/jacoco/jacocoRootReport/html") -// } -// -// def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*', '**/*$ViewBinder*.*'] -// def debugTree = fileTree(dir: "$project.buildDir/intermediates/javac/debug/classes/", excludes: fileFilter) -// def mainSrc = "$project.projectDir/src/main/java" -// -// sourceDirectories.from = files([mainSrc]) -// classDirectories.from = files([debugTree]) -// executionData.from = fileTree(dir: project.buildDir, includes: [ -// 'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec' -// ]) -//} +task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) { -//tasks.coveralls { -// dependsOn 'jacocoTestReport' -//} -// -//coveralls { -// jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/merged.xml" -//} + reports { + + xml.enabled = true + xml.destination = file("${buildDir}/reports/jacoco/jacocoRootReport/merged.xml") + + html.enabled = true + html.destination file("${buildDir}/reports/jacoco/jacocoRootReport/html") + } + + def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*', '**/*$ViewBinder*.*'] + def debugTree = fileTree(dir: "$project.buildDir/intermediates/javac/debug/classes/", excludes: fileFilter) + def mainSrc = "$project.projectDir/src/main/java" + + sourceDirectories.from = files([mainSrc]) + classDirectories.from = files([debugTree]) + executionData.from = fileTree(dir: project.buildDir, includes: [ + 'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec' + ]) +} + +tasks.coveralls { + dependsOn 'jacocoTestReport' +} + +coveralls { + jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/merged.xml" +} //apply from: '../maven.gradle' From 044d24383dd06a3a12dbc6c04a22bd25263d4e90 Mon Sep 17 00:00:00 2001 From: vend Date: Fri, 4 Mar 2022 12:04:55 +0500 Subject: [PATCH 03/11] changes made for the build --- android-json-form-wizard/build.gradle | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/android-json-form-wizard/build.gradle b/android-json-form-wizard/build.gradle index b40b87546..51f659b97 100644 --- a/android-json-form-wizard/build.gradle +++ b/android-json-form-wizard/build.gradle @@ -28,8 +28,8 @@ android { defaultConfig { minSdkVersion androidMinSdkVersion targetSdkVersion androidTargetSdkVersion - versionCode 1 - versionName "123" + versionCode Integer.parseInt(project.VERSION_CODE) + versionName project.VERSION_NAME multiDexEnabled true testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner" @@ -215,12 +215,12 @@ coveralls { } -//apply from: '../maven.gradle' -// -//task javadoc(type: Javadoc) { -// failOnError false -// def mainSrc = "$project.projectDir/src/main/java" -// source = files([mainSrc]) -// classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) -// classpath += configurations.compile -//} +apply from: '../maven.gradle' + +task javadoc(type: Javadoc) { + failOnError false + def mainSrc = "$project.projectDir/src/main/java" + source = files([mainSrc]) + classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + classpath += configurations.compile +} From e28511b36bcb1ca42ba950f3d0f48bb87d6cef47 Mon Sep 17 00:00:00 2001 From: SebaMutuku <36365043+SebaMutuku@users.noreply.github.com> Date: Fri, 4 Mar 2022 10:45:30 +0300 Subject: [PATCH 04/11] BUild.gradle --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a55dd30cd..c51db9b02 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=2.1.15-SNAPSHOT +VERSION_NAME=2.1.15-test-SNAPSHOT VERSION_CODE=1 GROUP=org.smartregister POM_SETTING_DESCRIPTION=OpenSRP Client Native Form Json Wizard From dfdfd544e74590c5f70e2f92d3de1a757490c663 Mon Sep 17 00:00:00 2001 From: vend Date: Fri, 4 Mar 2022 17:18:08 +0500 Subject: [PATCH 05/11] changes made for the build --- android-json-form-wizard/build.gradle | 7 +++++++ form_tester/build.gradle | 2 ++ 2 files changed, 9 insertions(+) diff --git a/android-json-form-wizard/build.gradle b/android-json-form-wizard/build.gradle index 51f659b97..594ccaea1 100644 --- a/android-json-form-wizard/build.gradle +++ b/android-json-form-wizard/build.gradle @@ -18,6 +18,13 @@ jacoco { reportsDir = file("$buildDir/reports/jacoco") } +configurations { + cleanedAnnotations + compile.exclude group: 'org.jetbrains' , module:'annotations' + // compile.exclude group: 'com.intellij', module:'annotations' + // compile.exclude group: 'org.intellij', module:'annotations' +} + android { compileSdkVersion androidCompileSdkVersion diff --git a/form_tester/build.gradle b/form_tester/build.gradle index b418feabf..4f62c3700 100644 --- a/form_tester/build.gradle +++ b/form_tester/build.gradle @@ -20,6 +20,8 @@ apply plugin: 'com.android.application' configurations { cleanedAnnotations compile.exclude group: 'org.jetbrains' , module:'annotations' + compile.exclude group: 'com.intellij', module:'annotations' + compile.exclude group: 'org.intellij', module:'annotations' } android { From 55e498a3b6bee89a3b41cb26775f8eadd58565d5 Mon Sep 17 00:00:00 2001 From: vend Date: Fri, 4 Mar 2022 17:52:06 +0500 Subject: [PATCH 06/11] changes made for the build --- android-json-form-wizard/build.gradle | 4 ++-- form_tester/build.gradle | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/android-json-form-wizard/build.gradle b/android-json-form-wizard/build.gradle index 594ccaea1..e09140d1c 100644 --- a/android-json-form-wizard/build.gradle +++ b/android-json-form-wizard/build.gradle @@ -20,7 +20,7 @@ jacoco { configurations { cleanedAnnotations - compile.exclude group: 'org.jetbrains' , module:'annotations' + compile.exclude group: 'org.jetbrains' , module:'annotations-java5' // compile.exclude group: 'com.intellij', module:'annotations' // compile.exclude group: 'org.intellij', module:'annotations' } @@ -180,7 +180,7 @@ dependencies { } implementation ('com.github.keyrunHORNET:date_picker_converter:3.0.0') { - exclude group: 'org.jetbrains' , module:'annotations' + exclude group: 'com.android.support', module: 'support-annotations' } testImplementation 'junit:junit:4.12' diff --git a/form_tester/build.gradle b/form_tester/build.gradle index 4f62c3700..208b16fc7 100644 --- a/form_tester/build.gradle +++ b/form_tester/build.gradle @@ -17,12 +17,12 @@ repositories { apply plugin: 'com.android.application' -configurations { - cleanedAnnotations - compile.exclude group: 'org.jetbrains' , module:'annotations' - compile.exclude group: 'com.intellij', module:'annotations' - compile.exclude group: 'org.intellij', module:'annotations' -} +//configurations { +// cleanedAnnotations +// compile.exclude group: 'org.jetbrains' , module:'annotations' +// compile.exclude group: 'com.intellij', module:'annotations' +// compile.exclude group: 'org.intellij', module:'annotations' +//} android { From 33f553d756bda8750abf75b9a0703fceb7654a86 Mon Sep 17 00:00:00 2001 From: SebaMutuku <36365043+SebaMutuku@users.noreply.github.com> Date: Mon, 7 Mar 2022 12:24:42 +0300 Subject: [PATCH 07/11] Release 2 --- android-json-form-wizard/build.gradle | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/android-json-form-wizard/build.gradle b/android-json-form-wizard/build.gradle index e09140d1c..74189fc37 100644 --- a/android-json-form-wizard/build.gradle +++ b/android-json-form-wizard/build.gradle @@ -21,8 +21,8 @@ jacoco { configurations { cleanedAnnotations compile.exclude group: 'org.jetbrains' , module:'annotations-java5' - // compile.exclude group: 'com.intellij', module:'annotations' - // compile.exclude group: 'org.intellij', module:'annotations' + // compile.exclude group: 'com.intellij', module:'annotations' + // compile.exclude group: 'org.intellij', module:'annotations' } @@ -49,7 +49,7 @@ android { buildTypes { release { - minifyEnabled false + minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { @@ -74,7 +74,10 @@ android { resolutionStrategy.force 'com.android.support:design:28.0.0' } } - +configurations { + cleanedAnnotations + implementation.exclude group: 'org.jetbrains' , module:'annotations' +} tasks.withType(Test) { jacoco.includeNoLocationClasses = true @@ -150,7 +153,7 @@ dependencies { } implementation 'com.jakewharton.timber:timber:4.7.1' implementation 'org.greenrobot:eventbus:3.1.1' - implementation 'androidx.multidex:multidex:2.0.0' + implementation 'androidx.multidex:multidex:2.0.1' // PowerMock From 9d898fab9f5636f5bca85ca9c8313927b5ef1f56 Mon Sep 17 00:00:00 2001 From: vend Date: Thu, 17 Mar 2022 17:02:07 +0500 Subject: [PATCH 08/11] BS DAtePicker dialog added in edit text field --- android-json-form-wizard/build.gradle | 37 +--- android-json-form-wizard/gradle.properties | 3 +- .../customviews/DatePickerDialog.java | 44 ++-- .../jsonwizard/widgets/DatePickerFactory.java | 189 +++++++++++++----- .../widgets/NativeRadioButtonFactory.java | 24 +++ .../layout/native_form_dialog_date_picker.xml | 4 - .../widgets/DatePickerFactoryTest.java | 2 +- gradle.properties | 2 +- 8 files changed, 189 insertions(+), 116 deletions(-) diff --git a/android-json-form-wizard/build.gradle b/android-json-form-wizard/build.gradle index e09140d1c..9716131b2 100644 --- a/android-json-form-wizard/build.gradle +++ b/android-json-form-wizard/build.gradle @@ -21,11 +21,9 @@ jacoco { configurations { cleanedAnnotations compile.exclude group: 'org.jetbrains' , module:'annotations-java5' - // compile.exclude group: 'com.intellij', module:'annotations' - // compile.exclude group: 'org.intellij', module:'annotations' + // compile.exclude group: 'com.intellij', module:'annotations' + // compile.exclude group: 'org.intellij', module:'annotations' } - - android { compileSdkVersion androidCompileSdkVersion buildToolsVersion androidBuildToolsVersion @@ -49,7 +47,7 @@ android { buildTypes { release { - minifyEnabled false + minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { @@ -74,8 +72,10 @@ android { resolutionStrategy.force 'com.android.support:design:28.0.0' } } - - +configurations { + cleanedAnnotations + implementation.exclude group: 'org.jetbrains' , module:'annotations' +} tasks.withType(Test) { jacoco.includeNoLocationClasses = true } @@ -126,7 +126,6 @@ dependencies { } implementation 'org.smartregister:opensrp-client-utils:0.0.6-SNAPSHOT' - implementation 'org.jeasy:easy-rules-core:3.3.0' implementation 'org.jeasy:easy-rules-mvel:3.3.0' implementation 'joda-time:joda-time:2.10.5' @@ -140,7 +139,6 @@ dependencies { exclude group: 'com.google.android.gms', module: 'play-services-vision' } implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.7' - implementation('io.ona.CircleProgressbar:lib:0.1.0@aar') { exclude group: 'com.android.support.constraint', module: 'constraint-layout' exclude group: 'com.android.support', module: 'design' @@ -150,9 +148,7 @@ dependencies { } implementation 'com.jakewharton.timber:timber:4.7.1' implementation 'org.greenrobot:eventbus:3.1.1' - implementation 'androidx.multidex:multidex:2.0.0' - - + implementation 'androidx.multidex:multidex:2.0.1' // PowerMock def powerMockVersion = '2.0.4' testImplementation "org.powermock:powermock-module-junit4:$powerMockVersion" @@ -169,20 +165,16 @@ dependencies { androidTestImplementation 'junit:junit:4.12' androidTestImplementation('androidx.test.ext:junit:1.1.1') { exclude group: 'com.android.support', module: 'appcompat-v7' - } androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0', { exclude group: 'com.android.support', module: 'support-annotations' } androidTestImplementation('androidx.test:rules:1.1.1') { exclude group: 'com.android.support', module: 'appcompat-v7' - } - implementation ('com.github.keyrunHORNET:date_picker_converter:3.0.0') { exclude group: 'com.android.support', module: 'support-annotations' } - testImplementation 'junit:junit:4.12' testImplementation 'org.apache.maven:maven-ant-tasks:2.1.3' testImplementation 'org.mockito:mockito-core:3.1.0' @@ -190,44 +182,33 @@ dependencies { testImplementation 'org.robolectric:robolectric:4.3.1' testImplementation "org.json:json:20190722" } - task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) { - reports { - xml.enabled = true xml.destination = file("${buildDir}/reports/jacoco/jacocoRootReport/merged.xml") - html.enabled = true html.destination file("${buildDir}/reports/jacoco/jacocoRootReport/html") } - def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*', '**/*$ViewBinder*.*'] def debugTree = fileTree(dir: "$project.buildDir/intermediates/javac/debug/classes/", excludes: fileFilter) def mainSrc = "$project.projectDir/src/main/java" - sourceDirectories.from = files([mainSrc]) classDirectories.from = files([debugTree]) executionData.from = fileTree(dir: project.buildDir, includes: [ 'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec' ]) } - tasks.coveralls { dependsOn 'jacocoTestReport' } - coveralls { jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/merged.xml" } - - apply from: '../maven.gradle' - task javadoc(type: Javadoc) { failOnError false def mainSrc = "$project.projectDir/src/main/java" source = files([mainSrc]) classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) classpath += configurations.compile -} +} \ No newline at end of file diff --git a/android-json-form-wizard/gradle.properties b/android-json-form-wizard/gradle.properties index 0e918ba8a..a21e8f0a6 100644 --- a/android-json-form-wizard/gradle.properties +++ b/android-json-form-wizard/gradle.properties @@ -1,3 +1,4 @@ POM_SETTING_NAME=OpenSRP Client Native Form Json POM_SETTING_ARTIFACT_ID=opensrp-client-native-form -POM_SETTING_PACKAGING=aar \ No newline at end of file +POM_SETTING_PACKAGING=aar +org.gradle.jvmargs=-Xmx4096m \ No newline at end of file diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/DatePickerDialog.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/DatePickerDialog.java index 274efdd23..4f89819bf 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/DatePickerDialog.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/customviews/DatePickerDialog.java @@ -32,7 +32,7 @@ * Created by Jason Rogena - jrogena@ona.io on 08/05/2017. */ -public class DatePickerDialog extends DialogFragment implements BikramSambatCalendar.OnDateSetListener { +public class DatePickerDialog extends DialogFragment { private DatePicker datePicker; private android.app.DatePickerDialog.OnDateSetListener onDateSetListener; private DialogInterface.OnShowListener onShowListener; @@ -43,7 +43,6 @@ public class DatePickerDialog extends DialogFragment implements BikramSambatCale private Context context; private char[] ymdOrder = new char[]{'d', 'm', 'y'}; private boolean isNumericDatePicker = false; - private BikramSambatCalendar BSCalendar; public DatePickerDialog() { this.minDate = -1; @@ -89,10 +88,7 @@ public void onShow(DialogInterface dialog) { }); datePicker = dialogView.findViewById(isNumericDatePicker ? R.id.date_picker_numeric : R.id.date_picker); - datePicker.setVisibility(View.GONE); -// BS logic from the gradle properties. - BSCalendar = dialogView.findViewById(R.id.calendar); - BSCalendar.setOnDateSetListener(this); + datePicker.setVisibility(View.VISIBLE); if (minDate != -1) { datePicker.setMinDate(minDate); @@ -140,15 +136,8 @@ public void onClick(View v) { public void onClick(View v) { if (onDateSetListener != null) { DatePickerDialog.this.dismiss(); - boolean bikramSambat = true; - if(bikramSambat) - { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - onDateSetListener.onDateSet(datePicker, calendar.get(Calendar.YEAR), - calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); - } - else + + onDateSetListener.onDateSet(datePicker, datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth()); } @@ -166,6 +155,14 @@ public void setMaxDate(long maxDate) { this.maxDate = maxDate; } + public long getMinDate() { + return minDate; + } + + public long getMaxDate() { + return maxDate; + } + public void setCalendarViewShown(boolean calendarViewShown) { this.calendarViewShown = calendarViewShown; } @@ -200,21 +197,4 @@ public void setNumericDatePicker(boolean numericDatePicker) { isNumericDatePicker = numericDatePicker; } - @Override - public void onDateClick(View calendar, int year, int month, int day) { - DateConverter dateConverter = new DateConverter(); - month = month+1; - String dayFiller = ""; - String monthFiller = ""; - if(day<=9) - dayFiller = "0"; - if(month <=9) - monthFiller = "0"; - date = dateConverter.convertBsToAd(dayFiller+day+monthFiller+month+year); - setDate(date); - -// Model model = dateConverter.getEnglishDate(year,month,day); -// Calendar convertedCalendar = DateConverter.convertModelToCalendar(model); -// setDate(convertedCalendar); - } } diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/DatePickerFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/DatePickerFactory.java index 2fea60d52..57e658cc2 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/DatePickerFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/DatePickerFactory.java @@ -8,6 +8,7 @@ import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.LayoutInflater; @@ -17,6 +18,7 @@ import android.widget.RelativeLayout; import android.widget.TextView; +import com.hornet.dateconverter.Model; import com.rengwuxian.materialedittext.MaterialEditText; import com.rey.material.util.ViewUtil; import com.vijay.jsonwizard.R; @@ -42,10 +44,12 @@ import org.json.JSONException; import org.json.JSONObject; +import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; +import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Locale; @@ -66,58 +70,124 @@ public class DatePickerFactory implements FormWidgetFactory { @VisibleForTesting - protected void showDatePickerDialog(Activity context, DatePickerDialog datePickerDialog, MaterialEditText editText) { + protected void showDatePickerDialog(final AppCompatActivity context, DatePickerDialog datePickerDialog, final MaterialEditText editText, final TextView duration) { + NativeFormsProperties nativeFormsProperties = JsonFormFragment.getNativeFormProperties(); + + if(!nativeFormsProperties.isTrue(NativeFormsProperties.KEY.WIDGET_DATEPICKER_IS_NEPAL)) { + FragmentTransaction ft = context.getFragmentManager().beginTransaction(); + Fragment prev = context.getFragmentManager().findFragmentByTag(TAG); + + if (!(prev != null && prev.isAdded())) { + + datePickerDialog.show(ft, TAG); + + //Fragments are committed asynchronously, force commit + context.getFragmentManager().executePendingTransactions(); + + String text = editText.getText().toString(); + Calendar date = FormUtils.getDate(StringUtils.isNoneBlank(Form.getDatePickerDisplayFormat()) ? + Utils.formatDateToPattern(text, Form.getDatePickerDisplayFormat(), DATE_FORMAT.toPattern()) + : text); + if (text.isEmpty()) { + Object defaultValue = datePickerDialog.getArguments().get(JsonFormConstants.DEFAULT); + if (defaultValue != null) + datePickerDialog.setDate(FormUtils.getDate(defaultValue.toString()).getTime()); + else + datePickerDialog.setDate(date.getTime()); + } else { + datePickerDialog.setDate(date.getTime()); + } + } + } + else + { + long minDate = datePickerDialog.getMinDate(); + long maxDate = datePickerDialog.getMaxDate(); + String date = editText.getText().toString(); + Model model = new Model(); + com.hornet.dateconverter.DatePicker.DatePickerDialog dpd; + com.hornet.dateconverter.DatePicker.DatePickerDialog.OnDateSetListener datePickerCallback = new com.hornet.dateconverter.DatePicker.DatePickerDialog.OnDateSetListener() { + @Override + public void onDateSet(com.hornet.dateconverter.DatePicker.DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) { + String BSDate; + String yearString = ""+year; + String monthString = monthOfYear <=9 ? "0"+monthOfYear : ""+monthOfYear; + String dayString = dayOfMonth <= 9 ? "0"+dayOfMonth : ""+dayOfMonth; + + BSDate = yearString+"-"+monthString+"-"+dayString; + updateDateText(context,editText,duration,BSDate); + } + }; + if(StringUtils.isNotBlank(date)) + { + String[] dateString = StringUtils.split(date, "-"); + model.setDay(Integer.parseInt(dateString[2])); + model.setMonth(Integer.parseInt(dateString[1])); + model.setYear(Integer.parseInt(dateString[0])); + dpd = com.hornet.dateconverter.DatePicker.DatePickerDialog.newInstance(datePickerCallback,model); - FragmentTransaction ft = context.getFragmentManager().beginTransaction(); - Fragment prev = context.getFragmentManager().findFragmentByTag(TAG); + } + else + dpd = com.hornet.dateconverter.DatePicker.DatePickerDialog.newInstance(datePickerCallback); + + DateConverter dateConverter = new DateConverter(); + try { + if (minDate != -1) { + Date minRangeAD = new Date(minDate); + String minRangeADString = Utils.getStringFromDate(minRangeAD); + String bsMinRange = dateConverter.convertAdToBs(minRangeADString); + String[] bsDateMin = bsMinRange.split("-"); + Model minModel = new Model(); + minModel.setYear(Integer.parseInt(bsDateMin[0])); + minModel.setMonth(Integer.parseInt(bsDateMin[1])-1); + minModel.setDay(Integer.parseInt(bsDateMin[2])); + dpd.setMinDate(minModel); + Log.d("min date", bsMinRange); + Log.d("min date AD",minRangeADString); - if (!(prev != null && prev.isAdded())) { - datePickerDialog.show(ft, TAG); + } + if (maxDate != -1) { + Date maxRangeAD = new Date(maxDate); + String maxRangeADString = Utils.getStringFromDate(maxRangeAD); + String bsMaxRange = dateConverter.convertAdToBs(maxRangeADString); - //Fragments are committed asynchronously, force commit - context.getFragmentManager().executePendingTransactions(); - String text = editText.getText().toString(); - Calendar date = FormUtils.getDate(StringUtils.isNoneBlank(Form.getDatePickerDisplayFormat()) ? - Utils.formatDateToPattern(text, Form.getDatePickerDisplayFormat(), DATE_FORMAT.toPattern()) - : text); - if (text.isEmpty()) { - Object defaultValue = datePickerDialog.getArguments().get(JsonFormConstants.DEFAULT); - if (defaultValue != null) - datePickerDialog.setDate(FormUtils.getDate(defaultValue.toString()).getTime()); - else - datePickerDialog.setDate(date.getTime()); - } else { - datePickerDialog.setDate(date.getTime()); + String[] bsDateMax = bsMaxRange.split("-"); + Model maxModel = new Model(); + maxModel.setYear(Integer.parseInt(bsDateMax[0])); + maxModel.setMonth(Integer.parseInt(bsDateMax[1])-1); + maxModel.setDay(Integer.parseInt(bsDateMax[2])); + dpd.setMaxDate(maxModel); + + Log.d("max date", bsMaxRange); + Log.d("max date AD",maxRangeADString); + } } + catch (Exception e) + { + e.printStackTrace(); + } + + dpd.show(context.getSupportFragmentManager(),"ssdsd"); } } private void updateDateText(Context context, final MaterialEditText editText, final TextView duration, final String date) { + NativeFormsProperties nativeFormsProperties = JsonFormFragment.getNativeFormProperties(); + final boolean bikramSambatEnabled = nativeFormsProperties.isTrue(NativeFormsProperties.KEY.WIDGET_DATEPICKER_IS_NEPAL); + ((JsonApi) context).getAppExecutors().mainThread().execute(new Runnable() { @Override public void run() { - boolean bikramSambatDate = true; - if(bikramSambatDate) + + if(bikramSambatEnabled) { if(!date.isEmpty()) { - try { - DateConverter dateConverter = new DateConverter(); - String[] dateString = StringUtils.split(date, "-"); - String day = dateString[0]; - int monthValue = Integer.parseInt(dateString[1]); - String month = monthValue <= 9 ? "0"+monthValue : ""+monthValue; - String year = dateString[2]; - String BSDate = dateConverter.convertAdToBs(day + "-" + month + "-" + year); - editText.setText(BSDate); - } - catch (Exception e) - { - e.printStackTrace(); - } + + editText.setText(date); } } else @@ -127,21 +197,42 @@ public void run() { } }); - String durationLabel = (String) duration.getTag(R.id.label); - if (StringUtils.isNotBlank(durationLabel)) { - Locale locale = getSetLanguage(context); - String durationText = getDurationText(context, date, locale); - if (StringUtils.isNotBlank(durationText)) { - durationText = String.format("(%s: %s)", durationLabel, durationText); + String durationString = date; + + if(bikramSambatEnabled) { + try { + DateConverter dateConverter = new DateConverter(); + String[] dateString = StringUtils.split(date, "-"); + String day = dateString[2]; + int month = Integer.parseInt(dateString[1])+1; + String monthString = month <=9 ? "0"+month : ""+month; + String year = dateString[0]; + Date BSDate = dateConverter.convertBsToAd(day + monthString + year); + String ADDate = Utils.getStringFromDate(BSDate); + durationString = ADDate; + } catch (Exception e) { + e.printStackTrace(); } - final String finalDurationText = durationText; - ((JsonApi) context).getAppExecutors().mainThread().execute(new Runnable() { - @Override - public void run() { - duration.setText(finalDurationText); + } + + if(duration!= null) { + String durationLabel = (String) duration.getTag(R.id.label); + if (StringUtils.isNotBlank(durationLabel)) { + Locale locale = getSetLanguage(context); + String durationText = getDurationText(context, durationString, locale); + if (StringUtils.isNotBlank(durationText)) { + durationText = String.format("(%s: %s)", durationLabel, durationText); } - }); + final String finalDurationText = durationText; + ((JsonApi) context).getAppExecutors().mainThread().execute(new Runnable() { + @Override + public void run() { + duration.setText(finalDurationText); + } + }); + } } + } @NonNull @@ -260,7 +351,7 @@ protected void attachLayout(String stepName, final Context context, JsonFormFrag editText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - showDatePickerDialog((Activity) context, datePickerDialog, editText); + showDatePickerDialog((AppCompatActivity) context, datePickerDialog, editText,duration); } }); @@ -297,7 +388,7 @@ private GenericTextWatcher getGenericTextWatcher(String stepName, final Activity public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { datePickerDialog.setArguments(new Bundle()); - showDatePickerDialog(context, datePickerDialog, editText); + showDatePickerDialog((AppCompatActivity) context, datePickerDialog, editText,null); } } }); diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/NativeRadioButtonFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/NativeRadioButtonFactory.java index 6dda36fdf..d56546e0d 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/NativeRadioButtonFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/NativeRadioButtonFactory.java @@ -33,6 +33,7 @@ import com.vijay.jsonwizard.interfaces.CommonListener; import com.vijay.jsonwizard.interfaces.FormWidgetFactory; import com.vijay.jsonwizard.interfaces.JsonApi; +import com.vijay.jsonwizard.utils.DateConverter; import com.vijay.jsonwizard.utils.FormUtils; import com.vijay.jsonwizard.utils.ValidationStatus; import com.vijay.jsonwizard.views.CustomTextView; @@ -46,6 +47,7 @@ import java.util.ArrayList; import java.util.Calendar; +import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -130,6 +132,28 @@ public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth calendarDate.set(Calendar.YEAR, year); if (calendarDate.getTimeInMillis() >= view.getMinDate() && calendarDate.getTimeInMillis() <= view.getMaxDate()) { + + boolean bikramSambatDate = true; + if(bikramSambatDate) + { + String date = DATE_FORMAT.format(calendarDate.getTime()); + try { + DateConverter dateConverter = new DateConverter(); + String[] dateString = StringUtils.split(date, "-"); + String day = dateString[0]; + int monthValue = Integer.parseInt(dateString[1]); + String month = monthValue <= 9 ? "0"+monthValue : ""+monthValue; + String BSyear = dateString[2]; + String BSDate = dateConverter.convertAdToBs(day + "-" + month + "-" + BSyear); + radioButton.setText(arrayString[0] + ": " + BSDate); + } + catch (Exception e) + { + e.printStackTrace(); + } + + } + else radioButton.setText(arrayString[0] + ": " + DATE_FORMAT.format(calendarDate.getTime())); customTextView.setText( createSpecifyText(context.getResources().getString(R.string.radio_button_tap_to_change))); diff --git a/android-json-form-wizard/src/main/res/layout/native_form_dialog_date_picker.xml b/android-json-form-wizard/src/main/res/layout/native_form_dialog_date_picker.xml index 2313e7657..8f3a911a3 100644 --- a/android-json-form-wizard/src/main/res/layout/native_form_dialog_date_picker.xml +++ b/android-json-form-wizard/src/main/res/layout/native_form_dialog_date_picker.xml @@ -21,10 +21,6 @@ android:layout_marginEnd="@dimen/dialog_content_margin" android:visibility="gone" /> - Date: Thu, 17 Mar 2022 15:49:11 +0300 Subject: [PATCH 09/11] Android X --- android-json-form-wizard/build.gradle | 9 ++++++--- .../com/vijay/jsonwizard/widgets/DatePickerFactory.java | 5 ++--- gradle.properties | 4 +++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/android-json-form-wizard/build.gradle b/android-json-form-wizard/build.gradle index 01df5c935..74189fc37 100644 --- a/android-json-form-wizard/build.gradle +++ b/android-json-form-wizard/build.gradle @@ -49,7 +49,7 @@ android { buildTypes { release { - minifyEnabled false + minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { @@ -74,7 +74,10 @@ android { resolutionStrategy.force 'com.android.support:design:28.0.0' } } - +configurations { + cleanedAnnotations + implementation.exclude group: 'org.jetbrains' , module:'annotations' +} tasks.withType(Test) { jacoco.includeNoLocationClasses = true @@ -150,7 +153,7 @@ dependencies { } implementation 'com.jakewharton.timber:timber:4.7.1' implementation 'org.greenrobot:eventbus:3.1.1' - implementation 'androidx.multidex:multidex:2.0.0' + implementation 'androidx.multidex:multidex:2.0.1' // PowerMock diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/DatePickerFactory.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/DatePickerFactory.java index 57e658cc2..0a7be3f76 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/DatePickerFactory.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/widgets/DatePickerFactory.java @@ -66,7 +66,8 @@ public class DatePickerFactory implements FormWidgetFactory { public static final String DATE_FORMAT_REGEX = "(^(((0[1-9]|1[0-9]|2[0-8])[-](0[1-9]|1[012]))|((29|30|31)[-](0[13578]|1[02]))|((29|30)[-](0[4,6,9]|11)))[-](19|[2-9][0-9])\\d\\d$)|(^29[-]02[-](19|[2-9][0-9])(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)$)|\\s*"; public static final SimpleDateFormat DATE_FORMAT_LOCALE_INDEPENDENT = new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH); private static final String TAG = "DatePickerFactory"; - private FormUtils formUtils = new FormUtils(); + private final FormUtils formUtils = new FormUtils(); + @VisibleForTesting @@ -173,7 +174,6 @@ public void onDateSet(com.hornet.dateconverter.DatePicker.DatePickerDialog view, } } - private void updateDateText(Context context, final MaterialEditText editText, final TextView duration, final String date) { NativeFormsProperties nativeFormsProperties = JsonFormFragment.getNativeFormProperties(); final boolean bikramSambatEnabled = nativeFormsProperties.isTrue(NativeFormsProperties.KEY.WIDGET_DATEPICKER_IS_NEPAL); @@ -459,7 +459,6 @@ private void updateEditText(MaterialEditText editText, JSONObject jsonObject, St } } - @VisibleForTesting protected Locale getCurrentLocale(Context context) { return context.getResources().getConfiguration().locale.getLanguage().equals("ar") ? Locale.ENGLISH : context.getResources().getConfiguration().locale;//Arabic should render normal numbers/numeric digits diff --git a/gradle.properties b/gradle.properties index 663c2c95d..b57257687 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=2.1.17-SNAPSHOT +VERSION_NAME=2.1.17-test-SNAPSHOT VERSION_CODE=1 GROUP=org.smartregister POM_SETTING_DESCRIPTION=OpenSRP Client Native Form Json Wizard @@ -11,5 +11,7 @@ POM_SETTING_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt POM_SETTING_LICENCE_DIST=repo POM_SETTING_DEVELOPER_ID=opensrp POM_SETTING_DEVELOPER_NAME=OpenSRP Onadev +sonatypeUsername=opensrp +sonatypePassword=b6Ap_sWUpr+wUqa6@br_sUDrebRa=r7W android.useAndroidX=true android.enableJetifier=true From c2514ed4db8df9b9cae54c95f70e822dea4bed0e Mon Sep 17 00:00:00 2001 From: SebaMutuku <36365043+SebaMutuku@users.noreply.github.com> Date: Thu, 17 Mar 2022 16:21:04 +0300 Subject: [PATCH 10/11] removing test from gradle.props --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b57257687..0108d7863 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=2.1.17-test-SNAPSHOT +VERSION_NAME=2.1.17-SNAPSHOT VERSION_CODE=1 GROUP=org.smartregister POM_SETTING_DESCRIPTION=OpenSRP Client Native Form Json Wizard From 68a5a5f7a6939b5182fbe18bbc5a81576e0adc5f Mon Sep 17 00:00:00 2001 From: SebaMutuku <36365043+SebaMutuku@users.noreply.github.com> Date: Thu, 17 Mar 2022 16:44:54 +0300 Subject: [PATCH 11/11] Minify False --- android-json-form-wizard/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android-json-form-wizard/build.gradle b/android-json-form-wizard/build.gradle index 74189fc37..176b745b8 100644 --- a/android-json-form-wizard/build.gradle +++ b/android-json-form-wizard/build.gradle @@ -49,7 +49,7 @@ android { buildTypes { release { - minifyEnabled true + minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug {