OSDN Git Service

重複する処理をひとまとめにした
authorspx <spx268@gmail.com>
Sun, 2 Mar 2014 16:39:03 +0000 (01:39 +0900)
committerspx <spx268@gmail.com>
Sun, 2 Mar 2014 16:39:03 +0000 (01:39 +0900)
他、微調整

OpenTween/Tween.cs

index 98f990b..4baea22 100644 (file)
@@ -427,6 +427,110 @@ namespace OpenTween
             LoadIcon(ref ReplyIconBlink, "Icons\\ReplyBlink.ico");
         }
 
+        private void InitColumns(ListView list, bool startup)
+        {
+            ColumnHeader _colHd1 = new ColumnHeader();  //アイコン
+            ColumnHeader _colHd2 = new ColumnHeader();  //ニックネーム
+            ColumnHeader _colHd3 = new ColumnHeader();  //本文
+            ColumnHeader _colHd4 = new ColumnHeader();  //日付
+            ColumnHeader _colHd5 = new ColumnHeader();  //ユーザID
+            ColumnHeader _colHd6 = new ColumnHeader();  //未読
+            ColumnHeader _colHd7 = new ColumnHeader();  //マーク&プロテクト
+            ColumnHeader _colHd8 = new ColumnHeader();  //ソース
+
+            if (!_iconCol)
+            {
+                list.Columns.AddRange(new ColumnHeader[] { _colHd1, _colHd2, _colHd3, _colHd4, _colHd5, _colHd6, _colHd7, _colHd8 });
+            }
+            else
+            {
+                list.Columns.AddRange(new ColumnHeader[] { _colHd1, _colHd3 });
+            }
+
+            InitColumnText();
+            _colHd1.Text = ColumnText[0];
+            _colHd1.Width = 48;
+            _colHd2.Text = ColumnText[1];
+            _colHd2.Width = 80;
+            _colHd3.Text = ColumnText[2];
+            _colHd3.Width = 300;
+            _colHd4.Text = ColumnText[3];
+            _colHd4.Width = 50;
+            _colHd5.Text = ColumnText[4];
+            _colHd5.Width = 50;
+            _colHd6.Text = ColumnText[5];
+            _colHd6.Width = 16;
+            _colHd7.Text = ColumnText[6];
+            _colHd7.Width = 16;
+            _colHd8.Text = ColumnText[7];
+            _colHd8.Width = 50;
+
+            int[] dispOrder = new int[8];
+            if (!startup)
+            {
+                for (int i = 0; i < _curList.Columns.Count; i++)
+                {
+                    for (int j = 0; j < _curList.Columns.Count; j++)
+                    {
+                        if (_curList.Columns[j].DisplayIndex == i)
+                        {
+                            dispOrder[i] = j;
+                            break;
+                        }
+                    }
+                }
+                for (int i = 0; i < _curList.Columns.Count; i++)
+                {
+                    list.Columns[i].Width = _curList.Columns[i].Width;
+                    list.Columns[dispOrder[i]].DisplayIndex = i;
+                }
+            }
+            else
+            {
+                if (_iconCol)
+                {
+                    list.Columns[0].Width = _cfgLocal.Width1;
+                    list.Columns[1].Width = _cfgLocal.Width3;
+                    list.Columns[0].DisplayIndex = 0;
+                    list.Columns[1].DisplayIndex = 1;
+                }
+                else
+                {
+                    for (int i = 0; i <= 7; i++)
+                    {
+                        if (_cfgLocal.DisplayIndex1 == i)
+                            dispOrder[i] = 0;
+                        else if (_cfgLocal.DisplayIndex2 == i)
+                            dispOrder[i] = 1;
+                        else if (_cfgLocal.DisplayIndex3 == i)
+                            dispOrder[i] = 2;
+                        else if (_cfgLocal.DisplayIndex4 == i)
+                            dispOrder[i] = 3;
+                        else if (_cfgLocal.DisplayIndex5 == i)
+                            dispOrder[i] = 4;
+                        else if (_cfgLocal.DisplayIndex6 == i)
+                            dispOrder[i] = 5;
+                        else if (_cfgLocal.DisplayIndex7 == i)
+                            dispOrder[i] = 6;
+                        else if (_cfgLocal.DisplayIndex8 == i)
+                            dispOrder[i] = 7;
+                    }
+                    list.Columns[0].Width = _cfgLocal.Width1;
+                    list.Columns[1].Width = _cfgLocal.Width2;
+                    list.Columns[2].Width = _cfgLocal.Width3;
+                    list.Columns[3].Width = _cfgLocal.Width4;
+                    list.Columns[4].Width = _cfgLocal.Width5;
+                    list.Columns[5].Width = _cfgLocal.Width6;
+                    list.Columns[6].Width = _cfgLocal.Width7;
+                    list.Columns[7].Width = _cfgLocal.Width8;
+                    for (int i = 0; i <= 7; i++)
+                    {
+                        list.Columns[dispOrder[i]].DisplayIndex = i;
+                    }
+                }
+            }
+        }
+
         private void InitColumnText()
         {
             ColumnText[0] = "";
@@ -4052,24 +4156,10 @@ namespace OpenTween
                         {
                             DetailsListView lst = (DetailsListView)tp.Tag;
 
-                            lst.SuspendLayout();
                             lst.BeginUpdate();
+                            lst.SuspendLayout();
 
-                            lst.SelectedIndexChanged -= MyList_SelectedIndexChanged;
-                            lst.MouseDoubleClick -= MyList_MouseDoubleClick;
-                            lst.ColumnClick -= MyList_ColumnClick;
-                            lst.DrawColumnHeader -= MyList_DrawColumnHeader;
-                            lst.DragDrop -= TweenMain_DragDrop;
-                            lst.DragOver -= TweenMain_DragOver;
-                            lst.DrawItem -= MyList_DrawItem;
-                            lst.MouseClick -= MyList_MouseClick;
-                            lst.ColumnReordered -= MyList_ColumnReordered;
-                            lst.ColumnWidthChanged -= MyList_ColumnWidthChanged;
-                            lst.CacheVirtualItems -= MyList_CacheVirtualItems;
-                            lst.RetrieveVirtualItem -= MyList_RetrieveVirtualItem;
-                            lst.DrawSubItem -= MyList_DrawSubItem;
-                            lst.HScrolled -= MyList_HScrolled;
-
+                            // アイコンサイズの再設定
                             _iconCol = false;
                             switch (SettingDialog.IconSz)
                             {
@@ -4116,114 +4206,26 @@ namespace OpenTween
                             lst.Font = _fntReaded;
                             lst.BackColor = _clListBackcolor;
 
-                            var columns = new List<ColumnHeader>();
-                            foreach (ColumnHeader col in lst.Columns)
-                            {
-                                columns.Add(col);
-                            }
+                            // カラムヘッダの再設定
+                            lst.ColumnClick -= MyList_ColumnClick;
+                            lst.DrawColumnHeader -= MyList_DrawColumnHeader;
+                            lst.ColumnReordered -= MyList_ColumnReordered;
+                            lst.ColumnWidthChanged -= MyList_ColumnWidthChanged;
+
+                            var cols = new List<ColumnHeader>(lst.Columns.OfType<ColumnHeader>());
                             lst.Columns.Clear();
-                            foreach (ColumnHeader col in columns)
-                            {
-                                col.Dispose();
-                            }
-                            columns.Clear();
-
-                            ColumnHeader _colHd1 = new ColumnHeader();  //アイコン
-                            ColumnHeader _colHd2 = new ColumnHeader();   //ニックネーム
-                            ColumnHeader _colHd3 = new ColumnHeader();   //本文
-                            ColumnHeader _colHd4 = new ColumnHeader();   //日付
-                            ColumnHeader _colHd5 = new ColumnHeader();   //ユーザID
-                            ColumnHeader _colHd6 = new ColumnHeader();   //未読
-                            ColumnHeader _colHd7 = new ColumnHeader();   //マーク&プロテクト
-                            ColumnHeader _colHd8 = new ColumnHeader();   //ソース
-
-                            if (!_iconCol)
-                            {
-                                lst.Columns.AddRange(new ColumnHeader[] { _colHd1, _colHd2, _colHd3, _colHd4, _colHd5, _colHd6, _colHd7, _colHd8 });
-                            }
-                            else
-                            {
-                                lst.Columns.AddRange(new ColumnHeader[] { _colHd1, _colHd3 });
-                            }
+                            cols.ForEach(col => col.Dispose());
+                            cols.Clear();
 
-                            InitColumnText();
-                            _colHd1.Text = ColumnText[0];
-                            _colHd1.Width = 48;
-                            _colHd2.Text = ColumnText[1];
-                            _colHd2.Width = 80;
-                            _colHd3.Text = ColumnText[2];
-                            _colHd3.Width = 300;
-                            _colHd4.Text = ColumnText[3];
-                            _colHd4.Width = 50;
-                            _colHd5.Text = ColumnText[4];
-                            _colHd5.Width = 50;
-                            _colHd6.Text = ColumnText[5];
-                            _colHd6.Width = 16;
-                            _colHd7.Text = ColumnText[6];
-                            _colHd7.Width = 16;
-                            _colHd8.Text = ColumnText[7];
-                            _colHd8.Width = 50;
-
-                            int[] dispOrder = new int[8];
-                            if (_iconCol)
-                            {
-                                lst.Columns[0].Width = _cfgLocal.Width1;
-                                lst.Columns[1].Width = _cfgLocal.Width3;
-                                lst.Columns[0].DisplayIndex = 0;
-                                lst.Columns[1].DisplayIndex = 1;
-                            }
-                            else
-                            {
-                                for (int i = 0; i <= 7; i++)
-                                {
-                                    if (_cfgLocal.DisplayIndex1 == i)
-                                        dispOrder[i] = 0;
-                                    else if (_cfgLocal.DisplayIndex2 == i)
-                                        dispOrder[i] = 1;
-                                    else if (_cfgLocal.DisplayIndex3 == i)
-                                        dispOrder[i] = 2;
-                                    else if (_cfgLocal.DisplayIndex4 == i)
-                                        dispOrder[i] = 3;
-                                    else if (_cfgLocal.DisplayIndex5 == i)
-                                        dispOrder[i] = 4;
-                                    else if (_cfgLocal.DisplayIndex6 == i)
-                                        dispOrder[i] = 5;
-                                    else if (_cfgLocal.DisplayIndex7 == i)
-                                        dispOrder[i] = 6;
-                                    else if (_cfgLocal.DisplayIndex8 == i)
-                                        dispOrder[i] = 7;
-                                }
-                                lst.Columns[0].Width = _cfgLocal.Width1;
-                                lst.Columns[1].Width = _cfgLocal.Width2;
-                                lst.Columns[2].Width = _cfgLocal.Width3;
-                                lst.Columns[3].Width = _cfgLocal.Width4;
-                                lst.Columns[4].Width = _cfgLocal.Width5;
-                                lst.Columns[5].Width = _cfgLocal.Width6;
-                                lst.Columns[6].Width = _cfgLocal.Width7;
-                                lst.Columns[7].Width = _cfgLocal.Width8;
-                                for (int i = 0; i <= 7; i++)
-                                {
-                                    lst.Columns[dispOrder[i]].DisplayIndex = i;
-                                }
-                            }
+                            InitColumns(lst, true);
 
-                            lst.SelectedIndexChanged += MyList_SelectedIndexChanged;
-                            lst.MouseDoubleClick += MyList_MouseDoubleClick;
                             lst.ColumnClick += MyList_ColumnClick;
                             lst.DrawColumnHeader += MyList_DrawColumnHeader;
-                            lst.DragDrop += TweenMain_DragDrop;
-                            lst.DragOver += TweenMain_DragOver;
-                            lst.DrawItem += MyList_DrawItem;
-                            lst.MouseClick += MyList_MouseClick;
                             lst.ColumnReordered += MyList_ColumnReordered;
                             lst.ColumnWidthChanged += MyList_ColumnWidthChanged;
-                            lst.CacheVirtualItems += MyList_CacheVirtualItems;
-                            lst.RetrieveVirtualItem += MyList_RetrieveVirtualItem;
-                            lst.DrawSubItem += MyList_DrawSubItem;
-                            lst.HScrolled += MyList_HScrolled;
 
-                            lst.EndUpdate();
                             lst.ResumeLayout(false);
+                            lst.EndUpdate();
                         }
                     }
                     catch (Exception ex)
@@ -4461,19 +4463,12 @@ namespace OpenTween
 
             TabPage _tabPage = new TabPage();
             DetailsListView _listCustom = new DetailsListView();
-            ColumnHeader _colHd1 = new ColumnHeader();  //アイコン
-            ColumnHeader _colHd2 = new ColumnHeader();   //ニックネーム
-            ColumnHeader _colHd3 = new ColumnHeader();   //本文
-            ColumnHeader _colHd4 = new ColumnHeader();   //日付
-            ColumnHeader _colHd5 = new ColumnHeader();   //ユーザID
-            ColumnHeader _colHd6 = new ColumnHeader();   //未読
-            ColumnHeader _colHd7 = new ColumnHeader();   //マーク&プロテクト
-            ColumnHeader _colHd8 = new ColumnHeader();   //ソース
 
             int cnt = ListTab.TabPages.Count;
 
             ///ToDo:Create and set controls follow tabtypes
 
+            _listCustom.BeginUpdate();
             this.SplitContainer1.Panel1.SuspendLayout();
             this.SplitContainer1.Panel2.SuspendLayout();
             this.SplitContainer1.SuspendLayout();
@@ -4602,14 +4597,6 @@ namespace OpenTween
             _tabPage.UseVisualStyleBackColor = true;
 
             _listCustom.AllowColumnReorder = true;
-            if (!_iconCol)
-            {
-                _listCustom.Columns.AddRange(new ColumnHeader[] {_colHd1, _colHd2, _colHd3, _colHd4, _colHd5, _colHd6, _colHd7, _colHd8});
-            }
-            else
-            {
-                _listCustom.Columns.AddRange(new ColumnHeader[] {_colHd1, _colHd3});
-            }
             _listCustom.ContextMenuStrip = this.ContextMenuOperate;
             _listCustom.Dock = DockStyle.Fill;
             _listCustom.FullRowSelect = true;
@@ -4629,6 +4616,21 @@ namespace OpenTween
             _listCustom.GridLines = SettingDialog.ShowGrid;
             _listCustom.AllowDrop = true;
 
+            _listCustom.SmallImageList = new ImageList();
+            if (_iconSz > 0)
+            {
+                // ディスプレイの DPI 設定を考慮したサイズを設定する
+                _listCustom.SmallImageList.ImageSize = new Size(
+                    (int)Math.Ceiling(this._iconSz * this.currentScaleFactor.Width),
+                    (int)Math.Ceiling(this._iconSz * this.currentScaleFactor.Height));
+            }
+            else
+            {
+                _listCustom.SmallImageList.ImageSize = new Size(1, 1);
+            }
+
+            InitColumns(_listCustom, startup);
+
             _listCustom.SelectedIndexChanged += MyList_SelectedIndexChanged;
             _listCustom.MouseDoubleClick += MyList_MouseDoubleClick;
             _listCustom.ColumnClick += MyList_ColumnClick;
@@ -4644,102 +4646,6 @@ namespace OpenTween
             _listCustom.DrawSubItem += MyList_DrawSubItem;
             _listCustom.HScrolled += MyList_HScrolled;
 
-            InitColumnText();
-            _colHd1.Text = ColumnText[0];
-            _colHd1.Width = 48;
-            _colHd2.Text = ColumnText[1];
-            _colHd2.Width = 80;
-            _colHd3.Text = ColumnText[2];
-            _colHd3.Width = 300;
-            _colHd4.Text = ColumnText[3];
-            _colHd4.Width = 50;
-            _colHd5.Text = ColumnText[4];
-            _colHd5.Width = 50;
-            _colHd6.Text = ColumnText[5];
-            _colHd6.Width = 16;
-            _colHd7.Text = ColumnText[6];
-            _colHd7.Width = 16;
-            _colHd8.Text = ColumnText[7];
-            _colHd8.Width = 50;
-
-            _listCustom.SmallImageList = new ImageList();
-            if (_iconSz > 0)
-            {
-                // ディスプレイの DPI 設定を考慮したサイズを設定する
-                _listCustom.SmallImageList.ImageSize = new Size(
-                    (int)Math.Ceiling(this._iconSz * this.currentScaleFactor.Width),
-                    (int)Math.Ceiling(this._iconSz * this.currentScaleFactor.Height));
-            }
-            else
-            {
-                _listCustom.SmallImageList.ImageSize = new Size(1, 1);
-            }
-
-            int[] dispOrder = new int[8];
-            if (!startup)
-            {
-                for (int i = 0; i < _curList.Columns.Count; i++)
-                {
-                    for (int j = 0; j < _curList.Columns.Count; j++)
-                    {
-                        if (_curList.Columns[j].DisplayIndex == i)
-                        {
-                            dispOrder[i] = j;
-                            break;
-                        }
-                    }
-                }
-                for (int i = 0; i < _curList.Columns.Count; i++)
-                {
-                    _listCustom.Columns[i].Width = _curList.Columns[i].Width;
-                    _listCustom.Columns[dispOrder[i]].DisplayIndex = i;
-                }
-            }
-            else
-            {
-                if (_iconCol)
-                {
-                    _listCustom.Columns[0].Width = _cfgLocal.Width1;
-                    _listCustom.Columns[1].Width = _cfgLocal.Width3;
-                    _listCustom.Columns[0].DisplayIndex = 0;
-                    _listCustom.Columns[1].DisplayIndex = 1;
-                }
-                else
-                {
-                    for (int i = 0; i <= 7; i++)
-                    {
-                        if (_cfgLocal.DisplayIndex1 == i)
-                            dispOrder[i] = 0;
-                        else if (_cfgLocal.DisplayIndex2 == i)
-                            dispOrder[i] = 1;
-                        else if (_cfgLocal.DisplayIndex3 == i)
-                            dispOrder[i] = 2;
-                        else if (_cfgLocal.DisplayIndex4 == i)
-                            dispOrder[i] = 3;
-                        else if (_cfgLocal.DisplayIndex5 == i)
-                            dispOrder[i] = 4;
-                        else if (_cfgLocal.DisplayIndex6 == i)
-                            dispOrder[i] = 5;
-                        else if (_cfgLocal.DisplayIndex7 == i)
-                            dispOrder[i] = 6;
-                        else if (_cfgLocal.DisplayIndex8 == i)
-                            dispOrder[i] = 7;
-                    }
-                    _listCustom.Columns[0].Width = _cfgLocal.Width1;
-                    _listCustom.Columns[1].Width = _cfgLocal.Width2;
-                    _listCustom.Columns[2].Width = _cfgLocal.Width3;
-                    _listCustom.Columns[3].Width = _cfgLocal.Width4;
-                    _listCustom.Columns[4].Width = _cfgLocal.Width5;
-                    _listCustom.Columns[5].Width = _cfgLocal.Width6;
-                    _listCustom.Columns[6].Width = _cfgLocal.Width7;
-                    _listCustom.Columns[7].Width = _cfgLocal.Width8;
-                    for (int i = 0; i <= 7; i++)
-                    {
-                        _listCustom.Columns[dispOrder[i]].DisplayIndex = i;
-                    }
-                }
-            }
-
             if (tabType == MyCommon.TabUsageType.PublicSearch) pnl.ResumeLayout(false);
         
             _tabPage.ResumeLayout(false);
@@ -4750,6 +4656,7 @@ namespace OpenTween
             this.ListTab.ResumeLayout(false);
             this.ResumeLayout(false);
             this.PerformLayout();
+            _listCustom.EndUpdate();
             _tabPage.Tag = _listCustom;
             return true;
         }