コード例 #1
0
        private void LoadItems([NotNull] XDocument document)
        {
            Debug.ArgumentNotNull(document, nameof(document));

            var root = document.Root;

            if (root == null)
            {
                return;
            }

            var items = new List <ArchiveEntry>();

            foreach (var element in root.Elements())
            {
                var entry = new ArchiveEntry
                {
                    Id         = new Guid(element.GetAttributeValue("id")),
                    Name       = element.GetAttributeValue("name"),
                    Archived   = DateTimeExtensions.FromIso(element.GetAttributeValue("datetime")),
                    ArchivedBy = element.GetAttributeValue("archivedby"),
                    Path       = element.GetAttributeValue("path")
                };

                items.Add(entry);
            }

            LoadFilters(items);

            _entries.AddRange(items);

            LoadItems();
        }
コード例 #2
0
        private bool GetVisible([NotNull] ArchiveEntry item, [NotNull] List <string> archivedBy, [NotNull] string path, int year, int month, int day)
        {
            Debug.ArgumentNotNull(item, nameof(item));
            Debug.ArgumentNotNull(archivedBy, nameof(archivedBy));
            Debug.ArgumentNotNull(path, nameof(path));

            if (archivedBy.Count > 0)
            {
                if (!Contains(archivedBy, item.ArchivedBy))
                {
                    return(false);
                }
            }

            if (!string.IsNullOrEmpty(path))
            {
                if (!item.Path.StartsWith(path, StringComparison.InvariantCultureIgnoreCase))
                {
                    return(false);
                }
            }

            if (year != 0)
            {
                if (item.Archived.Year != year)
                {
                    return(false);
                }
            }

            if (month != 0)
            {
                if (item.Archived.Month != month)
                {
                    return(false);
                }
            }

            if (day != 0)
            {
                if (item.Archived.Day != day)
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #3
0
        private void LoadFilters([NotNull] ArchiveEntry item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            LoadFiltersAll();

            LoadFilterValue(ArchivedBy.Items, new Tuple <string, string>(item.ArchivedBy, item.ArchivedBy));

            var path  = string.Empty;
            var parts = new List <Tuple <string, string> >();

            foreach (var s in item.Path.Split('/', StringSplitOptions.RemoveEmptyEntries))
            {
                if (string.IsNullOrEmpty(s))
                {
                    continue;
                }

                path += @"/" + s;
                parts.Add(new Tuple <string, string>(path, s));
            }

            LoadFilterTree(Paths.Items, parts, 0);

            if (item.Archived == DateTime.MinValue)
            {
                return;
            }

            var year  = item.Archived.Year.ToString();
            var month = item.Archived.Month.ToString();
            var day   = item.Archived.Day.ToString();

            var tuples = new List <Tuple <string, string> >
            {
                new Tuple <string, string>(year, year),
                new Tuple <string, string>(year + @"/" + month, item.Archived.ToString(@"MMMM")),
                new Tuple <string, string>(year + @"/" + month + @"/" + day, day)
            };

            LoadFilterTree(Archived.Items, tuples, 0);
        }