Inheritance: GreenQloud.Persistence.EventDAO
Ejemplo n.º 1
0
        private void LoadRecentlyChangedItems()
        {
            if (Program.Controller.DatabaseLoaded())
            {
                SQLiteEventDAO eventDao = new SQLiteEventDAO();
                List<Event> events = eventDao.LastEvents;
                string text = "";

                foreach (Event e in events)
                {
                    MenuItem current = new MenuItem();
                    current.Text = e.ItemName;
                    this.trayMenu.MenuItems.Add(current);
                }
            }
        }
Ejemplo n.º 2
0
 private int EventsToSync()
 {
     SQLiteEventDAO eventDAO = new SQLiteEventDAO(repo);
     return eventDAO.EventsNotSynchronized.Count();
 }
Ejemplo n.º 3
0
        public void CreateMenu ()
        {
            lock (menuLock) {
                this.recentChanges.Clear ();

                using (NSAutoreleasePool a = new NSAutoreleasePool ()) {
                    this.menu = new NSMenu ();
                    this.menu.AutoEnablesItems = false;

                    this.state_item = new NSMenuItem () {
                        Title = StateText,
                        Enabled = true
                    };

                    this.folder_item = new NSMenuItem () {
                        Title = GlobalSettings.HomeFolderName+" Folder"
                    };

                    this.folder_item.Activated += delegate {
                        StorageFolderClicked ();
                    };

                    this.folder_item.Image = this.sparkleshare_image;
                    this.folder_item.Image.Size = new SizeF (16, 16);
                    this.folder_item.Enabled = true;

                    this.preferences_item = new NSMenuItem () {
                        Title   = "Preferences",
                        Enabled = true
                    };

                    this.preferences_item.Activated += delegate {
                        if (PreferenceController == null) {
                            PreferenceController = new PreferenceWindowController ();
                            PreferenceController.Window.WillClose += delegate {
                                PreferenceController = null;
                            };
                        } else {
                            PreferenceController.Window.OrderFrontRegardless ();
                        }
                    };

                    this.recent_events_title = new NSMenuItem () {
                        Title   = "Recently Changed",
                        Enabled =  false
                    };       

                    this.about_item = new NSMenuItem () {
                        Title   = string.Format("About {0}", GlobalSettings.ApplicationName),
                        Enabled = true
                    };

                    this.openweb_item = new NSMenuItem () {
                        Title = "Share/View Online",
                        Enabled = true
                    };

                    this.openweb_item.Image = this.share_image;
                    this.openweb_item.Image.Size = new SizeF (16, 16);
                    this.openweb_item.Enabled = true;

                    this.openweb_item.Activated += delegate {                    
                        Program.Controller.OpenStorageQloudWebSite ();
                    };

                    this.about_item.Activated += delegate {
                        AboutClicked ();
                    };

                    this.pause_sync = new NSMenuItem () {
                        Title = PauseText(),
                        Enabled = true
                    };

                    this.pause_sync.Activated += delegate {
                        PauseSync ();
                    };

                    this.quit_item = new NSMenuItem () {
                        Title   = "Quit",
                        Enabled = QuitItemEnabled
                    };

                    this.quit_item.Activated += delegate {
                        QuitClicked ();
                    };



                    co2_savings_item = new NSMenuItem () {
                        Title = "",
                        Enabled = true,
                        Hidden = true
                    };

                    if (co2Update == null) {
                        co2Update = new Thread (delegate() {
                            while (true) {
                                try {
                                    string spent = Statistics.TotalUsedSpace.Spent;
                                    string saved = Statistics.EarlyCO2Savings.Saved;
                                    string subscript = "2";
                                    subscript.ToLowerInvariant ();

                                    using (var ns = new NSAutoreleasePool ()) {
                                        NSRunLoop.Main.BeginInvokeOnMainThread (() => { 
                                            if (spent != null && saved != null) {
                                                co2_savings_item.Title = spent + " used | " + saved + " CO₂ saved";
                                                co2_savings_item.Hidden = false;
                                            }
                                        });
                                    }
                                } catch (Exception e) {
                                    Logger.LogInfo("ERROR ON LOAD CO₂ SAVINGS", e);
                                }
                                Thread.Sleep (600000);
                            }
                        });
                        co2Update.Start ();
                    }

                    help_item = new NSMenuItem () {
                        Title = "Help Center"
                    };

                    help_item.Activated += delegate {
                        Program.Controller.OpenWebsite ("http://support.greenqloud.com");
                    };

               
                    bool renderLoggedIn = Credential.Username != "";
                    if (renderLoggedIn) {
                        this.menu.AddItem (this.state_item);
                        this.menu.AddItem (NSMenuItem.SeparatorItem);
                        this.menu.AddItem (co2_savings_item);
                        this.menu.AddItem (this.folder_item);
                        this.menu.AddItem (this.openweb_item);  
                        this.menu.AddItem (NSMenuItem.SeparatorItem);
                        this.menu.AddItem (this.recent_events_title);
                        this.menu.AddItem (NSMenuItem.SeparatorItem);
                

                        if (Program.Controller.DatabaseLoaded ()) {
                            SQLiteEventDAO eventDao = new SQLiteEventDAO ();
                            List<Event> events = eventDao.LastEvents;
                            string text = "";

                            foreach (Event e in events) {

                                NSMenuItem current = new NSMenuItem () {
                                    Title = e.ItemName,
                                    Enabled = true
                                };


                                current.Image = this.default_image;
                                if (e.ItemType == ItemType.IMAGE)
                                    current.Image = this.pics_image;
                                if (e.ItemType == ItemType.TEXT)
                                    current.Image = this.docs_image;
                                if (e.ItemType == ItemType.VIDEO)
                                    current.Image = this.movies_image;
                                if (e.ItemType == ItemType.AUDIO)
                                    current.Image = this.music_image;

                                current.ToolTip = e.ToString ();

                                EventHandler evt = new EventHandler (
                                    delegate {
                                    NSRunLoop.Main.BeginInvokeOnMainThread (() => RecentChangeItemClicked (e, null));
                                }
                                );
                                current.Activated += evt;

                                string title = "   " + e.ItemUpdatedAt;
                                NSAttributedString att = new NSAttributedString (title, NSFontManager.SharedFontManager.FontWithFamily ("Helvetica", NSFontTraitMask.Narrow, 5, 11));
                                NSMenuItem subtitle = new NSMenuItem () {
                                    Enabled = false
                                };
                                subtitle.IndentationLevel = 1;
                                subtitle.AttributedTitle = att;

                                this.recentChanges.Add (current);
                                this.menu.AddItem (current);
                                this.menu.AddItem (subtitle);
                                text += e.ToString () + "\n\n";

                            }
                            this.recent_events_title.ToolTip = text;

                    

                        }
                        this.menu.AddItem (NSMenuItem.SeparatorItem);
                        this.menu.AddItem (this.preferences_item);
                        this.menu.AddItem (this.pause_sync);
                        this.menu.AddItem (NSMenuItem.SeparatorItem);
                    }
                    //this.menu.AddItem (help_item);

               
                    //this.menu.Delegate    = new SparkleStatusIconMenuDelegate ();
                    this.status_item.Menu = this.menu;
                    this.menu.AddItem (help_item);
                    this.menu.AddItem (this.about_item);
                    this.menu.AddItem (quit_item);
                }
            }
        }
