Exemple #1
0
        //xがyより小さいときはマイナスの数、大きいときはプラスの数、
        //同じときは0を返す
        public int Compare(object x, object y)
        {
            if (_order == SortOrder.None)
            {
                //並び替えない時
                return(0);
            }

            int result = 0;
            //ListViewItemの取得
            ListViewItem itemx = (ListViewItem)x;
            ListViewItem itemy = (ListViewItem)y;

            //並べ替えの方法を決定
            if (_columnModes != null && _columnModes.Length > _column)
            {
                _mode = _columnModes[_column];
            }
            //並び替えの方法別に、xとyを比較する
            switch (_mode)
            {
            case ComparerMode.String:
                //文字列をとして比較
                result = string.Compare(itemx.SubItems[_column].Text,
                                        itemy.SubItems[_column].Text);
                break;

            case ComparerMode.Integer:
                //Int32に変換して比較
                //.NET Framework 2.0からは、TryParseメソッドを使うこともできる
                int itemX, itemY;
                if (int.TryParse(itemx.SubItems[_column].Text, out itemX) &&
                    int.TryParse(itemy.SubItems[_column].Text, out itemY))
                {
                    result = itemX.CompareTo(itemY);
                }
                else
                {
                    result = string.Compare(itemx.SubItems[_column].Text, itemy.SubItems[_column].Text);
                }
                break;

            case ComparerMode.DateTime:
                //DateTimeに変換して比較
                //.NET Framework 2.0からは、TryParseメソッドを使うこともできる
                result = DateTime.Compare(
                    DateTime.Parse(itemx.SubItems[_column].Text),
                    DateTime.Parse(itemy.SubItems[_column].Text));
                break;
            }

            //降順の時は結果を+-逆にする
            if (_order == SortOrder.Descending)
            {
                result = -result;
            }

            //結果を返す
            return(result);
        }
Exemple #2
0
 /// <summary>
 /// ListViewItemComparerクラスのコンストラクタ
 /// </summary>
 /// <param name="col">並び替える列の番号</param>
 /// <param name="ord">昇順か降順か</param>
 /// <param name="cmod">並び替えの方法</param>
 public ListViewItemComparer(
     int col, SortOrder ord, ComparerMode cmod)
 {
     _column = col;
     _order  = ord;
     _mode   = cmod;
 }
Exemple #3
0
        /// <summary>
        /// ソート対象のフィールドとソート順を設定し、ソートを実行します
        /// </summary>
        public void SetSortMode(ComparerMode mode, SortOrder sortOrder)
        {
            this.SortMode  = mode;
            this.SortOrder = sortOrder;

            this.ApplySortMode();
        }
Exemple #4
0
        /// <summary>
        /// 指定したソートモードとソートオーダーに従い使用する比較関数のアドレスを返す
        /// </summary>
        /// <param name="sortMode"></param>
        /// <param name="sortOrder"></param>
        /// <returns></returns>
        public Comparison <long> GetCompareMethod(ComparerMode sortMode, SortOrder sortOrder)
        {
            Comparison <long> method = null;

            if (sortOrder == SortOrder.Ascending)
            {
                // 昇順
                switch (sortMode)
                {
                case ComparerMode.Data:
                    method = Compare_ModeData_Ascending;
                    break;

                case ComparerMode.Id:
                    method = Compare_ModeId_Ascending;
                    break;

                case ComparerMode.Name:
                    method = Compare_ModeName_Ascending;
                    break;

                case ComparerMode.Nickname:
                    method = Compare_ModeNickName_Ascending;
                    break;

                case ComparerMode.Source:
                    method = Compare_ModeSource_Ascending;
                    break;
                }
            }
            else
            {
                // 降順
                switch (sortMode)
                {
                case ComparerMode.Data:
                    method = Compare_ModeData_Descending;
                    break;

                case ComparerMode.Id:
                    method = Compare_ModeId_Descending;
                    break;

                case ComparerMode.Name:
                    method = Compare_ModeName_Descending;
                    break;

                case ComparerMode.Nickname:
                    method = Compare_ModeNickName_Descending;
                    break;

                case ComparerMode.Source:
                    method = Compare_ModeSource_Descending;
                    break;
                }
            }

            return(method);
        }
