Finish v1.13.20(166)

This commit is contained in:
Giuseppe Scorrano 2020-11-11 12:33:20 +01:00
commit 5f206feb12
15 changed files with 194 additions and 67 deletions

View File

@ -7,8 +7,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 165
def appVersionName = '1.13.19'
def appVersionCode = 166
def appVersionName = '1.13.20'
signingConfigs {
release {

View File

@ -175,8 +175,8 @@ public class MainActivity extends BaseActivity
break;
case R.id.nav_logout:
UtilitySettings.logout(this.mAppDatabase);
ServerStatusChecker.dispose();
UtilitySettings.logout();
startLoginActivity();
break;

View File

@ -34,6 +34,8 @@ public class MainApplication extends Application {
.roomModule(roomModule)
.build();
appComponent.inject(appContext);
appContext.init();
res = getResources();
}

View File

@ -3,6 +3,7 @@ package it.integry.integrywmsnative;
import javax.inject.Singleton;
import dagger.Component;
import it.integry.integrywmsnative.core.context.AppContext;
import it.integry.integrywmsnative.core.data_store.db.RoomModule;
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingComponent;
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule;
@ -47,4 +48,8 @@ public interface MainApplicationComponent {
PickingResiComponent.Factory pickingResiComponent();
DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();
void inject(AppContext appContext);
}

View File

@ -6,12 +6,16 @@ import com.google.firebase.crashlytics.FirebaseCrashlytics;
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.Logger;
import javax.inject.Inject;
import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecover;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.settings.Stash;
import it.integry.integrywmsnative.core.utility.UtilityContext;
import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilitySettings;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast;
@ -20,6 +24,9 @@ public class AppContext {
//Note: this is the Application Context NOT the Activity Context
private final Context mContext;
@Inject
AppDatabase mAppDatabase;
public AppContext(Context context) {
this.mContext = context;
}
@ -63,6 +70,7 @@ public class AppContext {
UtilityContext.initApplicationContext(mContext);
UtilityResources.init(mContext);
UtilityToast.init(mContext);
UtilitySettings.init(mAppDatabase);
}
private void initLogger() {

View File

@ -3,15 +3,18 @@ package it.integry.integrywmsnative.core.context;
import android.content.Context;
import android.text.SpannableString;
import java.lang.reflect.Method;
import androidx.appcompat.app.AppCompatActivity;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
import java.lang.reflect.Method;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilitySettings;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class MainContext {
@ -44,7 +47,10 @@ public class MainContext {
private void initDBData(Runnable onComplete) {
SettingsManager.loadDBVariables(onComplete, ex -> {
DialogSimpleMessageHelper.makeErrorDialog(mContext,
new SpannableString(ex.getMessage()), null, mContext::finish).show();
new SpannableString(ex.getMessage()), null, mContext::finish, R.string.logout, () -> {
UtilitySettings.logout();
MainApplication.exit();
}).show();
}
);
}

View File

@ -11,7 +11,7 @@ import retrofit2.http.Query;
public interface MesRESTConsumerService {
@GET("mes/getOrdiniLavorazioneMateriale")
@GET("mes_v2/getOrdiniLavorazioneMateriale")
Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> getOrdiniLavorazioneMateriale(@Query("codJfas") String codJfas, @Query("idMateriale") String idMateriale);
}

View File

@ -6,10 +6,16 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
public class UtilitySettings {
public static void logout(AppDatabase appDatabase){
private static AppDatabase mAppDatabase;
public static void init(AppDatabase appDatabase) {
mAppDatabase = appDatabase;
}
public static void logout(){
SettingsManager.i().setUser(null);
SettingsManager.i().setUserSession(null);
UtilityThread.executeParallel(appDatabase::clearAllTables);
UtilityThread.executeParallel(mAppDatabase::clearAllTables);
SettingsManager.update();
}

View File

@ -204,9 +204,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
this.mBindings.spedizionePickingList.setAdapter(spedizioneListAdapter);
this.mBindings.spedizionePickingList.setLayoutManager(new LinearLayoutManager(this));
spedizioneListAdapter.setOnItemClicked((clickedItem) -> {
spedizioneListAdapter.setOnItemClicked((clickedItem, refMtbColt) -> {
if (!noLUPresent.get() && SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()) {
this.mViewmodel.dispatchOrdineRow(clickedItem, clickedItem.getRefMtbColt());
this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt);
}
});
}

View File

@ -588,7 +588,7 @@ public class SpedizioneViewModel {
if (UtilityString.equalsIgnoreCase(x.getCodMart(), pickingObject.getSitArtOrdDTO().getCodMart()) &&
UtilityString.equalsIgnoreCase(x.getCodTagl(), pickingObject.getSitArtOrdDTO().getCodTagl()) &&
UtilityString.equalsIgnoreCase(x.getCodCol(), pickingObject.getSitArtOrdDTO().getCodCol()) &&
(!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), pickingObject.getSitArtOrdDTO().getPartitaMag()))) {
(!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), pickingObject.getSitArtOrdDTO().getPartitaMag()) || UtilityString.isNullOrEmpty(pickingObject.getSitArtOrdDTO().getPartitaMag()))) {
if (!matchPickingObject.contains(pickingObject)) {
matchPickingObject.add(pickingObject);
@ -701,28 +701,47 @@ public class SpedizioneViewModel {
//TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta
MtbColr mtbColrToDispatch = pickingObjectDTO.getTempPickData() != null &&
MtbColr scannedMtbColr = pickingObjectDTO.getTempPickData() != null &&
pickingObjectDTO.getTempPickData().getSourceMtbColt() != null &&
pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null &&
pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().size() > 0 ?
pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null;
if (mtbColrToDispatch != null) {
if (UtilityBigDecimal.lowerThan(mtbColrToDispatch.getQtaCol(), qtaDaEvadere) || UtilityBigDecimal.equalsTo(mtbColrToDispatch.getQtaCol(), qtaDaEvadere)) {
numCnfDaPrelevare = mtbColrToDispatch.getNumCnf();
qtaColDaPrelevare = mtbColrToDispatch.getQtaCol();
if (refMtbColt == null && pickingObjectDTO.getMtbColts() != null && pickingObjectDTO.getMtbColts().size() == 1) {
refMtbColt = pickingObjectDTO.getMtbColts().get(0);
}
MtbColr refMtbColr = null;
if(refMtbColt != null && refMtbColt.getMtbColr().size() > 0) {
Optional<MtbColr> optionalMtbColr = Stream.of(refMtbColt.getMtbColr())
.filter(y -> UtilityString.equalsIgnoreCase(y.getCodMart(), scannedMtbColr.getCodMart()) &&
UtilityString.equalsIgnoreCase(y.getCodTagl(), scannedMtbColr.getCodTagl()) &&
UtilityString.equalsIgnoreCase(y.getCodCol(), scannedMtbColr.getCodCol()) &&
(!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(y.getPartitaMag(), scannedMtbColr.getPartitaMag()) || UtilityString.isNullOrEmpty(scannedMtbColr.getPartitaMag())))
.findFirst();
if(optionalMtbColr.isPresent()) refMtbColr = optionalMtbColr.get();
}
MtbColr mtbColrToUse = refMtbColr != null ? refMtbColr : scannedMtbColr;
if (mtbColrToUse != null) {
if (UtilityBigDecimal.equalsOrLowerThan(mtbColrToUse.getQtaCol(), qtaDaEvadere)) {
numCnfDaPrelevare = mtbColrToUse.getNumCnf();
qtaColDaPrelevare = mtbColrToUse.getQtaCol();
} else {
numCnfDaPrelevare = numCnfDaEvadere;
qtaColDaPrelevare = qtaDaEvadere;
}
qtaCnfDaPrelevare = mtbColrToDispatch.getQtaCnf();
qtaCnfDaPrelevare = mtbColrToUse.getQtaCnf();
totalQtaAvailable = mtbColrToDispatch.getQtaCol();
totalNumCnfAvailable = mtbColrToDispatch.getNumCnf();
qtaCnfAvailable = mtbColrToDispatch.getQtaCnf();
totalQtaAvailable = mtbColrToUse.getQtaCol();
totalNumCnfAvailable = mtbColrToUse.getNumCnf();
qtaCnfAvailable = mtbColrToUse.getQtaCnf();
if (UtilityBigDecimal.lowerThan(numCnfDaPrelevare, BigDecimal.ZERO))
@ -731,8 +750,8 @@ public class SpedizioneViewModel {
if (UtilityBigDecimal.lowerThan(qtaColDaPrelevare, BigDecimal.ZERO))
qtaColDaPrelevare = BigDecimal.ZERO;
partitaMag = mtbColrToDispatch.getPartitaMag();
dataScad = mtbColrToDispatch.getDataScadPartitaD();
partitaMag = scannedMtbColr.getPartitaMag();
dataScad = scannedMtbColr.getDataScadPartitaD();
} else if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) {
//Oppure le info del barcode scansionato
@ -779,10 +798,6 @@ public class SpedizioneViewModel {
}
}
if(refMtbColt == null && pickingObjectDTO.getMtbColts().size() == 1) {
refMtbColt = pickingObjectDTO.getMtbColts().get(0);
}
MtbColt finalRefMtbColt = refMtbColt;
this.sendOnItemDispatched(
pickingObjectDTO,
@ -1185,7 +1200,16 @@ public class SpedizioneViewModel {
.setUntMis(pickingObjectDTO.getMtbAart().getUntMis())
.setMtbAart(pickingObjectDTO.getMtbAart());
mtbColr.setRefMtbColr(mtbColrToDispatch);
mtbColr.setRefMtbColr(new MtbColr()
.setCodMart(mtbColr.getCodMart())
.setPartitaMag(mtbColr.getPartitaMag())
.setCodTagl(mtbColr.getCodTagl())
.setCodCol(mtbColr.getCodCol())
.setNumCollo(refMtbColt.getNumCollo())
.setDataCollo(refMtbColt.getDataColloS())
.setSerCollo(refMtbColt.getSerCollo())
.setGestione(refMtbColt.getGestione()));
pickingObjectDTO.getWithdrawMtbColrs().add(mtbColr);
mCurrentMtbColt.getMtbColr().add(mtbColr);

View File

@ -20,7 +20,8 @@ import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.SpedizioneMainListGroupHeaderBinding;
@ -32,7 +33,7 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
private Context mContext;
private final List<SpedizioneListModel> mDataset = new ArrayList<>();
private RunnableArgs<PickingObjectDTO> mOnItemClicked;
private RunnableArgss<PickingObjectDTO, MtbColt> mOnItemClicked;
static class SubheaderHolder extends RecyclerView.ViewHolder {
@ -70,7 +71,7 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
});
}
public void setOnItemClicked(RunnableArgs<PickingObjectDTO> onItemClicked) {
public void setOnItemClicked(RunnableArgss<PickingObjectDTO, MtbColt> onItemClicked) {
this.mOnItemClicked = onItemClicked;
}
@ -138,7 +139,7 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
holder.mBinding.getRoot().setOnClickListener(v -> {
if (this.mOnItemClicked != null)
this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel());
this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel(), pickingObjectDTO.getSourceMtbColt());
});
}

View File

@ -1,7 +1,6 @@
package it.integry.integrywmsnative.view.dialogs.base;
import android.app.Activity;
import androidx.appcompat.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.res.ColorStateList;
@ -9,22 +8,20 @@ import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import androidx.annotation.StringRes;
import androidx.core.content.ContextCompat;
import androidx.appcompat.widget.AppCompatImageView;
import android.text.SpannableString;
import android.text.Spanned;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.StringRes;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
import java.util.HashMap;
import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.databinding.DialogBaseBinding;
@ -41,9 +38,11 @@ public class DialogSimpleMessageHelper {
ERROR(4);
private int value;
TYPE(int value) {
this.value = value;
}
public int getValue() {
return this.value;
}
@ -56,15 +55,15 @@ public class DialogSimpleMessageHelper {
}
}
private static Dialog makeBase(TYPE type, Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick, @StringRes int rNeutralButtonString, Runnable onNeutralClick){
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
private static Dialog makeBase(TYPE type, Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick, @StringRes Integer rNeutralButtonString, Runnable onNeutralClick) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int colorBackgroundTitle = -1;
Drawable titleIconRes = null;
Dialog dialog = new Dialog(mContext);
switch (type){
switch (type) {
case INFO:
colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.light_blue_300);
titleIconRes = mContext.getResources().getDrawable(R.drawable.ic_info_78dp);
@ -91,7 +90,11 @@ public class DialogSimpleMessageHelper {
viewModel
.setOnPositive(onPositiveClick)
.setOnNeutral(onNeutralClick)
.setOnNegative(onNegativeClick);
.setOnNegative(onNegativeClick)
.setPositiveButtonText(mContext.getText(R.string.ok).toString())
.setNeutralButtonText(rNeutralButtonString != null && rNeutralButtonString != -1 ? mContext.getText(rNeutralButtonString).toString() : null)
.setNegativeButtonText(mContext.getText(R.string.no).toString());
DialogBaseBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.dialog_base, null, false);
@ -99,12 +102,10 @@ public class DialogSimpleMessageHelper {
mBinding.setViewmodel(viewModel);
Rect displayRectangle = new Rect();
Window window = ((Activity) mContext).getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(displayRectangle);
mBinding.titleContainer.setMinimumWidth((int)(displayRectangle.width() * 0.8f));
mBinding.titleContainer.setMinimumWidth((int) (displayRectangle.width() * 0.8f));
//Title VIEW
@ -120,7 +121,7 @@ public class DialogSimpleMessageHelper {
LinearLayout hashMapContainer = mBinding.dialogContentHashmap;
if(hashmapContent != null) {
if (hashmapContent != null) {
for (int i = 0; i < hashmapContent.keySet().size(); i++) {
String currentKey = hashmapContent.keySet().toArray()[i].toString();
String currentValue = hashmapContent.get(currentKey);
@ -142,7 +143,7 @@ public class DialogSimpleMessageHelper {
}
public static Dialog makeInfoDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick){
public static Dialog makeInfoDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) {
return makeBase(TYPE.INFO,
mContext,
titleText,
@ -153,7 +154,7 @@ public class DialogSimpleMessageHelper {
}
public static Dialog makeInfoDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick){
public static Dialog makeInfoDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick) {
return makeBase(TYPE.INFO,
mContext,
titleText,
@ -164,7 +165,7 @@ public class DialogSimpleMessageHelper {
}
public static Dialog makeSuccessDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick){
public static Dialog makeSuccessDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) {
return makeBase(TYPE.SUCCESS,
mContext,
titleText,
@ -175,18 +176,20 @@ public class DialogSimpleMessageHelper {
}
public static Dialog makeWarningDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick){
public static Dialog makeWarningDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick) {
return makeBase(TYPE.WARNING,
mContext,
mContext.getText(R.string.warning).toString(),
messageText,
hashmapContent,
onPositiveClick,
() -> { if(onNegativeClick != null) onNegativeClick.run(); }, -1, null);
() -> {
if (onNegativeClick != null) onNegativeClick.run();
}, -1, null);
}
public static Dialog makeWarningDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick){
public static Dialog makeWarningDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) {
return makeBase(TYPE.WARNING,
mContext,
mContext.getText(R.string.warning).toString(),
@ -196,7 +199,7 @@ public class DialogSimpleMessageHelper {
null, -1, null);
}
public static void showSimpleWarningDialog(Context context, String message){
public static void showSimpleWarningDialog(Context context, String message) {
makeErrorDialog(
context,
new SpannableString(message),
@ -204,7 +207,7 @@ public class DialogSimpleMessageHelper {
null).show();
}
public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick){
public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) {
return makeBase(TYPE.ERROR,
mContext,
@ -215,7 +218,7 @@ public class DialogSimpleMessageHelper {
null, -1, null);
}
public static void showSimpleErrorDialog(Context context, String message){
public static void showSimpleErrorDialog(Context context, String message) {
makeErrorDialog(
context,
new SpannableString(message),
@ -223,7 +226,7 @@ public class DialogSimpleMessageHelper {
null).show();
}
public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, @StringRes int rNeutralButtonString, Runnable onNeutralClick){
public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, @StringRes int rNeutralButtonString, Runnable onNeutralClick) {
return makeBase(TYPE.ERROR,
mContext,
@ -236,5 +239,4 @@ public class DialogSimpleMessageHelper {
}
}

View File

@ -11,6 +11,9 @@ public class DialogSimpleMessageViewModel {
private Runnable onNeutral;
private Runnable onNegative;
private String positiveButtonText;
private String neutralButtonText;
private String negativeButtonText;
public DialogSimpleMessageViewModel(Dialog dialog) {
mDialog = dialog;
@ -46,6 +49,33 @@ public class DialogSimpleMessageViewModel {
}
public String getPositiveButtonText() {
return positiveButtonText;
}
public DialogSimpleMessageViewModel setPositiveButtonText(String positiveButtonText) {
this.positiveButtonText = positiveButtonText;
return this;
}
public String getNeutralButtonText() {
return neutralButtonText;
}
public DialogSimpleMessageViewModel setNeutralButtonText(String neutralButtonText) {
this.neutralButtonText = neutralButtonText;
return this;
}
public String getNegativeButtonText() {
return negativeButtonText;
}
public DialogSimpleMessageViewModel setNegativeButtonText(String negativeButtonText) {
this.negativeButtonText = negativeButtonText;
return this;
}
public void onPositiveClick() {
mDialog.dismiss();
if(onPositive != null) onPositive.run();

View File

@ -123,7 +123,7 @@
app:layout_constraintEnd_toStartOf="@id/center_guideline"
app:strokeColor="@color/colorPrimary"
android:onClick="@{() -> viewmodel.onNegativeClick()}"
android:text="@string/no"/>
android:text="@{viewmodel.negativeButtonText}"/>
<com.google.android.material.button.MaterialButton
@ -136,7 +136,7 @@
app:layout_constraintStart_toStartOf="@id/center_guideline"
app:layout_constraintEnd_toEndOf="parent"
android:onClick="@{() -> viewmodel.onPositiveClick()}"
android:text="@string/yes"/>
android:text="@{viewmodel.positiveButtonText}"/>
</androidx.constraintlayout.widget.ConstraintLayout>
@ -173,7 +173,7 @@
app:layout_constraintStart_toStartOf="@id/ok_left_buttons_guideline"
app:layout_constraintEnd_toEndOf="@id/ok_right_buttons_guideline"
android:onClick="@{() -> viewmodel.onPositiveClick()}"
android:text="@string/ok"/>
android:text="@{viewmodel.positiveButtonText}"/>
</androidx.constraintlayout.widget.ConstraintLayout>
@ -184,7 +184,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:visibility="@{viewmodel.neutralVisible ? View.VISIBLE : View.GONE}">
android:visibility="@{viewmodel.negativeVisible &amp;&amp; viewmodel.neutralVisible ? View.VISIBLE : View.GONE}">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/left_buttons_guideline"
@ -211,7 +211,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/left_buttons_guideline"
android:onClick="@{() -> viewmodel.onNegativeClick()}"
android:text="@string/no"/>
android:text="@{viewmodel.negativeButtonText}"/>
<com.google.android.material.button.MaterialButton
@ -225,7 +225,7 @@
app:layout_constraintEnd_toStartOf="@id/right_buttons_guideline"
app:strokeColor="@color/colorPrimary"
android:onClick="@{() -> viewmodel.onNeutralClick()}"
android:text="@string/abort"/>
android:text="@{viewmodel.neutralButtonText}"/>
<com.google.android.material.button.MaterialButton
@ -238,7 +238,50 @@
app:layout_constraintStart_toStartOf="@id/right_buttons_guideline"
app:layout_constraintEnd_toEndOf="parent"
android:onClick="@{() -> viewmodel.onPositiveClick()}"
android:text="@string/yes"/>
android:text="@{viewmodel.positiveButtonText}"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:visibility="@{!viewmodel.negativeVisible &amp;&amp; viewmodel.neutralVisible ? View.VISIBLE : View.GONE}">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/center_guideline2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5"/>
<com.google.android.material.button.MaterialButton
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/Button.PrimaryOutline"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/center_guideline2"
app:strokeColor="@color/colorPrimary"
android:onClick="@{() -> viewmodel.onNeutralClick()}"
android:text="@{viewmodel.neutralButtonText}"/>
<com.google.android.material.button.MaterialButton
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/Button.PrimaryFull"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="@id/center_guideline2"
app:layout_constraintEnd_toEndOf="parent"
android:onClick="@{() -> viewmodel.onPositiveClick()}"
android:text="@{viewmodel.positiveButtonText}"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -10,7 +10,7 @@ buildscript {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath 'com.android.tools.build:gradle:4.1.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.4'
classpath 'com.google.firebase:perf-plugin:1.3.3'