예제 #1
0
 /// <summary>
 /// Cancel the ListViewLocker task, if applicable.
 /// </summary>
 /// <param name="lvi">The ListViewLocker that should be updated.</param>
 /// <returns>A boolean to represent whether the task was cancelled or not.</returns>
 private static bool CancelSelectedTask(ListViewLocker lvi)
 {
     if (lvi == null)
     {
         return(false);
     }
     if (!lvi.IsRunning())
     {
         return(false);
     }
     lvi.CancelTask();
     return(true);
 }
예제 #2
0
        private async void unlockToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (lsvItems.SelectedItems.Count == 0)
            {
                return;
            }

            Language       l        = _languageManager.GetLanguage();
            ListViewItem   selected = lsvItems.SelectedItems[0];
            ListViewLocker lvl      = _lvlManager.FindListViewLocker(selected.Text);

            CancelSelectedTask(selected);
            await Task.Run(() =>
            {
                while (lvl.IsRunning())
                {
                }
            });

            try
            {
                SetLoading(selected, 1);

                lvl.SetRunning(true);
                await lvl.Unlock();

                if (!lvl.HasCancelled())
                {
                    selected.SubItems[1].ForeColor = Color.Green;
                    selected.SubItems[1].Text      = l.MsgSuccessfullyUnlocked;
                }
                else
                {
                    SetCancelled(selected);
                }
            }
            catch (Exception ex)
            {
                MessageBoxAdv.Show(ex.Message + Environment.NewLine + ex.StackTrace, "DeadLock", MessageBoxButtons.OK, MessageBoxIcon.Error);
                selected.SubItems[1].ForeColor = Color.Red;
                selected.SubItems[1].Text      = l.MsgCouldNotUnlock;
            }
            finally
            {
                lvl.SetRunning(false);
            }

            lsvDetails.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
            lsvDetails.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
        }
예제 #3
0
        /// <summary>
        /// Cancel a ListViewLocker task, if applicable.
        /// </summary>
        /// <param name="lvi">The ListViewItem that is associated with a ListViewLocker.</param>
        /// <returns>A boolean to represent whether the task was cancelled or not.</returns>
        private bool CancelSelectedTask(ListViewItem lvi)
        {
            ListViewLocker lvl = _lvlManager.FindListViewLocker(lvi.Text);

            if (lvl == null)
            {
                return(false);
            }
            if (!lvl.IsRunning())
            {
                return(false);
            }
            lvl.CancelTask();
            return(true);
        }
예제 #4
0
        private async void moveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (lsvItems.SelectedItems.Count == 0)
            {
                return;
            }

            ListViewItem   selected = lsvItems.SelectedItems[0];
            ListViewLocker lvl      = _lvlManager.FindListViewLocker(selected.Text);
            Language       l        = _languageManager.GetLanguage();

            CancelSelectedTask(selected);
            await Task.Run(() =>
            {
                while (lvl.IsRunning())
                {
                }
            });

            try
            {
                SetLoading(selected, 1);

                lvl.SetRunning(true);
                await lvl.Move();

                if (!lvl.HasCancelled())
                {
                    selected.SubItems[1].ForeColor = Color.Green;
                    selected.SubItems[1].Text      = l.MsgSuccessfullyMoved;
                }
                else
                {
                    SetCancelled(selected);
                }
            }
            catch (Exception ex)
            {
                MessageBoxAdv.Show(ex.Message, "DeadLock", MessageBoxButtons.OK, MessageBoxIcon.Error);
                selected.SubItems[1].ForeColor = Color.Red;
                selected.SubItems[1].Text      = l.MsgCouldNotMove;
            }
            finally
            {
                lvl.SetRunning(false);
            }
        }
예제 #5
0
        private async void lsvItems_DoubleClick(object sender, EventArgs e)
        {
            if (lsvItems.SelectedItems.Count == 0)
            {
                return;
            }
            lsvDetails.Items.Clear();

            ListViewLocker lvl = (ListViewLocker)lsvItems.SelectedItems[0];
            Language       l   = LanguageManager.GetLanguage();

            try
            {
                CancelSelectedTask(lvl);
                await Task.Run(() =>
                {
                    while (lvl.IsRunning())
                    {
                    }
                });

                lvl.SetLocker(new List <ProcessLocker>());

                if (!File.Exists(lvl.Text) && !Directory.Exists(lvl.Text))
                {
                    imgFileIcons.Images.RemoveByKey(lvl.Text);
                    lsvItems.Items.Remove(lvl);
                    return;
                }

                SetLoading(lvl, 1);
                SetLoading(lvl, 2);

                lvl.SetRunning(true);
                List <ProcessLocker> lockers = await lvl.GetLockerDetails();

                if (!lvl.HasCancelled())
                {
                    if (lockers.Count == 0)
                    {
                        lvl.SubItems[1].Text      = l.MsgUnlocked;
                        lvl.SubItems[1].ForeColor = Color.Green;
                    }
                    else
                    {
                        lvl.SubItems[1].Text      = l.MsgLocked;
                        lvl.SubItems[1].ForeColor = Color.Red;
                    }
                    lvl.SubItems[2].Text = lvl.HasOwnership() ? l.BarItemOwnershipTrue : l.BarItemOwnershipFalse;

                    foreach (ProcessLocker p in lockers)
                    {
                        ListViewItem lvi = new ListViewItem {
                            Text = p.GetFileName()
                        };
                        lvi.SubItems.Add(p.GetFilePath());
                        lvi.SubItems.Add(p.GetProcessId().ToString());

                        lsvDetails.Items.Add(lvi);
                    }
                    lvl.SetLocker(lockers);

                    lsvDetails.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
                    lsvDetails.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
                }
                else
                {
                    lvl.SetLocker(new List <ProcessLocker>());
                    SetCancelled(lvl);
                }
            }
            catch (Exception ex)
            {
                MessageBoxAdv.Show(ex.Message, "DeadLock", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                lvl.SetRunning(false);
            }
        }