Index: /trunk/TagTracker/gen/nl/deadpixel/tagtracker/beta/R.java
===================================================================
--- /trunk/TagTracker/gen/nl/deadpixel/tagtracker/beta/R.java	(revision 4)
+++ /trunk/TagTracker/gen/nl/deadpixel/tagtracker/beta/R.java	(revision 5)
@@ -19,14 +19,17 @@
     }
     public static final class id {
-        public static final int Screen=0x7f080000;
-        public static final int add_note=0x7f080005;
-        public static final int add_uid=0x7f080004;
-        public static final int status=0x7f080002;
-        public static final int stopsend=0x7f080006;
-        public static final int text=0x7f080001;
-        public static final int zend=0x7f080003;
+        public static final int Screen=0x7f080002;
+        public static final int add_note=0x7f080007;
+        public static final int add_uid=0x7f080006;
+        public static final int emailTo=0x7f080001;
+        public static final int layout_root=0x7f080000;
+        public static final int status=0x7f080004;
+        public static final int stopsend=0x7f080008;
+        public static final int text=0x7f080003;
+        public static final int zend=0x7f080005;
     }
     public static final class layout {
-        public static final int main=0x7f030000;
+        public static final int mail_popup=0x7f030000;
+        public static final int main=0x7f030001;
     }
     public static final class menu {
Index: /trunk/TagTracker/res/layout/mail_popup.xml
===================================================================
--- /trunk/TagTracker/res/layout/mail_popup.xml	(revision 5)
+++ /trunk/TagTracker/res/layout/mail_popup.xml	(revision 5)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/layout_root"
+    android:layout_width="wrap_content"
+    android:layout_height="fill_parent"
+    android:orientation="vertical"
+    android:padding="10dp" >
+    <EditText
+        android:id="@+id/emailTo"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:hint="Email"
+        android:inputType="textEmailAddress" />
+</LinearLayout>
Index: /trunk/TagTracker/src/nl/deadpixel/tagtracker/beta/FileHandler.java
===================================================================
--- /trunk/TagTracker/src/nl/deadpixel/tagtracker/beta/FileHandler.java	(revision 4)
+++ /trunk/TagTracker/src/nl/deadpixel/tagtracker/beta/FileHandler.java	(revision 5)
@@ -43,5 +43,5 @@
 		}
 	}