Exemple #5
0
        public void SetSortMode(ComparerMode mode, SortOrder sortOrder)
        {
            this.SortMode  = mode;
            this.SortOrder = sortOrder;

            foreach (var tab in this._tabs.Values)
            {
                tab.SetSortMode(mode, sortOrder);
            }
        }
        //xがyより小さいときはマイナスの数、大きいときはプラスの数、
        //同じときは0を返す
        public int Compare(object x, object y)
        {
            int result = 0;
            //ListViewItemの取得
            ListViewItem itemx = (ListViewItem)x;
            ListViewItem itemy = (ListViewItem)y;

            //並べ替えの方法を決定
            if (_columnModes != null && _columnModes.Length > _column)
            {
                _mode = _columnModes[_column];
            }

            //並び替えの方法別に、xとyを比較する
            switch (_mode)
            {
            case ComparerMode.String:
                result = string.Compare(itemx.SubItems[_column].Text,
                                        itemy.SubItems[_column].Text);
                break;

            case ComparerMode.Integer:
                result = int.Parse(itemx.SubItems[_column].Text) -
                         int.Parse(itemy.SubItems[_column].Text);
                break;

            case ComparerMode.Decimal:
                result = decimal.Compare(decimal.Parse(itemx.SubItems[_column].Text),
                                         decimal.Parse(itemy.SubItems[_column].Text));
                break;

            case ComparerMode.DateTime:
                result = DateTime.Compare(
                    DateTime.Parse(itemx.SubItems[_column].Text),
                    DateTime.Parse(itemy.SubItems[_column].Text));
                break;
            }

            //降順の時は結果を+-逆にする
            if (_order == SortOrder.Descending)
            {
                result = -result;
            }
            else if (_order == SortOrder.None)
            {
                result = 0;
            }

            //結果を返す
            return(result);
        }
Exemple #7
0
        // xがyより小さいときはマイナスの数,大きいときはプラスの数,同じときは0を返す
        public int Compare(object x, object y)
        {
            int result = 0;
            // ListViewItemの取得
            ListViewItem itemx = (ListViewItem)x;
            ListViewItem itemy = (ListViewItem)y;

            // 並べ替えの方法を決定
            if (mColumnModes != null && mColumnModes.Length > mColumn)
            {
                mComparerMode = mColumnModes[mColumn];
            }

            // 並び替えの方法別に,xとyを比較する
            switch (mComparerMode)
            {
            case ComparerMode.String:
                result = string.Compare(itemx.SubItems[mColumn].Text,
                                        itemy.SubItems[mColumn].Text);
                break;

            case ComparerMode.Integer:
                int ia, ib;
                int.TryParse(itemx.SubItems[mColumn].Text, out ia);
                int.TryParse(itemy.SubItems[mColumn].Text, out ib);
                result = ia.CompareTo(ib);
                break;

            case ComparerMode.Double:
                double da, db;
                double.TryParse(itemx.SubItems[mColumn].Text, out da);
                double.TryParse(itemy.SubItems[mColumn].Text, out db);
                result = da.CompareTo(db);
                break;

            case ComparerMode.DateTime:
                result = DateTime.Compare(
                    DateTime.Parse(itemx.SubItems[mColumn].Text),
                    DateTime.Parse(itemy.SubItems[mColumn].Text));
                break;
            }

            if (mSortOrder == SortOrder.Descending)
            {
                result = -result;
            }

            return(result);
        }
Exemple #8
0
        /// <summary>
        /// 起動時に一度だけ呼ばれる
        /// </summary>
        public ListViewItemComparer()
        {
            string TAG   = "[ListViewItemComparer・ListViewItemComparer]";
            string dbMsg = TAG;

            try {
                _column = 0;
                _order  = SortOrder.Ascending;
                _mode   = ComparerMode.String;
                rootForm.MyLog(dbMsg);
            } catch (Exception er) {
                dbMsg += "<<以降でエラー発生>>" + er.Message;
                rootForm.MyLog(dbMsg);
            }
        }
