Fixed secondary uploaders reorder

DoDragDrop was disabling MouseMove Events
This commit is contained in:
mcored 2014-04-13 20:01:11 +08:00
parent 7916e33391
commit 6ddc965ea2
3 changed files with 128 additions and 163 deletions

View file

@ -132,71 +132,6 @@ protected override void WndProc(ref Message m)
}
}
protected override void OnItemDrag(ItemDragEventArgs e)
{
base.OnItemDrag(e);
this.DoDragDrop(this.SelectedItems, DragDropEffects.Move);
}
protected override void OnDragEnter(DragEventArgs drgevent)
{
base.OnDragEnter(drgevent);
int len = drgevent.Data.GetFormats().Length - 1;
int i;
for (i = 0; i <= len; i++)
{
if (drgevent.Data.GetFormats()[i].Equals("System.Windows.Forms.ListView+SelectedListViewItemCollection"))
{
drgevent.Effect = DragDropEffects.Move;
}
}
}
protected override void OnDragDrop(DragEventArgs drgevent)
{
base.OnDragDrop(drgevent);
if (this.SelectedItems.Count == 0)
{
return;
}
Point cp = this.PointToClient(new Point(drgevent.X, drgevent.Y));
ListViewItem dragToItem = this.GetItemAt(cp.X, cp.Y);
if (dragToItem == null)
{
return;
}
int dragIndex = dragToItem.Index;
ListViewItem[] sel = new ListViewItem[this.SelectedItems.Count];
for (int i = 0; i <= this.SelectedItems.Count - 1; i++)
{
sel[i] = this.SelectedItems[i];
}
for (int i = 0; i < sel.GetLength(0); i++)
{
ListViewItem dragItem = sel[i];
int itemIndex = dragIndex;
if (itemIndex == dragItem.Index)
{
return;
}
if (dragItem.Index < itemIndex)
{
itemIndex++;
}
else
{
itemIndex = dragIndex + i;
}
ListViewItem insertItem = (ListViewItem)dragItem.Clone();
this.Items.Insert(itemIndex, insertItem);
this.Items.Remove(dragItem);
}
}
private void DrawInsertionLine(int X1, int X2, int Y)
{
using (Graphics g = this.CreateGraphics())

View file

@ -82,21 +82,12 @@ private void InitializeComponent()
this.btnClipboardFormatEdit = new System.Windows.Forms.Button();
this.btnClipboardFormatRemove = new System.Windows.Forms.Button();
this.btnClipboardFormatAdd = new System.Windows.Forms.Button();
this.lvClipboardFormats = new HelpersLib.MyListView();
this.chDescription = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.chFormat = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.tpUploadRetry = new System.Windows.Forms.TabPage();
this.chkUseSecondaryUploaders = new System.Windows.Forms.CheckBox();
this.tlpBackupDestinations = new System.Windows.Forms.TableLayoutPanel();
this.gbSecondaryImageUploaders = new System.Windows.Forms.GroupBox();
this.lvSecondaryImageUploaders = new HelpersLib.MyListView();
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.gbSecondaryFileUploaders = new System.Windows.Forms.GroupBox();
this.lvSecondaryFileUploaders = new HelpersLib.MyListView();
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.gbSecondaryTextUploaders = new System.Windows.Forms.GroupBox();
this.lvSecondaryTextUploaders = new HelpersLib.MyListView();
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.cbIfUploadFailRetryOnce = new System.Windows.Forms.Label();
this.nudRetryUpload = new System.Windows.Forms.NumericUpDown();
this.tpPrint = new System.Windows.Forms.TabPage();
@ -104,6 +95,15 @@ private void InitializeComponent()
this.btnShowImagePrintSettings = new System.Windows.Forms.Button();
this.tpAdvanced = new System.Windows.Forms.TabPage();
this.pgSettings = new System.Windows.Forms.PropertyGrid();
this.lvClipboardFormats = new HelpersLib.MyListView();
this.chDescription = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.chFormat = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.lvSecondaryImageUploaders = new HelpersLib.MyListView();
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.lvSecondaryFileUploaders = new HelpersLib.MyListView();
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.lvSecondaryTextUploaders = new HelpersLib.MyListView();
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.tcSettings.SuspendLayout();
this.tpGeneral.SuspendLayout();
this.tpPaths.SuspendLayout();
@ -706,30 +706,6 @@ private void InitializeComponent()
this.btnClipboardFormatAdd.UseVisualStyleBackColor = true;
this.btnClipboardFormatAdd.Click += new System.EventHandler(this.btnAddClipboardFormat_Click);
//
// lvClipboardFormats
//
this.lvClipboardFormats.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.chDescription,
this.chFormat});
this.lvClipboardFormats.FullRowSelect = true;
this.lvClipboardFormats.Location = new System.Drawing.Point(8, 48);
this.lvClipboardFormats.Name = "lvClipboardFormats";
this.lvClipboardFormats.Size = new System.Drawing.Size(472, 104);
this.lvClipboardFormats.TabIndex = 3;
this.lvClipboardFormats.UseCompatibleStateImageBehavior = false;
this.lvClipboardFormats.View = System.Windows.Forms.View.Details;
this.lvClipboardFormats.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lvClipboardFormats_MouseDoubleClick);
//
// chDescription
//
this.chDescription.Text = "Description";
this.chDescription.Width = 135;
//
// chFormat
//
this.chFormat.Text = "Format";
this.chFormat.Width = 320;
//
// tpUploadRetry
//
this.tpUploadRetry.Controls.Add(this.chkUseSecondaryUploaders);
@ -783,27 +759,6 @@ private void InitializeComponent()
this.gbSecondaryImageUploaders.TabStop = false;
this.gbSecondaryImageUploaders.Text = "Secondary image uploaders";
//
// lvSecondaryImageUploaders
//
this.lvSecondaryImageUploaders.AllowDrop = true;
this.lvSecondaryImageUploaders.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.lvSecondaryImageUploaders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1});
this.lvSecondaryImageUploaders.Dock = System.Windows.Forms.DockStyle.Fill;
this.lvSecondaryImageUploaders.FullRowSelect = true;
this.lvSecondaryImageUploaders.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
this.lvSecondaryImageUploaders.HideSelection = false;
this.lvSecondaryImageUploaders.Location = new System.Drawing.Point(3, 16);
this.lvSecondaryImageUploaders.MultiSelect = false;
this.lvSecondaryImageUploaders.Name = "lvSecondaryImageUploaders";
this.lvSecondaryImageUploaders.Size = new System.Drawing.Size(192, 252);
this.lvSecondaryImageUploaders.TabIndex = 0;
this.lvSecondaryImageUploaders.UseCompatibleStateImageBehavior = false;
this.lvSecondaryImageUploaders.View = System.Windows.Forms.View.Details;
this.lvSecondaryImageUploaders.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseDown);
this.lvSecondaryImageUploaders.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseMove);
this.lvSecondaryImageUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp);
//
// gbSecondaryFileUploaders
//
this.gbSecondaryFileUploaders.Controls.Add(this.lvSecondaryFileUploaders);
@ -815,26 +770,6 @@ private void InitializeComponent()
this.gbSecondaryFileUploaders.TabStop = false;
this.gbSecondaryFileUploaders.Text = "Secondary file uploaders";
//
// lvSecondaryFileUploaders
//
this.lvSecondaryFileUploaders.AllowDrop = true;
this.lvSecondaryFileUploaders.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.lvSecondaryFileUploaders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader3});
this.lvSecondaryFileUploaders.Dock = System.Windows.Forms.DockStyle.Fill;
this.lvSecondaryFileUploaders.FullRowSelect = true;
this.lvSecondaryFileUploaders.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
this.lvSecondaryFileUploaders.Location = new System.Drawing.Point(3, 16);
this.lvSecondaryFileUploaders.MultiSelect = false;
this.lvSecondaryFileUploaders.Name = "lvSecondaryFileUploaders";
this.lvSecondaryFileUploaders.Size = new System.Drawing.Size(194, 252);
this.lvSecondaryFileUploaders.TabIndex = 1;
this.lvSecondaryFileUploaders.UseCompatibleStateImageBehavior = false;
this.lvSecondaryFileUploaders.View = System.Windows.Forms.View.Details;
this.lvSecondaryFileUploaders.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseDown);
this.lvSecondaryFileUploaders.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseMove);
this.lvSecondaryFileUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp);
//
// gbSecondaryTextUploaders
//
this.gbSecondaryTextUploaders.Controls.Add(this.lvSecondaryTextUploaders);
@ -846,26 +781,6 @@ private void InitializeComponent()
this.gbSecondaryTextUploaders.TabStop = false;
this.gbSecondaryTextUploaders.Text = "Secondary text uploaders";
//
// lvSecondaryTextUploaders
//
this.lvSecondaryTextUploaders.AllowDrop = true;
this.lvSecondaryTextUploaders.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.lvSecondaryTextUploaders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader2});
this.lvSecondaryTextUploaders.Dock = System.Windows.Forms.DockStyle.Fill;
this.lvSecondaryTextUploaders.FullRowSelect = true;
this.lvSecondaryTextUploaders.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
this.lvSecondaryTextUploaders.Location = new System.Drawing.Point(3, 16);
this.lvSecondaryTextUploaders.MultiSelect = false;
this.lvSecondaryTextUploaders.Name = "lvSecondaryTextUploaders";
this.lvSecondaryTextUploaders.Size = new System.Drawing.Size(198, 252);
this.lvSecondaryTextUploaders.TabIndex = 1;
this.lvSecondaryTextUploaders.UseCompatibleStateImageBehavior = false;
this.lvSecondaryTextUploaders.View = System.Windows.Forms.View.Details;
this.lvSecondaryTextUploaders.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseDown);
this.lvSecondaryTextUploaders.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseMove);
this.lvSecondaryTextUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp);
//
// cbIfUploadFailRetryOnce
//
this.cbIfUploadFailRetryOnce.AutoSize = true;
@ -941,6 +856,91 @@ private void InitializeComponent()
this.pgSettings.Size = new System.Drawing.Size(644, 364);
this.pgSettings.TabIndex = 0;
//
// lvClipboardFormats
//
this.lvClipboardFormats.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.chDescription,
this.chFormat});
this.lvClipboardFormats.FullRowSelect = true;
this.lvClipboardFormats.Location = new System.Drawing.Point(8, 48);
this.lvClipboardFormats.Name = "lvClipboardFormats";
this.lvClipboardFormats.Size = new System.Drawing.Size(472, 104);
this.lvClipboardFormats.TabIndex = 3;
this.lvClipboardFormats.UseCompatibleStateImageBehavior = false;
this.lvClipboardFormats.View = System.Windows.Forms.View.Details;
this.lvClipboardFormats.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lvClipboardFormats_MouseDoubleClick);
//
// chDescription
//
this.chDescription.Text = "Description";
this.chDescription.Width = 135;
//
// chFormat
//
this.chFormat.Text = "Format";
this.chFormat.Width = 320;
//
// lvSecondaryImageUploaders
//
this.lvSecondaryImageUploaders.AllowDrop = true;
this.lvSecondaryImageUploaders.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.lvSecondaryImageUploaders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1});
this.lvSecondaryImageUploaders.Dock = System.Windows.Forms.DockStyle.Fill;
this.lvSecondaryImageUploaders.FullRowSelect = true;
this.lvSecondaryImageUploaders.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
this.lvSecondaryImageUploaders.HideSelection = false;
this.lvSecondaryImageUploaders.Location = new System.Drawing.Point(3, 16);
this.lvSecondaryImageUploaders.MultiSelect = false;
this.lvSecondaryImageUploaders.Name = "lvSecondaryImageUploaders";
this.lvSecondaryImageUploaders.Size = new System.Drawing.Size(192, 252);
this.lvSecondaryImageUploaders.TabIndex = 0;
this.lvSecondaryImageUploaders.UseCompatibleStateImageBehavior = false;
this.lvSecondaryImageUploaders.View = System.Windows.Forms.View.Details;
this.lvSecondaryImageUploaders.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseDown);
this.lvSecondaryImageUploaders.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseMove);
this.lvSecondaryImageUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp);
//
// lvSecondaryFileUploaders
//
this.lvSecondaryFileUploaders.AllowDrop = true;
this.lvSecondaryFileUploaders.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.lvSecondaryFileUploaders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader3});
this.lvSecondaryFileUploaders.Dock = System.Windows.Forms.DockStyle.Fill;
this.lvSecondaryFileUploaders.FullRowSelect = true;
this.lvSecondaryFileUploaders.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
this.lvSecondaryFileUploaders.Location = new System.Drawing.Point(3, 16);
this.lvSecondaryFileUploaders.MultiSelect = false;
this.lvSecondaryFileUploaders.Name = "lvSecondaryFileUploaders";
this.lvSecondaryFileUploaders.Size = new System.Drawing.Size(194, 252);
this.lvSecondaryFileUploaders.TabIndex = 1;
this.lvSecondaryFileUploaders.UseCompatibleStateImageBehavior = false;
this.lvSecondaryFileUploaders.View = System.Windows.Forms.View.Details;
this.lvSecondaryFileUploaders.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseDown);
this.lvSecondaryFileUploaders.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseMove);
this.lvSecondaryFileUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp);
//
// lvSecondaryTextUploaders
//
this.lvSecondaryTextUploaders.AllowDrop = true;
this.lvSecondaryTextUploaders.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.lvSecondaryTextUploaders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader2});
this.lvSecondaryTextUploaders.Dock = System.Windows.Forms.DockStyle.Fill;
this.lvSecondaryTextUploaders.FullRowSelect = true;
this.lvSecondaryTextUploaders.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
this.lvSecondaryTextUploaders.Location = new System.Drawing.Point(3, 16);
this.lvSecondaryTextUploaders.MultiSelect = false;
this.lvSecondaryTextUploaders.Name = "lvSecondaryTextUploaders";
this.lvSecondaryTextUploaders.Size = new System.Drawing.Size(198, 252);
this.lvSecondaryTextUploaders.TabIndex = 1;
this.lvSecondaryTextUploaders.UseCompatibleStateImageBehavior = false;
this.lvSecondaryTextUploaders.View = System.Windows.Forms.View.Details;
this.lvSecondaryTextUploaders.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseDown);
this.lvSecondaryTextUploaders.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseMove);
this.lvSecondaryTextUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp);
//
// ApplicationSettingsForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

