/// <summary>
		/// Initializes a new instance of the <see cref="Tomboy.AppDelegate"/> class.
		/// </summary>
		public AppDelegate () {
			var storage_path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "Library", "Application Support", "Tomboy");
            		// TODO, set it in a generic way
            		noteStorage = new DiskStorage (storage_path);
            		noteStorage.SetBackupPath(backupPathUri);

            		if (!Directory.Exists(backupPathUri))
                		noteStorage.Backup(); //FIXME: Need to better handle status messages.

			Logger.Debug ("Backup Path set to {0}", backupPathUri);

			NoteEngine = new Engine (noteStorage);

			// keep track of note for syncing
			// TODO move this into an Add-in one day
			var manifest_path = Path.Combine (storage_path, "manifest.xml");
			manifestTracker = new ManifestTracker (NoteEngine, manifest_path);

			// Create our cache directory
			if (!Directory.Exists (BaseUrlPath))
				Directory.CreateDirectory (BaseUrlPath);

			// Currently lazy load because otherwise the Dock Menu throws an error about there being no notes.
			if (Notes == null)
				Notes = NoteEngine.GetNotes ();
			
			NoteEngine.NoteAdded += HandleNoteAdded;
			NoteEngine.NoteRemoved += HandleNoteRemoved;
			NoteEngine.NoteUpdated += HandleNoteUpdated;

			settings = SettingsSync.Read();

            		Notebooks = new List<string>();
            		currentNotebook = "All Notebooks";
            		PopulateNotebookList();
		}
 /// <summary>
 /// Reads from the Settings.xml file and returns all the settings
 /// </summary>
 public static SettingsSync Read()
 {
     Init();
     if (System.IO.File.Exists(settingsFile))
     {
         XmlReader reader = XmlTextReader.Create(settingsFile);
         SettingsSync settings = Read(reader);
         reader.Close();
         return settings;
     }
     else
     {
         SettingsSync settings = new SettingsSync();
         settings.autoSync = true;
         settings.syncURL = "";
         return settings;
     }
 }
        /// <summary>
        /// Read the specified reader.
        /// </summary>
        /// <param name="reader">Reader.</param>
        private static SettingsSync Read(XmlReader reader)
        {
            SettingsSync settings = new SettingsSync ();

            try{
                while(reader.Read ()){
                    switch(reader.NodeType){
                        case XmlNodeType.Element:
                            switch(reader.Name){
                                case "settings":
                                    break;
                                case "sync-url":
                                    settings.syncURL = reader.ReadString ();
                                    break;
                                case "auto-sync":
                                    string temp = reader.ReadString ();
                                    settings.autoSync = (temp.Equals ("True")) ? settings.autoSync = true : settings.autoSync = false;
                                    break;
                            }
                            break;
                    }
                }
            }catch(XmlException e){
                //Console.Write(e.ToString);
            }

            return settings;
        }
        /// <summary>
        /// Write the specified xml and settings.
        /// </summary>
        /// <param name="xml">Xml.</param>
        /// <param name="settings">Settings.</param>
        private static void Write(XmlWriter xml, SettingsSync settings)
        {
            xml.WriteStartDocument ();
            xml.WriteStartElement (null, "settings", null);

            xml.WriteStartElement (null, "sync-url", null);
            xml.WriteString (settings.syncURL);
            xml.WriteEndElement ();

            xml.WriteStartElement (null, "auto-sync", null);
            string temp = "";
            temp = (settings.autoSync == true) ? temp = "True" : temp = "False";
            xml.WriteString (temp);
            xml.WriteEndElement ();

            xml.WriteEndElement ();
        }
 /// <summary>
 /// Write API provided to clients to use for saving the settings
 /// </summary>
 /// <param name="settings">Settings.</param>
 public static void Write(SettingsSync settings)
 {
     Init();
     var xmlSettings = new XmlWriterSettings ();
     xmlSettings.Indent = true;
     xmlSettings.IndentChars = "\t";
     XmlWriter writer = XmlWriter.Create (settingsFile, xmlSettings);
     Write (writer, settings);
     writer.Close ();
 }