-	public void writeUID(String uid, String time, String note)
+	public void writeUID(String uid, String time)
 	{
 		try {
@@ -52,9 +52,6 @@
 	        		"	<tag uid=\"" + uid + "\">\r\n" +
 	        		"		<time>" + time + "</time>\r\n" +
-	        		"		<note>" + note + "</note>\r\n" +
 	        		"	</tag>\r\n";
-			Log.i("TagTracker", "Writing tag " + uid);
 	        writer.append(tag);
-	        Log.i("TagTracker", "Wrote tag " + uid);
 	        writer.flush();
 	        writer.close();	
@@ -65,4 +62,22 @@
 	}
 	
+	public void writeNote(String note)
+	{
+		try {
+			File root = new File(Environment.getExternalStorageDirectory(), "TagTracker");
+		    File xmlfile = new File(root, "tags.log");
+		    FileWriter writer = new FileWriter(xmlfile,true);
+			String tag = 
+	        		"	<note>\r\n" +
+	        		"	" + note +
+	        		"	<note>\r\n";
+	        writer.append(tag);
+	        writer.flush();
+	        writer.close();	
+		} catch (IOException e) {
+			Log.e("TagTracker", "" + e.getMessage());
+		}
+        	
+	}
 	public void writeStart(String starttime)
 	{
@@ -76,7 +91,7 @@
 	        		"<tags>\r\n" +
 	        		"	<start time=\""+starttime+"\" />\r\n";
-	        Log.i("TagTracker", "Writing start...");
+	        //Log.i("TagTracker", "Writing start...");
 	        writer.write(start);
-	        Log.i("TagTracker", "Wrote start...");
+	        //Log.i("TagTracker", "Wrote start...");
 	        writer.flush();
 	        writer.close();
@@ -97,7 +112,7 @@
 	        		"<end time=\""+endtime+"\" />\r\n" +
 	        		"</tags>";
-	        Log.i("TagTracker", "Writing end...");
+	        //Log.i("TagTracker", "Writing end...");
 	        writer.append(end);
-	        Log.i("TagTracker", "Wrote end...");
+	        //Log.i("TagTracker", "Wrote end...");
 	        writer.flush();
 	        writer.close();
Index: /trunk/TagTracker/src/nl/deadpixel/tagtracker/beta/ObjectSerializer.java
===================================================================
--- /trunk/TagTracker/src/nl/deadpixel/tagtracker/beta/ObjectSerializer.java	(revision 5)
+++ /trunk/TagTracker/src/nl/deadpixel/tagtracker/beta/ObjectSerializer.java	(revision 5)
@@ -0,0 +1,62 @@
+package nl.deadpixel.tagtracker.beta;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+
+import android.util.Log;
+
+public class ObjectSerializer {
+
+    
+    public static String serialize(Serializable obj) {
+        if (obj == null) return "";
+        try {
+            ByteArrayOutputStream serialObj = new ByteArrayOutputStream();
+            ObjectOutputStream objStream = new ObjectOutputStream(serialObj);
+            objStream.writeObject(obj);
+            objStream.close();
+            return encodeBytes(serialObj.toByteArray());
+        } catch (Exception e) {
+            Log.e("TagTracker","Serialization error: " + e.getMessage(), e);
+        }
+		return "";
+    }
+    
+    public static Object deserialize(String str) {
+        if (str == null || str.length() == 0) return null;
+        try {
+            ByteArrayInputStream serialObj = new ByteArrayInputStream(decodeBytes(str));
+            ObjectInputStream objStream = new ObjectInputStream(serialObj);
+            return objStream.readObject();
+        } catch (Exception e) {
+            Log.e("TagTracker","Deserialization error: " + e.getMessage(), e);
+        }
+		return null;
+    }
+    
+    public static String encodeBytes(byte[] bytes) {
+        StringBuffer strBuf = new StringBuffer();
+    
+        for (int i = 0; i < bytes.length; i++) {
+            strBuf.append((char) (((bytes[i] >> 4) & 0xF) + ((int) 'a')));
+            strBuf.append((char) (((bytes[i]) & 0xF) + ((int) 'a')));
+        }
+        
+        return strBuf.toString();
+    }
+    
+    public static byte[] decodeBytes(String str) {
+        byte[] bytes = new byte[str.length() / 2];
+        for (int i = 0; i < str.length(); i+=2) {
+            char c = str.charAt(i);
+            bytes[i/2] = (byte) ((c - 'a') << 4);
+            c = str.charAt(i+1);
+            bytes[i/2] += (c - 'a');
+        }
+        return bytes;
+    }
+
+}
Index: /trunk/TagTracker/src/nl/deadpixel/tagtracker/beta/TagTrackerActivity.java
===================================================================
--- /trunk/TagTracker/src/nl/deadpixel/tagtracker/beta/TagTrackerActivity.java	(revision 4)
+++ /trunk/TagTracker/src/nl/deadpixel/tagtracker/beta/TagTrackerActivity.java	(revision 5)
@@ -2,4 +2,5 @@
 
 
+import java.io.File;
 import java.io.IOException;
 import java.text.DateFormat;
@@ -8,9 +9,12 @@
 
 import android.app.Activity;
+import android.app.AlertDialog;
 import android.app.PendingIntent;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.IntentFilter.MalformedMimeTypeException;
+import android.content.SharedPreferences;
 import android.media.AudioManager;
 import android.media.MediaPlayer;
@@ -20,4 +24,5 @@
 import android.nfc.tech.NfcA;
 import android.os.Bundle;
+import android.os.Environment;
 import android.os.Handler;
 import android.os.PowerManager;
@@ -26,8 +31,9 @@
 import android.view.Menu;
 import android.view.MenuInflater;
+import android.view.MenuItem;
 import android.view.View;
 import android.widget.Button;
+import android.widget.EditText;
 import android.widget.RelativeLayout;
-import android.widget.TextView;
 import android.widget.ToggleButton;
 
@@ -42,5 +48,6 @@
     private RelativeLayout mScreen;
     
-    @Override
+    @SuppressWarnings("unchecked")
+	@Override
     public void onCreate(Bundle savedState) {
         super.onCreate(savedState);
@@ -51,7 +58,12 @@
         button.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
-            
+            	zenden();
             }
         });
