Skip to content
This repository was archived by the owner on Jul 28, 2025. It is now read-only.

Commit 5aaac3f

Browse files
committed
show/hide bar icon
1 parent 0df1403 commit 5aaac3f

File tree

6 files changed

+79
-3
lines changed

6 files changed

+79
-3
lines changed

src/Settings.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import editing_engine_settings_section from "settings/EditingEngineSection";
1515
import rows_settings_section from "settings/RowsSection";
1616
import csv_settings_section from "settings/CSVSection";
1717
import automation_settings_section from "settings/AutomationSection";
18+
import helpers_settings_section from "settings/HelpersSection";
1819

1920
export type SettingRetriever = <K extends keyof DatabaseSettings>(
2021
key: K,
@@ -99,6 +100,8 @@ export class SettingsManager {
99100
media_settings_section(settingHandlerResponse);
100101
/** CSV section */
101102
csv_settings_section.run(settingHandlerResponse);
103+
/** Helpers/Commands section */
104+
helpers_settings_section.run(settingHandlerResponse);
102105
/** Developer section */
103106
developer_settings_section.run(settingHandlerResponse);
104107
}
@@ -129,7 +132,7 @@ export class SettingsModal extends Modal {
129132
config: SettingsManagerConfig,
130133
settings: DatabaseSettings
131134
) {
132-
super(view.app);
135+
super(app);
133136

134137
this.view = view;
135138
this.settingsManager = new SettingsManager(view.plugin, config, settings);
@@ -155,7 +158,7 @@ export class DBFolderSettingTab extends PluginSettingTab {
155158
plugin: DBFolderPlugin;
156159
settingsManager: SettingsManager;
157160
constructor(plugin: DBFolderPlugin, config: SettingsManagerConfig) {
158-
super(plugin.app, plugin);
161+
super(app, plugin);
159162
this.plugin = plugin;
160163
this.settingsManager = new SettingsManager(plugin, config, plugin.settings);
161164
}

src/cdm/SettingsModel.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export type AtomicFilter = {
2323
*/
2424
export interface GlobalSettings {
2525
enable_debug_mode: boolean;
26+
enable_ribbon_icon: boolean;
2627
logger_level_info: string;
2728
media_settings: MediaSettings;
2829
enable_show_state: boolean;

src/helpers/Constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,7 @@ export const DEFAULT_SETTINGS: DatabaseSettings = {
339339
enable_debug_mode: false,
340340
enable_show_state: false,
341341
enable_row_shadow: true,
342+
enable_ribbon_icon: true,
342343
logger_level_info: 'error',
343344
csv_file_header_key: 'File',
344345
media_settings: {

src/main.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ export default class DBFolderPlugin extends Plugin {
6565
stateManagers: Map<TFile, StateManager> = new Map();
6666

6767
windowRegistry: Map<Window, WindowRegistry> = new Map();
68+
69+
ribbonIcon: HTMLElement;
70+
6871
async onload(): Promise<void> {
6972
await this.load_settings();
7073
addIcon(DB_ICONS.NAME, DB_ICONS.ICON);
@@ -402,7 +405,13 @@ export default class DBFolderPlugin extends Plugin {
402405
callback: () => new DatabaseHelperCreationModal(this.settings.local_settings).open(),
403406
});
404407

405-
this.addRibbonIcon(DB_ICONS.NAME, t("ribbon_icon_title"), async (e) => {
408+
if (this.settings.global_settings.enable_ribbon_icon) {
409+
this.showRibbonIcon();
410+
}
411+
}
412+
413+
showRibbonIcon() {
414+
this.ribbonIcon = this.addRibbonIcon(DB_ICONS.NAME, t("ribbon_icon_title"), async (e) => {
406415
new DatabaseHelperCreationModal(this.settings.local_settings).open()
407416
});
408417
}

src/settings/HelpersSection.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { add_setting_header } from 'settings/SettingsComponents';
2+
import { SettingHandlerResponse } from 'settings/handlers/AbstractSettingHandler';
3+
import { AbstractChain } from 'patterns/AbstractFactoryChain';
4+
import { AbstractHandler } from 'patterns/AbstractHandler';
5+
import { RibbonIconToggleHandler } from 'settings/handlers/helpersCommands/RibbonIconToggleHandler';
6+
7+
class HelpersSection extends AbstractChain<SettingHandlerResponse> {
8+
protected customHandle(settingHandlerResponse: SettingHandlerResponse): SettingHandlerResponse {
9+
const automation_section = settingHandlerResponse.containerEl.createDiv("configuration-section-container-automations");
10+
// title of the section
11+
add_setting_header(automation_section, "Helpers/Commands Section", 'h3');
12+
settingHandlerResponse.containerEl = automation_section;
13+
return settingHandlerResponse;
14+
}
15+
protected getHandlers(): AbstractHandler<SettingHandlerResponse>[] {
16+
return [
17+
new RibbonIconToggleHandler()
18+
];
19+
}
20+
}
21+
22+
const helpers_settings_section = new HelpersSection();
23+
export default helpers_settings_section;
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { add_toggle } from "settings/SettingsComponents";
2+
import { AbstractSettingsHandler, SettingHandlerResponse } from "settings/handlers/AbstractSettingHandler";
3+
export class RibbonIconToggleHandler extends AbstractSettingsHandler {
4+
settingTitle: string = 'Show/Hide Ribbon Icon';
5+
handle(settingHandlerResponse: SettingHandlerResponse): SettingHandlerResponse {
6+
const { settingsManager, containerEl, local } = settingHandlerResponse;
7+
// pass if modal opened from local settings
8+
if (!local) {
9+
const ribbon_toggle_promise = async (value: boolean): Promise<void> => {
10+
// set debug mode
11+
const updated_global_settings = settingsManager.plugin.settings.global_settings;
12+
updated_global_settings.enable_ribbon_icon = value;
13+
14+
if (updated_global_settings.enable_ribbon_icon) {
15+
settingsManager.plugin.showRibbonIcon();
16+
} else {
17+
settingsManager.plugin.ribbonIcon.remove();
18+
}
19+
20+
21+
// update settings
22+
await settingsManager.plugin.updateSettings({
23+
global_settings: updated_global_settings
24+
});
25+
}
26+
27+
28+
add_toggle(
29+
containerEl,
30+
this.settingTitle,
31+
"This will show/hide the ribbon icon from bar",
32+
settingsManager.plugin.settings.global_settings.enable_ribbon_icon,
33+
ribbon_toggle_promise
34+
);
35+
}
36+
37+
return this.goNext(settingHandlerResponse);
38+
}
39+
}

0 commit comments

Comments
 (0)