Browse Source

Merge branch 'master' of https://git.tk.informatik.tu-darmstadt.de/scm-ssi-student-hostagev2

Fabio Arnold 10 years ago
parent
commit
709c367ee9

+ 16 - 2
res/layout/expandable_section_header.xml

@@ -3,9 +3,10 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
-    android:orientation="vertical"
+    android:orientation="horizontal"
     android:padding="8dp"
-    android:background="#ffffff">
+    android:background="#ffffff"
+    android:weightSum="1">
 
 
     <TextView
@@ -14,6 +15,19 @@
         android:layout_height="wrap_content"
         android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
         android:textSize="17dp"
+        android:layout_weight="0.4"
         android:textColor="#505c6d" />
 
+    <TextView
+        android:id="@+id/sectionHeaderValue"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
+        android:textSize="15dp"
+        android:gravity="right"
+        android:textColor="#505c6d"
+        android:layout_weight="0.6"
+        />
+
+
 </LinearLayout>

+ 29 - 7
src/de/tudarmstadt/informatik/hostage/dao/ProfileManager.java

@@ -11,10 +11,13 @@ import java.io.ObjectOutputStream;
 import java.io.Serializable;
 import java.io.StreamCorruptedException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Random;
 
 import de.tudarmstadt.informatik.hostage.R;
 import de.tudarmstadt.informatik.hostage.model.Profile;
@@ -129,14 +132,18 @@ public class ProfileManager {
 	}
 
 	public void randomizeProtocols(Profile profile){
-		for(String protocol: MainActivity.getContext().getResources().getStringArray(R.array.protocols)){
-			double rand = Math.random();
+		LinkedList<String> protocols = new LinkedList<String>(Arrays.asList(MainActivity.getContext().getResources().getStringArray(R.array.protocols)));
+		profile.mActiveProtocols.clear();
 
-			if(rand > 0.4){
-				profile.mActiveProtocols.put(protocol, true);
-			} else {
-				profile.mActiveProtocols.put(protocol, false);
-			}
+		Random rand = new Random();
+		int numberOfProtocolsToActivate = rand.nextInt(protocols.size()) + 1;
+
+		while(numberOfProtocolsToActivate-- > 0){
+			int randomIndex = rand.nextInt(protocols.size());
+			String protocol = protocols.get(randomIndex);
+
+			profile.mActiveProtocols.put(protocol, true);
+			protocols.remove(protocol);
 		}
 
 		persistData();
@@ -194,7 +201,14 @@ public class ProfileManager {
 
 	public void deleteProfile(Profile profile){
 		if(this.holder.mProfiles.containsKey(profile.mId)){
+			Profile p = getProfile(profile.mId);
 			this.holder.mProfiles.remove(profile.mId);
+
+			if(p.mActivated || this.mCurrentActivatedProfile.mId == p.mId){
+				mCurrentActivatedProfile = mRandomProfile;
+				mRandomProfile.mActivated = true;
+			}
+
 			this.persistData();
 			//this.dbh.deleteProfile(profile.mId);
 
@@ -224,6 +238,14 @@ public class ProfileManager {
 		persistData();
 	}
 
+	public boolean isRandomActive(){
+		return this.mCurrentActivatedProfile.equals(this.mRandomProfile);
+	}
+
+	public Profile getRandomProfile(){
+		return this.mRandomProfile;
+	}
+
 	public Profile getCurrentActivatedProfile(){
 		return mCurrentActivatedProfile;
 	}

+ 8 - 3
src/de/tudarmstadt/informatik/hostage/ui2/adapter/RecordListAdapter.java

@@ -1,12 +1,13 @@
 package de.tudarmstadt.informatik.hostage.ui2.adapter;
 
+import android.content.Context;
+import android.view.View;
+import android.widget.TextView;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
-import android.content.Context;
-import android.view.View;
-import android.widget.TextView;
 import de.tudarmstadt.informatik.hostage.R;
 import de.tudarmstadt.informatik.hostage.ui2.model.ExpandableListItem;
 
@@ -37,8 +38,12 @@ public class RecordListAdapter extends ExpandableListAdapter {
     @Override
     public void configureSectionHeaderView(View sectionHeader, int section) {
         int headerLabelID = R.id.sectionHeaderTitle;
+        int valueLabelID = R.id.sectionHeaderValue;
         TextView tView = (TextView) sectionHeader.findViewById(headerLabelID);
+        TextView vView = (TextView) sectionHeader.findViewById(valueLabelID);
+        int value = this.getChildrenCount(section);
         tView.setText(this._sectionHeader.get(section));
+        vView.setText("" + value);
     }
 
     @Override

+ 8 - 2
src/de/tudarmstadt/informatik/hostage/ui2/fragment/HomeFragment.java

@@ -279,7 +279,13 @@ public class HomeFragment extends Fragment {
 								    }
 							    }
 						    } else {
-							    for(String protocol: ProfileManager.getInstance().getCurrentActivatedProfile().getActiveProtocols()){
+							    ProfileManager profileManager = ProfileManager.getInstance();
+
+							    if(profileManager.isRandomActive()){
+								    profileManager.randomizeProtocols(profileManager.getRandomProfile());
+							    }
+
+							    for(String protocol: profileManager.getCurrentActivatedProfile().getActiveProtocols()){
 								    if(!MainActivity.getInstance().getHoneyService().isRunning(protocol)) {
 									    MainActivity.getInstance().getHoneyService().startListener(protocol);
 									    protocolActivated = true;
@@ -304,7 +310,7 @@ public class HomeFragment extends Fragment {
 							    setStateNotActive();
 						    }
 					    } else {
-						    if(MainActivity.getInstance().getHoneyService() != null && MainActivity.getInstance().isServiceRunning()){
+						    if(MainActivity.getInstance().getHoneyService() != null){
 							    MainActivity.getInstance().getHoneyService().stopListeners();
 							    MainActivity.getInstance().stopAndUnbind();
 						    }

+ 2 - 0
src/de/tudarmstadt/informatik/hostage/ui2/fragment/RecordOverviewFragment.java

@@ -303,6 +303,8 @@ public class RecordOverviewFragment extends Fragment implements ChecklistDialog.
                 sectionData.put(groupID, items);
                 groupTitle.add(groupID);
             }
+
+
 			items.add(item);
 		}