/*  public static Cache[] CacheListFilter(Cache[] cacheList)
        {
            List<Cache> clist = new List<Cache>();

            foreach (Cache c in cacheList)
            {
                if (!CacheFilter(c)) clist.Add(c);
            }

            return clist.ToArray();
        }

        private static bool CacheFilter(Cache cache)
        {
            var flist = Settings.Default._filterList.Where(n => n.Effect == true).ToArray();
            if (flist.Length == 0) return false;

            bool? flag = null;

            foreach (Filter f in flist)
            {
                // ファイル名の比較
                if (f.Name.Trim() != "")
                {
                    if (flag == null) flag = true;

                    if (f.Name.Contains("\""))
                    {
                        foreach (Match m in Regex.Matches(f.Name, "\"(.*?)\""))
                        {
                            string mat = m.Value.Trim('\"');
                            flag &= ((!mat.StartsWith("-") && cache.Name.Contains(mat)) || (mat.StartsWith("-") && !cache.Name.Contains(mat.Substring(1))));
                        }
                    }
                    else
                    {
                        flag &= cache.Name.Contains(f.Name);
                    }
                }

                // カテゴリの比較
                if (f.Category != null)
                {
                    if (flag == null) flag = true;

                    foreach (string ss in f.Category)
                    {
                        if (ss != null && ss.Trim() != "")
                        {
                            flag &= cache.Category.Any(n => n != null && n.ToLower() == ss.ToLower());
                        }
                    }
                }

                // IDの比較
                if (f.ID != null && f.ID.Trim() != "")
                {
                    if (flag == null) flag = true;

                    flag &= f.ID == Convert.ToBase64String(HashFunction.HashCreate(cache.PublicKey));
                }

                // ハッシュの比較
                if (f.Hash != null && f.Hash.Length != 0)
                {
                    if (flag == null) flag = true;

                    flag &= BinaryEditor.ArrayEquals(f.Hash, cache.Hash);
                }

                // サイズ上限
                if (f.LimitSize != 0)
                {
                    if (flag == null) flag = true;

                    flag &= f.LimitSize > cache.Size;
                }

                // サイズ下限
                if (f.LowerSize != 0)
                {
                    if (flag == null) flag = true;

                    flag &= f.LowerSize < cache.Size;
                }
            }

            return flag == true ? true : false;
        }*/
        private void 追加_J_Click(object sender, RoutedEventArgs e)
        {
            using (FilterSettingWindow filterSettingWindow = new FilterSettingWindow())
            {
                filterSettingWindow.ShowDialog();
            }
        }
        private void 編集_E_Click(object sender, RoutedEventArgs e)
        {
            var item = FilterListView.SelectedItem as Filter;

            if (item != null)
            {
                using (FilterSettingWindow filterSettingWindow = new FilterSettingWindow())
                {
                    filterSettingWindow.SetFilter(item);
                    filterSettingWindow.ShowDialog();

                    if (filterSettingWindow.DialogResult == true)
                        Settings.Default._filterList.Remove(item);
                }
            }
        }