From 28cfe6ef862de1e2aab450df2cc77437a8633f98 Mon Sep 17 00:00:00 2001
From: mdtrooper <tres.14159@gmail.com>
Date: Tue, 27 Sep 2011 16:50:19 +0000
Subject: [PATCH] 2011-09-27  Miguel de Dios  <miguel.dedios@artica.es>

	* AndroidManifest.xml: change for avoid the crash when rotate mobile.

	* src/pandroid_event_viewer/pandorafms/PopupValidationEvent.java,
	src/pandroid_event_viewer/pandorafms/AlarmReceiver.java,
	src/pandroid_event_viewer/pandorafms/PandroidEventviewerActivity.java,
	src/pandroid_event_viewer/pandorafms/Main.java,
	src/pandroid_event_viewer/pandorafms/PandroidEventviewerService.java,
	src/pandroid_event_viewer/pandorafms/Core.java,
	src/pandroid_event_viewer/pandorafms/EventList.java: wip and fixes, now it
	is the first version funcionality of Pandora Event Viewer....I hope.

	* res/values/arrays.xml, res/values/strings.xml, res/values-en/arrays.xml,
	res/values-en/strings.xml, res/values-es/arrays.xml,
	res/values-es/strings.xml: added more strings and array values.

	* res/layout/main.xml, res/layout/item_list_event_extended.xml,
	res/layout/popup_validation_event.xml: change and added layouts.



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@5015 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
---
 .../pandroid_event_viewer/AndroidManifest.xml |  44 +++++-
 extras/pandroid_event_viewer/ChangeLog        |  20 +++
 .../res/layout/item_list_event_extended.xml   |  10 ++
 .../pandroid_event_viewer/res/layout/main.xml |  44 ++++++
 .../res/layout/popup_validation_event.xml     |  44 ++++++
 .../res/values-en/arrays.xml                  |  30 ++++
 .../res/values-en/strings.xml                 |   8 +
 .../res/values-es/arrays.xml                  |  30 ++++
 .../res/values-es/strings.xml                 |   8 +
 .../res/values/arrays.xml                     |  30 ++++
 .../res/values/strings.xml                    |   8 +
 .../pandorafms/AlarmReceiver.java             |  10 +-
 .../pandorafms/Core.java                      |  67 ++++++++
 .../pandorafms/EventList.java                 |  50 +++++-
 .../pandorafms/Main.java                      |  73 +++++++--
 .../PandroidEventviewerActivity.java          |  23 ++-
 .../PandroidEventviewerService.java           |   2 +
 .../pandorafms/PopupValidationEvent.java      | 149 ++++++++++++++++++
 18 files changed, 616 insertions(+), 34 deletions(-)
 create mode 100644 extras/pandroid_event_viewer/res/layout/popup_validation_event.xml

diff --git a/extras/pandroid_event_viewer/AndroidManifest.xml b/extras/pandroid_event_viewer/AndroidManifest.xml
index 50bf81ecd5..c109d409f8 100644
--- a/extras/pandroid_event_viewer/AndroidManifest.xml
+++ b/extras/pandroid_event_viewer/AndroidManifest.xml
@@ -21,19 +21,49 @@
     <uses-sdk android:minSdkVersion="8" />
     <uses-permission android:name="android.permission.INTERNET" />
 
+	<!--
+	android:configChanges="orientation|keyboardHidden"
+	
+	This is crazy, I want only block the screen rotation, but the android need
+	two things.
+	-->
+
     <application android:icon="@drawable/pandorafms_logo"
     	android:label="Pandroid Event viewer">
-        <activity android:name=".PandroidEventviewerActivity"
-                  android:label="Pandroid Event viewer"
-                   android:theme="@android:style/Theme.NoTitleBar">
-            <intent-filter>
+        <activity
+        	android:name=".PandroidEventviewerActivity"
+			android:label="Pandroid Event viewer"
+			android:theme="@android:style/Theme.NoTitleBar"
+			android:configChanges="orientation|keyboardHidden"
+		>
+			<intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-        <activity android:name=".Main"></activity>
-        <activity android:name=".EventList"></activity>
-        <activity android:name=".Options" android:label="@string/option_title_str"></activity>
+        <activity
+        	android:name=".Main"
+        	android:configChanges="orientation|keyboardHidden"
+        >
+        </activity>
+        <activity
+        	android:name=".EventList"
+        	android:configChanges="orientation|keyboardHidden"
+        >
+        </activity>
+        <activity
+        	android:name=".Options"
+        	android:label="@string/option_title_str"
+        	android:configChanges="orientation|keyboardHidden"
+        >
+        </activity>
+        <activity
+        	android:name=".PopupValidationEvent"
+        	android:label="@string/validate_event_button_str"
+        	android:theme="@android:style/Theme.Dialog"
+        	android:configChanges="orientation|keyboardHidden"
+        >
+        </activity>
         
         <service android:name=".PandroidEventviewerService"></service>
         
