Пример #1
0
        public async Task TestGetFaviconFromUrl()
        {
            string html = @"
            <html>
                <head>
                    <meta charset=""utf-8"">
                    <link rel=""shortcut icon"" href=""http://a.b.c.de/img/favicon.png"">
                </head>
                <body>html</body>
            </html>
            ";

            using (var httpTest = new HttpTest())
            {
                // arrange
                var fetcher = new IconFetcher(Logger);

                httpTest
                .RespondWith(html)                          // first call to fetch the html
                .RespondWith(buildContent: () => {          // second call to get the payload
                    return(new ByteArrayContent(Image));
                });

                // act
                var result = await fetcher.GetFaviconFromUrl("http://a.b.c.de");

                // assert
                result.filename
                .Should().Be("favicon.png");
                result.payload
                .Should().NotBeNull();
                result.payload.Length
                .Should().Be(Image.Length);
            }
        }
Пример #2
0
        private void BtnGetSmallSystemIco_Click(object sender, EventArgs e)
        {
            IntPtr imgListHandle;
            int    iconImageIndex;

            IconFetcher.GetSystemImageListInfo(TxtIconPath.Text, out imgListHandle, out iconImageIndex);
            IconFetcher.SetImageListToListView(LstIcons, imgListHandle);
            LstIcons.Items.Add(new ListViewItem(TxtIconPath.Text, iconImageIndex));
        }
 private void OnDirectoryFetched(FileModel file)
 {
     Application.Current?.Dispatcher?.Invoke(() =>
     {
         FileViewModel fvm = CreateFile(file);
         IconFetcher.FetchIcon(fvm);
         Files.Add(fvm);
     });
 }
Пример #4
0
 public BookmarksController(ILogger <BookmarksController> logger, IBookmarkRepository repository,
                            IWebHostEnvironment env, IOptions <FaviconSettings> settings,
                            IServiceScopeFactory factory, IconFetcher fetcher)
 {
     _logger          = logger;
     _repository      = repository;
     _webHostEnv      = env;
     _faviconSettings = settings?.Value ?? new FaviconSettings();
     _servicesFactory = factory;
     _fetcher         = fetcher;
 }
        public static void ShutdownApplication()
        {
            ShutdownWindows();

            Main.Closing -= WindowClosing;
            Help.Closing -= WindowClosing;

            FileFetcher.ForceStop();
            IconFetcher.ForceStop();

            Application.Shutdown();
        }
        public ExplorerViewModel()
        {
            Files = new ObservableCollection <FileViewModel>();

            Navigator          = new FileNavigationViewModel();
            Navigator.Explorer = this;

            FileFetcher.Initialise();
            IconFetcher.Initialise();
            FileFetcher.DirectoryFetchedCallback   = OnDirectoryFetched;
            FileFetcher.FileFetchedCallback        = OnFileFetched;
            FileFetcher.DirectoriesFetchedCallback = FoundDirectories;
            FileFetcher.FilesFetchedCallback       = FoundFiles;
        }
Пример #7
0
        private void TreeFolder_AfterSelect(object sender, TreeViewEventArgs e)
        {
            var selectedFolderPath  = (string)e.Node.Tag;
            var systemImgListHandle = IntPtr.Zero;

            var recs = DocumentRecords.Where(rec => selectedFolderPath == Path.GetDirectoryName(rec.GetTextValue(Column.Documents.FILE_PATH)));

            LstFile.Items.Clear();

            // 0件の場合は中断
            if (!recs.Any())
            {
                return;
            }

            foreach (var rec in recs)
            {
                var path     = rec.GetTextValue(Column.Documents.FILE_PATH);
                var fileName = Path.GetFileName(path);
                var size     = rec.GetIntValue(Column.Documents.SIZE);
                var updated  = rec.GetTimeValue(Column.Documents.FILE_UPDATED_AT);

                var item = new ListViewItem(new string[] { fileName, updated.Value.ToString("yyyy/MM/dd HH:mm"), Util.FormatFileSizeByKB(size.Value) });
                int iconImageIndex;
                if (IconFetcher.GetSystemImageListInfo(path, out systemImgListHandle, out iconImageIndex))
                {
                    item.ImageIndex = iconImageIndex;
                }
                ;

                item.Tag = rec.Key;

                LstFile.Items.Add(item);
            }

            IconFetcher.SetImageListToListView(LstFile, systemImgListHandle);
        }
Пример #8
0
        private void BtnGetSmallIco_Click(object sender, EventArgs e)
        {
            var ico = IconFetcher.GetFileIconFromExtension(TxtIconPath.Text);

            pictureBox1.Image = ico.ToBitmap();
        }
Пример #9
0
        /// <summary>
        /// ツリー表示を更新
        /// </summary>
        protected virtual void UpdateFolderTree()
        {
            // ツリーを一度初期化
            TreeFolder.Nodes.Clear();
            var systemImgListHandle = IntPtr.Zero;

            // 全文書のファイルパス一覧を取得
            var selectRes = Application.GM.Select(
                table: Table.Documents
                , outputColumns: new[] { Column.Documents.KEY, Column.Documents.FILE_PATH, Column.Documents.FILE_UPDATED_AT, Column.Documents.SIZE }
                , sortKeys: new[] { Column.Documents.FILE_PATH }
                , limit: -1
                );

            DocumentRecords = selectRes.SearchResult.Records.Where(r => !string.IsNullOrWhiteSpace(r.GetTextValue(Column.Documents.FILE_PATH)))
                              .ToList();

            // 文書1件ごとに処理
            foreach (var rec in DocumentRecords)
            {
                Application.Logger.Trace("[DBBrowser] dirEach: {0}", rec.GetTextValue(Column.Documents.FILE_PATH));

                string dirPath = null;

                try
                {
                    dirPath = Path.GetDirectoryName(rec.GetTextValue(Column.Documents.FILE_PATH));
                }
                catch (Exception ex)
                {
                    Application.Logger.Debug(ex);
                    Application.Logger.Debug(ex.ToString());
                }

                if (string.IsNullOrEmpty(dirPath))
                {
                    continue;
                }

                var    addTargetNodes = TreeFolder.Nodes;
                string currentPath    = null;
                foreach (var pathItem in dirPath.Split(new char[] { '\\' }))
                {
                    var nodeAddFlag = true;
                    currentPath = (currentPath == null ? pathItem : currentPath += (@"\" + pathItem));

                    // 現在の対象ノードの子に、同じ名前を持つノードがいるかどうかを探索
                    foreach (TreeNode node in addTargetNodes)
                    {
                        if (node.Text == pathItem)
                        {
                            // 同じ名前を持つノードがいれば、新ノードの追加はしない
                            addTargetNodes = node.Nodes;
                            nodeAddFlag    = false;
                        }
                    }

                    // 新ノードの追加を行う場合
                    if (nodeAddFlag)
                    {
                        var newNode = new TreeNode(pathItem)
                        {
                            Tag = currentPath
                        };
                        int iconImageIndex;
                        addTargetNodes.Add(newNode);
                        addTargetNodes = newNode.Nodes;

                        if (IconFetcher.GetSystemImageListInfo(currentPath, out systemImgListHandle, out iconImageIndex))
                        {
                            newNode.ImageIndex         = iconImageIndex;
                            newNode.SelectedImageIndex = iconImageIndex;
                        }
                        ;
                    }
                }
            }

            IconFetcher.SetImageListToTreeView(TreeFolder, systemImgListHandle);
        }
Пример #10
0
 private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
 {
     IconFetcher.ForceShutdown();
 }