Sostituito fab in doc interni edit form con Material3

This commit is contained in:
Giuseppe Scorrano 2024-01-09 18:01:29 +01:00
parent 2e360e8104
commit b95863d66d
7 changed files with 88 additions and 110 deletions

View File

@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app" type="AndroidRunConfigurationType" factoryName="Android App">
<module name="WMS_Native.app.main" />
<module name="WMS.app.main" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />

View File

@ -40,7 +40,6 @@ public class DBSettingsModel {
private boolean flagOrdinaArticoliOnScan;
private boolean flagConsentiFuoriPianoLogistico;
private boolean flagConsentiOrdineSenzaGriglia;
private String docInterniCheckFornitore;
private String produzioneDefaultCodAnag;
private boolean flagPrintPackingListOnOrderClose;
private boolean flagPrintEtichetteOnOrderClose;
@ -333,15 +332,6 @@ public class DBSettingsModel {
return this;
}
public String getDocInterniCheckFornitore() {
return docInterniCheckFornitore;
}
public DBSettingsModel setDocInterniCheckFornitore(String docInterniCheckFornitore) {
this.docInterniCheckFornitore = docInterniCheckFornitore;
return this;
}
public boolean isFlagAccettazioneUseQtaOrd() {
return flagAccettazioneUseQtaOrd;
}

View File

@ -340,11 +340,6 @@ public class SettingsManager {
.setSection("ORDINI_A")
.setKeySection("FLAG_CONSENTI_ORDINE_SENZA_GRIGLIA")
.setSetter(dbSettingsModelIstance::setFlagConsentiOrdineSenzaGriglia));
stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class)
.setGestName("PVM")
.setSection("DOC_INTERNI")
.setKeySection("CHECK_FORNITORE")
.setSetter(dbSettingsModelIstance::setDocInterniCheckFornitore));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("ACCETTAZIONE")

View File

@ -3,9 +3,11 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.PopupMenu;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.LinearLayoutManager;
@ -26,7 +28,6 @@ import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.di.BindableInteger;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
@ -42,7 +43,6 @@ import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsItemListModel;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui.DocumentRowsListAdapter;
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemListModel;
@ -77,9 +77,11 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
public BindableString codMgrp = new BindableString();
public BindableString codAnag = new BindableString();
public BindableInteger prodsCount = new BindableInteger(0);
public BindableBoolean isDocumentExportable = new BindableBoolean(false);
private final ObservableArrayList<SqlMtbColr> documentRowsObservableList = new ObservableArrayList<>();
private PopupMenu fabPopupMenu;
public static Intent newInstance(Context context, SqlMtbColt document, List<DocumentoArtDTO> arts, TipoDocDTO tipoDoc, DocInterniSetupDTO mDocInterniSetupDTO) {
Intent myIntent = new Intent(context, DocInterniEditFormActivity.class);
@ -119,6 +121,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
this.initView();
this.initBindables();
this.initRecyclerView();
this.initFab();
}
private void initBindables() {
@ -151,7 +154,8 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
setSupportActionBar(binding.toolbar);
binding.toolbar.setTitle(R.string.edit_doc);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
FabMenuCustomAnimations.changeIconOnFocus(binding.closeActivityFab, R.drawable.ic_menu_24dp, R.drawable.ic_close_24dp);
// FabMenuCustomAnimations.changeIconOnFocus(binding.closeActivityFab, R.drawable.ic_menu_24dp, R.drawable.ic_close_24dp);
}
@ -162,6 +166,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
private void initRecyclerView() {
this.viewModel.docRows.observe(this, this::refreshList);
DocumentRowsListAdapter listAdapter = new DocumentRowsListAdapter(this, documentRowsObservableList);
listAdapter.setEmptyView(binding.scanArtSpinner);
binding.documentRowsList.setAdapter(listAdapter);
@ -173,11 +178,58 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
});
}
private void initFab() {
fabPopupMenu = new PopupMenu(this, this.binding.mainFab,
(Gravity.END | Gravity.BOTTOM),
androidx.appcompat.R.attr.popupMenuStyle,
com.google.android.material.R.style.Widget_Material3_PopupMenu_ContextMenu);
fabPopupMenu.setForceShowIcon(true);
fabPopupMenu.getMenuInflater().inflate(R.menu.doc_interni_edit_fab_menu, fabPopupMenu.getMenu());
fabPopupMenu.setOnMenuItemClickListener(item -> {
int itemId = item.getItemId();
if (itemId == R.id.export_document) {
viewModel.exportDocument();
} else if (itemId == R.id.delete_document) {
viewModel.deleteDocument();
} else if (itemId == R.id.hold_document) {
viewModel.holdDocument();
}
return false;
});
refreshFabMenu();
}
private void refreshFabMenu() {
fabPopupMenu.getMenu()
.findItem(R.id.export_document)
.setVisible(isDocumentExportable());
}
public void showFabMenu() {
fabPopupMenu.show();
}
public void closeFabMenu() {
fabPopupMenu.dismiss();
}
private void refreshList(List<SqlMtbColr> sqlMtbColrs) {
this.documentRowsObservableList.clear();
this.documentRowsObservableList.addAll(this.viewModel.docRows.getValue());
this.prodsCount.set(this.viewModel.docRows.getValue().size());
this.refreshFabMenu();
}
private boolean isDocumentExportable() {
return prodsCount.get() > 0;
}
public void closeEdit() {
this.onBackPressed();
@ -230,7 +282,6 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
@Override
public void onRowsChanged(List<SqlMtbColr> rows) {
this.prodsCount.set(rows.size());
this.isDocumentExportable.set(rows.size() > 0);
}
@Override
@ -283,7 +334,8 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
this.onLoadingStarted();
this.viewModel.saveRow(row, resultDTO);
})
.setOnAbort(() -> {})
.setOnAbort(() -> {
})
.show(getSupportFragmentManager(), "tag");
}
@ -294,7 +346,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
@Override
public void onDocDeleted() {
this.binding.closeActivityFab.close(true);
this.closeFabMenu();
this.closeEdit();
}
@ -338,7 +390,8 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
DialogSelectDocRowsView.newInstance(dataset, data -> {
this.viewModel.dispatchRowEdit((SqlMtbColr) data.getOriginalModel(), articolo.isFlagTracciabilita(), articolo.isUntMisDigitale());
}, () -> {})
}, () -> {
})
.show(this.getSupportFragmentManager(), "dialogSelectDocRowsNew");
}

