351 lines
12 KiB
Java
351 lines
12 KiB
Java
package it.integry.integrywmsnative;
|
|
|
|
import android.content.Intent;
|
|
|
|
import androidx.annotation.IdRes;
|
|
import androidx.databinding.DataBindingUtil;
|
|
|
|
import android.os.Bundle;
|
|
import androidx.fragment.app.Fragment;
|
|
import androidx.fragment.app.FragmentManager;
|
|
import com.google.android.material.navigation.NavigationView;
|
|
import androidx.core.view.GravityCompat;
|
|
import androidx.drawerlayout.widget.DrawerLayout;
|
|
import androidx.appcompat.app.ActionBarDrawerToggle;
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
import androidx.appcompat.widget.SearchView;
|
|
|
|
import android.view.LayoutInflater;
|
|
import android.view.Menu;
|
|
import android.view.MenuItem;
|
|
import android.view.View;
|
|
|
|
import androidx.fragment.app.FragmentTransaction;
|
|
|
|
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
|
|
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
|
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
|
|
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
|
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
|
|
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
|
import it.integry.integrywmsnative.core.update.UpdatesManager;
|
|
import it.integry.integrywmsnative.core.utility.UtilitySettings;
|
|
import it.integry.integrywmsnative.databinding.ActivityMainBinding;
|
|
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment;
|
|
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
|
import it.integry.integrywmsnative.gest.login.LoginActivity;
|
|
import it.integry.integrywmsnative.gest.main.MainFragment;
|
|
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment;
|
|
import it.integry.integrywmsnative.gest.prod_ord_lavorazione.ProdOrdineLavorazioneElencoFragment;
|
|
import it.integry.integrywmsnative.gest.prod_ord_produzione.ProdOrdineProduzioneElencoFragment;
|
|
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment;
|
|
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
|
|
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
|
|
import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
|
|
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment;
|
|
import it.integry.integrywmsnative.gest.ultime_consegne_fornitore.UltimeConsegneFornitoreFragment;
|
|
import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment;
|
|
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
|
|
|
|
public class MainActivity extends AppCompatActivity
|
|
implements NavigationView.OnNavigationItemSelectedListener, IPoppableActivity {
|
|
|
|
private ActivityMainBinding mBinding;
|
|
|
|
private boolean firstCheckExecution = true;
|
|
private boolean mIsOnline = false;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
|
|
|
|
|
|
mBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_main, null, false);
|
|
setContentView(mBinding.getRoot());
|
|
|
|
UpdatesManager.init(this);
|
|
|
|
setSupportActionBar(mBinding.appBarMain.toolbar);
|
|
getSupportActionBar().setDisplayShowTitleEnabled(false);
|
|
|
|
|
|
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
|
|
this, mBinding.drawerLayout, mBinding.appBarMain.toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
|
|
mBinding.drawerLayout.setDrawerListener(toggle);
|
|
toggle.syncState();
|
|
|
|
|
|
mBinding.navView.setNavigationItemSelectedListener(this);
|
|
mBinding.appBarMain.mainSearch.setVisibility(View.GONE);
|
|
|
|
openMain();
|
|
|
|
init();
|
|
|
|
}
|
|
|
|
private void startLoginActivity(){
|
|
this.finish();
|
|
Intent myIntent = new Intent(this, LoginActivity.class);
|
|
startActivity(myIntent);
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
public void onBackPressed() {
|
|
DrawerLayout drawer = findViewById(R.id.drawer_layout);
|
|
if (drawer.isDrawerOpen(GravityCompat.START)) {
|
|
drawer.closeDrawer(GravityCompat.START);
|
|
} else {
|
|
int count = getSupportFragmentManager().getBackStackEntryCount();
|
|
|
|
if (count == 0) {
|
|
super.onBackPressed();
|
|
} else {
|
|
pop();
|
|
// getSupportFragmentManager().popBackStack();
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
public boolean onCreateOptionsMenu(Menu menu) {
|
|
// Inflate the menu; this adds items to the action bar if it is present.
|
|
getMenuInflater().inflate(R.menu.main, menu);
|
|
return true;
|
|
}
|
|
|
|
public void setItem(@IdRes int menuId) {
|
|
mBinding.navView.setCheckedItem(menuId);
|
|
onNavigationItemSelected(mBinding.navView.getMenu().findItem(menuId));
|
|
}
|
|
|
|
@SuppressWarnings("StatementWithEmptyBody")
|
|
@Override
|
|
public boolean onNavigationItemSelected(MenuItem item) {
|
|
|
|
mBinding.appBarMain.elevatedToolbar.resetAll();
|
|
|
|
// Handle navigation view item clicks here.
|
|
Fragment fragment = null;
|
|
int id = item.getItemId();
|
|
|
|
|
|
switch(id) {
|
|
case R.id.nav_home:
|
|
this.pop();
|
|
break;
|
|
|
|
case R.id.nav_accettazione:
|
|
fragment = MainAccettazioneFragment.newInstance();
|
|
this.adaptViewToFragment(fragment);
|
|
break;
|
|
|
|
case R.id.nav_rettifica_giacenze:
|
|
fragment = RettificaGiacenzeFragment.newInstance();
|
|
this.adaptViewToFragment(fragment);
|
|
break;
|
|
|
|
case R.id.nav_spedizione:
|
|
fragment = MainVenditaFragment.newInstance();
|
|
this.adaptViewToFragment(fragment);
|
|
break;
|
|
|
|
case R.id.nav_versamento_merce:
|
|
fragment = VersamentoMerceFragment.newInstance();
|
|
this.adaptViewToFragment(fragment);
|
|
break;
|
|
|
|
case R.id.nav_free_picking:
|
|
fragment = PickingLiberoFragment.newInstance();
|
|
this.adaptViewToFragment(fragment);
|
|
break;
|
|
|
|
case R.id.nav_resi_fornitore:
|
|
fragment = UltimeConsegneFornitoreFragment.newInstance();
|
|
this.adaptViewToFragment(fragment);
|
|
break;
|
|
|
|
case R.id.nav_resi_cliente:
|
|
fragment = UltimeConsegneClienteFragment.newInstance();
|
|
this.adaptViewToFragment(fragment);
|
|
break;
|
|
|
|
|
|
|
|
case R.id.nav_prod_ordine_produzione:
|
|
fragment = ProdOrdineProduzioneElencoFragment.newInstance();
|
|
this.adaptViewToFragment(fragment);
|
|
break;
|
|
|
|
case R.id.nav_prod_ordine_lavorazione:
|
|
fragment = ProdOrdineLavorazioneElencoFragment.newInstance();
|
|
this.adaptViewToFragment(fragment);
|
|
break;
|
|
|
|
case R.id.nav_prod_versamento_materiale:
|
|
fragment = ProdVersamentoMaterialeFragment.newInstance();
|
|
this.adaptViewToFragment(fragment);
|
|
break;
|
|
|
|
case R.id.nav_prod_recupero_materiale:
|
|
fragment = ProdRecuperoMaterialeFragment.newInstance();
|
|
this.adaptViewToFragment(fragment);
|
|
break;
|
|
|
|
|
|
|
|
|
|
case R.id.nav_settings:
|
|
fragment = new MainSettingsFragment();
|
|
this.adaptViewToFragment(fragment);
|
|
break;
|
|
|
|
|
|
|
|
|
|
case R.id.nav_logout:
|
|
UtilitySettings.logout();
|
|
ServerStatusChecker.dispose();
|
|
|
|
startLoginActivity();
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
changeContentFragment(fragment, true);
|
|
|
|
DrawerLayout drawer = findViewById(R.id.drawer_layout);
|
|
drawer.closeDrawer(GravityCompat.START);
|
|
return true;
|
|
}
|
|
|
|
|
|
private void openMain() {
|
|
MainFragment mainFragment = MainFragment.newInstance();
|
|
|
|
adaptViewToFragment(mainFragment);
|
|
|
|
changeContentFragment(mainFragment, false);
|
|
mBinding.navView.setCheckedItem(R.id.nav_home);
|
|
}
|
|
|
|
@Override
|
|
public void pop() {
|
|
|
|
int count = getSupportFragmentManager().getBackStackEntryCount();
|
|
for(int i = 0; i < count; i++) {
|
|
getSupportFragmentManager().popBackStack();
|
|
}
|
|
|
|
openMain();
|
|
|
|
}
|
|
|
|
private void adaptViewToFragment(Fragment fragment){
|
|
if(fragment instanceof ISearcableFragment) {
|
|
mBinding.appBarMain.mainSearch.setOnQueryTextListener((SearchView.OnQueryTextListener) fragment);
|
|
mBinding.appBarMain.mainSearch.setVisibility(View.VISIBLE);
|
|
mBinding.appBarMain.mainSearch.setOnSearchClickListener(v -> {
|
|
((ISearcableFragment) fragment).onSearchEnabled();
|
|
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.GONE);
|
|
});
|
|
|
|
mBinding.appBarMain.mainSearch.setOnCloseListener(() -> {
|
|
((ISearcableFragment) fragment).onSearchDisabled();
|
|
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.VISIBLE);
|
|
return false;
|
|
});
|
|
} else {
|
|
mBinding.appBarMain.mainSearch.setOnQueryTextListener(null);
|
|
mBinding.appBarMain.mainSearch.setVisibility(View.GONE);
|
|
mBinding.appBarMain.mainSearch.setOnSearchClickListener(null);
|
|
mBinding.appBarMain.mainSearch.setOnCloseListener(null);
|
|
}
|
|
|
|
|
|
if(fragment instanceof ITitledFragment && !(fragment instanceof MainFragment)) {
|
|
mBinding.appBarMain.toolbarTitleCenteredLayout.setVisibility(View.GONE);
|
|
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.VISIBLE);
|
|
((ITitledFragment) fragment).onCreateActionBar(mBinding.appBarMain.toolbarTitleLeft, this);
|
|
} else {
|
|
mBinding.appBarMain.toolbarTitleCenteredLayout.setVisibility(View.VISIBLE);
|
|
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.GONE);
|
|
}
|
|
|
|
if(fragment instanceof IScrollableFragment) {
|
|
((IScrollableFragment) fragment).setScrollToolbar(mBinding.appBarMain.elevatedToolbar);
|
|
((IScrollableFragment) fragment).setOnPreDestroy(() -> {
|
|
mBinding.appBarMain.elevatedToolbar.resetAll();
|
|
});
|
|
}
|
|
|
|
if(fragment instanceof ISelectAllFragment && ((ISelectAllFragment)fragment).isEnabled()) {
|
|
mBinding.appBarMain.mainSelectAll.setVisibility(View.VISIBLE);
|
|
mBinding.appBarMain.mainSelectAll.setOnClickListener(v -> ((ISelectAllFragment)fragment).onSelectAll());
|
|
} else {
|
|
mBinding.appBarMain.mainSelectAll.setVisibility(View.GONE);
|
|
mBinding.appBarMain.mainSelectAll.setOnClickListener(null);
|
|
}
|
|
|
|
if(fragment instanceof IFilterableFragment) {
|
|
mBinding.appBarMain.mainFilter.setVisibility(View.VISIBLE);
|
|
mBinding.appBarMain.mainFilter.setOnClickListener(v -> ((IFilterableFragment)fragment).onFilterClick());
|
|
} else {
|
|
mBinding.appBarMain.mainFilter.setVisibility(View.GONE);
|
|
mBinding.appBarMain.mainFilter.setOnClickListener(null);
|
|
}
|
|
}
|
|
|
|
private void changeContentFragment(Fragment fragment, boolean addToBackStack){
|
|
if (fragment != null) {
|
|
FragmentManager fragmentManager = getSupportFragmentManager();
|
|
FragmentTransaction ft = fragmentManager
|
|
.beginTransaction()
|
|
.replace(R.id.frame_container, fragment);
|
|
|
|
if(addToBackStack) ft.addToBackStack(fragment.getTag());
|
|
|
|
ft.commit();
|
|
//fragmentManager.executePendingTransactions();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void init(){
|
|
|
|
ServerStatusChecker.getIstance().addCallback(value -> {
|
|
if(value && (!mIsOnline || firstCheckExecution)){
|
|
|
|
SettingsManager.loadDBVariables(() -> {
|
|
mIsOnline = true;
|
|
firstCheckExecution = false;
|
|
|
|
}, ex -> {
|
|
//mNoConnectionLayout.expand(true);
|
|
if(mIsOnline) mIsOnline = false;
|
|
}
|
|
);
|
|
|
|
} else if(!value && mIsOnline){
|
|
mIsOnline = false;
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
|
|
}
|