Beispiel #1
0
            /// <summary>
            /// 比較する。
            /// </summary>
            /// <param name="item1">アイテム1.</param>
            /// <param name="item2">アイテム2.</param>
            /// <returns>item1<item2:-1、item1==item2:0、item1>item2:1。</returns>
            public override int Compare(ListViewItemEx item1, ListViewItemEx item2)
            {
                int  cmp;
                bool ascending = this.Order == SortOrder.Ascending;

                FileListViewItem flvi1 = item1 as FileListViewItem;
                FileListViewItem flvi2 = item2 as FileListViewItem;

                if (flvi1 == null || flvi1.Cols == null || flvi2 == null || flvi2.Cols == null)
                {
                    //	どちらかのアイテムが FileListViewItem では内場合は FileListViewItem以外<FileListViewItem になるようにする
                    if (flvi1 == null && flvi2 == null)
                    {
                        return(0);
                    }
                    else if (flvi1 == null)
                    {
                        return(ascending ? -1 : 1);
                    }
                    else
                    {
                        return(ascending ? 1 : -1);
                    }
                }

                ShellItem shi1 = flvi1.ShellItem;
                ShellItem shi2 = flvi2.ShellItem;

                if (shi1.ItemType != shi2.ItemType)
                {
                    //	アイテムの種類が異なる場合は種類に応じて大小判定
                    int i1 = (int)shi1.ItemType;
                    int i2 = (int)shi2.ItemType;
                    if (i1 == i2)
                    {
                        cmp = 0;
                    }
                    else if (i1 < i2)
                    {
                        cmp = -1;
                    }
                    else
                    {
                        cmp = 1;
                    }
                    return(ascending ? cmp : -cmp);
                }

                if (shi1.ItemType == ShellItemType.Drive)
                {
                    //	ドライブ同士を比較する場合はドライブ名で比較
                    cmp = shi1.Path.CompareTo(shi2.Path);
                    return(ascending ? cmp : -cmp);
                }

                return(base.Compare(item1, item2));
            }
Beispiel #2
0
        private void onRemoved(SubsidiaryMarket m, SubsidiaryCompany company)
        {
            if (m != market)
            {
                return;                                 // ignore
            }
            ListViewItemEx item = (ListViewItemEx)companies[company];

            companies.Remove(company);
            list.Items.Remove(item);
        }
Beispiel #3
0
        private void onAdded(SubsidiaryMarket m, SubsidiaryCompany company)
        {
            if (m != market)
            {
                return;                                 // ignore
            }
            ListViewItem item = new ListViewItemEx(company);

            list.Items.Insert(0, item);
            companies.Add(company, item);
        }