Ejemplo n.º 4
0
 public void InitializeSynchronizers(bool recovery = false)
 {
     if (recovery) {
         repo.Recovering = true;
         SQLiteRepositoryDAO dao = new SQLiteRepositoryDAO();
         dao.Update(repo);
     }
     if (recovery || repo.Recovering)
     {
         SQLiteEventDAO eventDao = new SQLiteEventDAO(this.repo);
         eventDao.RemoveAllUnsynchronized();
         recoverySynchronizer.Start();
     }
     else
     {
         recoverySynchronizer.Skip();
     }
     localSynchronizer.Start ();
     remoteSynchronizer.Start ();
     synchronizerResolver.Start();
 }
Ejemplo n.º 5
0
        private void LoadExtraItems(ToolStripSeparator separator, ToolStripSeparator finalSeparator, ToolStripMenuItem savings, ToolStripMenuItem recentlyChanged, ToolStripMenuItem stateText)
        {
            if (SynchronizerUnit.UnitCount() > 0)
            {
                int itensToSync = SynchronizerUnit.GetTotalEventsToSync();
                if (itensToSync > 0)
                {
                    stateText.Text = itensToSync + " Event"+(itensToSync > 1 ? "s" : "")+" to sync";
                    stateText.Visible = true;
                }
                else
                {
                    if (SynchronizerUnit.AnyRecovering())
                    {
                        stateText.Text = "Looking for changes...";
                        stateText.Visible = true;
                    }
                    else
                    {
                        stateText.Text = "Up to date";
                        stateText.Visible = true;
                    }
                }
            }
            else
            {
                stateText.Text = "Loading Synchronizers...";
                stateText.Visible = true;
            }
            //First load the recently changes
            int begin = this.trayMenu.Items.IndexOf(separator);
            int end = this.trayMenu.Items.IndexOf(finalSeparator);
            while(begin+1 < end) {
                this.trayMenu.Items.RemoveAt(begin + 1);
                begin = this.trayMenu.Items.IndexOf(separator);
                end = this.trayMenu.Items.IndexOf(finalSeparator);
            }

            if (Program.Controller.DatabaseLoaded())
            {
                SQLiteEventDAO eventDao = new SQLiteEventDAO();
                List<Event> events = eventDao.LastEvents;

                bool displayRecentlyChanges = events.Count != 0;
                recentlyChanged.Visible = displayRecentlyChanges;
                separator.Visible = displayRecentlyChanges;
                finalSeparator.Visible = displayRecentlyChanges;

                foreach (Event e in events)
                {
                    end = this.trayMenu.Items.IndexOf(finalSeparator);

                   ToolStripMenuItem current = new ToolStripMenuItem();
                    current.Text = e.ItemName;

                    current.Image = Icons.folder_default;
                    if (e.ItemType == ItemType.IMAGE)
                        current.Image = Icons.folder_pics;
                    if (e.ItemType == ItemType.TEXT)
                        current.Image = Icons.folder_docs;
                    if (e.ItemType == ItemType.VIDEO)
                        current.Image = Icons.folder_movies;
                    if (e.ItemType == ItemType.AUDIO)
                        current.Image = Icons.folder_music;

                    current.Click += (sender, args) =>
                    {
                        Program.Controller.OpenFolder(e.ItemLocalFolderPath);
                    };
                    this.trayMenu.Items.Insert(end, current);
                }

                new Thread(() =>
                {
                    savingstext = GetSavings();
                }).Start();

                if (savingstext.Length > 0)
                {
                    savings.Text = savingstext;
                    savings.Visible = true;
                }
            }
        }