diff --git a/extras/pandroid_event_viewer/ChangeLog b/extras/pandroid_event_viewer/ChangeLog
index 010c477b08..df2d2160f3 100644
--- a/extras/pandroid_event_viewer/ChangeLog
+++ b/extras/pandroid_event_viewer/ChangeLog
@@ -1,3 +1,23 @@
+2011-09-27  Miguel de Dios  <miguel.dedios@artica.es>
+	
+	* AndroidManifest.xml: change for avoid the crash when rotate mobile.
+	
+	* src/pandroid_event_viewer/pandorafms/PopupValidationEvent.java,
+	src/pandroid_event_viewer/pandorafms/AlarmReceiver.java,
+	src/pandroid_event_viewer/pandorafms/PandroidEventviewerActivity.java,
+	src/pandroid_event_viewer/pandorafms/Main.java,
+	src/pandroid_event_viewer/pandorafms/PandroidEventviewerService.java,
+	src/pandroid_event_viewer/pandorafms/Core.java,
+	src/pandroid_event_viewer/pandorafms/EventList.java: wip and fixes, now it
+	is the first version funcionality of Pandora Event Viewer....I hope.
+	
+	* res/values/arrays.xml, res/values/strings.xml, res/values-en/arrays.xml,
+	res/values-en/strings.xml, res/values-es/arrays.xml,
+	res/values-es/strings.xml: added more strings and array values.
+	
+	* res/layout/main.xml, res/layout/item_list_event_extended.xml,
+	res/layout/popup_validation_event.xml: change and added layouts.
+
 2011-09-25  Miguel de Dios  <miguel.dedios@artica.es>
 	
 	* src/pandroid_event_viewer/pandorafms/PopupValidationEvent.java: added
diff --git a/extras/pandroid_event_viewer/res/layout/item_list_event_extended.xml b/extras/pandroid_event_viewer/res/layout/item_list_event_extended.xml
index 649082a43f..893cc8eeb5 100644
--- a/extras/pandroid_event_viewer/res/layout/item_list_event_extended.xml
+++ b/extras/pandroid_event_viewer/res/layout/item_list_event_extended.xml
@@ -154,4 +154,14 @@
 			android:text="- Empty -" 
 		/>
 	</TableRow>
+	<TableRow
+		android:gravity="right"
+	>
+			<Button
+				android:id="@+id/validate_button_extended"
+				android:text="@string/validate_event_button_str"
+				android:layout_width="wrap_content"
+				android:layout_height="wrap_content"
+			/>
+	</TableRow>
 </TableLayout>
\ No newline at end of file
diff --git a/extras/pandroid_event_viewer/res/layout/main.xml b/extras/pandroid_event_viewer/res/layout/main.xml
index 708a9d0736..c174433884 100644
--- a/extras/pandroid_event_viewer/res/layout/main.xml
+++ b/extras/pandroid_event_viewer/res/layout/main.xml
@@ -80,7 +80,50 @@
 					android:layout_height="wrap_content"
 				/>
 	    	</TableRow>
+	    	<TableRow>
+				<TextView
+					android:text="@string/status_label_str"
+					android:layout_width="wrap_content"
+					android:layout_height="wrap_content"
+					android:paddingRight="5dip"
+				/>
+				<Spinner
+					android:id="@+id/status_combo"
+					android:layout_width="wrap_content"
+					android:layout_height="wrap_content"
+				/>
+	    	</TableRow>
+	    	<TableRow>
+				<TextView
+					android:text="@string/event_search_label_str"
+					android:layout_width="wrap_content"
+					android:layout_height="wrap_content"
+					android:paddingRight="5dip"
+				/>
+				<EditText
+					android:id="@+id/event_search_text"
+					android:layout_height="wrap_content"
+					android:singleLine="true"
+					android:editable="true"
+					android:layout_width="0dp"
+					android:layout_weight="1"
+				/>
+	    	</TableRow>
+	    	<TableRow>
+				<TextView
+					android:text="@string/max_time_old_event_str"
+					android:layout_width="wrap_content"
+					android:layout_height="wrap_content"
+					android:paddingRight="5dip"
+				/>
+				<Spinner
+					android:id="@+id/max_time_old_event_combo"
+					android:layout_width="wrap_content"
+					android:layout_height="wrap_content"
+				/>
+	    	</TableRow>
 	    </TableLayout>
+	    <!--
 	   	<TextView
 			android:text="@string/date_label_str"
 			android:layout_width="wrap_content"
@@ -98,6 +141,7 @@
 			android:layout_width="wrap_content"
 			android:layout_height="wrap_content"
 		/>
+		-->
 		<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 		    android:orientation="horizontal"
 		    android:layout_width="fill_parent"
diff --git a/extras/pandroid_event_viewer/res/layout/popup_validation_event.xml b/extras/pandroid_event_viewer/res/layout/popup_validation_event.xml
new file mode 100644
index 0000000000..4eb1f0f835
--- /dev/null
+++ b/extras/pandroid_event_viewer/res/layout/popup_validation_event.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+// Pandora FMS - http://pandorafms.com
+// ==================================================
+// Copyright (c) 2005-2011 Artica Soluciones Tecnologicas
+// Please see http://pandorafms.org for full contribution list
+
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public License
+// as published by the Free Software Foundation; version 2
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details. 
+-->
+<LinearLayout
+	xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="300dp"
+    android:layout_height="fill_parent"
+>
+    <EditText
+    	android:id="@+id/comment"
+    	android:layout_height="wrap_content"
+    	android:layout_width="match_parent"
+    	android:inputType="textMultiLine"
+    	android:singleLine="false"
+    	android:lines="5"
+    />
+    <Button
+    	android:id="@+id/button_validate_event"
+    	android:layout_height="wrap_content"
+    	android:layout_width="match_parent"
+    	android:text="@string/validate_event_button_str"
+    />
+    <ProgressBar
+    	android:layout_height="wrap_content"
+    	android:layout_width="wrap_content"
+    	android:id="@+id/send_progress"
+    	android:layout_gravity="center_horizontal"
+    	android:visibility="gone"
+    />
+</LinearLayout>
\ No newline at end of file
diff --git a/extras/pandroid_event_viewer/res/values-en/arrays.xml b/extras/pandroid_event_viewer/res/values-en/arrays.xml
index e630bf073d..0cbeffc645 100644
--- a/extras/pandroid_event_viewer/res/values-en/arrays.xml
+++ b/extras/pandroid_event_viewer/res/values-en/arrays.xml
@@ -47,4 +47,34 @@
         <item>36 hours</item>
         <item>48 hours</item>
 	</string-array>
