Exemple #1
0
 private ListViewItem TryFindListViewItemByGitTask(GitTask task)
 {
     return(this.ListView_Tasks
            .InvokeSafe((lv, lvState) =>
     {
         return CollectionHelper.SingleOrDefault(lv.Items
                                                 .Cast <ListViewItem>(),
                                                 lvi => object.Equals(lvi.Tag, lvState.Task));
     }, funcState: new
     {
         Task = task,
     }));
 }
Exemple #2
0
        private void ReloadTasks()
        {
            this.Button_ReloadConfig
            .InvokeSafe((btn) => btn.Enabled = false);

            Task.Factory.StartNew((state) =>
            {
                var frm = (MainForm)state;
                try
                {
                    var config = new IniFileConfigRepository(@"./config.ini");

                    frm.ListView_Tasks
                    .InvokeSafe((lv, lvState) =>
                    {
                        try
                        {
                            lv.Items.Clear();
                            while (lv.Items.Count > 0)
                            {
                                var t      = lv.Items[0].Tag as GitTask;
                                t.Error   -= lvState.Form.Task_Error;
                                t.Started -= lvState.Form.Task_Started;
                                t.Stopped -= lvState.Form.Task_Stopped;

                                lv.Items.RemoveAt(0);
                            }

                            lv.Groups.Clear();

                            foreach (var grpName in GitTask.FromConfig(lvState.Config)
                                     .Select(t => t.Group)
                                     .Distinct()
                                     .OrderBy(gn => gn, StringComparer.CurrentCultureIgnoreCase))
                            {
                                var lvg    = new ListViewGroup();
                                lvg.Header = string.IsNullOrWhiteSpace(grpName) ? "(no group)" : grpName;
                                lvg.Tag    = grpName;

                                lv.Groups.Add(lvg);
                            }

                            foreach (var task in GitTask.FromConfig(lvState.Config)
                                     .OrderBy(t => t.DisplayName, StringComparer.CurrentCultureIgnoreCase))
                            {
                                try
                                {
                                    var lvi  = new ListViewItem();
                                    lvi.Text = task.DisplayName ?? string.Empty;
                                    lvi.Text = task.DisplayName ?? string.Empty;
                                    lvi.Tag  = task;

                                    lvi.Group = CollectionHelper.SingleOrDefault(lv.Groups
                                                                                 .Cast <ListViewGroup>(),
                                                                                 lvg => object.Equals(lvg.Tag, task.Group));

                                    try
                                    {
                                        task.Error   += lvState.Form.Task_Error;
                                        task.Started += lvState.Form.Task_Started;
                                        task.Stopped += lvState.Form.Task_Stopped;

                                        lv.Items.Add(lvi);
                                        lvState.Form.UpdateIcon(lvi);
                                    }
                                    catch
                                    {
                                        task.Error   -= lvState.Form.Task_Error;
                                        task.Started -= lvState.Form.Task_Started;
                                        task.Stopped -= lvState.Form.Task_Stopped;

                                        throw;
                                    }
                                }
                                catch (Exception ex)
                                {
                                    lvState.Form.ShowError(ex);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            lvState.Form.ShowError(ex);
                        }
                    }, actionState: new
                    {
                        Config = config,
                        Form   = frm,
                    });
                }
                catch (Exception ex)
                {
                    frm.ShowError(ex);
                }
                finally
                {
                    frm.Button_ReloadConfig
                    .InvokeSafe((btn) => btn.Enabled = true);
                }
            }, state: this);
        }