QuickImage – Rev 1

Subversion Repositories:
Rev:
using QuickImage.Database;
using Shipwreck.Phash;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuickImage.ImageListViewSorters
{
    public class DateImageListViewSorter : IComparer, IComparer<ListViewItem>
    {
        private readonly SortOrder _sortOrder;
        private readonly DateImageListViewSorterType _dateImageListViewSorterType;

        public DateImageListViewSorter()
        {
            _sortOrder = SortOrder.Descending;
        }
        public DateImageListViewSorter(SortOrder sortOrder) : this()
        {
            _sortOrder = sortOrder;
        }

        public DateImageListViewSorter(SortOrder sortOrder, DateImageListViewSorterType dateImageListViewSorterType) : this(sortOrder)
        {
            _dateImageListViewSorterType = dateImageListViewSorterType;
        }

        public int Compare(ListViewItem x, ListViewItem y)
        {
            switch (_sortOrder)
            {
                case SortOrder.Ascending:
                    switch (_dateImageListViewSorterType)
                    {
                        case DateImageListViewSorterType.Creation:
                            return new FileInfo(x.Name).CreationTime.CompareTo(new FileInfo(y.Name).CreationTime);
                        case DateImageListViewSorterType.Access:
                            return new FileInfo(x.Name).LastAccessTime.CompareTo(new FileInfo(y.Name).LastAccessTime);
                        case DateImageListViewSorterType.Modification:
                            return new FileInfo(x.Name).LastWriteTime.CompareTo(new FileInfo(y.Name).LastWriteTime);
                    }

                    break;
                case SortOrder.Descending:
                    switch (_dateImageListViewSorterType)
                    {
                        case DateImageListViewSorterType.Creation:
                            return new FileInfo(y.Name).CreationTime.CompareTo(new FileInfo(x.Name).CreationTime);
                        case DateImageListViewSorterType.Access:
                            return new FileInfo(y.Name).LastAccessTime.CompareTo(new FileInfo(x.Name).LastAccessTime);
                        case DateImageListViewSorterType.Modification:
                            return new FileInfo(y.Name).LastWriteTime.CompareTo(new FileInfo(x.Name).LastWriteTime);
                    }

                    break;
            }

            return 0;
        }

        public int Compare(object x, object y)
        {
            return Compare(x as ListViewItem, y as ListViewItem);
        }
    }
}

Generated by GNU Enscript 1.6.5.90.