View File

@ -4,9 +4,6 @@ import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream;
import org.json.JSONException;
import org.json.JSONObject;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@ -25,7 +22,6 @@ import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingL
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO;
@ -48,7 +44,6 @@ public class DocInterniEditFormViewModel {
private TipoDocDTO tipoDoc;
private boolean isCheckPartitaMag = false;
private JSONObject checkFornitoreRules = null;
public MutableLiveData<SqlMtbColt> document = new MutableLiveData<>();
@ -64,12 +59,6 @@ public class DocInterniEditFormViewModel {
}
public void init() {
try {
var docInterniCheckFornitore = SettingsManager.iDB().getDocInterniCheckFornitore();
this.checkFornitoreRules = docInterniCheckFornitore != null ? new JSONObject(docInterniCheckFornitore) : null;
} catch (JSONException e) {
e.printStackTrace();
}
}

View File

@ -267,81 +267,15 @@
</androidx.appcompat.widget.LinearLayoutCompat>
<com.google.android.material.floatingactionbutton.FloatingActionButton
style="?attr/floatingActionButtonPrimaryStyle"
android:id="@+id/main_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
app:singleClick="@{() -> view.showFabMenu()}"
app:srcCompat="@drawable/ic_menu_24dp" />
<com.github.clans.fab.FloatingActionMenu
android:id="@+id/close_activity_fab"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_anchor="@+id/linearLayout2"
app:layout_anchorGravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:menu_icon="@drawable/ic_menu_24dp"
fab:menu_animationDelayPerItem="50"
fab:menu_backgroundColor="@color/white_bg_alpha"
fab:menu_buttonSpacing="0dp"
fab:menu_colorNormal="@color/success_color"
fab:menu_colorPressed="@color/green_400"
fab:menu_labels_colorNormal="@color/white"
fab:menu_labels_colorPressed="@color/white_pressed"
fab:menu_labels_colorRipple="#66FFFFFF"
fab:menu_labels_cornerRadius="3dp"
fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"
fab:menu_labels_margin="0dp"
fab:menu_labels_padding="8dp"
fab:menu_labels_paddingBottom="4dp"
fab:menu_labels_paddingLeft="8dp"
fab:menu_labels_paddingRight="8dp"
fab:menu_labels_paddingTop="4dp"
fab:menu_labels_position="left"
fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right"
fab:menu_labels_showShadow="true"
fab:menu_labels_textColor="@color/black_semi_transparent"
fab:menu_labels_textSize="18sp"
fab:menu_openDirection="up"
fab:menu_shadowColor="#66000000"
fab:menu_shadowRadius="4dp"
fab:menu_shadowXOffset="1dp"
fab:menu_shadowYOffset="3dp"
fab:menu_showShadow="true">
<com.github.clans.fab.FloatingActionButton
android:id="@+id/export_document"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_upload"
android:visibility="@{view.isDocumentExportable.get() ? View.VISIBLE : View.GONE}"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_colorRipple="#66FFFFFF"
app:onClick="@{() -> viewModel.exportDocument()}"
fab:fab_label="@string/export_document" />
<com.github.clans.fab.FloatingActionButton
android:id="@+id/delete_document"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_delete_24dp"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_colorRipple="#66FFFFFF"
app:onClick="@{() -> viewModel.deleteDocument()}"
fab:fab_label="@string/delete_document" />
<com.github.clans.fab.FloatingActionButton
android:id="@+id/save_document"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_check_black_24dp"
android:visibility="visible"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_colorRipple="#66FFFFFF"
app:onClick="@{() -> viewModel.holdDocument()}"
fab:fab_label="@string/save_document" />
</com.github.clans.fab.FloatingActionMenu>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/export_document"
android:icon="@drawable/ic_upload"
android:title="@string/export_document"
android:visible="false"/>
<item
android:id="@+id/delete_document"
android:icon="@drawable/ic_delete_material3"
android:title="@string/delete_document" />
<item
android:id="@+id/hold_document"
android:icon="@drawable/ic_check_black_24dp"
android:title="@string/save_document" />
</menu>