+        SharedPreferences p = getPreferences(MODE_PRIVATE);
+        writeAllow = p.getBoolean("writeAllow", false);
+        cardID = (ArrayList<String>) ObjectSerializer.deserialize(p.getString("cardID", ObjectSerializer.serialize(new ArrayList<String>())));
+        ToggleButton tg = (ToggleButton) findViewById(R.id.status);
+        tg.setChecked(writeAllow);
         mScreen = (RelativeLayout) findViewById(R.id.Screen);
         mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");    
@@ -116,7 +128,7 @@
 		    		if(!cardID.contains(uid))
 			    	{
-			    		Log.i("Foreground dispatch", "Discovered tag with ID: " + uid);
+			    		//Log.i("Foreground dispatch", "Discovered tag with ID: " + uid);
 			            //mText.append("\r\n["+time+"] Discovered tag " + ++mCount + " with ID: " + uid);
-			            fh.writeUID(uid, time, "");
+			            fh.writeUID(uid, time);
 			            cardID.add(uid);
 			            setBackground(0xFF00FF00, 200);
@@ -170,13 +182,17 @@
             	mScreen.setBackgroundColor(android.R.color.white); 
              } 
-        }, time); 
-    	
-    	
+        }, time);     	
     }
     @Override
     public void onPause() {
         super.onPause();
+        SharedPreferences preferences = getPreferences(MODE_PRIVATE);
+        SharedPreferences.Editor editor = preferences.edit();
+        editor.putBoolean("writeAllow", writeAllow); // value to store
+        editor.putString("cardID", ObjectSerializer.serialize(cardID));
+        editor.commit();
         if (mAdapter != null) mAdapter.disableForegroundDispatch(this);
     }
