90 lines
3.6 KiB
Java
90 lines
3.6 KiB
Java
package com.stormtales.notevault;
|
|
|
|
import android.os.Bundle;
|
|
import android.view.MenuItem;
|
|
import android.view.Menu;
|
|
import android.widget.Toast;
|
|
import androidx.lifecycle.ViewModelProvider;
|
|
import com.google.android.material.navigation.NavigationView;
|
|
import androidx.navigation.NavController;
|
|
import androidx.navigation.Navigation;
|
|
import androidx.navigation.ui.AppBarConfiguration;
|
|
import androidx.navigation.ui.NavigationUI;
|
|
import androidx.drawerlayout.widget.DrawerLayout;
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
import com.stormtales.notevault.databinding.ActivityMainBinding;
|
|
import com.stormtales.notevault.network.APICallback;
|
|
import com.stormtales.notevault.network.auth.AuthService;
|
|
import com.stormtales.notevault.ui.login.LoginDialog;
|
|
import com.stormtales.notevault.ui.login.LoginViewModel;
|
|
|
|
public class MainActivity extends AppCompatActivity {
|
|
|
|
private AppBarConfiguration mAppBarConfiguration;
|
|
private ActivityMainBinding binding;
|
|
private LoginViewModel loginViewModel;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
|
|
binding = ActivityMainBinding.inflate(getLayoutInflater());
|
|
setContentView(binding.getRoot());
|
|
|
|
setSupportActionBar(binding.appBarMain.toolbar);
|
|
binding.appBarMain.toolbar.setOnMenuItemClickListener(item -> {
|
|
if (item.getItemId() == R.id.auth_action) {
|
|
showLoginDialog();
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
DrawerLayout drawer = binding.drawerLayout;
|
|
NavigationView navigationView = binding.navView;
|
|
// Passing each menu ID as a set of Ids because each
|
|
// menu should be considered as top level destinations.
|
|
mAppBarConfiguration = new AppBarConfiguration.Builder(
|
|
R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
|
|
.setOpenableLayout(drawer)
|
|
.build();
|
|
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
|
|
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
|
|
NavigationUI.setupWithNavController(navigationView, navController);
|
|
|
|
loginViewModel = new ViewModelProvider(this).get(LoginViewModel.class);
|
|
loginViewModel.setAuthService(new AuthService(getApplicationContext()));
|
|
loginViewModel.getIsLoggedIn().observe(this, isLoggedIn -> {
|
|
this.invalidateOptionsMenu();
|
|
});
|
|
}
|
|
|
|
@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 onSupportNavigateUp() {
|
|
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
|
|
return NavigationUI.navigateUp(navController, mAppBarConfiguration)
|
|
|| super.onSupportNavigateUp();
|
|
}
|
|
|
|
@Override
|
|
public boolean onPrepareOptionsMenu(Menu menu) {
|
|
MenuItem loginItem = menu.findItem(R.id.auth_action);
|
|
if (Boolean.TRUE.equals(loginViewModel.getIsLoggedIn().getValue())) {
|
|
loginItem.setIcon(R.drawable.logout); // Setze das Logout-Symbol
|
|
} else {
|
|
loginItem.setIcon(R.drawable.login); // Setze das Login-Symbol
|
|
}
|
|
return super.onPrepareOptionsMenu(menu);
|
|
}
|
|
|
|
public void showLoginDialog() {
|
|
LoginDialog loginDialog = new LoginDialog(loginViewModel);
|
|
loginDialog.show(getSupportFragmentManager(), "login");
|
|
}
|
|
} |