Exemple #9
0
        public int Compare(object x, object y)
        {
            int result = 0;

            ListViewItem itemx = (ListViewItem)x;
            ListViewItem itemy = (ListViewItem)y;

            if (_columnModes != null && _columnModes.Length > _column)
            {
                _mode = _columnModes[_column];
            }

            switch (_mode)
            {
            case ComparerMode.String:
                result = string.Compare(itemx.SubItems[_column].Text,
                                        itemy.SubItems[_column].Text);
                break;

            case ComparerMode.Integer:
                result = int.Parse(itemx.SubItems[_column].Text) -
                         int.Parse(itemy.SubItems[_column].Text);
                break;

            case ComparerMode.DateTime:
                result = DateTime.Compare(
                    DateTime.Parse(itemx.SubItems[_column].Text),
                    DateTime.Parse(itemy.SubItems[_column].Text));
                break;
            }

            if (_order == SortOrder.Descending)
            {
                result = -result;
            }
            else if (_order == SortOrder.None)
            {
                result = 0;
            }

            return(result);
        }
Exemple #10
0
        /// <summary>
        /// ソート
        /// </summary>
        /// <param name="x">ListViewItem</param>
        /// <param name="y">ListViewItem</param>
        public int Compare(object x, object y)
        {
            int          result = 0;
            ListViewItem itemx  = (ListViewItem)x;
            ListViewItem itemy  = (ListViewItem)y;

            if (_order == SortOrder.None)
            {
                return(0);
            }

            // ソート方法決定
            if (_columnModes != null && _columnModes.Length > _column)
            {
                _mode = _columnModes[_column];
            }

            // ソート方法別にxとyを比較
            switch (_mode)
            {
            case ComparerMode.String:       // 文字列
                result = string.Compare(itemx.SubItems[_column].Text, itemy.SubItems[_column].Text);
                break;

            case ComparerMode.Integer:      // 数値
                result = int.Parse(itemx.SubItems[_column].Text).CompareTo(int.Parse(itemy.SubItems[_column].Text));
                break;

            case ComparerMode.DateTime:     // 日付
                result = DateTime.Compare(DateTime.Parse(itemx.SubItems[_column].Text), DateTime.Parse(itemy.SubItems[_column].Text));
                break;
            }

            // 降順時は結果を+-逆にする
            return((_order == SortOrder.Descending) ? -result : result);
        }
Exemple #11
0
        public SortOrder ToggleSortOrder(ComparerMode sortMode)
        {
            var sortOrder = this.SortOrder;

            if (this.SortMode == sortMode)
            {
                if (sortOrder == SortOrder.Ascending)
                {
                    sortOrder = SortOrder.Descending;
                }
                else
                {
                    sortOrder = SortOrder.Ascending;
                }
            }
            else
            {
                sortOrder = SortOrder.Ascending;
            }

            this.SetSortMode(sortMode, sortOrder);

            return(this.SortOrder);
        }
Exemple #12
0
 //コンストラクタ
 public ListViewItemComparer(int col, SortOrder order, ComparerMode mode)
 {
     this._column = col;
     this.Order = order;
     this.Mode = mode;
 }
 public ListViewItemComparer()
 {
     this._column = 0;
     this._order = SortOrder.Ascending;
     this._mode = ComparerMode.STRING;
 }
 /// <summary>
 /// ListViewItemComparerクラスのコンストラクタ
 /// </summary>
 /// <param name="col">並び替える列番号</param>
 /// <param name="ord">昇順か降順か</param>
 /// <param name="cmod">並び替えの方法</param>
 public ListViewItemComparer( int col, SortOrder ord, ComparerMode cmod )
 {
     this._column = col;
     this._order = ord;
     this._mode = cmod;
 }
        //xがyより小さいときはマイナスの数、大きいときはプラスの数、
        //同じときは0を返す
        public int Compare( object a, object b )
        {
            var result = 0;

            // ListViewItemの取得
            var item_a = (ListViewItem) a;
            var item_b = (ListViewItem) b;

            // 並べ替えの方法を決定
            if( this._columnModes != null && _columnModes.Length > _column) {
                this._mode = this._columnModes[ this._column ];
            }

            // aとbを比較する
            switch( _mode )
            {
            case ComparerMode.STRING:
                result = String.Compare( item_a.SubItems[this._column].Text, item_b.SubItems[this._column].Text );
                break;
            case ComparerMode.NUMERIC:
                result = Int32.Parse( item_a.SubItems[this._column].Text) - Int32.Parse(item_b.SubItems[this._column].Text );
                break;
            case ComparerMode.TAG_DATETIME:
                result = DateTime.Compare( DateTime.Parse(item_a.SubItems[this._column].Text ), DateTime.Parse(item_b.SubItems[this._column].Text ) );
                break;
            case ComparerMode.TAG_HEXADECIMAL:
                result = Int32.Parse( item_a.SubItems[this._column].Text, System.Globalization.NumberStyles.HexNumber );
                break;
            case ComparerMode.TAG_NUMERIC:
                result = (int)item_a.SubItems[this._column].Tag - (int)item_b.SubItems[this._column].Tag;
                break;
            case ComparerMode.TAG_STRING:
                result = String.Compare( (string)item_a.SubItems[this._column].Tag, (string)item_b.SubItems[this._column].Tag );
                break;
            }

            if( this._order == SortOrder.Descending ) {
                result = -result;
            } else if ( this._order == SortOrder.None ) {
                result = 0;
            }
            return result;
        }
