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