Finish v1_0_6(9)

This commit is contained in:
Gius95 2018-12-14 18:39:11 +01:00
commit 5d9e94e6fd
17 changed files with 291 additions and 54 deletions

Binary file not shown.

View File

@ -1,6 +1,18 @@
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-perf'
apply plugin: 'io.fabric'
apply plugin: 'kotlin-android' apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.google.gms.google-services'
android { android {
compileSdkVersion 28 compileSdkVersion 28
@ -9,8 +21,8 @@ android {
applicationId "it.integry.integrywmsnative" applicationId "it.integry.integrywmsnative"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 28 targetSdkVersion 28
versionCode 8 versionCode 9
versionName "1.0.5" versionName "1.0.6"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
@ -37,6 +49,9 @@ dependencies {
}) })
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.orhanobut:logger:2.2.0' implementation 'com.orhanobut:logger:2.2.0'
implementation 'com.google.firebase:firebase-crash:16.2.1'
implementation 'com.google.firebase:firebase-perf:16.2.2'
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.7'
implementation 'androidx.appcompat:appcompat:1.1.0-alpha01' implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha01' implementation 'com.google.android.material:material:1.1.0-alpha01'
@ -86,11 +101,11 @@ dependencies {
//AppUpdate //AppUpdate
implementation 'com.github.javiersantos:AppUpdater:2.7' implementation 'com.github.javiersantos:AppUpdater:2.7'
//Barcode //Barcode
implementation project(':pointmobilescannerlibrary') implementation project(':pointmobilescannerlibrary')
implementation project(path: ':barcode_base_library') implementation project(path: ':barcode_base_library')
} }
repositories { repositories {
mavenCentral() mavenCentral()
maven { url 'https://maven.fabric.io/public' }
} }

3
app/fabric.properties Normal file
View File

@ -0,0 +1,3 @@
#Contains API Secret used to validate your application. Commit to internal source control; avoid making secret public.
#Fri Dec 14 18:24:49 CET 2018
apiSecret=694052ca79122b4f8c307250f3b0df47afec8483f87957b0c73ec32a21b24516

55
app/google-services.json Normal file
View File

@ -0,0 +1,55 @@
{
"project_info": {
"project_number": "963231271247",
"firebase_url": "https://wmsfirebaseproject-64854.firebaseio.com",
"project_id": "wmsfirebaseproject-64854",
"storage_bucket": "wmsfirebaseproject-64854.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:963231271247:android:6d73ab369f33c450",
"android_client_info": {
"package_name": "it.integry.integrywmsnative"
}
},
"oauth_client": [
{
"client_id": "963231271247-b50hgcd89u9ksfc7189mri044kq8aq1p.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "it.integry.integrywmsnative",
"certificate_hash": "864b69dcc40196befa65638a868cec1c61245fa6"
}
},
{
"client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAV0HnnjE-ZVKhkCQOAyNRzlByk1wng9_4"
}
],
"services": {
"analytics_service": {
"status": 1
},
"appinvite_service": {
"status": 2,
"other_platform_oauth_client": [
{
"client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com",
"client_type": 3
}
]
},
"ads_service": {
"status": 2
}
}
}
],
"configuration_version": "1"
}

View File

@ -52,6 +52,9 @@
android:label="@string/activity_contenuto_bancale_title" android:label="@string/activity_contenuto_bancale_title"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:theme="@style/Light" /> android:theme="@style/Light" />
<meta-data
android:name="io.fabric.ApiKey"
android:value="26f0d16c00d20fe74582627c831f26e30646a187" />
</application> </application>
</manifest> </manifest>

View File

@ -53,7 +53,7 @@ public class MainActivity extends AppCompatActivity
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
ExceptionsHandler.init(this); //ExceptionsHandler.init(this);
PermissionsHelper.askPermissions(this); PermissionsHelper.askPermissions(this);

View File

@ -6,9 +6,11 @@ import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
import android.text.SpannableString; import android.text.SpannableString;
import com.crashlytics.android.Crashlytics;
import com.orhanobut.logger.AndroidLogAdapter; import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.Logger; import com.orhanobut.logger.Logger;
import io.fabric.sdk.android.Fabric;
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.exception.ExceptionsHandler; import it.integry.integrywmsnative.core.exception.ExceptionsHandler;
@ -31,6 +33,9 @@ public class MainApplication extends Application {
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
if(!BuildConfig.DEBUG) {
Fabric.with(this, new Crashlytics());
}
Stash.init(this); Stash.init(this);
SettingsManager.init(this); SettingsManager.init(this);

View File

@ -43,7 +43,8 @@ public class RESTBuilder {
.addConverterFactory(GsonConverterFactory.create()) .addConverterFactory(GsonConverterFactory.create())
.build(); .build();
return retrofit.create(service); return retrofit.create(service);
} }
} }

