package it.integry.integrywmsnative; import android.content.Intent; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; 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.text.style.ForegroundColorSpan; import android.view.Menu; import android.view.MenuItem; import android.view.View; import net.cachapa.expandablelayout.ExpandableLayout; import org.xml.sax.ErrorHandler; import java.util.ArrayList; 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.exception.ExceptionsHandler; 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.accettazione.dto.OrdineAccettazioneDTO; import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.AccettazioneOrdineInevasoActivity; import it.integry.integrywmsnative.gest.login.LoginActivity; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @BindView(R.id.main_search) SearchView mSearchView; @BindView(R.id.nav_view) NavigationView mNavigationView; @BindView(R.id.no_connection_top_layout) ExpandableLayout mNoConnectionLayout; private ServerStatusChecker serverStatusChecker; private boolean firstCheckExecution = true; @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); init(); } } private void startLoginActivity(){ Intent myIntent = new Intent(this, LoginActivity.class); startActivity(myIntent); this.finish(); } private void init(){ serverStatusChecker = new ServerStatusChecker(); serverStatusChecker.startMonitoring(new ISingleValueOperationCallback() { @Override public void onResult(Boolean value) { if(value && (mNoConnectionLayout.isExpanded() || firstCheckExecution)){ SettingsManager.reloadDBVariables(new ISimpleOperationCallback() { @Override public void onSuccess(Object value) { collapseNoConnectionLayout(); firstCheckExecution = false; } @Override public void onFailed(Exception ex) { //mNoConnectionLayout.expand(true); if(!mNoConnectionLayout.isExpanded()) expandNoConnectionLayout(); } }); } else if(!value && !mNoConnectionLayout.isExpanded()){ expandNoConnectionLayout(); } } }); WiFiCheckerViewHolder wiFiCheckerViewHolder = new WiFiCheckerViewHolder(this, R.id.wifi_power); wiFiCheckerViewHolder.startMonitoring(); } private void collapseNoConnectionLayout(){ runOnUiThread(new Runnable() { @Override public void run() { mNoConnectionLayout.collapse(true); } }); } private void expandNoConnectionLayout(){ runOnUiThread(new Runnable() { @Override public void run() { mNoConnectionLayout.expand(true); } }); } @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) { } 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_logout){ UtilitySettings.logout(); startLoginActivity(); } if (fragment != null) { FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.frame_container, fragment).commit(); } 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); } } }