Skip to content

Commit 86fd8c7

Browse files
authored
fix(category-list): fix icon with vs-seti icon theme (#39)
1 parent 330b88b commit 86fd8c7

File tree

3 files changed

+36
-4
lines changed

3 files changed

+36
-4
lines changed

src/services/check-workspace.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { commands, workspace } from 'vscode';
2+
import { refreshPostCategoriesList } from '../commands/post-category/refresh-post-categories-list';
23
import { globalState } from './global-state';
34
import { PostFileMapManager } from './post-file-map';
45
import { Settings } from './settings.service';
@@ -12,9 +13,14 @@ export const isTargetWorkspace = (): boolean => {
1213

1314
export const observeConfigurationChange = () => {
1415
globalState.extensionContext?.subscriptions.push(
15-
workspace.onDidChangeConfiguration(ev =>
16-
ev.affectsConfiguration(Settings.prefix) ? isTargetWorkspace() : false
17-
)
16+
workspace.onDidChangeConfiguration(ev => {
17+
if (ev.affectsConfiguration(Settings.prefix)) {
18+
isTargetWorkspace();
19+
}
20+
if (ev.affectsConfiguration(`${Settings.iconThemePrefix}.${Settings.iconThemeKey}`)) {
21+
refreshPostCategoriesList();
22+
}
23+
})
1824
);
1925
isTargetWorkspace();
2026
};

src/services/settings.service.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,20 @@ export class Settings {
77
return `cnblogsClientForVSCode`;
88
}
99

10+
static get iconThemePrefix() {
11+
return 'workbench';
12+
}
13+
14+
static get iconThemeKey() {
15+
return `iconTheme`;
16+
}
17+
18+
static get iconTheme() {
19+
return <'vs-seti' | 'vs-minimal' | undefined | string>(
20+
workspace.getConfiguration(this.iconThemePrefix).get<string>(this.iconThemeKey)
21+
);
22+
}
23+
1024
static get configuration() {
1125
return workspace.getConfiguration(this.prefix);
1226
}

src/tree-view-providers/categories-view-data-provider.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@ import { commands, Event, EventEmitter, MessageOptions, ThemeIcon, TreeDataProvi
22
import { PostCategories, PostCategory } from '../models/post-category';
33
import { globalState } from '../services/global-state';
44
import { postCategoryService } from '../services/post-category.service';
5+
import { Settings } from '../services/settings.service';
6+
7+
const categoryIcon = () => {
8+
const iconTheme = Settings.iconTheme;
9+
let iconId = 'folder';
10+
switch (iconTheme) {
11+
case 'vs-seti':
12+
iconId = 'file-directory';
13+
break;
14+
}
15+
return new ThemeIcon(iconId);
16+
};
517

618
export class PostCategoriesViewDataProvider implements TreeDataProvider<PostCategory> {
719
private static _instance: PostCategoriesViewDataProvider;
@@ -36,7 +48,7 @@ export class PostCategoriesViewDataProvider implements TreeDataProvider<PostCate
3648
getTreeItem(element: PostCategory): TreeItem | Thenable<TreeItem> {
3749
const label = `${element.title}(${element.count})`;
3850
return Object.assign(new TreeItem(label), {
39-
iconPath: new ThemeIcon('folder'),
51+
iconPath: categoryIcon(),
4052
contextValue: 'cnb-post-category',
4153
} as TreeItem);
4254
}

0 commit comments

Comments
 (0)