Browse Source

- moved everything from UpNavigatible interface to an UpNavigatibleFragment. - Now clicking on notification will open and continue the app

Alexander Brakowski 11 years ago
parent
commit
9dc48d92cb

+ 10 - 4
src/de/tudarmstadt/informatik/hostage/HoneyService.java

@@ -279,7 +279,7 @@ public class HoneyService extends Service {
 				&& values[0].equals(getString(R.string.broadcast_started))) {
 			this.mProtocolActiveAttacks.put(values[1], true);
 
-			attackNotification();
+			//attackNotification();
 		}
 		// Inform UI of Preference Change
 		Intent intent = new Intent(getString(R.string.broadcast));
@@ -545,9 +545,15 @@ public class HoneyService extends Service {
 		}
 		TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
 		stackBuilder.addParentStack(MainActivity.class);
-		stackBuilder.addNextIntent(new Intent(this, MainActivity.class));
-		PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,
-				PendingIntent.FLAG_UPDATE_CURRENT);
+
+		Intent intent = MainActivity.getInstance().getIntent();
+		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
+				Intent.FLAG_ACTIVITY_SINGLE_TOP |
+				Intent.FLAG_ACTIVITY_NEW_TASK);
+		intent.setAction("SHOW_HOME");
+
+		stackBuilder.addNextIntent(intent);
+		PendingIntent resultPendingIntent = PendingIntent.getActivity(MainActivity.context, 0, intent, 0); //stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
 		builder.setContentIntent(resultPendingIntent);
 		builder.setOngoing(true);
 		NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

+ 25 - 11
src/de/tudarmstadt/informatik/hostage/ui2/activity/MainActivity.java

@@ -31,7 +31,6 @@ import android.widget.ListView;
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 
 import de.tudarmstadt.informatik.hostage.HoneyHandler;
@@ -47,10 +46,9 @@ import de.tudarmstadt.informatik.hostage.ui2.fragment.ServicesFragment;
 import de.tudarmstadt.informatik.hostage.ui2.fragment.SettingsFragment;
 import de.tudarmstadt.informatik.hostage.ui2.fragment.StatisticsFragment;
 import de.tudarmstadt.informatik.hostage.ui2.fragment.ThreatMapFragment;
-import de.tudarmstadt.informatik.hostage.ui2.fragment.interfaces.UpNavigatible;
+import de.tudarmstadt.informatik.hostage.ui2.fragment.UpNavigatibleFragment;
 import de.tudarmstadt.informatik.hostage.ui2.fragment.opengl.ThreatIndicatorGLRenderer;
 import de.tudarmstadt.informatik.hostage.ui2.model.DrawerListItem;
-import de.tudarmstadt.informatik.hostage.ui2.model.ServicesListItem;
 
 /**
  * @author Alexander Brakowski
@@ -293,6 +291,22 @@ public class MainActivity extends Activity {
 		}
 	}
 
+	@Override
+	protected void onResume(){
+		super.onResume();
+
+		String action = getIntent().getAction();
+
+		if(action != null && action.equals("SHOW_HOME")){
+			if(this.mDisplayedFragment != null && !this.mDisplayedFragment.getClass().equals(HomeFragment.class)){
+				getFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
+				displayView(MainMenuItem.HOME.getValue());
+
+				getIntent().setAction(null);
+			}
+		}
+	}
+
 	@Override
 	public boolean onOptionsItemSelected(MenuItem item) {
 		// toggle nav drawer on selecting action bar app icon/title
@@ -302,12 +316,12 @@ public class MainActivity extends Activity {
 
 		if(item.getItemId() == android.R.id.home){
 			if(!mDrawerToggle.isDrawerIndicatorEnabled()){
-				if(!(this.mDisplayedFragment instanceof UpNavigatible)) {
+				if(!(this.mDisplayedFragment instanceof UpNavigatibleFragment)) {
 					mDrawerToggle.setDrawerIndicatorEnabled(true);
 					return true;
 				}
 
-				UpNavigatible upNav = (UpNavigatible) this.mDisplayedFragment;
+				UpNavigatibleFragment upNav = (UpNavigatibleFragment) this.mDisplayedFragment;
 
 				getFragmentManager().popBackStackImmediate(upNav.getUpFragment().getName(), 0);
 				this.mDisplayedFragment = getFragmentManager().findFragmentById(R.id.content_frame);
@@ -324,7 +338,7 @@ public class MainActivity extends Activity {
 
 				if(frag != null) this.injectFragment(frag);*/
 
