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); } }
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); }); }
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; }
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); }
private void BtnGetSmallIco_Click(object sender, EventArgs e) { var ico = IconFetcher.GetFileIconFromExtension(TxtIconPath.Text); pictureBox1.Image = ico.ToBitmap(); }
/// <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); }
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { IconFetcher.ForceShutdown(); }