Browse Source

worked at HoneyService integration in services fragment

Daniel Lazar 10 years ago
parent
commit
817bd49a18

+ 6 - 0
res/drawable/services_circle_green.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<shape android:shape="oval" xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/holo_dark_green" />
+
+</shape>

+ 2 - 1
res/layout/services_list_item.xml

@@ -10,7 +10,8 @@
                     android:baselineAligned="false"
                     android:orientation="horizontal"
                     android:weightSum="1">
-        <View android:layout_width="25dp" android:layout_height="25dp"
+        <View android:id="@+id/services_circle"
+              android:layout_width="25dp" android:layout_height="25dp"
               android:layout_marginLeft="12dp"
               android:layout_marginTop="10dp"
               android:background="@drawable/services_circle" />

+ 32 - 4
src/de/tudarmstadt/informatik/hostage/ui2/adapter/ServicesListAdapter.java

@@ -1,6 +1,7 @@
 package de.tudarmstadt.informatik.hostage.ui2.adapter;
 
 import android.content.Context;
+import android.os.Build;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -15,6 +16,7 @@ import android.widget.ViewSwitcher;
 import java.util.List;
 
 import de.tudarmstadt.informatik.hostage.R;
+import de.tudarmstadt.informatik.hostage.ui2.activity.MainActivity;
 import de.tudarmstadt.informatik.hostage.ui2.model.ServicesListItem;
 
 /**
@@ -25,10 +27,15 @@ public class ServicesListAdapter extends ArrayAdapter<ServicesListItem> {
 			public TextView protocolName;
 			public TextView recordedAttacks;
 			public Switch activated;
+			public View circle;
 		}
 
 	private final Context context;
 	private final List<ServicesListItem> values;
+	int sdk = Build.VERSION.SDK_INT;
+
+	ViewHolder holder = null;
+	private ServicesListItem item;
 
 	public ServicesListAdapter(Context context, List<ServicesListItem> objects){
 		super(context, R.layout.services_list_item, objects);
@@ -43,9 +50,8 @@ public class ServicesListAdapter extends ArrayAdapter<ServicesListItem> {
 				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 
 		View rowView = convertView;
-		ViewHolder holder = null;
 
-		final ServicesListItem item = values.get(position);
+		item = values.get(position);
 
 		if(rowView == null){
 			rowView = inflater.inflate(R.layout.services_list_item, parent, false);
@@ -54,7 +60,8 @@ public class ServicesListAdapter extends ArrayAdapter<ServicesListItem> {
 			holder.protocolName = (TextView) rowView.findViewById(R.id.services_item_name);
 			holder.recordedAttacks = (TextView) rowView.findViewById(R.id.services_item_rec_attacks);
 			holder.activated = (Switch) rowView.findViewById(R.id.services_item_switch);
-
+			holder.circle = (View) rowView.findViewById(R.id.services_circle);
+			this.notifyDataSetChanged();
 			rowView.setTag(holder);
 		} else {
 			holder = (ViewHolder) rowView.getTag();
@@ -62,8 +69,29 @@ public class ServicesListAdapter extends ArrayAdapter<ServicesListItem> {
 
 		holder.protocolName.setText(item.protocol);
 
-
 		return rowView;
 	}
 
+	@Override
+	public void notifyDataSetChanged(){
+		if(MainActivity.getInstance().getHoneyService().isRunning(item.protocol)){
+			holder.activated.setChecked(true);
+			if(sdk < Build.VERSION_CODES.JELLY_BEAN){
+				holder.circle.setBackgroundDrawable(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_green));
+			}
+			else {
+				holder.circle.setBackground(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_green));
+			}
+		}
+		else {
+			holder.activated.setChecked(false);
+			if(sdk < Build.VERSION_CODES.JELLY_BEAN){
+				holder.circle.setBackgroundDrawable(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle));
+			}
+			else {
+				holder.circle.setBackground(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle));
+			}
+		}
+	}
+
 }

+ 14 - 5
src/de/tudarmstadt/informatik/hostage/ui2/fragment/ServicesFragment.java

@@ -84,7 +84,7 @@ public class ServicesFragment extends Fragment{
 			}
 		}
 
-		ServicesListAdapter adapter = new ServicesListAdapter(getActivity().getBaseContext(), protocolList);
+		final ServicesListAdapter adapter = new ServicesListAdapter(getActivity().getBaseContext(), protocolList);
 		list.setAdapter(adapter);
 
 		mServicesSwitchService = (Switch) rootView.findViewById(R.id.service_switch_connection);
@@ -111,20 +111,29 @@ public class ServicesFragment extends Fragment{
 						if(isChecked){
 							for(String protocol: protocols){
 								if(MainActivity.getInstance().getHoneyService().isRunning(protocol)){
-
+									adapter.notifyDataSetChanged();
 								}
 								else{
-								MainActivity.getInstance().getHoneyService().startListener(protocol);
+									MainActivity.getInstance().getHoneyService().startListener(protocol);
+									adapter.notifyDataSetChanged();
 								}
 							}
 							setStateActive();
 						} else {
-							MainActivity.getInstance().getHoneyService().stopListeners();
-							MainActivity.getInstance().stopAndUnbind();
+							for(String protocol: protocols){
+								if(MainActivity.getInstance().getHoneyService().isRunning(protocol)){
+									MainActivity.getInstance().getHoneyService().stopListener(protocol);
+									/*MainActivity.getInstance().stopAndUnbind();*/
+									adapter.notifyDataSetChanged();
+
+								}
+							}
+//							adapter.notifyDataSetChanged();
 							setStateNotActive();
 						}
 					}
 				}
+
 			};
 		}
 		mServicesSwitchService.setOnCheckedChangeListener(switchChangeListener);