View file

@ -430,14 +430,12 @@ private void lvSecondaryUploaders_MouseDown(object sender, MouseEventArgs e)
{
MyListView lv = sender as MyListView;
_itemDnD = lv.GetItemAt(e.X, e.Y);
Console.WriteLine(_itemDnD.Tag.ToString());
}
private void lvSecondaryUploaders_MouseMove(object sender, MouseEventArgs e)
{
if (_itemDnD != null)
{
Console.WriteLine(_itemDnD.Tag.ToString());
Cursor = Cursors.Hand;
MyListView lv = sender as MyListView;
@ -466,14 +464,46 @@ private void lvSecondaryUploaders_MouseMove(object sender, MouseEventArgs e)
private void lvSecondaryUploaders_MouseUp(object sender, MouseEventArgs e)
{
MyListView lv = sender as MyListView;
if (_itemDnD == null)
return;
MyListView lv = sender as MyListView;
try
{
int lastItemBottom = Math.Min(e.Y, lv.Items[lv.Items.Count - 1].GetBounds(ItemBoundsPortion.Entire).Bottom - 1);
ListViewItem itemOver = lv.GetItemAt(0, lastItemBottom);
if (itemOver == null)
return;
Rectangle rc = itemOver.GetBounds(ItemBoundsPortion.Entire);
bool insertBefore;
if (e.Y < rc.Top + (rc.Height / 2))
{
insertBefore = true;
}
else
{
insertBefore = false;
}
if (_itemDnD != itemOver)
{
if (insertBefore)
{
lv.Items.Remove(_itemDnD);
lv.Items.Insert(itemOver.Index, _itemDnD);
}
else
{
lv.Items.Remove(_itemDnD);
lv.Items.Insert(itemOver.Index + 1, _itemDnD);
}
}
lv.LineAfter = lv.LineBefore = -1;
lv.Invalidate();
}
finally