+	
+	<string-array name="event_status_values">
+		<!-- You must subtract -1 -->
+		<item>All event</item>
+		<item>Only new</item>
+		<item>Only validated</item>
+		<item>Only in process</item>
+		<item>Only not validated</item>
+	</string-array>
+	
+	<!-- Please change the code in the function convertMaxTimeOldEventValuesToTimestamp -->
+	<string-array name="max_time_old_event_values">
+		<item>30 minutes</item>
+		<item>1 hour</item>
+		<item>2 hours</item>
+		<item>3 hours</item>
+		<item>4 hours</item>
+		<item>5 hours</item>
+		<item>8 hours</item>
+		<item>10 hours</item>
+		<item>12 hours</item>
+		<item>1 day</item>
+		<item>2 days</item>
+		<item>3 days</item>
+		<item>4 days</item>
+		<item>5 days</item>
+		<item>1 week</item>
+		<item>2 weeks</item>
+		<item>1 month</item>
+	</string-array>
 </resources>
\ No newline at end of file
diff --git a/extras/pandroid_event_viewer/res/values-en/strings.xml b/extras/pandroid_event_viewer/res/values-en/strings.xml
index b1d4061158..81cafab179 100644
--- a/extras/pandroid_event_viewer/res/values-en/strings.xml
+++ b/extras/pandroid_event_viewer/res/values-en/strings.xml
@@ -53,6 +53,7 @@
     <string name="please_set_preferences_str">Please set the preferences as the API URL, user and password for your Pandora FMS.</string>
     <string name="filter_update_succesful_str">Update filter sucessful.</string>
     <string name="filter_update_fail_str">Update filter is failed.</string>
+    <string name="validate_event_button_str">Validate Event</string>
     
 	<string name="notification_criticity_0_str">There are %s events and all in Maintenance state.</string>
     <string name="notification_criticity_1_str">There are %s events and some are in Informational state.</string>
@@ -65,4 +66,11 @@
     <string name="loading_events_criticity_2_str">Loading the %s events and some are in Normal state.</string>
     <string name="loading_events_criticity_3_str">Loading the %s events and some are in Warning state.</string>
     <string name="loading_events_criticity_4_str">Loading the %s events and some are in Critical state.</string>
+    
+    <string name="successful_validate_event_str">The event validation is successful.</string>
+    <string name="fail_validate_event_str">The event validation is failed.</string>
+    
+    <string name="status_label_str">Status</string>
+    <string name="event_search_label_str">Event search</string>
+    <string name="max_time_old_event_str">Max time old event</string>
 </resources>
diff --git a/extras/pandroid_event_viewer/res/values-es/arrays.xml b/extras/pandroid_event_viewer/res/values-es/arrays.xml
index 195d76e5d4..7e091ae6a8 100644
--- a/extras/pandroid_event_viewer/res/values-es/arrays.xml
+++ b/extras/pandroid_event_viewer/res/values-es/arrays.xml
@@ -47,4 +47,34 @@
         <item>36 horas</item>
         <item>48 horas</item>
 	</string-array>
+	
+	<string-array name="event_status_values">
+		<!-- You must subtract -1 -->
+		<item>Todo los eventos</item>
+		<item>Solo los nuevos</item>
+		<item>Solo los validados</item>
+		<item>Solo los en proceso</item>
+		<item>Solo los no validados</item>
+	</string-array>
+	
+	<!-- Please change the code in the function convertMaxTimeOldEventValuesToTimestamp -->
+	<string-array name="max_time_old_event_values">
+		<item>30 minutos</item>
+		<item>1 hora</item>
+		<item>2 horas</item>
+		<item>3 horas</item>
+		<item>4 horas</item>
+		<item>5 horas</item>
+		<item>8 horas</item>
+		<item>10 horas</item>
+		<item>12 horas</item>
+		<item>1 día</item>
+		<item>2 días</item>
+		<item>3 días</item>
+		<item>4 días</item>
+		<item>5 días</item>
+		<item>1 semana</item>
+		<item>2 semanas</item>
+		<item>1 mes</item>
+	</string-array>
 </resources>
\ No newline at end of file
diff --git a/extras/pandroid_event_viewer/res/values-es/strings.xml b/extras/pandroid_event_viewer/res/values-es/strings.xml
index af49b0d662..1ecad13522 100644
--- a/extras/pandroid_event_viewer/res/values-es/strings.xml
+++ b/extras/pandroid_event_viewer/res/values-es/strings.xml
@@ -47,6 +47,7 @@
     <string name="empty_label_str">Lista vacia de eventos</string>
     <string name="refresh_time_label_str">Refresco scanner eventos</string>
     <string name="set_as_filter_watcher_button_str">Hacerlo filtro para scanner eventos</string>