Exemple #16
0
        //xがyより小さいときはマイナスの数、大きいときはプラスの数、
        //同じときは0を返す
        public int Compare(object x, object y)
        {
            string TAG    = "[ListViewItemComparer・Compare]";
            string dbMsg  = TAG;
            int    result = 0;

            try {
                dbMsg += _column + "列目" + _order;
                if (_order == SortOrder.None)                               //並び替えない時
                {
                    return(0);
                }
                //	dbMsg += ",_columnModes=" + _columnModes;
                if (_columnModes != null && _columnModes.Length > _column)                              //並べ替えの方法を決定
                {
                    _mode = _columnModes[_column];
                }
                dbMsg += ",_mode=" + _mode;                                     //Integer

                ListViewItem itemx = (ListViewItem)x;                           //ListViewItemの取得
                string       xName = itemx.Name.Replace(@":\\", @":\");
                //		dbMsg += "\nitemx=" + xName;
                System.IO.FileInfo fiX         = new System.IO.FileInfo(xName);
                string             xAttributes = fiX.Attributes.ToString();
                //		dbMsg += "=" + xAttributes;
                string   xStr  = fiX.Name;
                DateTime xDate = fiX.LastWriteTime;
                int      xInt  = 0;
                if (xAttributes.Contains("Directory"))
                {
                    DirectoryInfo diX = new DirectoryInfo(xName);
                    xInt = (diX.GetDirectories().Length + diX.GetFiles().Length);
                }
                else
                {
                    xInt = (int)fiX.Length;
                }

                ListViewItem       itemy       = (ListViewItem)y;
                string             yName       = itemy.Name.Replace(@":\\", @":\");
                string             yAttributes = "";
                string             yStr        = "";
                int                yInt        = 0;
                DateTime           yDate       = DateTime.MinValue;
                System.IO.FileInfo fiY;
                //			dbMsg += "\nitemy=" + yName;
                if (yName != null && yName != "")
                {
                    fiY         = new System.IO.FileInfo(yName);
                    yAttributes = fiY.Attributes.ToString();
                    //				dbMsg += "=" + yAttributes;
                    yStr  = fiY.Name;
                    yDate = fiY.LastWriteTime;
                    if (yAttributes.Contains("Directory"))
                    {
                        DirectoryInfo diY = new DirectoryInfo(yName);
                        yInt = diY.GetFiles().Length;
                    }
                    else
                    {
                        yInt = (int)fiY.Length;
                    }
                }

                switch (_mode)                              //並び替えの方法別に、xとyを比較する
                {
                case ComparerMode.String:                   //文字列をとして比較
                    dbMsg += "\nX:" + xStr + "とY;" + yStr;
                    result = string.Compare(xStr, yStr);    //itemx.SubItems[_column].Text, itemy.SubItems[_column].Text
                    break;

                case ComparerMode.Integer:                                          //Int32に変換して比較//.NET Framework 2.0からは、TryParseメソッドを使うこともできる
                    dbMsg += "\nX:" + xInt + "とY;" + yInt;
                    if (xInt < yInt)
                    {
                        result = -1;
                    }
                    else
                    {
                        result = 1;
                    }
                    break;

                case ComparerMode.DateTime:                                         //DateTimeに変換して比較					//.NET Framework 2.0からは、TryParseメソッドを使うこともできる
                    dbMsg += "\nX:" + xDate + "とY;" + yDate;
                    result = DateTime.Compare(xDate, yDate);
                    break;
                }
                dbMsg += " ,result=" + result;
                dbMsg += "\n," + xAttributes + "と" + yAttributes;
                if (!xAttributes.Contains("Directory") && yAttributes.Contains("Directory"))                                //Directoryが上に有れば
                {
                    dbMsg += ">YはDirectory>";
                    result = -1;
                }
                else if (xAttributes.Contains("Directory") && !yAttributes.Contains("Directory"))                                  //Directoryが上に有れば
                {
                    dbMsg += ">XはDirectory>";
                    result = 1;
                }
                else
                {
                    if (_order == SortOrder.Descending)                                 //降順の時は結果を+-逆にする
                    {
                        dbMsg += ",反転";
                        result = -result;
                    }
                }
                dbMsg += ">result>" + result;
                if (result < 0)
                {
                    dbMsg += "でYを下に>";
                }
                else
                {
                    dbMsg += "でYを上に>";
                }
                rootForm.MyLog(dbMsg);
            } catch (Exception er) {
                dbMsg += "<<以降でエラー発生>>" + er.Message;
                rootForm.MyLog(dbMsg);
            }
            return(result);                 //結果を返す
        }
Exemple #17
0
 public ListViewItemComparer()
 {
     _column = 0;
     _order  = SortOrder.Ascending;
     _mode   = ComparerMode.String;
 }
        //x��y��菬�����Ƃ��̓}�C�i�X�̐��A�傫���Ƃ��̓v���X�̐��A
        //�����Ƃ���0��Ԃ�
        public int Compare(object x, object y)
        {
            int result = 0;
            //ListViewItem�̎擾
            ListViewItem itemx = (ListViewItem)x;
            ListViewItem itemy = (ListViewItem)y;

            //���בւ��̕��@�����
            if (_columnModes != null && _columnModes.Length > _column)
            {
                _mode = _columnModes[_column];
            }

            //���ёւ��̕��@�ʂɁAx��y���r����
            try
            {
                switch (_mode)
                {
                    case ComparerMode.String:
                        result = string.Compare(itemx.SubItems[_column].Text, itemy.SubItems[_column].Text);
                        break;
                    case ComparerMode.Integer:
                        result = int.Parse(itemx.SubItems[_column].Text) - int.Parse(itemy.SubItems[_column].Text);
                        break;
                    case ComparerMode.DateTime:

                        result = DateTime.Compare(DateTime.Parse(itemx.SubItems[_column].Text), DateTime.Parse(itemy.SubItems[_column].Text));
                        break;
                }
            }
            catch (Exception) { }

            // �~���̎��͌��ʂ�+-�t�ɂ���
            if (_order == SortOrder.Descending)
            {
                result = -result;
            }
            else if (_order == SortOrder.None)
            {
                result = 0;
            }

            //���ʂ�Ԃ�
            return (result);
        }
Exemple #19
0
 public ListViewItemComparer()
 {
     mColumn       = 0;
     mSortOrder    = SortOrder.Ascending;
     mComparerMode = ComparerMode.String;
 }
Exemple #20
0
 public ListViewItemComparer(int column, ComparerMode mode, bool descending = false)
 {
     col = column;
     selectedComparerMode = mode;
     isDescending         = descending;
 }
Exemple #21
0
 /// <summary>
 /// ListViewItemComparerクラスのコンストラクタ
 /// </summary>
 /// <param name="col">並び替える列番号</param>
 /// <param name="ord">昇順か降順か</param>
 /// <param name="cmod">並び替えの方法</param>
 public ListViewItemComparer(int col, SortOrder ord, ComparerMode cmod)
 {
     _column = col;
     Order = ord;
     Mode = cmod;
 }
Exemple #22
0
        /// <summary>
        /// 発言一覧を指定された ComparerMode に基づいてソートする
        /// </summary>
        private void SetSortColumn(ComparerMode sortColumn)
        {
            if (this._cfgCommon.SortOrderLock)
                return;

            this._statuses.ToggleSortOrder(sortColumn);
            this.InitColumnText();

            var list = this._curList;
            if (_iconCol)
            {
                list.Columns[0].Text = this.ColumnText[0];
                list.Columns[1].Text = this.ColumnText[2];
            }
            else
            {
                for (var i = 0; i <= 7; i++)
                {
                    list.Columns[i].Text = this.ColumnText[i];
                }
            }

            this.PurgeListViewItemCache();

            var tab = this._statuses.Tabs[this._curTab.Text];
            if (tab.AllCount > 0 && this._curPost != null)
            {
                var idx = tab.IndexOf(this._curPost.StatusId);
                if (idx > -1)
                {
                    this.SelectListItem(list, idx);
                    list.EnsureVisible(idx);
                }
            }
            list.Refresh();

            this.ModifySettingCommon = true;
        }
        /// <summary>
        /// ソート
        /// </summary>
        /// <param name="x">ListViewItem</param>
        /// <param name="y">ListViewItem</param>
        public int Compare(object x, object y)
        {
            int result = 0;
            ListViewItem itemx = (ListViewItem)x;
            ListViewItem itemy = (ListViewItem)y;

            if (_order == SortOrder.None) return 0;

            // ソート方法決定
            if (_columnModes != null && _columnModes.Length > _column) _mode = _columnModes[_column];

            // ソート方法別にxとyを比較
            switch (_mode) {
                case ComparerMode.String:   // 文字列
                    result = string.Compare(itemx.SubItems[_column].Text, itemy.SubItems[_column].Text);
                    break;
                case ComparerMode.Integer:  // 数値
                    result = int.Parse(itemx.SubItems[_column].Text).CompareTo(int.Parse(itemy.SubItems[_column].Text));
                    break;
                case ComparerMode.DateTime: // 日付
                    result = DateTime.Compare(DateTime.Parse(itemx.SubItems[_column].Text), DateTime.Parse(itemy.SubItems[_column].Text));
                    break;
            }

            // 降順時は結果を+-逆にする
            return (_order == SortOrder.Descending) ? -result : result;
        }
 public ListViewItemComparer()
 {
     _column = 0;
     _order = SortOrder.Ascending;
     _mode = ComparerMode.String;
 }
Exemple #25
0
        /// <summary>
        /// ソート対象のフィールドとソート順を設定し、ソートを実行します
        /// </summary>
        public void SetSortMode(ComparerMode mode, SortOrder sortOrder)
        {
            this.SortMode = mode;
            this.SortOrder = sortOrder;

            this.ApplySortMode();
        }
Exemple #26
0
 // ソートモードとソートオーダーに従い比較関数のアドレスを切り替え
 private void SetCompareMethod(ComparerMode mode, SortOrder order)
 {
     _compareMethod = GetCompareMethod(mode, order);
 }
Exemple #27
0
        public SortOrder ToggleSortOrder(ComparerMode sortMode)
        {
            if (this.SortMode == sortMode)
            {
                if (this.SortOrder == SortOrder.Ascending)
                {
                    this.SortOrder = SortOrder.Descending;
                }
                else
                {
                    this.SortOrder = SortOrder.Ascending;
                }
            }
            else
            {
                this.SortMode = sortMode;
                this.SortOrder = SortOrder.Ascending;
            }

            this.SortPosts();

            return this.SortOrder;
        }
Exemple #28
0
 /// <summary>
 /// ListViewItemComparerクラスのコンストラクタ(引数付は未使用)
 /// </summary>
 public IdComparerClass()
 {
     _sortOrder    = SortOrder.Ascending;
     _comparerMode = ComparerMode.Id;
     SetCompareMethod(_comparerMode, _sortOrder);
 }
Exemple #29
0
 public ListViewItemComparer(int column)
 {
     col = column;
     selectedComparerMode = 0;
 }
Exemple #30
0
 public ListViewItemComparer()
 {
     _column = 0;
     _order  = System.Windows.Forms.SortOrder.Ascending;
     _mode   = ComparerMode.String;
 }