View File

@ -0,0 +1,4 @@
package it.integry.integrywmsnative.core.REST.model;
public class SlackMessageDTO {
}

View File

@ -19,7 +19,6 @@ public class ExceptionsHandler implements Thread.UncaughtExceptionHandler {
private final static String TAG = ExceptionsHandler.class.getSimpleName(); private final static String TAG = ExceptionsHandler.class.getSimpleName();
private final Activity context; private final Activity context;
//private final Thread.UncaughtExceptionHandler rootHandler;
public static void init(Activity context) { public static void init(Activity context) {
new ExceptionsHandler(context); new ExceptionsHandler(context);
@ -28,10 +27,11 @@ public class ExceptionsHandler implements Thread.UncaughtExceptionHandler {
private ExceptionsHandler(Activity context) { private ExceptionsHandler(Activity context) {
this.context = context; this.context = context;
if (!BuildConfig.DEBUG) { //if (!BuildConfig.DEBUG) {
//rootHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(this); Thread.setDefaultUncaughtExceptionHandler(this);
}
//}
} }

View File

@ -0,0 +1,16 @@
package it.integry.integrywmsnative.core.utility;
import android.content.Context;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
public class UtilityFocus {
public static void focusTextBox(Context context, EditText editTextToFocus) {
editTextToFocus.requestFocus();
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editTextToFocus, InputMethodManager.SHOW_IMPLICIT);
}
}

View File

@ -1,10 +1,7 @@
package it.integry.integrywmsnative.core.utility; package it.integry.integrywmsnative.core.utility;
import android.util.Log;
import com.orhanobut.logger.Logger; import com.orhanobut.logger.Logger;
import java.io.PrintStream;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -14,7 +11,6 @@ import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import okhttp3.internal.Util;
public class UtilityLogger { public class UtilityLogger {

View File

@ -210,16 +210,12 @@ public class VersamentoMerceViewModel {
private void updatePosizione(MtbDepoPosizione mtbDepoPosizione, boolean shouldAskLivello, ProgressDialog progressDialog) { private void updatePosizione(MtbDepoPosizione mtbDepoPosizione, boolean shouldAskLivello, ProgressDialog progressDialog) {
if(shouldAskLivello) { if(shouldAskLivello) {
DialogAskLivelloPosizione.make(mContext, livello -> { DialogAskLivelloPosizione.make(mContext, mtbDepoPosizione, false, newPosizione -> {
if(livello == null) { if(newPosizione == null) {
updatePosizione(mtbDepoPosizione, shouldAskLivello, progressDialog); updatePosizione(mtbDepoPosizione, shouldAskLivello, progressDialog);
} else { } else {
String newPosizione = mtbDepoPosizione.getPosizione().substring(0, mtbDepoPosizione.getPosizione().length()-1); updatePosizione(newPosizione, false, progressDialog);
newPosizione += livello;
mtbDepoPosizione.setPosizione(newPosizione);
updatePosizione(mtbDepoPosizione, false, progressDialog);
} }
}, ex -> { }, ex -> {

View File

@ -1,45 +1,148 @@
package it.integry.integrywmsnative.view.dialogs; package it.integry.integrywmsnative.view.dialogs;
import android.app.Dialog;
import android.content.Context; import android.content.Context;
import androidx.appcompat.app.AlertDialog; import android.content.DialogInterface;
import android.text.InputType; import android.text.Editable;
import android.widget.EditText; import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import com.google.android.material.textfield.TextInputLayout;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.core.utility.UtilityFocus;
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
public class DialogAskLivelloPosizione { public class DialogAskLivelloPosizione {
public static void make(Context context, RunnableArgs<Integer> onComplete, RunnableArgs<Exception> onFailed) { private Context mContext;
final EditText livelloEditText = new EditText(context); private MtbDepoPosizione mtbDepoPosizione;
livelloEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
private Dialog mAlert;
private RunnableArgs<MtbDepoPosizione> onComplete;
private RunnableArgs<Exception> onFailed;
private TextInputLayout livelloTextInputLayout;
private boolean completedFLow = false;
public static void make(Context context, MtbDepoPosizione mtbDepoPosizione, boolean canAbort, RunnableArgs<MtbDepoPosizione> onComplete, RunnableArgs<Exception> onFailed) {
new DialogAskLivelloPosizione(context, mtbDepoPosizione, canAbort, onComplete, onFailed).mAlert.show();
}
public DialogAskLivelloPosizione(Context context, MtbDepoPosizione mtbDepoPosizione, boolean canAbort, RunnableArgs<MtbDepoPosizione> onComplete, RunnableArgs<Exception> onFailed) {
mContext = context;
this.mtbDepoPosizione = mtbDepoPosizione;
this.onComplete = onComplete;
this.onFailed = onFailed;
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View currentView = inflater.inflate(R.layout.dialog_ask_livello_of_position, null, false);
mAlert = new Dialog(mContext);
mAlert.setContentView(currentView);
mAlert.setCanceledOnTouchOutside(false);
mAlert.setOnDismissListener(dialog -> {
if(!completedFLow) onComplete.run(null);
});
mAlert.setOnShowListener(dialog -> {
if(!canAbort) currentView.findViewById(R.id.button_abort).setVisibility(View.GONE);
currentView.findViewById(R.id.button_confirm).setOnClickListener(v -> {
String levelNumber = ((TextView)currentView.findViewById(R.id.level_number)).getText().toString();
onLevelConfirm(levelNumber);
});
currentView.findViewById(R.id.button_abort).setOnClickListener(v -> {
onLevelAbort();
});
livelloTextInputLayout = currentView.findViewById(R.id.level_number_layout);
UtilityFocus.focusTextBox(mContext, livelloTextInputLayout.getEditText());
livelloTextInputLayout.getEditText().addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(livelloTextInputLayout.getEditText().getText() != null) {
validateLevel(livelloTextInputLayout.getEditText().getText().toString());
} else resetLevelError();
}
@Override
public void afterTextChanged(Editable s) {
}
});
});
}
private void onLevelConfirm(String levelString) {
String newPosizione = mtbDepoPosizione.getPosizione().substring(0, mtbDepoPosizione.getPosizione().length()-1);
newPosizione += levelString;
MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(newPosizione);
if(foundPosizione != null) {
resetLevelError();
completedFLow = true;
onComplete.run(foundPosizione);
mAlert.dismiss();
AlertDialog dialog = new AlertDialog.Builder(context)
.setTitle("Livello")
.setMessage("In che livello vuoi posizionare?")
.setView(livelloEditText)
.setPositiveButton("OK", (dialog1, which) -> {
String livello = String.valueOf(livelloEditText.getText());
if(UtilityString.isNullOrEmpty(livello)) {
UtilityToast.showToast("Inserisci un LIVELLO valido");
onComplete.run(null);
} else { } else {
try{ setLevelError(mContext.getResources().getString(R.string.not_valid));
Integer livelloInt = Integer.parseInt(livello); }
onComplete.run(livelloInt); }
} catch (NumberFormatException nfe) {
UtilityToast.showToast("Inserisci un LIVELLO valido");
private void validateLevel(String levelString) {
String newPosizione = mtbDepoPosizione.getPosizione().substring(0, mtbDepoPosizione.getPosizione().length()-1);
newPosizione += levelString;
if(UtilityPosizione.getFromCache(newPosizione) != null) {
resetLevelError();
} else setLevelError(mContext.getResources().getString(R.string.not_valid));
}
private void setLevelError(String message){
livelloTextInputLayout.setErrorEnabled(true);
livelloTextInputLayout.setError(message);
}
private void resetLevelError() {
livelloTextInputLayout.setError(null);
}
private void onLevelAbort() {
completedFLow = true;
onComplete.run(null); onComplete.run(null);
} mAlert.dismiss();
}
})
.setNegativeButton("Annulla", null)
.create();
dialog.show();
} }

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.text.Html" />
<import type="it.integry.integrywmsnative.R" />
<variable
name="mContext"
type="android.content.Context" />
</data>
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp"
android:layout_gravity="center">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Posizionamento"
style="@style/TextViewMaterial.DialogTitle"
android:gravity="center_horizontal"/>
<include
layout="@layout/dialog_ask_position_of_lu__page2" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -39,6 +39,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Button.PrimaryOutline" style="@style/Button.PrimaryOutline"
app:icon="@drawable/ic_clear_24dp" app:icon="@drawable/ic_clear_24dp"
android:layout_marginEnd="8dp"
android:text="Annulla"/> android:text="Annulla"/>
@ -48,7 +49,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Button.PrimaryFull" style="@style/Button.PrimaryFull"
app:icon="@drawable/ic_save_24dp" app:icon="@drawable/ic_save_24dp"
android:layout_marginStart="8dp"
android:text="Salva"/> android:text="Salva"/>
</LinearLayout> </LinearLayout>

View File

@ -2,7 +2,7 @@
buildscript { buildscript {
ext{ ext{
kotlin_version = '1.3.10' kotlin_version = '1.3.11'
gradle_version = '3.2.1' gradle_version = '3.2.1'
} }
@ -15,8 +15,10 @@ buildscript {
google() google()
} }
dependencies { dependencies {
classpath "com.android.tools.build:gradle:3.2.1" classpath "com.android.tools.build:gradle:$gradle_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.2.0'
classpath 'com.google.firebase:firebase-plugins:1.1.5'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files