Fixed item selection in menu when selecting a course

This commit is contained in:
Caesar2011
2018-07-08 18:34:03 +02:00
parent 8071e54b06
commit de1a55bfd2
2 changed files with 28 additions and 15 deletions

View File

@@ -40,6 +40,7 @@ public class MainActivity extends AppCompatActivity
private GoogleAuth mGoogleAuth; private GoogleAuth mGoogleAuth;
private KVV mKVV; private KVV mKVV;
private Logger log = new Logger(this); private Logger log = new Logger(this);
private NavigationView mNavigationView;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@@ -54,8 +55,8 @@ public class MainActivity extends AppCompatActivity
drawer.addDrawerListener(toggle); drawer.addDrawerListener(toggle);
toggle.syncState(); toggle.syncState();
NavigationView navigationView = findViewById(R.id.nav_view); mNavigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this); mNavigationView.setNavigationItemSelectedListener(this);
/*try { /*try {
(new MensaPlan(getApplicationContext())).request(0, new Date()); (new MensaPlan(getApplicationContext())).request(0, new Date());
@@ -125,6 +126,8 @@ public class MainActivity extends AppCompatActivity
@SuppressWarnings("StatementWithEmptyBody") @SuppressWarnings("StatementWithEmptyBody")
@Override @Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) { public boolean onNavigationItemSelected(@NonNull MenuItem item) {
//log.d("ITEM SELECTED", item.getTitle());
// Handle navigation view item clicks here. // Handle navigation view item clicks here.
int id = item.getItemId(); int id = item.getItemId();
@@ -156,6 +159,14 @@ public class MainActivity extends AppCompatActivity
DrawerLayout drawer = findViewById(R.id.drawer_layout); DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START); drawer.closeDrawer(GravityCompat.START);
int size = mNavigationView.getMenu().size();
for (int k = 0; k < size; k++) {
//mNavigationView.getMenu().getItem(k).setChecked(mNavigationView.getMenu().getItem(k).getOrder() == 101+itemPosition);
mNavigationView.getMenu().getItem(k).setChecked(false);
}
item.setChecked(true);
return true; return true;
} }
@@ -201,13 +212,12 @@ public class MainActivity extends AppCompatActivity
fragmentTransaction.commit(); fragmentTransaction.commit();
findViewById(R.id.app_bar_layout).setVisibility(View.VISIBLE); findViewById(R.id.app_bar_layout).setVisibility(View.VISIBLE);
NavigationView navigationView = findViewById(R.id.nav_view); View header = mNavigationView.getHeaderView(0);
View header = navigationView.getHeaderView(0);
header.findViewById(R.id.imageView).setVisibility(View.GONE); header.findViewById(R.id.imageView).setVisibility(View.GONE);
header.findViewById(R.id.login_name).setVisibility(View.GONE); header.findViewById(R.id.login_name).setVisibility(View.GONE);
header.findViewById(R.id.login_page).setVisibility(View.VISIBLE); header.findViewById(R.id.login_page).setVisibility(View.VISIBLE);
navigationView.getMenu().clear(); mNavigationView.getMenu().clear();
navigationView.inflateMenu(R.menu.activity_main_drawer); mNavigationView.inflateMenu(R.menu.activity_main_drawer);
} }
private void toLoginState(String username) { private void toLoginState(String username) {
@@ -216,21 +226,20 @@ public class MainActivity extends AppCompatActivity
fragmentTransaction.commit(); fragmentTransaction.commit();
findViewById(R.id.app_bar_layout).setVisibility(View.VISIBLE); findViewById(R.id.app_bar_layout).setVisibility(View.VISIBLE);
final NavigationView navigationView = findViewById(R.id.nav_view); View header = mNavigationView.getHeaderView(0);
View header = navigationView.getHeaderView(0);
header.findViewById(R.id.imageView).setVisibility(View.VISIBLE); header.findViewById(R.id.imageView).setVisibility(View.VISIBLE);
header.findViewById(R.id.login_name).setVisibility(View.VISIBLE); header.findViewById(R.id.login_name).setVisibility(View.VISIBLE);
header.findViewById(R.id.login_page).setVisibility(View.GONE); header.findViewById(R.id.login_page).setVisibility(View.GONE);
navigationView.getMenu().clear(); mNavigationView.getMenu().clear();
navigationView.inflateMenu(R.menu.activity_main_drawer_login); mNavigationView.inflateMenu(R.menu.activity_main_drawer_login);
navigationView.setCheckedItem(R.id.nav_modules); mNavigationView.setCheckedItem(R.id.nav_modules);
getKVV().getModuleList(success -> { getKVV().getModuleList(success -> {
log.d("Modules.get", success.size()); log.d("Modules.get", success.size());
//SubMenu moduleMenu = navigationView.getMenu().findItem(R.id.nav_modules).getSubMenu(); //SubMenu moduleMenu = navigationView.getMenu().findItem(R.id.nav_modules).getSubMenu();
int i = 0; int i = 0;
for (Iterator<Modules.Module> it = success.latestSemesterIterator(); it.hasNext(); ) { for (Iterator<Modules.Module> it = success.latestSemesterIterator(); it.hasNext(); ) {
Modules.Module module = it.next(); Modules.Module module = it.next();
MenuItem menuItem = navigationView.getMenu().add(Menu.NONE, Menu.NONE, 101 + i, module.title); MenuItem menuItem = mNavigationView.getMenu().add(Menu.NONE, Menu.NONE, 101 + i, module.title);
final int finalI = i; final int finalI = i;
menuItem.setOnMenuItemClickListener(item -> { menuItem.setOnMenuItemClickListener(item -> {
onModulesFragmentInteraction(finalI); onModulesFragmentInteraction(finalI);
@@ -259,11 +268,17 @@ public class MainActivity extends AppCompatActivity
@Override @Override
public void onModulesFragmentInteraction(final int itemPosition) { public void onModulesFragmentInteraction(final int itemPosition) {
log.d("Item clicked", itemPosition); log.d("Item clicked", itemPosition);
getKVV().getModuleList(success -> log.d(success.get(itemPosition).title), error -> log.e(error)); //getKVV().getModuleList(success -> log.d(success.get(itemPosition).title), error -> log.e(error));
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragcontainer, ModDetailFragment.newInstance(itemPosition)); fragmentTransaction.replace(R.id.fragcontainer, ModDetailFragment.newInstance(itemPosition));
fragmentTransaction.commit(); fragmentTransaction.commit();
int size = mNavigationView.getMenu().size();
for (int k = 0; k < size; k++) {
mNavigationView.getMenu().getItem(k).setChecked(mNavigationView.getMenu().getItem(k).getOrder() == 101+itemPosition);
//mNavigationView.getMenu().getItem(k).setChecked(false);
}
} }
@Override @Override

View File

@@ -59,9 +59,7 @@ public class KVVModuleList extends HTTPService {
public void getModuleList(final NetworkCallback<Modules> callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) { public void getModuleList(final NetworkCallback<Modules> callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) {
log.d("getModuleList");
queueModuleDetails.add("list", () -> { queueModuleDetails.add("list", () -> {
log.d("getModuleList start", forceRefresh);
if (this.moduleList != null && !forceRefresh) { if (this.moduleList != null && !forceRefresh) {
callback.onResponse(this.moduleList); callback.onResponse(this.moduleList);
queueModuleDetails.next("list"); queueModuleDetails.next("list");