-				if(!(this.mDisplayedFragment instanceof UpNavigatible) || !((UpNavigatible) this.mDisplayedFragment).isUpNavigatible()){
+				if(!(this.mDisplayedFragment instanceof UpNavigatibleFragment) || !((UpNavigatibleFragment) this.mDisplayedFragment).isUpNavigatible()){
 					mDrawerToggle.setDrawerIndicatorEnabled(true);
 				} else {
 					mDrawerToggle.setDrawerIndicatorEnabled(false);
@@ -406,8 +420,8 @@ public class MainActivity extends Activity {
 
 	public void injectFragment(Fragment fragment){
 		// set orientation fixed to portrait in home fragment
-		if(fragment instanceof UpNavigatible){
-			UpNavigatible upFrag = (UpNavigatible) fragment;
+		if(fragment instanceof UpNavigatibleFragment){
+			UpNavigatibleFragment upFrag = (UpNavigatibleFragment) fragment;
 			if(upFrag.getUpFragment() == null){
 				upFrag.setUpFragment(this.mDisplayedFragment.getClass());
 			}
@@ -420,9 +434,9 @@ public class MainActivity extends Activity {
 
 		FragmentManager fragmentManager = getFragmentManager();
 		FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
-		fragmentTransaction.replace(R.id.content_frame, fragment, fragment.getClass().getName());
+		fragmentTransaction.replace(R.id.content_frame, fragment, null);
 
-		fragmentTransaction.addToBackStack(fragment.getClass().getName());
+		fragmentTransaction.addToBackStack(null);
 
 		fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
 		fragmentTransaction.commit();
@@ -460,7 +474,7 @@ public class MainActivity extends Activity {
 			this.mDisplayedFragment = getFragmentManager().findFragmentById(R.id.content_frame);
 			configureFragment();
 
-			if(!(this.mDisplayedFragment instanceof UpNavigatible) || !((UpNavigatible) this.mDisplayedFragment).isUpNavigatible()){
+			if(!(this.mDisplayedFragment instanceof UpNavigatibleFragment) || !((UpNavigatibleFragment) this.mDisplayedFragment).isUpNavigatible()){
 				mDrawerToggle.setDrawerIndicatorEnabled(true);
 			} else {
 				mDrawerToggle.setDrawerIndicatorEnabled(false);

+ 0 - 3
src/de/tudarmstadt/informatik/hostage/ui2/fragment/PreferenceHostageFrament.java

@@ -5,13 +5,10 @@ import android.os.Bundle;
 import android.preference.EditTextPreference;
 import android.preference.Preference;
 import android.preference.PreferenceFragment;
-import android.preference.PreferenceScreen;
 
 import java.util.HashMap;
 
 import de.tudarmstadt.informatik.hostage.R;
-import de.tudarmstadt.informatik.hostage.ui2.activity.MainActivity;
-import de.tudarmstadt.informatik.hostage.ui2.fragment.interfaces.UpNavigatible;
 
 /**
  * @author Alexander Brakowski

+ 1 - 30
src/de/tudarmstadt/informatik/hostage/ui2/fragment/RecordDetailFragment.java

@@ -17,12 +17,11 @@ import java.util.Date;
 import de.tudarmstadt.informatik.hostage.R;
 import de.tudarmstadt.informatik.hostage.logging.Record;
 import de.tudarmstadt.informatik.hostage.logging.UglyDbHelper;
-import de.tudarmstadt.informatik.hostage.ui2.fragment.interfaces.UpNavigatible;
 
 /**
  * Created by Julien on 02.03.14.
  */
-public class RecordDetailFragment extends Fragment  implements UpNavigatible {
+public class RecordDetailFragment extends UpNavigatibleFragment {
     private class Location{
         private double longitude;
         private double latitude;
@@ -155,32 +154,4 @@ public class RecordDetailFragment extends Fragment  implements UpNavigatible {
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         super.onCreateOptionsMenu(menu, inflater);
     }
-
-
-
-    /*
-    NAVIGATION
-    */
-    private Class<?> upFragment;
-    private boolean isUpNavigatible = false;
-
-    @Override
-    public Class<?> getUpFragment() {
-        return upFragment;
-    }
-
-    @Override
-    public void setUpFragment( Class<?> upFragment) {
-        this.upFragment = upFragment;
-    }
-
-    @Override
-    public boolean isUpNavigatible() {
-        return isUpNavigatible;
-    }
-
-    @Override
-    public void setUpNavigatible(boolean isUpNavigatible) {
-        this.isUpNavigatible = isUpNavigatible;
-    }
 }

+ 1 - 26
src/de/tudarmstadt/informatik/hostage/ui2/fragment/RecordOverviewFragment.java

@@ -37,7 +37,6 @@ import de.tudarmstadt.informatik.hostage.ui2.activity.MainActivity;
 import de.tudarmstadt.informatik.hostage.ui2.adapter.RecordListAdapter;
 import de.tudarmstadt.informatik.hostage.ui2.dialog.ChecklistDialog;
 import de.tudarmstadt.informatik.hostage.ui2.dialog.DateTimeDialogFragment;
-import de.tudarmstadt.informatik.hostage.ui2.fragment.interfaces.UpNavigatible;
 import de.tudarmstadt.informatik.hostage.ui2.model.ExpandableListItem;
 import de.tudarmstadt.informatik.hostage.ui2.popup.AbstractPopup;
 import de.tudarmstadt.informatik.hostage.ui2.popup.AbstractPopupItem;
@@ -45,8 +44,7 @@ import de.tudarmstadt.informatik.hostage.ui2.popup.SimplePopupItem;
 import de.tudarmstadt.informatik.hostage.ui2.popup.SimplePopupTable;
 import de.tudarmstadt.informatik.hostage.ui2.popup.SplitPopupItem;
 
-public class RecordOverviewFragment extends Fragment implements ChecklistDialog.ChecklistDialogListener, DateTimeDialogFragment.DateTimeDialogFragmentListener,
-		UpNavigatible {
+public class RecordOverviewFragment extends UpNavigatibleFragment implements ChecklistDialog.ChecklistDialogListener, DateTimeDialogFragment.DateTimeDialogFragmentListener {
 
 	static final String FILTER_MENU_TITLE_BSSID = "BSSID";
 	static final String FILTER_MENU_TITLE_ESSID = "ESSID";
@@ -829,27 +827,4 @@ public class RecordOverviewFragment extends Fragment implements ChecklistDialog.
         }
 
     }
-
-	private Class<?> upFragment;
-	private boolean isUpNavigatible = false;
-
-	@Override
-	public Class<?> getUpFragment() {
-		return upFragment;
-	}
-
-	@Override
-	public void setUpFragment( Class<?> upFragment) {
-		this.upFragment = upFragment;
-	}
-
-	@Override
-	public boolean isUpNavigatible() {
-		return isUpNavigatible;
-	}
-
-	@Override
-	public void setUpNavigatible(boolean isUpNavigatible) {
-		this.isUpNavigatible = isUpNavigatible;
-	}
 }

+ 1 - 24
src/de/tudarmstadt/informatik/hostage/ui2/fragment/SettingsFragment.java

@@ -10,13 +10,12 @@ import android.widget.TextView;
 
 import de.tudarmstadt.informatik.hostage.R;
 import de.tudarmstadt.informatik.hostage.ui2.activity.MainActivity;
-import de.tudarmstadt.informatik.hostage.ui2.fragment.interfaces.UpNavigatible;
 
 /**
  * @author Alexander Brakowski
  * @created 24.02.14 23:37
  */
-public class SettingsFragment extends Fragment implements UpNavigatible {
+public class SettingsFragment extends UpNavigatibleFragment {
 	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
 		super.onCreateView(inflater, container, savedInstanceState);
 		getActivity().setTitle(getResources().getString(R.string.drawer_settings));
@@ -50,26 +49,4 @@ public class SettingsFragment extends Fragment implements UpNavigatible {
 		FragmentManager manager = this.getFragmentManager();
 		manager.beginTransaction().replace(R.id.settings_fragment_container, new PreferenceHostageFrament()).commit();
 	}
-
-	private Class<?> upFrag;
-	private boolean isUpNav = false;
-	@Override
-	public Class<?> getUpFragment() {
-		return upFrag;
-	}
-
-	@Override
-	public void setUpFragment(Class<?> upFragment) {
-		this.upFrag = upFragment;
-	}
-
-	@Override
-	public boolean isUpNavigatible() {
-		return isUpNav;
-	}
-
-	@Override
-	public void setUpNavigatible(boolean isUpNavigatible) {
-		isUpNav = isUpNavigatible;
-	}
 }

+ 28 - 0
src/de/tudarmstadt/informatik/hostage/ui2/fragment/UpNavigatibleFragment.java

@@ -0,0 +1,28 @@
+package de.tudarmstadt.informatik.hostage.ui2.fragment;
+
+import android.app.Fragment;
+
+/**
+ * @author Alexander Brakowski
+ * @created 12.03.14 16:20
+ */
+public abstract class UpNavigatibleFragment extends Fragment {
+	private Class<?> mUpFragment;
+	private boolean mIsUpNavigatible = false;
+
+	public Class<?> getUpFragment(){
+		return mUpFragment;
+	}
+
+	public void setUpFragment(Class<?> upFragment){
+		this.mUpFragment = upFragment;
+	}
+
+	public boolean isUpNavigatible(){
+		return mIsUpNavigatible;
+	}
+
+	public void setUpNavigatible(boolean isUpNavigatible){
+		this.mIsUpNavigatible = isUpNavigatible;
+	}
+}

+ 0 - 14
src/de/tudarmstadt/informatik/hostage/ui2/fragment/interfaces/UpNavigatible.java

@@ -1,14 +0,0 @@
-package de.tudarmstadt.informatik.hostage.ui2.fragment.interfaces;
-
-import android.app.Fragment;
-
-/**
- * @author Alexander Brakowski
- * @created 12.03.14 16:20
- */
-public interface UpNavigatible {
-	public Class<?> getUpFragment();
-	public void setUpFragment(Class<?> upFragment);
-	public boolean isUpNavigatible();
-	public void setUpNavigatible(boolean isUpNavigatible);
-}