+    <string name="validate_event_button_str">Validar Evento</string>
     
     <string name="config_update_succesful_str">Configuración guardada correctamente.</string>
     <string name="config_update_fail_str">Configuración no ha podido guardarse..</string>
@@ -65,4 +66,11 @@
     <string name="loading_events_criticity_2_str">Cargando los %s eventos y algunos son Normales.</string>
     <string name="loading_events_criticity_3_str">Cargando los %s eventos y algunos son Aviso.</string>
     <string name="loading_events_criticity_4_str">Cargando los %s eventos y algunos son Criticos.</string>
+    
+    <string name="successful_validate_event_str">Validación del evento correcta.</string>
+    <string name="fail_validate_event_str">Validación del evento incorrecta.</string>
+    
+    <string name="status_label_str">Estado</string>
+    <string name="event_search_label_str">Buscar evento</string>
+    <string name="max_time_old_event_str">Máx tiempo de antiguedad</string>
 </resources>
diff --git a/extras/pandroid_event_viewer/res/values/arrays.xml b/extras/pandroid_event_viewer/res/values/arrays.xml
index e630bf073d..0cbeffc645 100644
--- a/extras/pandroid_event_viewer/res/values/arrays.xml
+++ b/extras/pandroid_event_viewer/res/values/arrays.xml
@@ -47,4 +47,34 @@
         <item>36 hours</item>
         <item>48 hours</item>
 	</string-array>
+	
+	<string-array name="event_status_values">
+		<!-- You must subtract -1 -->
+		<item>All event</item>
+		<item>Only new</item>
+		<item>Only validated</item>
+		<item>Only in process</item>
+		<item>Only not validated</item>
+	</string-array>
+	
+	<!-- Please change the code in the function convertMaxTimeOldEventValuesToTimestamp -->
+	<string-array name="max_time_old_event_values">
+		<item>30 minutes</item>
+		<item>1 hour</item>
+		<item>2 hours</item>
+		<item>3 hours</item>
+		<item>4 hours</item>
+		<item>5 hours</item>
+		<item>8 hours</item>
+		<item>10 hours</item>
+		<item>12 hours</item>
+		<item>1 day</item>
+		<item>2 days</item>
+		<item>3 days</item>
+		<item>4 days</item>
+		<item>5 days</item>
+		<item>1 week</item>
+		<item>2 weeks</item>
+		<item>1 month</item>
+	</string-array>
 </resources>
\ No newline at end of file
diff --git a/extras/pandroid_event_viewer/res/values/strings.xml b/extras/pandroid_event_viewer/res/values/strings.xml
index 4a0f278cbc..d6798b1c0d 100644
--- a/extras/pandroid_event_viewer/res/values/strings.xml
+++ b/extras/pandroid_event_viewer/res/values/strings.xml
@@ -52,6 +52,7 @@
     <string name="empty_label_str">Empty list events</string>
     <string name="refresh_time_label_str">Refresh time watcher</string>
     <string name="set_as_filter_watcher_button_str">Set as filter for watcher</string>
+    <string name="validate_event_button_str">Validate Event</string>
     
 	<string name="config_update_succesful_str">Update configuration successful.</string>
     <string name="config_update_fail_str">Update configuration is failed.</string>
@@ -70,4 +71,11 @@
     <string name="loading_events_criticity_2_str">Loading the %s events and some are in Normal state.</string>
     <string name="loading_events_criticity_3_str">Loading the %s events and some are in Warning state.</string>
     <string name="loading_events_criticity_4_str">Loading the %s events and some are in Critical state.</string>
+    
+    <string name="successful_validate_event_str">The event validation is successful.</string>
+    <string name="fail_validate_event_str">The event validation is failed.</string>
+    
+    <string name="status_label_str">Status</string>
+    <string name="event_search_label_str">Event search</string>
+    <string name="max_time_old_event_str">Max time old event</string>
 </resources>
