package it.integry.integrywmsnative; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; import android.text.SpannableString; import android.view.Menu; import android.view.MenuItem; import android.view.View; import net.cachapa.expandablelayout.ExpandableLayout; import butterknife.BindView; import butterknife.ButterKnife; import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback; import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback; import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilitySettings; import it.integry.integrywmsnative.core.wifi.WiFiCheckerViewHolder; import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment; import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.gest.login.LoginActivity; import it.integry.integrywmsnative.gest.main.MainFragment; import it.integry.integrywmsnative.gest.settings.MainSettingsFragment; import it.integry.integrywmsnative.gest.settings.SettingsPreferenceFragment; import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment; import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @BindView(R.id.main_search) SearchView mSearchView; @BindView(R.id.nav_view) NavigationView mNavigationView; private boolean firstCheckExecution = true; private boolean mIsOnline = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ExceptionsHandler.toCatch(this); if(SettingsManager.i().user.username == null && SettingsManager.i().user.password == null){ startLoginActivity(); } else { setContentView(R.layout.activity_main); ButterKnife.bind(this); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); DrawerLayout drawer = findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); mNavigationView = findViewById(R.id.nav_view); mNavigationView.setNavigationItemSelectedListener(this); mSearchView.setVisibility(View.GONE); changeContentFragment(MainFragment.newInstance()); init(); } } private void startLoginActivity(){ Intent myIntent = new Intent(this, LoginActivity.class); startActivity(myIntent); this.finish(); } @Override public void onBackPressed() { DrawerLayout drawer = findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @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; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement // if (id == R.id.action_search) { // return true; // } return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. Fragment fragment = null; int id = item.getItemId(); if (id == R.id.nav_accettazione) { fragment = MainAccettazioneFragment.newInstance(); this.adaptViewToFragment(fragment); } else if (id == R.id.nav_gallery) { fragment = MainVenditaFragment.newInstance(); this.adaptViewToFragment(fragment); } else if (id == R.id.nav_slideshow) { } else if (id == R.id.nav_manage) { } else if (id == R.id.nav_share) { } else if (id == R.id.nav_send) { } else if(id == R.id.nav_settings){ fragment = new MainSettingsFragment(); this.adaptViewToFragment(fragment); } else if(id == R.id.nav_logout){ UtilitySettings.logout(); startLoginActivity(); } changeContentFragment(fragment); DrawerLayout drawer = findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } private void adaptViewToFragment(Fragment fragment){ if(fragment instanceof SearchView.OnQueryTextListener) { mSearchView.setOnQueryTextListener((SearchView.OnQueryTextListener) fragment); mSearchView.setVisibility(View.VISIBLE); } else { mSearchView.setOnQueryTextListener(null); mSearchView.setVisibility(View.GONE); } if(fragment instanceof ITitledFragment) { getSupportActionBar().setTitle(((ITitledFragment) fragment).getTitle(this)); } else { getSupportActionBar().setTitle(R.string.app_name); } } private void changeContentFragment(Fragment fragment){ if (fragment != null) { FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.frame_container, fragment).commit(); } } private void init(){ if(BarcodeManager.getCurrentBarcodeInterface() != null) { // DialogSimpleMessageHelper.makeInfoDialog(this, // "Lettore barcode", // new SpannableString("Trovato adattatore " + BarcodeManager.getCurrentBarcodeInterface().getAdapterName() + " installato nel sistema"), // null, null).show(); } ServerStatusChecker.getIstance().addCallback(value -> { if(value && (!mIsOnline || firstCheckExecution)){ SettingsManager.reloadDBVariables(() -> { mIsOnline = true; firstCheckExecution = false; }, ex -> { //mNoConnectionLayout.expand(true); if(!mIsOnline) mIsOnline = false; } ); } else if(!value && mIsOnline){ mIsOnline = false; } }); } }