Exemplo n.º 1
0
        private void LoadInfoFromMetadata(SortContext sortContext)
        {
            listViewPluginInfo.BeginUpdate();
            listViewPluginInfo.Items.Clear();

            var pluginsInfo = _xDoc.Root.Elements("Plugin").Select(el => new PluginInfo
            {
                Name        = el.Element("Name").Value,
                Description = el.Element("Description").Value,
                Version     = Convert.ToDecimal(el.Element("Version").Value),
                Date        = Convert.ToDateTime(el.Element("Date").Value),
                Author      = el.Element("Author").Value,
                Url         = new Uri(el.Element("Url").Value),
                Element     = el
            });

            IOrderedEnumerable <PluginInfo> orderedList = null;

            //if (sortContext.SortOrder == SortOrder.Ascending)
            //{
            //    orderedList = pluginsInfo.OrderBy(p => GetSortProp(p, sortContext));
            //}
            //else
            //{
            //    orderedList = pluginsInfo.OrderByDescending(p => GetSortProp(p, sortContext));
            //}

            // # 2 version
            switch (sortContext.SortType)
            {
            case SortType.Name:
                switch (sortContext.SortOrder)
                {
                case SortOrder.Ascending:
                    orderedList = pluginsInfo.OrderBy(p => p.Name);
                    break;

                case SortOrder.Descending:
                    orderedList = pluginsInfo.OrderByDescending(p => p.Name);
                    break;
                }
                break;

            case SortType.Description:
                switch (sortContext.SortOrder)
                {
                case SortOrder.Ascending:
                    orderedList = pluginsInfo.OrderBy(p => p.Description);
                    break;

                case SortOrder.Descending:
                    orderedList = pluginsInfo.OrderByDescending(p => p.Description);
                    break;
                }
                break;

            case SortType.Version:
                switch (sortContext.SortOrder)
                {
                case SortOrder.Ascending:
                    orderedList = pluginsInfo.OrderBy(p => p.Version);
                    break;

                case SortOrder.Descending:
                    orderedList = pluginsInfo.OrderByDescending(p => p.Version);
                    break;
                }
                break;

            case SortType.Author:
                switch (sortContext.SortOrder)
                {
                case SortOrder.Ascending:
                    orderedList = pluginsInfo.OrderBy(p => p.Author);
                    break;

                case SortOrder.Descending:
                    orderedList = pluginsInfo.OrderByDescending(p => p.Author);
                    break;
                }
                break;

            case SortType.Date:
                switch (sortContext.SortOrder)
                {
                case SortOrder.Ascending:
                    orderedList = pluginsInfo.OrderBy(p => p.Date);
                    break;

                case SortOrder.Descending:
                    orderedList = pluginsInfo.OrderByDescending(p => p.Date);
                    break;
                }
                break;

            case SortType.Url:
                switch (sortContext.SortOrder)
                {
                case SortOrder.Ascending:
                    orderedList = pluginsInfo.OrderBy(p => p.Url.AbsolutePath);
                    break;

                case SortOrder.Descending:
                    orderedList = pluginsInfo.OrderByDescending(p => p.Url.AbsolutePath);
                    break;
                }
                break;
            }

            ListViewItem[] lvItems = orderedList.Select(p => new ListViewItem(p.Name)
            {
                SubItems =
                {
                    p.Description, p.Version.ToString("#0.00"), p.Date.ToString("yyy-MM-dd"), p.Author, p.Url.ToString()
                },
                Tag = p
            }).ToArray();

            listViewPluginInfo.Items.AddRange(lvItems);
            listViewPluginInfo.EndUpdate();
        }