123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- package com.rthoni.camotion.ui;
-
- import android.content.Intent;
- import android.content.res.Configuration;
- import android.os.Bundle;
- import android.os.PersistableBundle;
- import android.provider.Settings;
- 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.Toolbar;
- import android.view.MenuItem;
- import android.view.SubMenu;
- import android.view.View;
- import android.widget.TextView;
- import android.widget.Toast;
-
- import com.crashlytics.android.Crashlytics;
- import com.luticate.auth.dbo.LuFullLoginDbo;
- import com.luticate.utils.business.LuPromise;
- import com.luticate.utils.business.LuRequest;
- import com.rthoni.camotion.R;
- import com.rthoni.camotion.business.CamotionBusiness;
- import com.rthoni.camotion.dbo.LocationDbo;
- import com.rthoni.camotion.ui.dialogs.LocationPickerDialog;
- import com.rthoni.camotion.ui.dialogs.LoginDialog;
- import com.rthoni.camotion.ui.fragments.CamerasFragment;
- import com.rthoni.camotion.ui.fragments.CamotionFragment;
- import com.rthoni.camotion.ui.fragments.CommandsFragment;
- import com.rthoni.camotion.ui.fragments.SensorsFragment;
-
- import io.fabric.sdk.android.Fabric;
- import java.util.List;
-
- public class MainActivity extends AppCompatActivity
- implements NavigationView.OnNavigationItemSelectedListener {
-
- private LuFullLoginDbo _fullLoginDbo = null;
- private LocationDbo _currentLocation = null;
-
- private TextView _locationNameView;
- private SubMenu _locationsMenu;
- private NavigationView _navigationView;
-
- private static final int REQUEST_CODE_ADD_ACCOUNT = 0;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- Fabric.with(this, new Crashlytics());
- LuRequest.init(this);
- setContentView(R.layout.activity_main);
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
-
- DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
- R.string.navigation_drawer_open, R.string.navigation_drawer_close);
- drawer.addDrawerListener(toggle);
- toggle.syncState();
-
- _navigationView = (NavigationView) findViewById(R.id.nav_view);
- _navigationView.setNavigationItemSelectedListener(this);
- _locationsMenu = _navigationView.getMenu().findItem(R.id.location_menu).getSubMenu();
- View parentView = _navigationView.getHeaderView(0);
- _locationNameView = (TextView) parentView.findViewById(R.id.location_name_textview);
-
- init();
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
- super.onSaveInstanceState(outState, outPersistentState);
-
- }
-
- private void init()
- {
- List<LocationDbo> locations = CamotionBusiness.getLocations(MainActivity.this);
-
- if (locations.isEmpty())
- {
- Intent intent = new Intent(Settings.ACTION_ADD_ACCOUNT);
- intent.putExtra(Settings.EXTRA_AUTHORITIES, new String[]{getResources().getString(R.string.account_type)});
- startActivityForResult(intent, REQUEST_CODE_ADD_ACCOUNT);
- return;
- }
-
- _locationsMenu.clear();
- if (locations.isEmpty()) {
- return;
- }
- for (final LocationDbo location : locations) {
- MenuItem item = _locationsMenu.add(location.getName());
- item.setIcon(R.mipmap.ic_location);
- item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- setLocation(location);
- return false;
- }
- });
- }
- // Force drawer update; need a fix
- MenuItem item = _navigationView.getMenu().add("test42");
- _navigationView.getMenu().removeItem(item.getItemId());
-
- if (_currentLocation == null) {
- if (locations.size() == 1) {
- setLocation(locations.get(0));
- }
- else {
- LocationPickerDialog.getLocation(this)
- .then(new LuPromise.LuConsumer<LocationDbo>() {
- @Override
- public void execute(LocationDbo location) {
- setLocation(location);
- }
- }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
- @Override
- public void execute(LuPromise.LuPromiseError data) {
- setResult(RESULT_CANCELED);
- finish();
- }
- });
- }
- }
-
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == REQUEST_CODE_ADD_ACCOUNT)
- {
- init();
- }
- }
-
- private void setLocation(LocationDbo location)
- {
- _currentLocation = location;
- _fullLoginDbo = null;
- _locationNameView.setText(_currentLocation.getName());
- _navigationView.getMenu().findItem(R.id.nav_cameras).setVisible(false);
- _navigationView.getMenu().findItem(R.id.nav_sensors).setVisible(false);
- _navigationView.getMenu().findItem(R.id.nav_commands).setVisible(false);
- showView(-1);
- LoginDialog dlg = new LoginDialog(this);
- dlg.loginFull(_currentLocation).then(new LuPromise.LuConsumer<LuFullLoginDbo>() {
- @Override
- public void execute(LuFullLoginDbo data) {
- _fullLoginDbo = data;
- _navigationView.getMenu().findItem(R.id.nav_cameras).setVisible(_fullLoginDbo.hasPermission("CAMOTION_CAMERA_GET"));
- _navigationView.getMenu().findItem(R.id.nav_sensors).setVisible(_fullLoginDbo.hasPermission("CAMOTION_SENSOR_GET"));
- _navigationView.getMenu().findItem(R.id.nav_commands).setVisible(_fullLoginDbo.hasPermission("CAMOTION_COMMAND_GET"));
- showView(getDefaultView());
- }
- }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
- @Override
- public void execute(LuPromise.LuPromiseError error) {
- showView(-1);
- Toast.makeText(MainActivity.this, error.toString(), Toast.LENGTH_LONG).show();
- }
- });
- }
-
- private int getDefaultView()
- {
- if (_fullLoginDbo != null)
- {
- if (_fullLoginDbo.hasPermission("CAMOTION_CAMERA_GET"))
- {
- return R.id.nav_cameras;
- }
- else if (_fullLoginDbo.hasPermission("CAMOTION_COMMAND_GET"))
- {
- return R.id.nav_commands;
- }
- else if (_fullLoginDbo.hasPermission("CAMOTION_SENSOR_GET"))
- {
- return R.id.nav_sensors;
- }
- }
- return -1;
- }
-
- private void showView(int view)
- {
- if (_fullLoginDbo == null || _currentLocation == null)
- {
- init();
- return;
- }
- CamotionFragment fragment;
- if (view == R.id.nav_cameras) {
- fragment = new CamerasFragment();
- } else if (view == R.id.nav_commands) {
- fragment = new CommandsFragment();
- } else if (view == R.id.nav_sensors) {
- fragment = new SensorsFragment();
- } /*else if (view == -1) {
- fragment = new DefaultFragment();
- } */else {
- return;
- }
- fragment.setCamotionDbo(_fullLoginDbo, _currentLocation);
- getFragmentManager().beginTransaction().replace(R.id.container, fragment).commit();
- }
-
- @Override
- public void onBackPressed() {
- DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- if (drawer.isDrawerOpen(GravityCompat.START)) {
- drawer.closeDrawer(GravityCompat.START);
- } else {
- super.onBackPressed();
- }
- }
-
- @Override
- public boolean onNavigationItemSelected(MenuItem item) {
- int id = item.getItemId();
-
- if (id == R.id.nav_cameras || id == R.id.nav_sensors || id == R.id.nav_commands) {
- showView(id);
- }
-
- DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- drawer.closeDrawer(GravityCompat.START);
- return true;
- }
-
- @Override
- public void onConfigurationChanged(Configuration newConfig)
- {
- super.onConfigurationChanged(newConfig);
- }
- }
|