diff --git a/src/main.ts b/src/main.ts index e8fd672..cabab13 100644 --- a/src/main.ts +++ b/src/main.ts @@ -6,7 +6,7 @@ import { removeFromIndex, } from './search' import { OmnisearchInFileModal, OmnisearchVaultModal } from './modals' -import { loadSettings, SettingsTab } from './settings' +import { loadSettings, settings, SettingsTab } from './settings' import { eventBus } from './globals' import { registerAPI } from '@vanakat/plugin-api' import api from './api' @@ -33,6 +33,10 @@ export default class OmnisearchPlugin extends Plugin { _registerAPI(this) + if (settings.ribbonIcon) { + this.addRibbonButton() + } + this.addSettingTab(new SettingsTab(this)) eventBus.disable('vault') eventBus.disable('infile') @@ -85,4 +89,10 @@ export default class OmnisearchPlugin extends Plugin { } onunload(): void {} + + addRibbonButton(): void { + this.addRibbonIcon('search', 'Omnisearch', evt => { + new OmnisearchVaultModal(app).open() + }) + } } diff --git a/src/settings.ts b/src/settings.ts index 0bdfee7..c63c44d 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -13,6 +13,7 @@ export interface OmnisearchSettings extends WeightingSettings { respectExcluded: boolean ignoreDiacritics: boolean showIndexingNotices: boolean + ribbonIcon: boolean showShortName: boolean CtrlJK: boolean CtrlNP: boolean @@ -93,6 +94,20 @@ export class SettingsTab extends PluginSettingTab { new Setting(containerEl).setName('User Interface').setHeading() + // Show Ribbon Icon + new Setting(containerEl) + .setName('Show ribbon button') + .setDesc('Add a button on the sidebar to open the Vault search modal. Needs a restart to remove the button.') + .addToggle(toggle => + toggle.setValue(settings.ribbonIcon).onChange(async v => { + settings.ribbonIcon = v + await saveSettings(this.plugin) + if (v) { + this.plugin.addRibbonButton() + } + }), + ) + // Show notices new Setting(containerEl) .setName('Show indexing notices') @@ -189,6 +204,7 @@ export const DEFAULT_SETTINGS: OmnisearchSettings = { showIndexingNotices: false, showShortName: false, + ribbonIcon: true, weightBasename: 2, weightH1: 1.5,