示例#1
0
 protected override void OnDestroyed()
 {
     if (reloadLagger != null)
     {
         reloadLagger.Dispose();
         reloadLagger = null;
     }
     base.OnDestroyed();
 }
示例#2
0
 public override void Dispose()
 {
     if (updateUiLagger != null)
     {
         updateUiLagger.Dispose();
         updateUiLagger = null;
     }
     base.Dispose();
 }
示例#3
0
 protected override void OnDestroyed()
 {
     if (searchLagger != null)
     {
         searchLagger.Dispose();
         searchLagger = null;
     }
     base.OnDestroyed();
 }
示例#4
0
        public Grid()
        {
            this.Build();

            this.ctlTreeView.Model = this.store;

            this.ctlTreeView.Selection.Changed += Selection_Changed;

            updateViewLagger         = new ActionLagger(UpdateViewAction, 100);
            focusedItemChangedLagger = new ActionLagger(FocusedItemChangedAction, 500);
        }
示例#5
0
        public AddGroupWindow() :
            base(Gtk.WindowType.Toplevel)
        {
            this.appContext = AppContext.Default;
            this.Build();

            ctlGrid.ItemType = typeof(JsonSearchedGroup);
            SetupColumns();

            searchLagger = new ActionLagger(SearchAction, 100);
            searchLagger.RequestAction(ActionLaggerQueueing.ForceDelayed);

            UpdateUI();
        }
示例#6
0
        public GroupConfigScreen()
        {
            this.Build();

            this.appContext = AppContext.Default;
            yamsterCache    = appContext.YamsterCache;

            reloadGroupsLagger = new ActionLagger(ReloadGroupsAction);
            reloadGroupsLagger.RequestAction();

            appContext.YamsterCache.GroupChanged += YamsterCache_GroupChanged;

            suspendEvents = false;
            UpdateUI();
        }
示例#7
0
        public ConversationsScreen()
        {
            appContext   = AppContext.Default;
            yamsterCache = appContext.YamsterCache;

            this.Build();

            ctlGrid.ItemType = typeof(YamsterConversation);
            SetupColumns();

            reloadConversationsLagger = new ActionLagger(ReloadConversationsAction, 1000);
            reloadConversationsLagger.RequestAction();

            ctlGrid.FilterDelegate = ctlGrid_Filter;

            this.yamsterCache.MessageChanged += yamsterCache_MessageChanged;
        }
示例#8
0
        public MessageComposer()
        {
            this.Build();

            appContext = AppContext.Default;

            txtBody.Buffer.Changed += Buffer_Changed;

            ctlWidgetBox.ModifyBg(Gtk.StateType.Normal, new Color(255, 255, 255));
            ctlCancelBox.ModifyBg(Gtk.StateType.Normal, new Color(255, 255, 255));
            this.ComposerMode = MessageComposerMode.Idle;

            // This is workaround for a GTK bug where ctlReplyToBox.Visible = false
            // has no effect during initialization.
            updateUiLagger = new ActionLagger(UpdateUI, lagIntervalMs: 100);
            updateUiLagger.RequestAction(ActionLaggerQueueing.ForceDelayed);
        }
示例#9
0
        public GroupThreadScreen()
        {
            appContext   = AppContext.Default;
            yamsterCache = appContext.YamsterCache;

            this.Build();

            ctlGroupGrid.Columns[GroupGridColumn.ShouldSync].Visible = false;
            ctlGroupGrid.Columns[GroupGridColumn.TrackRead].Visible  = false;

            reloadGroupsLagger  = new ActionLagger(ReloadGroupsAction);
            reloadThreadsLagger = new ActionLagger(ReloadThreadsAction);

            reloadGroupsLagger.RequestAction();

            yamsterCache.GroupChanged  += yamsterCache_GroupChanged;
            yamsterCache.ThreadChanged += yamsterCache_ThreadChanged;
        }
示例#10
0
        public ThreadViewer()
        {
            appContext   = AppContext.Default;
            yamsterCache = appContext.YamsterCache;

            this.Build();

            RebuildView();

            rebuildViewLagger = new ActionLagger(RebuildView);

            GLib.Timeout.Add(500, ProcessLoadingTimeout);

            yamsterCache.MessageChanged += YamsterCache_MessageChanged;
            yamsterCache.ThreadChanged  += YamsterCache_ThreadChanged;

            UpdateUI();
        }
示例#11
0
        public ViewsScreen()
        {
            this.Build();

            this.appContext = AppContext.Default;

            showFocusedGridQueryLagger = new ActionLagger(ShowFocusedGridQueryAction);
            validateViewsLagger        = new ActionLagger(ValidateViewsAction);

            this.ctlNotebook.ShowTabs = false;

            ctlQueriesGrid.ItemType = typeof(GridQuery);

            SetupViewsGridColumns();

            ctlQueriesGrid.FormatCell += ctlQueriesGrid_FormatCell;

            SetupQueries();
        }
示例#12
0
        public UserChooserWindow()
            : base(Gtk.WindowType.Toplevel)
        {
            this.Build();

            // On Mac, this prevents the parent window from losing focus
            Debug.Assert(this.TypeHint == Gdk.WindowTypeHint.Normal);

            appContext   = AppContext.Default;
            yamsterCache = appContext.YamsterCache;

            ctlGrid.ItemType = typeof(YamsterUser);

            SetupColumns();

            ctlGrid.FilterDelegate = ctlGrid_Filter;

            reloadLagger = new ActionLagger(ReloadAction, 100);
            reloadLagger.RequestAction(ActionLaggerQueueing.ForceDelayed);
        }
示例#13
0
        public MainWindow()
            : base(Gtk.WindowType.Toplevel)
        {
            appContext   = AppContext.Default;
            yamsterCache = appContext.YamsterCache;

            MainWindow.ChatPaneWidth = appContext.Settings.ChatPaneWidth;

            Build();

            this.ctlChatPaneVBox.WidthRequest = MainWindow.ChatPaneWidth;

#if YAMSTER_MAC
            ctlMenuBar.Visible = false;
#endif
            ctlStatusBarMain.Push(0, "  Version " + Utilities.YamsterTerseVersion + "  -  https://github.com/octogonz/yamster");
            ctlStatusBarTotalYams.Push(0, "");
            SetStatusBarFormat(ctlStatusBarTotalYams, x => x.Xalign = 0.5f);
            ctlStatusBarSyncStatus.Push(0, "");
            SetStatusBarFormat(ctlStatusBarSyncStatus, x => x.Xalign = 0.5f);

            yamsterCache.MessageChanged += yamsterCache_MessageChanged;

            ctlViewsScreen.ThreadViewer         = ctlThreadViewer;
            ctlGroupThreadScreen.ThreadViewer   = ctlThreadViewer;
            ctlSearchScreen.ThreadViewer        = ctlThreadViewer;
            ctlConversationsScreen.ThreadViewer = ctlThreadViewer;

            ctlGroupConfigScreen.PerformLogin += ctlGroupConfigScreen_PerformLogin;

            updateStatusBarLagger = new ActionLagger(UpdateStatusBarAction);
            updateStatusBarLagger.RequestAction();

#if !DEBUG
            btnTest.Visible = false;
#endif
        }