Modifiche su dialogInputQuantity

This commit is contained in:
Giuseppe Scorrano 2018-07-24 16:02:38 +02:00
parent d1f2b808c7
commit 3683062370
7 changed files with 67 additions and 21 deletions

View File

@ -9,7 +9,7 @@ public class BindableFloat extends BaseObservable {
Float value; Float value;
public Float get() { public Float get() {
return value == null ? 0 : value; return get(true);
} }
public Float get(boolean defaultIfNull) { public Float get(boolean defaultIfNull) {

View File

@ -323,11 +323,8 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString(errorMessage), null, null).show(); DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString(errorMessage), null, null).show();
} }
}); });
} }
} }

View File

@ -8,10 +8,17 @@ import android.databinding.DataBindingUtil;
import android.databinding.Observable; import android.databinding.Observable;
import android.databinding.ViewDataBinding; import android.databinding.ViewDataBinding;
import android.graphics.Color; import android.graphics.Color;
import android.os.SystemClock;
import android.support.design.widget.TextInputLayout; import android.support.design.widget.TextInputLayout;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.text.SpannableString;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import it.integry.integrywmsnative.BR; import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.MainApplication;
@ -19,26 +26,28 @@ import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback; import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback; import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO; import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO;
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.IButtonDialogAction; import it.integry.integrywmsnative.view.dialogs.IButtonDialogAction;
public class DialogInputQuantity { public class DialogInputQuantity {
private static ColorStateList originalColorStateList = null; private static ColorStateList originalColorStateList = null;
public static AlertDialog makeBase(Context context, OrdineAccettazioneDTO.Riga articoloItem, final float qtaEvasa, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) { public static AlertDialog makeBase(final Context context, OrdineAccettazioneDTO.Riga articoloItem, final float qtaEvasa, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
ViewDataBinding contentView = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_articolo, null, false); ViewDataBinding contentView = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_articolo, null, false);
TextInputLayout txlInputNumDiCnf = contentView.getRoot().findViewById(R.id.input_num_cnf); final TextInputLayout txlInputNumDiCnf = contentView.getRoot().findViewById(R.id.input_num_cnf);
TextInputLayout txlInputQtaPerCnf = contentView.getRoot().findViewById(R.id.input_qta_cnf); final TextInputLayout txlInputQtaPerCnf = contentView.getRoot().findViewById(R.id.input_qta_cnf);
TextInputLayout txlInputQtaTot = contentView.getRoot().findViewById(R.id.input_qta_tot); final TextInputLayout txlInputQtaTot = contentView.getRoot().findViewById(R.id.input_qta_tot);
txlInputNumDiCnf.getEditText().setSelectAllOnFocus(true); txlInputNumDiCnf.getEditText().setSelectAllOnFocus(true);
txlInputQtaPerCnf.getEditText().setSelectAllOnFocus(true); txlInputQtaPerCnf.getEditText().setSelectAllOnFocus(true);
txlInputQtaTot.getEditText().setSelectAllOnFocus(true); txlInputQtaTot.getEditText().setSelectAllOnFocus(true);
originalColorStateList = txlInputNumDiCnf.getEditText().getTextColors(); originalColorStateList = txlInputNumDiCnf.getEditText().getTextColors();
final QuantityDTO quantityDTO = new QuantityDTO(); final QuantityDTO quantityDTO = new QuantityDTO();
@ -50,19 +59,43 @@ public class DialogInputQuantity {
contentView.setVariable(BR.viewmodel, articoloItem); contentView.setVariable(BR.viewmodel, articoloItem);
contentView.setVariable(BR.quantityViewModel, quantityDTO); contentView.setVariable(BR.quantityViewModel, quantityDTO);
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context) final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
.setView(contentView.getRoot()) .setView(contentView.getRoot())
.setPositiveButton(context.getText(R.string.confirm), new DialogInterface.OnClickListener() { .setPositiveButton(context.getText(R.string.confirm), null)
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogCallback.onResult(quantityDTO);
}
})
.setNegativeButton(context.getText(R.string.abort), null); .setNegativeButton(context.getText(R.string.abort), null);
AlertDialog alert = alertDialog.create(); final AlertDialog alert = alertDialog.create();
alert.setCanceledOnTouchOutside(false); alert.setCanceledOnTouchOutside(false);
alert.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialogInterface) {
txlInputNumDiCnf.getEditText().requestFocus();
//txlInputNumDiCnf.getEditText().dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN , 0, 0, 0));
//txlInputNumDiCnf.getEditText().dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0));
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(txlInputNumDiCnf.getEditText(), InputMethodManager.SHOW_IMPLICIT);
Button positiveButton = alert.getButton(AlertDialog.BUTTON_POSITIVE);
positiveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(quantityDTO.qtaCnf.get() <= 0 || quantityDTO.numCnf.get() <= 0 || quantityDTO.qtaTot.get() <= 0) {
showQuantityErrorDialog(context);
} else {
dialogCallback.onResult(quantityDTO);
alert.dismiss();
}
}
});
}
});
return alert; return alert;
} }
@ -215,4 +248,14 @@ public class DialogInputQuantity {
} }
private static void showQuantityErrorDialog(Context mContext){
String errorMessage = mContext.getText(R.string.wrong_quantity_input).toString();
DialogSimpleMessageHelper.makeErrorDialog(mContext, new SpannableString(errorMessage), null, null).show();
}
} }

View File

@ -192,7 +192,8 @@
android:inputType="numberDecimal" android:inputType="numberDecimal"
android:hint="@string/num_pcks" android:hint="@string/num_pcks"
android:gravity="end" android:gravity="end"
app:binding="@{quantityViewModel.numCnf}" /> app:binding="@{quantityViewModel.numCnf}" >
</android.support.design.widget.TextInputEditText>
</android.support.design.widget.TextInputLayout> </android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout <android.support.design.widget.TextInputLayout

View File

@ -5,6 +5,7 @@
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<variable <variable
name="mtbColr" name="mtbColr"
type="it.integry.integrywmsnative.core.model.MtbColr"/> type="it.integry.integrywmsnative.core.model.MtbColr"/>
@ -65,11 +66,11 @@
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="0dp"
android:layout_weight="1" android:layout_weight="1"
android:text="@{`Lotto: ` + mtbColr.partitaMag + (mtbColr.getDataScadPartitaS() != null ? `(` + mtbColr.getDataScadPartitaS() + `)` : ``)}" android:text="@{`Lotto: ` + mtbColr.partitaMag + (mtbColr.getDataScadPartitaS() != null ? `(` + mtbColr.getDataScadPartitaS() + `)` : ``)}"
tools:text="Lotto: 030716" tools:text="Lotto: 030716"
android:visibility="@{mtbColr.partitaMag == null ? View.GONE : View.VISIBLE}"/> android:visibility="@{UtilityString.isNullOrEmpty(mtbColr.partitaMag) ? View.GONE : View.VISIBLE}"/>
</LinearLayout> </LinearLayout>
</layout> </layout>

View File

@ -82,4 +82,6 @@
<string name="saving">Salvataggio</string> <string name="saving">Salvataggio</string>
<string name="data_saved">Salvataggio completato</string> <string name="data_saved">Salvataggio completato</string>
<string name="wrong_quantity_input"><![CDATA[La quantità inserita non è valida]]></string>
</resources> </resources>

View File

@ -90,4 +90,6 @@
<string name="saving">Saving</string> <string name="saving">Saving</string>
<string name="data_saved">Data saved</string> <string name="data_saved">Data saved</string>
<string name="wrong_quantity_input">The quantity entered is not valid, please check it</string>
</resources> </resources>