+
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
@@ -185,3 +201,190 @@
         return true;
     }
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        // Handle item selection
+        switch (item.getItemId()) {
+            case R.id.add_uid:
+                addUID();
+                return true;
+            case R.id.add_note:
+                addNote();
+                return true;
+            case R.id.stopsend:
+            	stopSend();
+            	return true;
+            default:
+                return super.onOptionsItemSelected(item);
+        }
+    }
+    
+    public void addUID()
+    {
+    	if(writeAllow)
+    	{
+	    	AlertDialog.Builder alert = new AlertDialog.Builder(this);                 
+	    	alert.setTitle("UID Toevoegen");  
+	
+	    	// Set an EditText view to get user input   
+	    	final EditText input = new EditText(this); 
+	    	alert.setView(input);
+
+    	    alert.setPositiveButton("Toevoegen", new DialogInterface.OnClickListener() {  
+    	    public void onClick(DialogInterface dialog, int whichButton) {  
+    	        String value = input.getText().toString();
+    	        fh.writeUID(value, DateFormat.getDateTimeInstance().format(new Date()));
+    	        return;                  
+    	       }  
+    	     });  
+
+    	    alert.setNegativeButton("Annuleren", new DialogInterface.OnClickListener() {
+
+    	        public void onClick(DialogInterface dialog, int which) {
+    	            // TODO Auto-generated method stub
+    	            return;   
+    	        }
+    	    });
+    	    alert.show();
+    	}
+    	else
+    	{
+    		AlertDialog.Builder alert = new AlertDialog.Builder(this, 4);                 
+	    	alert.setTitle("Oeps!"); 
+	    	alert.setMessage("Druk op start om een UID toe te voegen");
+	    	alert.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
+				
+				public void onClick(DialogInterface dialog, int which) {
+					// TODO Auto-generated method stub
+					return;
+				}
+			});
+	    	alert.show();
+    	}
+    }
+    
+    public void addNote()
+    {
+    	if(writeAllow)
+    	{
+	    	AlertDialog.Builder alert = new AlertDialog.Builder(this);                 
+	    	alert.setTitle("Notitie Toevoegen");  
+	
+	    	// Set an EditText view to get user input   
+	    	final EditText input = new EditText(this); 
+	    	alert.setView(input);
+
+    	    alert.setPositiveButton("Toevoegen", new DialogInterface.OnClickListener() {  
+    	    public void onClick(DialogInterface dialog, int whichButton) {  
+    	        String value = input.getText().toString();
+    	        fh.writeNote(value);
+    	        return;                  
+    	       }  
+    	     });  
+
+    	    alert.setNegativeButton("Annuleren", new DialogInterface.OnClickListener() {
+
+    	        public void onClick(DialogInterface dialog, int which) {
+    	            // TODO Auto-generated method stub
+    	            return;   
+    	        }
+    	    });
+    	    alert.show();
+    	}
+    	else
+    	{
+    		AlertDialog.Builder alert = new AlertDialog.Builder(this, 4);                 
+	    	alert.setTitle("Oeps!"); 
+	    	alert.setMessage("Druk op start om een Notitie toe te voegen");
+	    	alert.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
+				
+				public void onClick(DialogInterface dialog, int which) {
+					// TODO Auto-generated method stub
+					return;
+				}
+			});
+	    	alert.show();
+    	}
+    }
+    public void stopSend()
+    {
+    	writeAllow = false;
+    	ToggleButton tg = (ToggleButton) findViewById(R.id.status);
+        tg.setChecked(writeAllow);
+    	AlertDialog.Builder alert = new AlertDialog.Builder(this);                 
+    	alert.setTitle("Email Zenden");  
+
+    	// Set an EditText view to get user input   
+    	final EditText input = new EditText(this); 
+    	input.setHint("Email");
+    	input.setInputType(32);
+    	alert.setView(input);
+
+	    alert.setPositiveButton("Verder", new DialogInterface.OnClickListener() {  
+	    public void onClick(DialogInterface dialog, int whichButton) {  
+	        String value = input.getText().toString();
+	        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
+	        emailIntent.setType("text/xml");
+	        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] 
+	        {value}); 
+	        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
+	        "Tag Track from " + DateFormat.getDateTimeInstance().format(new Date())); 
+	        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, 
+	        "XML Attached"); 
+	        File root = new File(Environment.getExternalStorageDirectory(), "TagTracker");
+		    File xmlfile = new File(root, "tags.log");
+	        emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+ xmlfile));
+	        startActivity(Intent.createChooser(emailIntent, "Stuur Email"));
+	        return;                  
+	       }  
+	     });  
+	    alert.show();
+    }
+    public void zenden()
+    {
+    	if(!writeAllow)
+    	{
+    		AlertDialog.Builder alert = new AlertDialog.Builder(this);                 
+        	alert.setTitle("Email Zenden");  
+
+        	// Set an EditText view to get user input   
+        	final EditText input = new EditText(this); 
+        	input.setHint("Email");
+        	input.setInputType(32);
+        	alert.setView(input);
+
+    	    alert.setPositiveButton("Verder", new DialogInterface.OnClickListener() {  
+    	    public void onClick(DialogInterface dialog, int whichButton) {  
+    	        String value = input.getText().toString();
+    	        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
+    	        emailIntent.setType("text/xml");
+    	        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] 
+    	        {value}); 
+    	        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
+    	        "Tag Track from " + DateFormat.getDateTimeInstance().format(new Date())); 
+    	        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, 
+    	        "XML Attached"); 
+    	        File root = new File(Environment.getExternalStorageDirectory(), "TagTracker");
+    		    File xmlfile = new File(root, "tags.log");
+    	        emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+ xmlfile));
+    	        startActivity(Intent.createChooser(emailIntent, "Stuur Email"));
+    	        return;                  
+    	       }  
+    	     });  
+    	    alert.show();
+    	}
+    	else
+    	{
+    		AlertDialog.Builder alert = new AlertDialog.Builder(this, 4);                 
+	    	alert.setTitle("Oeps!"); 
+	    	alert.setMessage("Druk op stop om te verzenden");
+	    	alert.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
+				
+				public void onClick(DialogInterface dialog, int which) {
+					// TODO Auto-generated method stub
+					return;
+				}
+			});
+	    	alert.show();
+    	}
+    }
 }
