Refactored MAinActivity
This commit is contained in:
@@ -5,6 +5,7 @@ import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.design.widget.NavigationView;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
@@ -40,15 +41,40 @@ public class MainActivity extends AppCompatActivity
|
||||
ModDetailFragment.OnModuleDetailFragmentInteractionListener,
|
||||
ScheduleFragment.OnScheduleFragmentInteractionListener {
|
||||
|
||||
private static final int FRAGMENT_NONE = -1;
|
||||
private static final int FRAGMENT_STARTUP = 0;
|
||||
private static final int FRAGMENT_MODULES = 1;
|
||||
private static final int FRAGMENT_MODULES_DETAILS = 2;
|
||||
private static final int FRAGMENT_LOGIN = 3;
|
||||
private static final int FRAGMENT_SCHEDULE = 4;
|
||||
private static final int FRAGMENT_CANTEEN = 5;
|
||||
|
||||
private static final String ARG_FRAGMENT_PAGE = "fragment_page";
|
||||
private static final String ARG_FRAGMENT_STATUS = "fragment_status";
|
||||
private static final String ARG_SAVE_DATE = "save_date";
|
||||
|
||||
FragmentManager fragmentManager;
|
||||
private GoogleAuth mGoogleAuth;
|
||||
private KVV mKVV;
|
||||
private Logger log = new Logger(this);
|
||||
private NavigationView mNavigationView;
|
||||
|
||||
private int fragmentPage = FRAGMENT_NONE;
|
||||
private int fragmentStatus = 0;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (savedInstanceState != null) {
|
||||
fragmentPage = savedInstanceState.getInt(ARG_FRAGMENT_PAGE, fragmentPage);
|
||||
fragmentStatus = savedInstanceState.getInt(ARG_FRAGMENT_STATUS, fragmentPage);
|
||||
long saveDate = savedInstanceState.getLong(ARG_SAVE_DATE, 0);
|
||||
|
||||
log.d("fragmentPage", fragmentPage);
|
||||
log.d("fragmentStatus", fragmentStatus);
|
||||
log.d("saveDate", saveDate);
|
||||
}
|
||||
|
||||
setContentView(R.layout.activity_main);
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
@@ -62,19 +88,10 @@ public class MainActivity extends AppCompatActivity
|
||||
mNavigationView = findViewById(R.id.nav_view);
|
||||
mNavigationView.setNavigationItemSelectedListener(this);
|
||||
|
||||
/*try {
|
||||
(new MensaPlan(getApplicationContext())).request(0, new Date());
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}*/
|
||||
this.getKVV().startUpdate();
|
||||
|
||||
fragmentManager = getSupportFragmentManager();
|
||||
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
||||
fragmentTransaction.replace(R.id.fragcontainer, StartupFragment.newInstance());
|
||||
fragmentTransaction.commit();
|
||||
findViewById(R.id.app_bar_layout).setVisibility(View.GONE);
|
||||
|
||||
changeFragment(FRAGMENT_STARTUP);
|
||||
|
||||
this.getGoogleAuth().connect(() -> {
|
||||
getGoogleAuth().getLoginState(credentials -> {
|
||||
@@ -135,19 +152,14 @@ public class MainActivity extends AppCompatActivity
|
||||
// Handle navigation view item clicks here.
|
||||
int id = item.getItemId();
|
||||
|
||||
FragmentTransaction fragmentTransaction;
|
||||
switch (id) {
|
||||
case R.id.nav_modules:
|
||||
setTitle(R.string.courses);
|
||||
fragmentTransaction = fragmentManager.beginTransaction();
|
||||
fragmentTransaction.replace(R.id.fragcontainer, ModulesFragment.newInstance());
|
||||
fragmentTransaction.commit();
|
||||
changeFragment(FRAGMENT_MODULES);
|
||||
break;
|
||||
case R.id.nav_schedule:
|
||||
setTitle(R.string.schedule);
|
||||
fragmentTransaction = fragmentManager.beginTransaction();
|
||||
fragmentTransaction.replace(R.id.fragcontainer, ScheduleFragment.newInstance());
|
||||
fragmentTransaction.commit();
|
||||
changeFragment(FRAGMENT_SCHEDULE);
|
||||
break;
|
||||
case R.id.nav_share:
|
||||
|
||||
@@ -156,9 +168,9 @@ public class MainActivity extends AppCompatActivity
|
||||
this.getKVV().logout();
|
||||
this.getGoogleAuth().getLoginState(credentials -> {
|
||||
if (credentials != null) {
|
||||
MainActivity.this.getGoogleAuth().deleteLoginState(credentials.getUsername(), credentials.getPassword());
|
||||
this.getGoogleAuth().deleteLoginState(credentials.getUsername(), credentials.getPassword());
|
||||
}
|
||||
MainActivity.this.toLogoutState();
|
||||
this.toLogoutState();
|
||||
});
|
||||
break;
|
||||
}
|
||||
@@ -182,15 +194,19 @@ public class MainActivity extends AppCompatActivity
|
||||
this.getGoogleAuth().onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle savedInstanceState) {
|
||||
savedInstanceState.putInt(ARG_FRAGMENT_PAGE, fragmentPage);
|
||||
savedInstanceState.putInt(ARG_FRAGMENT_STATUS, fragmentStatus);
|
||||
savedInstanceState.putLong(ARG_SAVE_DATE, System.currentTimeMillis());
|
||||
super.onSaveInstanceState(savedInstanceState);
|
||||
}
|
||||
|
||||
/* --------------------------------------------*/
|
||||
/* --------------------------------------------*/
|
||||
/* --------------------------------------------*/
|
||||
|
||||
public GoogleAuth getGoogleAuth() {
|
||||
log.d("Holla die Waldfee");
|
||||
if (this.mGoogleAuth == null) {
|
||||
this.mGoogleAuth = new GoogleAuth(this);
|
||||
}
|
||||
@@ -204,6 +220,11 @@ public class MainActivity extends AppCompatActivity
|
||||
return this.mKVV;
|
||||
}
|
||||
|
||||
private void toLogoutState() {
|
||||
setTitle(R.string.log_in);
|
||||
changeFragment(FRAGMENT_LOGIN);
|
||||
}
|
||||
|
||||
private void toLoginState(LoginToken loginToken) {
|
||||
if (loginToken == null) {
|
||||
toLogoutState();
|
||||
@@ -212,59 +233,85 @@ public class MainActivity extends AppCompatActivity
|
||||
}
|
||||
}
|
||||
|
||||
private void toLogoutState() {
|
||||
setTitle(R.string.log_in);
|
||||
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
||||
fragmentTransaction.replace(R.id.fragcontainer, LoginFragment.newInstance());
|
||||
fragmentTransaction.commit();
|
||||
findViewById(R.id.app_bar_layout).setVisibility(View.VISIBLE);
|
||||
|
||||
View header = mNavigationView.getHeaderView(0);
|
||||
header.findViewById(R.id.imageView).setVisibility(View.GONE);
|
||||
header.findViewById(R.id.login_name).setVisibility(View.GONE);
|
||||
header.findViewById(R.id.login_mail).setVisibility(View.GONE);
|
||||
header.findViewById(R.id.btn_login_page).setVisibility(View.VISIBLE);
|
||||
header.findViewById(R.id.btn_login_page).setOnClickListener(v -> {
|
||||
DrawerLayout drawer = findViewById(R.id.drawer_layout);
|
||||
if (drawer.isDrawerOpen(GravityCompat.START)) {
|
||||
drawer.closeDrawer(GravityCompat.START);
|
||||
}
|
||||
});
|
||||
mNavigationView.getMenu().clear();
|
||||
mNavigationView.inflateMenu(R.menu.activity_main_drawer);
|
||||
}
|
||||
|
||||
private void toLoginState(String fullname, String email) {
|
||||
setTitle(R.string.courses);
|
||||
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
||||
fragmentTransaction.replace(R.id.fragcontainer, ModulesFragment.newInstance());
|
||||
fragmentTransaction.commit();
|
||||
findViewById(R.id.app_bar_layout).setVisibility(View.VISIBLE);
|
||||
changeFragment(FRAGMENT_MODULES);
|
||||
|
||||
View header = mNavigationView.getHeaderView(0);
|
||||
header.findViewById(R.id.imageView).setVisibility(View.VISIBLE);
|
||||
header.findViewById(R.id.login_name).setVisibility(View.VISIBLE);
|
||||
header.findViewById(R.id.login_mail).setVisibility(View.VISIBLE);
|
||||
((TextView) header.findViewById(R.id.login_name)).setText(fullname);
|
||||
((TextView) header.findViewById(R.id.login_mail)).setText(email);
|
||||
header.findViewById(R.id.btn_login_page).setVisibility(View.GONE);
|
||||
mNavigationView.getMenu().clear();
|
||||
mNavigationView.inflateMenu(R.menu.activity_main_drawer_login);
|
||||
mNavigationView.setCheckedItem(R.id.nav_modules);
|
||||
getKVV().getModuleList(success -> {
|
||||
log.d("Modules.get", success.size());
|
||||
//SubMenu moduleMenu = navigationView.getMenu().findItem(R.id.nav_modules).getSubMenu();
|
||||
int i = 0;
|
||||
for (Iterator<Pair<Modules.Module, Integer>> it = success.latestSemesterIterator(); it.hasNext(); ) {
|
||||
Pair<Modules.Module, Integer> module = it.next();
|
||||
MenuItem menuItem = mNavigationView.getMenu().add(Menu.NONE, Menu.NONE, 101 + i, module.first.title);
|
||||
menuItem.setOnMenuItemClickListener(item -> {
|
||||
onModulesFragmentInteraction(module.second);
|
||||
return false;
|
||||
});
|
||||
i++;
|
||||
}
|
||||
}, error -> log.e("Modules.error", error));
|
||||
}
|
||||
|
||||
private void changeFragment(int newFragment) {
|
||||
changeFragment(newFragment, 0);
|
||||
}
|
||||
|
||||
private void changeFragment(int newFragment, int newData) {
|
||||
Fragment fragment;
|
||||
if (newFragment == FRAGMENT_MODULES) {
|
||||
fragment = ModulesFragment.newInstance();
|
||||
} else if (newFragment == FRAGMENT_MODULES_DETAILS) {
|
||||
fragment = ModDetailFragment.newInstance(newData);
|
||||
} else if (newFragment == FRAGMENT_LOGIN) {
|
||||
fragment = LoginFragment.newInstance();
|
||||
} else if (newFragment == FRAGMENT_SCHEDULE) {
|
||||
fragment = ScheduleFragment.newInstance();
|
||||
} else { // FRAGMENT_STARTUP
|
||||
fragment = StartupFragment.newInstance();
|
||||
}
|
||||
|
||||
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
||||
fragmentTransaction.replace(R.id.fragcontainer, fragment);
|
||||
fragmentTransaction.commit();
|
||||
|
||||
if (newFragment == FRAGMENT_STARTUP) {
|
||||
findViewById(R.id.app_bar_layout).setVisibility(View.GONE);
|
||||
} else {
|
||||
findViewById(R.id.app_bar_layout).setVisibility(View.VISIBLE);
|
||||
}
|
||||
// switch to logout
|
||||
if ((fragmentPage != FRAGMENT_STARTUP && fragmentPage != FRAGMENT_LOGIN) && (newFragment == FRAGMENT_STARTUP || newFragment == FRAGMENT_LOGIN)) {
|
||||
View header = mNavigationView.getHeaderView(0);
|
||||
header.findViewById(R.id.imageView).setVisibility(View.GONE);
|
||||
header.findViewById(R.id.login_name).setVisibility(View.GONE);
|
||||
header.findViewById(R.id.login_mail).setVisibility(View.GONE);
|
||||
header.findViewById(R.id.btn_login_page).setVisibility(View.VISIBLE);
|
||||
header.findViewById(R.id.btn_login_page).setOnClickListener(v -> {
|
||||
DrawerLayout drawer = findViewById(R.id.drawer_layout);
|
||||
if (drawer.isDrawerOpen(GravityCompat.START)) {
|
||||
drawer.closeDrawer(GravityCompat.START);
|
||||
}
|
||||
});
|
||||
mNavigationView.getMenu().clear();
|
||||
mNavigationView.inflateMenu(R.menu.activity_main_drawer);
|
||||
} // switch to login
|
||||
else if ((fragmentPage == FRAGMENT_STARTUP || fragmentPage == FRAGMENT_LOGIN) && (newFragment != FRAGMENT_STARTUP && newFragment != FRAGMENT_LOGIN)) {
|
||||
View header = mNavigationView.getHeaderView(0);
|
||||
header.findViewById(R.id.imageView).setVisibility(View.VISIBLE);
|
||||
header.findViewById(R.id.login_name).setVisibility(View.VISIBLE);
|
||||
header.findViewById(R.id.login_mail).setVisibility(View.VISIBLE);
|
||||
header.findViewById(R.id.btn_login_page).setVisibility(View.GONE);
|
||||
mNavigationView.getMenu().clear();
|
||||
mNavigationView.inflateMenu(R.menu.activity_main_drawer_login);
|
||||
mNavigationView.setCheckedItem(R.id.nav_modules);
|
||||
getKVV().getModuleList(success -> {
|
||||
log.d("Modules.get", success.size());
|
||||
//SubMenu moduleMenu = navigationView.getMenu().findItem(R.id.nav_modules).getSubMenu();
|
||||
int i = 0;
|
||||
for (Iterator<Pair<Modules.Module, Integer>> it = success.latestSemesterIterator(); it.hasNext(); ) {
|
||||
Pair<Modules.Module, Integer> module = it.next();
|
||||
MenuItem menuItem = mNavigationView.getMenu().add(Menu.NONE, Menu.NONE, 101 + i, module.first.title);
|
||||
menuItem.setOnMenuItemClickListener(item -> {
|
||||
onModulesFragmentInteraction(module.second);
|
||||
return false;
|
||||
});
|
||||
i++;
|
||||
}
|
||||
}, error -> log.e("Modules.error", error));
|
||||
}
|
||||
|
||||
this.fragmentPage = newFragment;
|
||||
this.fragmentStatus = newData;
|
||||
}
|
||||
|
||||
|
||||
@@ -287,9 +334,7 @@ public class MainActivity extends AppCompatActivity
|
||||
log.d("Item clicked", itemPosition);
|
||||
setTitle(R.string.courses);
|
||||
getKVV().getModuleList(success -> setTitle(success.get(itemPosition).title), error -> log.e(error));
|
||||
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
||||
fragmentTransaction.replace(R.id.fragcontainer, ModDetailFragment.newInstance(itemPosition));
|
||||
fragmentTransaction.commit();
|
||||
changeFragment(FRAGMENT_MODULES_DETAILS, itemPosition);
|
||||
|
||||
int size = mNavigationView.getMenu().size();
|
||||
for (int k = 0; k < size; k++) {
|
||||
@@ -306,6 +351,5 @@ public class MainActivity extends AppCompatActivity
|
||||
@Override
|
||||
public void onScheduleFragmentInteraction(Calendar firstVisibleDate, Calendar lastVisibleDay) {
|
||||
setTitle(getResources().getString(R.string.date_scale, Conversion.getModifiedDate(getApplicationContext(), firstVisibleDate.getTimeInMillis()), Conversion.getModifiedDate(getApplicationContext(), lastVisibleDay.getTimeInMillis())));
|
||||
//setTitle(Conversion.getModifiedDate(firstVisibleDate.getTimeInMillis()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,25 +34,25 @@ class KVVLogin extends HTTPService {
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public LoginToken easyLogin() {
|
||||
return this.loginToken;
|
||||
}
|
||||
|
||||
public void login(String username, String password, NetworkCallback<LoginToken> callback, NetworkErrorCallback errorCallback) {
|
||||
if (this.loginToken != null) {
|
||||
if (this.loginToken.getUsername().equals(username)) {
|
||||
log.d("Old login found!");
|
||||
testLogin(this.loginToken, success -> callback.onResponse(this.loginToken), error -> {
|
||||
this.loginToken = null;
|
||||
log.d("Old login invalid! Re-login...");
|
||||
login(username, password, callback, errorCallback);
|
||||
});
|
||||
} else {
|
||||
this.loginToken = null;
|
||||
log.d("Login name no no match! Re-login...");
|
||||
login(username, password, callback, errorCallback);
|
||||
}
|
||||
} else {
|
||||
log.d("No login found! Loggin in!");
|
||||
doLogin(username, password, token -> {
|
||||
this.loginToken = token;
|
||||
log.d("Logged in successfully! Testing...");
|
||||
testLogin(this.loginToken, success -> callback.onResponse(this.loginToken), errorCallback);
|
||||
}, errorCallback);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user