Fabio Arnold 9 years ago
parent
commit
d7a63e49c6

+ 9 - 0
res/layout/fragment_record_list.xml

@@ -64,6 +64,15 @@
             android:layout_alignParentTop="true"
             android:layout_toLeftOf="@+id/GroupButton"/>
 
+        <ImageButton
+            style="@android:style/Widget.DeviceDefault.ActionButton.Overflow"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/DeleteButton"
+            android:src="@drawable/ic_action_discard"
+            android:layout_alignParentTop="true"
+            android:layout_toLeftOf="@+id/FilterButton"/>
+
         <ImageButton
             style="@android:style/Widget.DeviceDefault.ActionButton.Overflow"
             android:layout_width="wrap_content"

+ 6 - 3
src/de/tudarmstadt/informatik/hostage/persistence/HostageDBOpenHelper.java

@@ -1307,11 +1307,14 @@ public class HostageDBOpenHelper extends SQLiteOpenHelper {
      */
     public synchronized void deleteAttacksByFilter(LogFilter filter){
         String selectQuery = this.selectionQueryFromFilter(filter, "" + AttackEntry.COLUMN_NAME_ATTACK_ID);
-        String deleteQuery = selectQuery.replace("SELECT ","DELETE FROM " +PacketEntry.TABLE_NAME + " NATURAL JOIN " + AttackEntry.TABLE_NAME + "WHERE "+ AttackEntry.COLUMN_NAME_ATTACK_ID+" in ( ");
-        deleteQuery = deleteQuery + " )";
+        String deletePacketQuery = "DELETE  FROM " +PacketEntry.TABLE_NAME + " WHERE "+ PacketEntry.TABLE_NAME + "."+ PacketEntry.COLUMN_NAME_ATTACK_ID+" in ( ";
+        deletePacketQuery = deletePacketQuery + selectQuery + " )";
+        String deleteAttacksQuery = "DELETE  FROM " +AttackEntry.TABLE_NAME + " WHERE "+ AttackEntry.TABLE_NAME + "."+ AttackEntry.COLUMN_NAME_ATTACK_ID+" in ( ";
+        deleteAttacksQuery =deleteAttacksQuery + selectQuery + " )";
 
         SQLiteDatabase db = this.getReadableDatabase();
-        db.execSQL(deleteQuery);
+        db.execSQL(deletePacketQuery);
+        db.execSQL(deleteAttacksQuery);
         db.close();
     }
 

+ 38 - 1
src/de/tudarmstadt/informatik/hostage/ui/fragment/RecordOverviewFragment.java

@@ -4,12 +4,15 @@ import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.FragmentManager;
+import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
+import android.support.v4.content.LocalBroadcastManager;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -36,6 +39,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Random;
 
+import de.tudarmstadt.informatik.hostage.Handler;
 import de.tudarmstadt.informatik.hostage.Hostage;
 import de.tudarmstadt.informatik.hostage.R;
 import de.tudarmstadt.informatik.hostage.logging.AttackRecord;
@@ -58,6 +62,7 @@ import de.tudarmstadt.informatik.hostage.ui.dialog.DateTimeDialogFragment;
 import de.tudarmstadt.informatik.hostage.ui.model.ExpandableListItem;
 import de.tudarmstadt.informatik.hostage.ui.model.LogFilter;
 import de.tudarmstadt.informatik.hostage.ui.model.LogFilter.SortType;
+import de.tudarmstadt.informatik.hostage.ui.model.ServicesListItem;
 import de.tudarmstadt.informatik.hostage.ui.popup.AbstractPopup;
 import de.tudarmstadt.informatik.hostage.ui.popup.AbstractPopupItem;
 import de.tudarmstadt.informatik.hostage.ui.popup.SimplePopupItem;
@@ -109,6 +114,10 @@ public class RecordOverviewFragment extends UpNavigatibleFragment implements Che
 
     Thread loader;
 
+    private boolean mReceiverRegistered = false;
+    private BroadcastReceiver mReceiver;
+
+
 
     /* DATE CONVERSION STUFF*/
     static final DateFormat localisedDateFormatter = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
@@ -188,6 +197,14 @@ public class RecordOverviewFragment extends UpNavigatibleFragment implements Che
 
         this.initialiseListView();
 
+        ImageButton deleteButton = (ImageButton) rootView.findViewById(R.id.DeleteButton);
+        deleteButton.setOnClickListener(new View.OnClickListener() {
+            public void onClick(View v) {
+                RecordOverviewFragment.this.openDeleteFilteredAttacksDialog();
+            }
+        });
+        deleteButton.setVisibility(this.showFilterButton? View.VISIBLE : View.INVISIBLE);
+
         ImageButton filterButton = (ImageButton) rootView.findViewById(R.id.FilterButton);
         filterButton.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
@@ -196,6 +213,7 @@ public class RecordOverviewFragment extends UpNavigatibleFragment implements Che
         });
         filterButton.setVisibility(this.showFilterButton? View.VISIBLE : View.INVISIBLE);
 
+
         ImageButton sortButton = (ImageButton) rootView.findViewById(R.id.SortButton);
         sortButton.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
@@ -212,6 +230,8 @@ public class RecordOverviewFragment extends UpNavigatibleFragment implements Che
             }
         });
 
+        this.registerBroadcastReceiver();
+
 		return rootView;
 	 }
 
@@ -346,7 +366,6 @@ public class RecordOverviewFragment extends UpNavigatibleFragment implements Che
 	}
 
 
-
     @Override
     public void onStart() {
         super.onStart();
@@ -595,6 +614,24 @@ public class RecordOverviewFragment extends UpNavigatibleFragment implements Che
         }
     }
 
+    /**
+     * register a broadcast receiver if not already registered
+     * and also update the number of attacks per protocol
+     */
+    private void registerBroadcastReceiver() {
+        if (!mReceiverRegistered) {
+            mReceiver = new BroadcastReceiver() {
+                @Override
+                public void onReceive(Context context, Intent intent) {
+                    RecordOverviewFragment.this.actualiseListViewInBackground();
+                }
+            };
+
+            LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mReceiver, new IntentFilter(getString(R.string.broadcast)));
+            this.mReceiverRegistered = true;
+        }
+    }
+
     /**
      * Actualises the list in a background thread
      */