diff --git a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/AlarmReceiver.java b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/AlarmReceiver.java
index 4ee9174a65..8a8075baa5 100644
--- a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/AlarmReceiver.java
+++ b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/AlarmReceiver.java
@@ -20,8 +20,6 @@ import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
-import android.graphics.Color;
-import android.os.SystemClock;
 import android.util.Log;
 
 public class AlarmReceiver extends BroadcastReceiver {
@@ -34,7 +32,6 @@ public class AlarmReceiver extends BroadcastReceiver {
 
 	@Override
 	public void onReceive(Context context, Intent intent) {
-		// TODO Auto-generated method stub
 		Log.e("OnetimeAlarmReceiver", "onReceive");
 		
 		checkNewEvents(context);
@@ -124,6 +121,9 @@ public class AlarmReceiver extends BroadcastReceiver {
     	String filterAgentName = preferences.getString("filterAgentName", "");
     	int filterIDGroup = preferences.getInt("filterIDGroup", 0);
     	int filterSeverity = preferences.getInt("filterSeverity", -1);
+    	int filterStatus = preferences.getInt("filterStatus", -1);
+    	String filterEventSearch = preferences.getString("filterEventSearch", "");
+    	
     	
     	Calendar c = Calendar.getInstance();
     	long now = (c.getTimeInMillis() / 1000);
@@ -154,6 +154,10 @@ public class AlarmReceiver extends BroadcastReceiver {
     	return_var += "|";
     	return_var += ""; //The maximum timestamp
     	return_var += "|";
+    	return_var += filterStatus; //The status
+    	return_var += "|";
+    	return_var += filterEventSearch; //The free search in the text event description.
+    	return_var += "|";
     	return_var += Integer.toString(0); //The pagination of list events
     	return_var += "|";
     	return_var += Long.toString(0); //The offset of list events
diff --git a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/Core.java b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/Core.java
index 15ea99b054..07aa798c00 100644
--- a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/Core.java
+++ b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/Core.java
@@ -4,6 +4,7 @@ import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.util.Calendar;
 
 import android.content.Context;
 import android.content.Intent;
@@ -92,4 +93,70 @@ public class Core implements Parcelable{
     	
     	return sb.toString();
     }
+	
+	public long convertMaxTimeOldEventValuesToTimestamp(long timestamp, int arrayKey) {
+		long time = timestamp;
+		long return_var = 0;
+		
+		if (time == 0) {
+			Calendar c = Calendar.getInstance();
+			time = c.getTimeInMillis() / 1000;
+		}
+		
+		switch (arrayKey) {
+			case 0:
+				return_var = time - 30 * 60;
+				break;
+			case 1:
+				return_var = time - 60 * 60;
+				break;
+			case 2:
+				return_var = time - 2 * (60 * 60);
+				break;
+			case 3:
+				return_var = time - 3 * (60 * 60);
+				break;
+			case 4:
+				return_var = time - 4 * (60 * 60);
+				break;
+			case 5:
+				return_var = time - 5 * (60 * 60);
+				break;
+			case 6:
+				return_var = time - 8 * (60 * 60);
+				break;
+			case 7:
+				return_var = time - 10 * (60 * 60);
+				break;
+			case 8:
+				return_var = time - 12 * (60 * 60);
+				break;
+			case 9:
+				return_var = time - 24 * (60 * 60);
+				break;
+			case 10:
+				return_var = time - 2 * (24 * 60 * 60);
+				break;
+			case 11:
+				return_var = time - 3 * (24 * 60 * 60);
+				break;
+			case 12:
+				return_var = time - 4 * (24 * 60 * 60);
+				break;
+			case 13:
+				return_var = time - 5 * (24 * 60 * 60);
+				break;
+			case 14:
+				return_var = time - 7 * (24 * 60 * 60);
+				break;
+			case 15:
+				return_var = time - 2 * (7 * 24 * 60 * 60);
+				break;
+			case 16:
+				return_var = time - 30 * (24 * 60 * 60);
+				break;
+		}
+		
+		return return_var;
+	}
 }
diff --git a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/EventList.java b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/EventList.java
index a1033c5b34..d47810900f 100644
--- a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/EventList.java
+++ b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/EventList.java
@@ -12,6 +12,7 @@ import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.res.Configuration;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.Color;
@@ -22,6 +23,7 @@ import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 import android.widget.Button;
@@ -30,7 +32,6 @@ import android.widget.LinearLayout;
 import android.widget.ListView;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
-import android.widget.Toast;
 
 public class EventList extends ListActivity {
 	private ListView lv;
@@ -66,7 +67,7 @@ public class EventList extends ListActivity {
         
         lv = (ListView)findViewById(android.R.id.list);
         
-        la = new MyAdapter(getBaseContext(), object);
+        la = new MyAdapter(getBaseContext(), object, core);
         
         lv.setAdapter(la);
         
@@ -93,16 +94,30 @@ public class EventList extends ListActivity {
 				}
 			}
 		};
+		
+		registerReceiver(onBroadcast, new IntentFilter("eventlist.java"));
+    	
+    	this.toggleLoadingLayout();
+    	
+    	Log.e("EventList", "onCreate");
     }
     
     public void onResume() {
     	super.onResume();
+    	Log.e("EventList", "onResume");
+    	
     	
 		registerReceiver(onBroadcast, new IntentFilter("eventlist.java"));
     	
     	this.toggleLoadingLayout();
     }
     
+    public void onConfigurationChanged(Configuration newConfig) { 
+    	super.onConfigurationChanged(newConfig);
+    	
+    	Log.e("EventList", "onConfigurationChanged");
+    }
+    
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         MenuInflater inflater = getMenuInflater();
@@ -248,14 +263,16 @@ public class EventList extends ListActivity {
     {
 		private Context mContext;
 		public PandroidEventviewerActivity object;
+		public Core core;
 		
 		public boolean showLoadingEvents;
 		
-		public MyAdapter(Context c, PandroidEventviewerActivity object)
+		public MyAdapter(Context c, PandroidEventviewerActivity object, Core core)
 		{
 			mContext = c;
 			
 			this.object = object;
+			this.core = core;
 			
 			showLoadingEvents = false;
 		}
@@ -408,6 +425,16 @@ public class EventList extends ListActivity {
 						setImageType(viewEventExtended, item.criticity_image, R.id.img_severity);
 					}
 					
+					
+			        final Button button;
+			        button = (Button)viewEventExtended.findViewById(R.id.validate_button_extended);
+			        OnClickListenerButtonValidate clickListener = new OnClickListenerButtonValidate();
+			        clickListener.id_event = item.id_event;
+			        //clickListener.object = this.object;
+			        clickListener.core = this.core;
+			        button.setOnClickListener(clickListener);
+			        
+					
 					LinearLayout itemLinearLayout = (LinearLayout)view.findViewById(R.id.item_linear_layout);
 					itemLinearLayout.addView(viewEventExtended);
 				}
@@ -416,6 +443,23 @@ public class EventList extends ListActivity {
     		return view;
 		}
 		
+		public class OnClickListenerButtonValidate implements OnClickListener {
+			public int id_event;
+			//public PandroidEventviewerActivity object;
+			public Core core;
+			
+			@Override
+			public void onClick(View v) {
+				Intent i = new Intent(getApplicationContext(), PopupValidationEvent.class);
+            	i.putExtra("id_event", id_event);
+                //i.putExtra("object", this.object);
+                i.putExtra("core", this.core);
+            	
+            	startActivity(i);
+			}
+			
+		}
+		
     }
     
     
diff --git a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/Main.java b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/Main.java
index b05d153234..9464912d47 100644
--- a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/Main.java
+++ b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/Main.java
@@ -1,8 +1,6 @@
 package pandroid_event_viewer.pandorafms;
 
 import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -17,11 +15,7 @@ import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.http.message.BasicNameValuePair;
 
 import android.app.Activity;
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
 import android.app.TabActivity;
-import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.AsyncTask;
@@ -33,11 +27,9 @@ import android.view.MenuItem;
 import android.view.View;
 import android.widget.ArrayAdapter;
 import android.widget.Button;
-import android.widget.DatePicker;
 import android.widget.EditText;
 import android.widget.ProgressBar;
 import android.widget.Spinner;
-import android.widget.TimePicker;
 import android.widget.Toast;
 
 public class Main extends Activity {
@@ -91,6 +83,21 @@ public class Main extends Activity {
         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
         comboSeverity.setAdapter(adapter);
         
+        
+        Spinner combo;
+        combo = (Spinner) findViewById(R.id.status_combo);
+        adapter = ArrayAdapter.createFromResource(
+        	this, R.array.event_status_values, android.R.layout.simple_spinner_item);
+        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        combo.setAdapter(adapter);
+        
+        combo = (Spinner) findViewById(R.id.max_time_old_event_combo);
+        adapter = ArrayAdapter.createFromResource(
+        	this, R.array.max_time_old_event_values, android.R.layout.simple_spinner_item);
+        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        combo.setAdapter(adapter);
+        
+        
         buttonReset.setOnClickListener(new View.OnClickListener() {		
 			@Override
 			public void onClick(View v) {
@@ -109,7 +116,6 @@ public class Main extends Activity {
 			
 			@Override
 			public void onClick(View v) {
-				// TODO Auto-generated method stub
 				save_filter_watcher();
 			}
 		});
@@ -223,6 +229,7 @@ public class Main extends Activity {
     	this.object.loadInProgress = true;
     	
     	//Get form data
+    	/*
     	DatePicker datePicker = (DatePicker)findViewById(R.id.date);
     	TimePicker timePicker = (TimePicker)findViewById(R.id.time);
     	int day = datePicker.getDayOfMonth();
@@ -234,13 +241,20 @@ public class Main extends Activity {
     	c.set(year, month, day, hour, minute);
     	
     	this.object.timestamp = c.getTimeInMillis() / 1000;
+    	*/
     	
-    	EditText agentName = (EditText) findViewById(R.id.agent_name);
-    	String agentNameStr = agentName.getText().toString();
+    	
+    	int timeKey = 0;
+    	Spinner combo = (Spinner)findViewById(R.id.max_time_old_event_combo);
+    	timeKey = combo.getSelectedItemPosition();
+    	
+    	this.object.timestamp = this.core.convertMaxTimeOldEventValuesToTimestamp(0, timeKey);
+    	
+    	EditText text = (EditText) findViewById(R.id.agent_name);
+    	this.object.agentNameStr = text.getText().toString();
     	
     	this.object.id_group = 0;
     	
-    	Spinner combo;
     	int sel;
     	combo = (Spinner) findViewById(R.id.group_combo);
     	String selectedGroup = combo.getSelectedItem().toString();
@@ -257,6 +271,12 @@ public class Main extends Activity {
     	combo = (Spinner) findViewById(R.id.severity_combo);
     	this.object.severity = combo.getSelectedItemPosition() - 1;
     	
+    	combo = (Spinner)findViewById(R.id.status_combo);
+    	this.object.status = combo.getSelectedItemPosition() - 1;
+    	
+    	text = (EditText)findViewById(R.id.event_search_text);
+    	this.object.eventSearch = text.getText().toString();
+    	
     	this.object.getNewListEvents = true;
     	this.object.executeBackgroundGetEvents();
     	
@@ -268,10 +288,12 @@ public class Main extends Activity {
     	String filterAgentName = "";
     	int filterIDGroup = 0;
     	int filterSeverity = -1;
+    	int filterStatus = -1;
+    	String filterEventSearch = "";
     	
     	
-    	EditText agentName = (EditText) findViewById(R.id.agent_name);
-    	filterAgentName = agentName.getText().toString();
+    	EditText text = (EditText) findViewById(R.id.agent_name);
+    	filterAgentName = text.getText().toString();
     	
     	Spinner combo;
     	combo = (Spinner) findViewById(R.id.group_combo);
@@ -289,6 +311,12 @@ public class Main extends Activity {
     	combo = (Spinner) findViewById(R.id.severity_combo);
     	filterSeverity = combo.getSelectedItemPosition();
     	
+    	combo = (Spinner)findViewById(R.id.status_combo);
+    	filterStatus = combo.getSelectedItemPosition() - 1;
+    	
+    	text = (EditText)findViewById(R.id.event_search_text);
+    	filterEventSearch = text.getText().toString();
+    	
     	
     	SharedPreferences preferences = getSharedPreferences(
             this.getString(R.string.const_string_preferences), 
@@ -298,6 +326,8 @@ public class Main extends Activity {
     	editorPreferences.putString("filterAgentName", filterAgentName);
     	editorPreferences.putInt("filterIDGroup", filterIDGroup);
     	editorPreferences.putInt("filterSeverity", filterSeverity);
+    	editorPreferences.putInt("filterStatus", filterStatus);
+    	editorPreferences.putString("filterEventSearch", filterEventSearch);
     	
     	if (editorPreferences.commit()) {
     		this.core.stopServiceEventWatcher(getApplicationContext());
@@ -315,8 +345,8 @@ public class Main extends Activity {
     }
     
     public void reset_form() {
-    	EditText agentEditText = (EditText)findViewById(R.id.agent_name);
-    	agentEditText.setText("");
+    	EditText text = (EditText)findViewById(R.id.agent_name);
+    	text.setText("");
     	
     	Spinner combo = (Spinner) findViewById(R.id.group_combo);
     	combo.setSelection(0);
@@ -324,6 +354,16 @@ public class Main extends Activity {
     	combo = (Spinner) findViewById(R.id.severity_combo);
     	combo.setSelection(0);
     	
+    	combo = (Spinner)findViewById(R.id.max_time_old_event_combo);
+    	combo.setSelection(0);
+    	
+    	combo = (Spinner)findViewById(R.id.status_combo);
+    	combo.setSelection(0);
+    	
+    	text = (EditText)findViewById(R.id.event_search_text);
+    	text.setText("");
+    	
+    	/*
     	Calendar c = Calendar.getInstance();
     	DatePicker datePicker = (DatePicker)findViewById(R.id.date);
     	datePicker.updateDate(c.get(Calendar.YEAR),
@@ -333,5 +373,6 @@ public class Main extends Activity {
     	TimePicker timePicker = (TimePicker)findViewById(R.id.time);
     	timePicker.setCurrentHour(c.get(Calendar.HOUR_OF_DAY));
     	timePicker.setCurrentMinute(c.get(Calendar.MINUTE));
+    	*/
     }
 }
diff --git a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/PandroidEventviewerActivity.java b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/PandroidEventviewerActivity.java
index aca1000bad..13ac9eeb47 100644
--- a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/PandroidEventviewerActivity.java
+++ b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/PandroidEventviewerActivity.java
@@ -14,10 +14,6 @@
 
 package pandroid_event_viewer.pandorafms;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Date;
@@ -31,11 +27,11 @@ import org.apache.http.client.methods.HttpPost;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.http.message.BasicNameValuePair;
 
-import android.R.bool;
 import android.app.Activity;
 import android.app.TabActivity;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.content.res.Configuration;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.util.Log;
@@ -63,6 +59,8 @@ public class PandroidEventviewerActivity extends TabActivity implements Serializ
     public int severity;
     public int pagination;
     public long offset;
+    public int status;
+    public String eventSearch;
     
     public Intent intent_service;
     
@@ -88,6 +86,8 @@ public class PandroidEventviewerActivity extends TabActivity implements Serializ
         this.offset = 0;
         this.agentNameStr = "";
         this.severity = -1;
+        this.status = -1;
+        this.eventSearch = "";
         
         this.eventList = new ArrayList<EventListItem>();
         this.loadInProgress = false;
@@ -140,6 +140,7 @@ public class PandroidEventviewerActivity extends TabActivity implements Serializ
 		tabHost.getTabWidget().getChildAt(0).getLayoutParams().height=45;
 		tabHost.getTabWidget().getChildAt(1).getLayoutParams().height=45;
 		
+		Log.e("PandroidEventviewerActivity", "onCreate");
     }
     
     public void onResume() {
@@ -196,6 +197,14 @@ public class PandroidEventviewerActivity extends TabActivity implements Serializ
     	}
     	
     	executeBackgroundGetEvents();
+    	
+    	Log.e("PandroidEventviewerActivity", "onResume");
+    }
+    
+    public void onConfigurationChanged(Configuration newConfig) { 
+    	super.onConfigurationChanged(newConfig);
+    	
+    	Log.e("PandroidEventviewerActivity", "onConfigurationChanged");
     }
     
     public String serializeParams2Api() {
@@ -217,6 +226,10 @@ public class PandroidEventviewerActivity extends TabActivity implements Serializ
     	return_var += "|";
     	return_var += ""; //The maximum timestamp
     	return_var += "|";
+    	return_var += this.status; //The status
+    	return_var += "|";
+    	return_var += this.eventSearch; //The free search in the text event description.
+    	return_var += "|";
     	return_var += Integer.toString(this.pagination); //The pagination of list events
     	return_var += "|";
     	return_var += Long.toString(this.offset); //The offset of list events
diff --git a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/PandroidEventviewerService.java b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/PandroidEventviewerService.java
index 559dbeb7a9..8030bd040e 100644
--- a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/PandroidEventviewerService.java
+++ b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/PandroidEventviewerService.java
@@ -1,5 +1,7 @@
 package pandroid_event_viewer.pandorafms;
 
+import java.util.Calendar;
+
 import android.app.Activity;
 import android.app.AlarmManager;
 import android.app.PendingIntent;
diff --git a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/PopupValidationEvent.java b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/PopupValidationEvent.java
index 490042607b..43589e4d8c 100644
--- a/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/PopupValidationEvent.java
+++ b/extras/pandroid_event_viewer/src/pandroid_event_viewer/pandorafms/PopupValidationEvent.java
@@ -1,12 +1,161 @@
 package pandroid_event_viewer.pandorafms;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.message.BasicNameValuePair;
+
 import android.app.Activity;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.AsyncTask;
 import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ProgressBar;
+import android.widget.Spinner;
+import android.widget.Toast;
 
 public class PopupValidationEvent extends Activity {
+	public int id_event;
+	public String comment;
+	
+	public PandroidEventviewerActivity object;
+	public Core core;
+	
+	public String url;
+	public String user;
+	public String password;
+	
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        
+        Intent i = getIntent();
+        this.id_event = i.getIntExtra("id_event", -1);
+    	//this.object = (PandroidEventviewerActivity)i.getSerializableExtra("object");
+        this.core = (Core)i.getParcelableExtra("core");
+        
+        setContentView(R.layout.popup_validation_event);
+        
+        final Button button = (Button) findViewById(R.id.button_validate_event);
+        
+        button.setOnClickListener(new View.OnClickListener() {		
+    		@Override
+    		public void onClick(View v) {
+    			validateEvent();
+    		}
+    	});
+    }
+    
+    public void validateEvent() {
+    	EditText textbox = (EditText) findViewById(R.id.comment);
+    	String comment = textbox.getText().toString();
+    	Button button = (Button) findViewById(R.id.button_validate_event);
+    	ProgressBar pb = (ProgressBar) findViewById(R.id.send_progress);
+    	
+    	button.setVisibility(Button.GONE);
+    	pb.setVisibility(ProgressBar.VISIBLE);
+    	
+    	this.comment = "Validate from Pandroid Eventviewer Mobile: " + comment;
+    	
+    	new SendValidationAsyncTask().execute();
+    }
+    
+    public void destroyPopup() {
+    	finish();
+    }
+    
+    public boolean sendValidation() {
+    	boolean return_var = false;
+    	
+		if (this.url == null) {
+	        SharedPreferences preferences = getApplicationContext().getSharedPreferences(
+	        	getApplicationContext().getString(R.string.const_string_preferences), 
+	        	Activity.MODE_PRIVATE);
+	            
+	        this.url = preferences.getString("url", "");
+	        this.user = preferences.getString("user", "");
+	        this.password = preferences.getString("password", "");
+		}
+		try {
+	        DefaultHttpClient httpClient = new DefaultHttpClient();
+	        UrlEncodedFormEntity entity;
+	        HttpPost httpPost;
+	        List<NameValuePair> parameters;
+	        HttpResponse response;
+	        HttpEntity entityResponse;
+	        String return_api;
+			
+	    	httpPost = new HttpPost(this.url);
+	    	
+	    	//Set event validation.
+	    	parameters = new ArrayList<NameValuePair>();
+	    	parameters.add(new BasicNameValuePair("user", this.user));
+	    	parameters.add(new BasicNameValuePair("pass", this.password));
+	        parameters.add(new BasicNameValuePair("op", "set"));
+	        parameters.add(new BasicNameValuePair("op2", "validate_events"));
+	        parameters.add(new BasicNameValuePair("id", new Integer(this.id_event).toString()));
+	        parameters.add(new BasicNameValuePair("other", this.comment));
+	        entity = new UrlEncodedFormEntity(parameters);
+	        httpPost.setEntity(entity);
+	    	response = httpClient.execute(httpPost);
+	    	entityResponse = response.getEntity();
+	    	return_api = Core.convertStreamToString(entityResponse.getContent());
+	    	return_api = return_api.replace("\n", "");
+	    	
+	    	if (return_api.startsWith("Correct validation")) {
+	    		return_var = true;
+	    	}
+	    	
+	    	Log.e("sendValidation", return_api);
+    	}
+    	catch (Exception e) {
+    		Log.e("ERROR THE ", e.getMessage());
+    	}
+		
+		return return_var;
+    }
+    
+    public class SendValidationAsyncTask extends AsyncTask<Void, Void, Void> {
+    	public ArrayList<String> lista;
+    	public boolean result;
+    	
+		@Override
+		protected Void doInBackground(Void... params) {
+			result = sendValidation();
+			
+			return null;
+		}
+		
+		@Override
+		protected void onPostExecute(Void unused)
+		{
+			String text;
+			
+			if (result) {
+				text = getApplicationContext().getString(R.string.successful_validate_event_str);
+			}
+			else {
+				text = getApplicationContext().getString(R.string.fail_validate_event_str);
+			}
+			
+			Toast toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT);
+    		toast.show();
+    		
+    		if (result) {
+    			destroyPopup();
+    		}
+		}
     }
 }