/// <summary> /// Change the ownership of the ListViewLocker that is associated with the ListViewItem. /// </summary> /// <param name="lvi">The ListViewItem that should be updated.</param> /// <param name="ownership">A boolean to represent whether the user has ownership rights or not.</param> private void SetOwnership(ListViewItem lvi, bool ownership) { ListViewLocker lvl = _lvlManager.FindListViewLocker(lvi.Text); lvl.SetOwnership(ownership); lvi.SubItems[2].Text = lvl.HasOwnership() ? _languageManager.GetLanguage().BarItemOwnershipTrue : _languageManager.GetLanguage().BarItemOwnershipFalse; }
private void clearItemsToolStripMenuItem_Click(object sender, EventArgs e) { foreach (ListViewItem lvi in lsvItems.Items) { ListViewLocker lvl = (ListViewLocker)lvi; lvl.CancelTask(); } lsvItems.Items.Clear(); lsvDetails.Items.Clear(); imgFileIcons.Images.Clear(); }
/// <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); }
private void cancelCurrentOperationToolStripMenuItem_Click(object sender, EventArgs e) { if (lsvItems.SelectedItems.Count == 0) { return; } ListViewLocker selected = (ListViewLocker)lsvItems.SelectedItems[0]; if (CancelSelectedTask(selected)) { SetCancelled(selected); } }
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); }
/// <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); }
/// <summary> /// Open a file or folder into DeadLock. /// </summary> /// <param name="path">The path to the file or folder.</param> private void OpenPath(string path) { if (!File.Exists(path) && !Directory.Exists(path)) { return; } bool add = true; foreach (ListViewItem lv in lsvItems.Items) { if (lv.Text == path) { add = false; } } if (!add) { return; } Language l = LanguageManager.GetLanguage(); int index = lsvItems.Items.Count; ListViewLocker lvi = new ListViewLocker(path, l, index); lvi.SubItems.Add(l.MsgUnknown); Image img; if (File.GetAttributes(path).HasFlag(FileAttributes.Directory)) { img = Properties.Resources.folder; } else { Icon ico = Icon.ExtractAssociatedIcon(path); img = ico?.ToBitmap() ?? Properties.Resources.file; } imgFileIcons.Images.Add(img); img.Dispose(); lvi.SubItems.Add(lvi.HasOwnership() ? l.BarItemOwnershipTrue : l.BarItemOwnershipFalse); lsvItems.Items.Add(lvi); lsvItems.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); lsvItems.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }
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); } }
/// <summary> /// Open a file or folder into DeadLock. /// </summary> /// <param name="path">The path to the file or folder.</param> private void OpenPath(string path) { if (!File.Exists(path) && !Directory.Exists(path)) { return; } if (_lvlManager.FindListViewLocker(path) != null) { return; } Language l = _languageManager.GetLanguage(); int index = lsvItems.Items.Count; ListViewItem lvi = new ListViewItem { Text = path, UseItemStyleForSubItems = false, ImageIndex = index }; lvi.SubItems.Add(l.MsgUnknown); Image img; if (File.GetAttributes(path).HasFlag(FileAttributes.Directory)) { img = Properties.Resources.folder; } else { Icon ico = Icon.ExtractAssociatedIcon(path); img = ico?.ToBitmap() ?? Properties.Resources.file; } imgFileIcons.Images.Add(img); img.Dispose(); ListViewLocker lvl = new ListViewLocker(path, _languageManager.GetLanguage()); lvi.SubItems.Add(lvl.HasOwnership() ? l.BarItemOwnershipTrue : l.BarItemOwnershipFalse); lsvItems.Items.Add(lvi); _lvlManager.AddListViewLocker(lvl); lsvItems.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); lsvItems.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }
private void lsvItems_SelectedIndexChanged(object sender, EventArgs e) { lsvDetails.Items.Clear(); if (lsvItems.SelectedItems.Count == 0) { return; } ListViewLocker lvl = (ListViewLocker)lsvItems.SelectedItems[0]; foreach (ProcessLocker p in lvl.GetLockers()) { ListViewItem lvi = new ListViewItem { Text = p.GetFileName() }; lvi.SubItems.Add(p.GetFilePath()); lvi.SubItems.Add(p.GetProcessId().ToString()); lsvDetails.Items.Add(lvi); } }
/// <summary> /// Change the ownership of the ListViewLocker. /// </summary> /// <param name="lvi">The ListViewLocker that should be updated.</param> /// <param name="ownership">A boolean to represent whether the user has ownership rights or not.</param> private void SetOwnership(ListViewLocker lvi, bool ownership) { lvi.SetOwnership(ownership); lvi.SubItems[2].Text = lvi.HasOwnership() ? LanguageManager.GetLanguage().BarItemOwnershipTrue : LanguageManager.GetLanguage().BarItemOwnershipFalse; }
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); } }