diff --git a/androidbase-core/build.gradle b/androidbase-core/build.gradle
index f2f90ba..b1defc0 100644
--- a/androidbase-core/build.gradle
+++ b/androidbase-core/build.gradle
@@ -27,5 +27,6 @@ dependencies {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.1.0'
+ compile 'com.android.support:design:25.1.0'
testCompile 'junit:junit:4.12'
}
diff --git a/androidbase-core/src/main/java/com/mr_apps/androidbasecore/custom_views/WarningTextInputLayout.java b/androidbase-core/src/main/java/com/mr_apps/androidbasecore/custom_views/WarningTextInputLayout.java
new file mode 100644
index 0000000..7774ee3
--- /dev/null
+++ b/androidbase-core/src/main/java/com/mr_apps/androidbasecore/custom_views/WarningTextInputLayout.java
@@ -0,0 +1,73 @@
+package com.mr_apps.androidbasecore.custom_views;
+
+import android.content.Context;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.support.design.widget.TextInputLayout;
+import android.support.graphics.drawable.VectorDrawableCompat;
+import android.support.v4.content.ContextCompat;
+import android.util.AttributeSet;
+import android.widget.EditText;
+
+import com.mr_apps.androidbasecore.R;
+
+/**
+ * Custom view used to create a TextInputLayout that displays a red warning drawable instead of the red text below the edit text
+ *
+ * @author Mattia Ruggiero
+ */
+public class WarningTextInputLayout extends TextInputLayout {
+
+ boolean isErrorEnabled = false;
+
+ public WarningTextInputLayout(Context context) {
+ super(context);
+ }
+
+ public WarningTextInputLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ public void setErrorEnabled(boolean enabled) {
+ EditText edit = getEditText();
+ if (edit != null) {
+ if (enabled) {
+ edit.getBackground().setColorFilter(ContextCompat.getColor(getContext(), R.color.errorRed), PorterDuff.Mode.SRC_ATOP);
+ setHintTextAppearance(R.style.HintErrorStyle);
+ Drawable warning = Build.VERSION.SDK_INT >= 21 ? ContextCompat.getDrawable(getContext(), R.drawable.ic_warning_24dp) : VectorDrawableCompat.create(getContext().getResources(), R.drawable.ic_warning_24dp, null);
+ if (warning != null)
+ warning.setColorFilter(ContextCompat.getColor(getContext(), R.color.errorRed), PorterDuff.Mode.SRC_ATOP);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
+ edit.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, warning, null);
+ else
+ edit.setCompoundDrawablesWithIntrinsicBounds(null, null, warning, null);
+
+ } else {
+ if (Build.VERSION.SDK_INT >= 21) {
+ edit.getBackground().clearColorFilter();
+ } else {
+ edit.getBackground().setColorFilter(ContextCompat.getColor(getContext(), R.color.colorAccent), PorterDuff.Mode.SRC_ATOP);
+ }
+ setHintTextAppearance(R.style.HintStyle);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
+ edit.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, null, null);
+ else
+ edit.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
+ }
+ isErrorEnabled = enabled;
+ }
+ }
+
+ @Override
+ public boolean isErrorEnabled() {
+ return isErrorEnabled;
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ setErrorEnabled(false);
+ }
+}
diff --git a/androidbase-core/src/main/res/drawable/ic_warning_24dp.xml b/androidbase-core/src/main/res/drawable/ic_warning_24dp.xml
new file mode 100644
index 0000000..b3a9e03
--- /dev/null
+++ b/androidbase-core/src/main/res/drawable/ic_warning_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/androidbase-core/src/main/res/values/colors.xml b/androidbase-core/src/main/res/values/colors.xml
index c247c52..7b8e05a 100644
--- a/androidbase-core/src/main/res/values/colors.xml
+++ b/androidbase-core/src/main/res/values/colors.xml
@@ -5,4 +5,6 @@
#912b35
#ae3742
+ #D32F2F
+
\ No newline at end of file
diff --git a/androidbase-core/src/main/res/values/styles.xml b/androidbase-core/src/main/res/values/styles.xml
new file mode 100644
index 0000000..2395b07
--- /dev/null
+++ b/androidbase-core/src/main/res/values/styles.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/androidbase/build.gradle b/androidbase/build.gradle
index eeeb520..f9d8d7b 100644
--- a/androidbase/build.gradle
+++ b/androidbase/build.gradle
@@ -60,6 +60,6 @@ dependencies {
compile 'com.github.chrisbanes:PhotoView:1.2.6'
compile 'com.facebook.android:facebook-android-sdk:4.10.0'
compile 'com.viewpagerindicator:library:2.4.1'
- compile 'com.github.MrAPPs-RSM.MrAppsAndroidBase:androidbase-core:1.0.51'
- compile 'com.github.MrAPPs-RSM.MrAppsAndroidBase:androidbase-utils:1.0.51'
+ compile 'com.github.MrAPPs-RSM.MrAppsAndroidBase:androidbase-core:1.0.52'
+ compile 'com.github.MrAPPs-RSM.MrAppsAndroidBase:androidbase-utils:1.0.52'
}
diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseLoginActivity.java b/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseLoginActivity.java
index 6aa9c63..1358e92 100644
--- a/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseLoginActivity.java
+++ b/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseLoginActivity.java
@@ -35,9 +35,9 @@
import com.mr_apps.androidbase.R;
import com.mr_apps.androidbase.activity.AbstractBaseActivity;
import com.mr_apps.androidbase.custom_views.WarningTextInputLayout;
-import com.mr_apps.androidbaseutils.utils.DrawableUtils;
-import com.mr_apps.androidbaseutils.utils.Logger;
-import com.mr_apps.androidbaseutils.utils.Utils;
+import com.mr_apps.androidbaseutils.DrawableUtils;
+import com.mr_apps.androidbaseutils.Logger;
+import com.mr_apps.androidbaseutils.Utils;
import org.json.JSONObject;
diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseRegistrazioneActivity.java b/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseRegistrazioneActivity.java
index 44561fc..4b46c2d 100644
--- a/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseRegistrazioneActivity.java
+++ b/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseRegistrazioneActivity.java
@@ -14,8 +14,8 @@
import com.mr_apps.androidbase.R;
import com.mr_apps.androidbase.activity.AbstractBaseActivity;
import com.mr_apps.androidbase.custom_views.WarningTextInputLayout;
-import com.mr_apps.androidbaseutils.utils.DrawableUtils;
-import com.mr_apps.androidbaseutils.utils.TextViewUtils;
+import com.mr_apps.androidbaseutils.DrawableUtils;
+import com.mr_apps.androidbaseutils.TextViewUtils;
import java.util.List;
diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/account/SignUpElement.java b/androidbase/src/main/java/com/mr_apps/androidbase/account/SignUpElement.java
index 7c57481..4c079c5 100644
--- a/androidbase/src/main/java/com/mr_apps/androidbase/account/SignUpElement.java
+++ b/androidbase/src/main/java/com/mr_apps/androidbase/account/SignUpElement.java
@@ -13,8 +13,8 @@
import android.view.View;
import com.mr_apps.androidbase.R;
-import com.mr_apps.androidbaseutils.utils.CustomDialog;
-import com.mr_apps.androidbaseutils.utils.Utils;
+import com.mr_apps.androidbaseutils.CustomDialog;
+import com.mr_apps.androidbaseutils.Utils;
/**
* Class that manages a standard sign up element of the registration form
diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/activity/LocationActivity.java b/androidbase/src/main/java/com/mr_apps/androidbase/activity/LocationActivity.java
index eedf347..a8ea6a7 100644
--- a/androidbase/src/main/java/com/mr_apps/androidbase/activity/LocationActivity.java
+++ b/androidbase/src/main/java/com/mr_apps/androidbase/activity/LocationActivity.java
@@ -27,7 +27,7 @@
import com.loopj.android.http.TextHttpResponseHandler;
import com.mr_apps.androidbase.R;
import com.mr_apps.androidbase.preferences.GlobalPreferences;
-import com.mr_apps.androidbaseutils.utils.Logger;
+import com.mr_apps.androidbaseutils.Logger;
import java.util.ArrayList;
import java.util.List;
diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/activity/PickerActivity.java b/androidbase/src/main/java/com/mr_apps/androidbase/activity/PickerActivity.java
index 2882667..5176c52 100644
--- a/androidbase/src/main/java/com/mr_apps/androidbase/activity/PickerActivity.java
+++ b/androidbase/src/main/java/com/mr_apps/androidbase/activity/PickerActivity.java
@@ -15,9 +15,9 @@
import android.support.v7.app.AlertDialog;
import com.mr_apps.androidbase.R;
-import com.mr_apps.androidbaseutils.utils.BitmapUtils;
-import com.mr_apps.androidbaseutils.utils.FileUtils;
-import com.mr_apps.androidbaseutils.utils.FileUtils.ElementType;
+import com.mr_apps.androidbaseutils.BitmapUtils;
+import com.mr_apps.androidbaseutils.FileUtils;
+import com.mr_apps.androidbaseutils.FileUtils.ElementType;
import java.io.File;
import java.util.ArrayList;
diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/gallery/FullImageAdapter.java b/androidbase/src/main/java/com/mr_apps/androidbase/gallery/FullImageAdapter.java
index a5b0f68..39e66ac 100644
--- a/androidbase/src/main/java/com/mr_apps/androidbase/gallery/FullImageAdapter.java
+++ b/androidbase/src/main/java/com/mr_apps/androidbase/gallery/FullImageAdapter.java
@@ -11,7 +11,7 @@
import com.bumptech.glide.BitmapTypeRequest;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.BitmapImageViewTarget;
-import com.mr_apps.androidbaseutils.utils.BitmapUtils;
+import com.mr_apps.androidbaseutils.BitmapUtils;
import java.util.List;
diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/BaseTutorialActivity.java b/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/BaseTutorialActivity.java
index fed0db5..0a5b3a2 100644
--- a/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/BaseTutorialActivity.java
+++ b/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/BaseTutorialActivity.java
@@ -11,7 +11,7 @@
import android.widget.RelativeLayout;
import com.mr_apps.androidbase.R;
-import com.mr_apps.androidbaseutils.utils.DrawableUtils;
+import com.mr_apps.androidbaseutils.DrawableUtils;
import com.viewpagerindicator.CirclePageIndicator;
/**
diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/TutorialFragment.java b/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/TutorialFragment.java
index 8d39a9d..f1c22d5 100644
--- a/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/TutorialFragment.java
+++ b/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/TutorialFragment.java
@@ -10,7 +10,7 @@
import android.widget.TextView;
import com.mr_apps.androidbase.R;
-import com.mr_apps.androidbaseutils.utils.Utils;
+import com.mr_apps.androidbaseutils.Utils;
/**
* CLass that manages a fragment of the tutorial
diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/webservice/BaseLoopJSecurity.java b/androidbase/src/main/java/com/mr_apps/androidbase/webservice/BaseLoopJSecurity.java
index accc5e8..87cc151 100644
--- a/androidbase/src/main/java/com/mr_apps/androidbase/webservice/BaseLoopJSecurity.java
+++ b/androidbase/src/main/java/com/mr_apps/androidbase/webservice/BaseLoopJSecurity.java
@@ -15,8 +15,8 @@
import com.loopj.android.http.ResponseHandlerInterface;
import com.loopj.android.http.TextHttpResponseHandler;
import com.mr_apps.androidbase.preferences.SecurityPreferences;
-import com.mr_apps.androidbaseutils.utils.Logger;
-import com.mr_apps.androidbaseutils.utils.Utils;
+import com.mr_apps.androidbaseutils.Logger;
+import com.mr_apps.androidbaseutils.Utils;
import java.io.UnsupportedEncodingException;
import java.nio.channels.NotYetConnectedException;
diff --git a/androidbase/src/main/res/values/colors.xml b/androidbase/src/main/res/values/colors.xml
index 406f6f7..c604c08 100644
--- a/androidbase/src/main/res/values/colors.xml
+++ b/androidbase/src/main/res/values/colors.xml
@@ -2,7 +2,7 @@
#999999
- #D32F2F
+ #D32F2F
#DC4A39
#C64233
diff --git a/androidbase/src/main/res/values/styles.xml b/androidbase/src/main/res/values/styles.xml
index c3fee45..3d430f9 100644
--- a/androidbase/src/main/res/values/styles.xml
+++ b/androidbase/src/main/res/values/styles.xml
@@ -87,10 +87,10 @@
- ?attr/selectableItemBackgroundBorderless
-
+