|
@@ -31,6 +31,8 @@ import android.view.MenuItem;
|
|
import android.view.View;
|
|
import android.view.View;
|
|
import android.widget.AdapterView;
|
|
import android.widget.AdapterView;
|
|
import android.widget.ListView;
|
|
import android.widget.ListView;
|
|
|
|
+import android.widget.Toast;
|
|
|
|
+
|
|
import de.tudarmstadt.informatik.hostage.Hostage;
|
|
import de.tudarmstadt.informatik.hostage.Hostage;
|
|
import de.tudarmstadt.informatik.hostage.R;
|
|
import de.tudarmstadt.informatik.hostage.R;
|
|
import de.tudarmstadt.informatik.hostage.model.Profile;
|
|
import de.tudarmstadt.informatik.hostage.model.Profile;
|
|
@@ -81,6 +83,8 @@ public class MainActivity extends Activity {
|
|
|
|
|
|
private ProfileManager mProfileManager;
|
|
private ProfileManager mProfileManager;
|
|
|
|
|
|
|
|
+ private Fragment rootFragment;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* Connection to bind the background service
|
|
* Connection to bind the background service
|
|
*
|
|
*
|
|
@@ -115,6 +119,8 @@ public class MainActivity extends Activity {
|
|
|
|
|
|
private HashMap<String, Boolean> mAttacksOnProtocol = new HashMap<String, Boolean>();
|
|
private HashMap<String, Boolean> mAttacksOnProtocol = new HashMap<String, Boolean>();
|
|
|
|
|
|
|
|
+ private boolean mCloseWarning = false;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* Retrieve the singleton latest instance of the activity
|
|
* Retrieve the singleton latest instance of the activity
|
|
*
|
|
*
|
|
@@ -395,15 +401,19 @@ public class MainActivity extends Activity {
|
|
}
|
|
}
|
|
|
|
|
|
if (fragment != null) {
|
|
if (fragment != null) {
|
|
|
|
+ if(position == 0 && rootFragment == null){
|
|
|
|
+ rootFragment = fragment;
|
|
|
|
+ }
|
|
|
|
+
|
|
boolean isFirst = getFragmentManager().getBackStackEntryCount() == 0;
|
|
boolean isFirst = getFragmentManager().getBackStackEntryCount() == 0;
|
|
|
|
|
|
- getFragmentManager().popBackStackImmediate(HomeFragment.class.getName(), 0);
|
|
|
|
|
|
+ //getFragmentManager().popBackStackImmediate(HomeFragment.class.getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
|
|
// update selected item and title, then close the drawer if needed
|
|
// update selected item and title, then close the drawer if needed
|
|
- if(!(fragment instanceof HomeFragment) || isFirst) {
|
|
|
|
|
|
+ //if(!(fragment instanceof HomeFragment) || isFirst) {
|
|
injectFragment(fragment);// , false, menuItemPosition);
|
|
injectFragment(fragment);// , false, menuItemPosition);
|
|
- } else {
|
|
|
|
- this.mDisplayedFragment = fragment;
|
|
|
|
- }
|
|
|
|
|
|
+ //} else {
|
|
|
|
+ // injectFragment(rootFragment);
|
|
|
|
+ //}
|
|
|
|
|
|
mDrawerList.setItemChecked(position, true);
|
|
mDrawerList.setItemChecked(position, true);
|
|
mDrawerList.setSelection(position);
|
|
mDrawerList.setSelection(position);
|
|
@@ -418,6 +428,8 @@ public class MainActivity extends Activity {
|
|
}
|
|
}
|
|
|
|
|
|
public void injectFragment(Fragment fragment) {
|
|
public void injectFragment(Fragment fragment) {
|
|
|
|
+ this.mCloseWarning = false;
|
|
|
|
+
|
|
// set orientation fixed to portrait in home fragment
|
|
// set orientation fixed to portrait in home fragment
|
|
if (fragment instanceof UpNavigatibleFragment) {
|
|
if (fragment instanceof UpNavigatibleFragment) {
|
|
UpNavigatibleFragment upFrag = (UpNavigatibleFragment) fragment;
|
|
UpNavigatibleFragment upFrag = (UpNavigatibleFragment) fragment;
|
|
@@ -465,10 +477,20 @@ public class MainActivity extends Activity {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void onBackPressed() {
|
|
public void onBackPressed() {
|
|
- if (getFragmentManager().getBackStackEntryCount() == 1) {
|
|
|
|
- MainActivity.getInstance().getHostageService().stopListeners();
|
|
|
|
- MainActivity.getInstance().stopAndUnbind();
|
|
|
|
- finish();
|
|
|
|
|
|
+ if (mDisplayedFragment instanceof HomeFragment) {
|
|
|
|
+
|
|
|
|
+ if (this.mCloseWarning) {
|
|
|
|
+ MainActivity.getInstance().getHostageService().stopListeners();
|
|
|
|
+ MainActivity.getInstance().stopAndUnbind();
|
|
|
|
+ this.mCloseWarning = false;
|
|
|
|
+ finish();
|
|
|
|
+ } else {
|
|
|
|
+ Toast.makeText(this, "Press the back button again to close HosTaGe", Toast.LENGTH_SHORT).show();
|
|
|
|
+ this.mCloseWarning = true;
|
|
|
|
+ }
|
|
|
|
+ //}
|
|
|
|
+ } else if (MainMenuItem.hasClass(mDisplayedFragment.getClass())){
|
|
|
|
+ injectFragment(rootFragment);
|
|
} else {
|
|
} else {
|
|
super.onBackPressed();
|
|
super.onBackPressed();
|
|
this.mDisplayedFragment = getFragmentManager().findFragmentById(R.id.content_frame);
|
|
this.mDisplayedFragment = getFragmentManager().findFragmentById(R.id.content_frame);
|
|
@@ -566,6 +588,14 @@ public class MainActivity extends Activity {
|
|
return MainMenuItem.values()[value];
|
|
return MainMenuItem.values()[value];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public static boolean hasClass(Class<?> klass){
|
|
|
|
+ for(MainMenuItem m: MainMenuItem.values()){
|
|
|
|
+ if(m.getKlass().equals(klass)) return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
public int getValue() {
|
|
public int getValue() {
|
|
return value;
|
|
return value;
|
|
}
|
|
}
|