From 639c00a7fad956d2483976ddc07691cf3289e7b2 Mon Sep 17 00:00:00 2001 From: "sheche@microsoft.com" Date: Fri, 22 Mar 2019 18:44:08 +0800 Subject: [PATCH 1/3] Can hide the status bar --- package.json | 6 +++ src/extension.ts | 6 +-- .../LeetCodeStatusBarItem.ts} | 6 +-- src/statusbar/leetCodeStatusBarController.ts | 51 +++++++++++++++++++ 4 files changed, 62 insertions(+), 7 deletions(-) rename src/{leetCodeStatusBarItem.ts => statusbar/LeetCodeStatusBarItem.ts} (81%) create mode 100644 src/statusbar/leetCodeStatusBarController.ts diff --git a/package.json b/package.json index e97cce5d..56343331 100644 --- a/package.json +++ b/package.json @@ -287,6 +287,12 @@ "type": "string", "scope": "application", "description": "Specify the relative path to save the problem files." + }, + "leetcode.enableStatusBar": { + "type": "boolean", + "default": true, + "scope": "application", + "description": "Specify whether the LeetCode status bar will be shown or not." } } } diff --git a/src/extension.ts b/src/extension.ts index eb376a90..7a389142 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -15,7 +15,7 @@ import { LeetCodeTreeDataProvider } from "./explorer/LeetCodeTreeDataProvider"; import { leetCodeChannel } from "./leetCodeChannel"; import { leetCodeExecutor } from "./leetCodeExecutor"; import { leetCodeManager } from "./leetCodeManager"; -import { leetCodeStatusBarItem } from "./leetCodeStatusBarItem"; +import { leetCodeStatusBarController } from "./statusbar/leetCodeStatusBarController"; import { leetCodePreviewProvider } from "./webview/leetCodePreviewProvider"; import { leetCodeResultProvider } from "./webview/leetCodeResultProvider"; import { leetCodeSolutionProvider } from "./webview/leetCodeSolutionProvider"; @@ -26,7 +26,7 @@ export async function activate(context: vscode.ExtensionContext): Promise } leetCodeManager.on("statusChanged", () => { - leetCodeStatusBarItem.updateStatusBar(leetCodeManager.getStatus(), leetCodeManager.getUser()); + leetCodeStatusBarController.updateStatusBar(leetCodeManager.getStatus(), leetCodeManager.getUser()); leetCodeTreeDataProvider.refresh(); }); @@ -36,7 +36,7 @@ export async function activate(context: vscode.ExtensionContext): Promise leetCodeSolutionProvider.initialize(context); context.subscriptions.push( - leetCodeStatusBarItem, + leetCodeStatusBarController, leetCodeChannel, leetCodePreviewProvider, leetCodeResultProvider, diff --git a/src/leetCodeStatusBarItem.ts b/src/statusbar/LeetCodeStatusBarItem.ts similarity index 81% rename from src/leetCodeStatusBarItem.ts rename to src/statusbar/LeetCodeStatusBarItem.ts index 224a3536..ef7af685 100644 --- a/src/leetCodeStatusBarItem.ts +++ b/src/statusbar/LeetCodeStatusBarItem.ts @@ -2,9 +2,9 @@ // Licensed under the MIT license. import * as vscode from "vscode"; -import { UserStatus } from "./shared"; +import { UserStatus } from "../shared"; -class LeetCodeStatusBarItem implements vscode.Disposable { +export class LeetCodeStatusBarItem implements vscode.Disposable { private readonly statusBarItem: vscode.StatusBarItem; constructor() { @@ -29,5 +29,3 @@ class LeetCodeStatusBarItem implements vscode.Disposable { this.statusBarItem.dispose(); } } - -export const leetCodeStatusBarItem: LeetCodeStatusBarItem = new LeetCodeStatusBarItem(); diff --git a/src/statusbar/leetCodeStatusBarController.ts b/src/statusbar/leetCodeStatusBarController.ts new file mode 100644 index 00000000..9dde6b73 --- /dev/null +++ b/src/statusbar/leetCodeStatusBarController.ts @@ -0,0 +1,51 @@ +// Copyright (c) jdneo. All rights reserved. +// Licensed under the MIT license. + +import { ConfigurationChangeEvent, Disposable, workspace, WorkspaceConfiguration } from "vscode"; +import { leetCodeManager } from "../leetCodeManager"; +import { UserStatus } from "../shared"; +import { LeetCodeStatusBarItem } from "./leetCodeStatusBarItem"; + +class LeetCodeStatusBarController implements Disposable { + private statusBar: LeetCodeStatusBarItem | undefined; + private configurationChangeListener: Disposable; + + constructor() { + if (this.isStatusBarEnabled()) { + this.statusBar = new LeetCodeStatusBarItem(); + } + + this.configurationChangeListener = workspace.onDidChangeConfiguration((event: ConfigurationChangeEvent) => { + if (event.affectsConfiguration("leetcode.enableStatusBar")) { + const isStatusBarEnabled: boolean = this.isStatusBarEnabled(); + if (isStatusBarEnabled && this.statusBar === undefined) { + this.statusBar = new LeetCodeStatusBarItem(); + this.statusBar.updateStatusBar(leetCodeManager.getStatus(), leetCodeManager.getUser()); + } else if (!isStatusBarEnabled && this.statusBar !== undefined) { + this.statusBar.dispose(); + this.statusBar = undefined; + } + } + }, this); + } + + public updateStatusBar(status: UserStatus, user?: string): void { + if (this.statusBar) { + this.statusBar.updateStatusBar(status, user); + } + } + + public dispose(): void { + if (this.statusBar) { + this.statusBar.dispose(); + } + this.configurationChangeListener.dispose(); + } + + private isStatusBarEnabled(): boolean { + const configuration: WorkspaceConfiguration = workspace.getConfiguration(); + return configuration.get("leetcode.enableStatusBar", false); + } +} + +export const leetCodeStatusBarController: LeetCodeStatusBarController = new LeetCodeStatusBarController(); From 2be220e84282c7fce2240355a7d726830801303a Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Fri, 22 Mar 2019 19:34:25 +0800 Subject: [PATCH 2/3] Correct the import name --- src/statusbar/leetCodeStatusBarController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/statusbar/leetCodeStatusBarController.ts b/src/statusbar/leetCodeStatusBarController.ts index 9dde6b73..0e4d4acd 100644 --- a/src/statusbar/leetCodeStatusBarController.ts +++ b/src/statusbar/leetCodeStatusBarController.ts @@ -4,7 +4,7 @@ import { ConfigurationChangeEvent, Disposable, workspace, WorkspaceConfiguration } from "vscode"; import { leetCodeManager } from "../leetCodeManager"; import { UserStatus } from "../shared"; -import { LeetCodeStatusBarItem } from "./leetCodeStatusBarItem"; +import { LeetCodeStatusBarItem } from "./LeetCodeStatusBarItem"; class LeetCodeStatusBarController implements Disposable { private statusBar: LeetCodeStatusBarItem | undefined; From a5fa748184e74cd054427117f9cdcae3cefa507b Mon Sep 17 00:00:00 2001 From: "sheche@microsoft.com" Date: Fri, 22 Mar 2019 21:06:42 +0800 Subject: [PATCH 3/3] Using hide/show instead of disposing --- README.md | 1 + docs/README_zh-CN.md | 1 + src/statusbar/LeetCodeStatusBarItem.ts | 8 ++++++ src/statusbar/leetCodeStatusBarController.ts | 29 +++++++++----------- 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index fc09cb67..d5a881aa 100644 --- a/README.md +++ b/README.md @@ -137,6 +137,7 @@ | `leetcode.useWsl` | Specify whether to use WSL or not | `false` | | `leetcode.endpoint` | Specify the active endpoint. Supported endpoints are: `leetcode`, `leetcode-cn` | `leetcode` | | `leetcode.outputFolder`| Specify the relative path to save the problem files. Besides using customized path, there are also several reserved words which can be used here:
  • `${tag}`: Categorize the problem according to their tags.
  • `${language}`: Categorize the problem according to their language.
  • `${difficulty}`: Categorize the problem according to their difficulty.
| N/A | +| `leetcode.enableStatusBar` | Specify whether the LeetCode status bar will be shown or not. | `true` | ## Troubleshooting When you meet any problem, you can check the [Troubleshooting Page](https://github.com/jdneo/vscode-leetcode/wiki/Troubleshooting) first. diff --git a/docs/README_zh-CN.md b/docs/README_zh-CN.md index fc66aeaf..dda1b4ac 100644 --- a/docs/README_zh-CN.md +++ b/docs/README_zh-CN.md @@ -137,6 +137,7 @@ | `leetcode.useWsl` | 指定是否启用 WSL | `false` | | `leetcode.endpoint` | 指定使用的终端,可用终端有:`leetcode`, `leetcode-cn` | `leetcode` | | `leetcode.outputFolder` | 指定保存文件时所用的相对文件夹路径。除了用户自定义路径外,也可以使用保留项,包括:
  • `${tag}`: 根据题目的类别进行分类。
  • `${language}`: 根据题目的语言进行分类。
  • `${difficulty}`: 根据题目的难度进行分类。
| N/A | +| `leetcode.enableStatusBar` | 指定是否在 VS Code 下方显示插件状态栏。 | `true` | ## 疑难解答 在遇到任何问题时,可以先查看一下[疑难解答](https://github.com/jdneo/vscode-leetcode/wiki/%E7%96%91%E9%9A%BE%E8%A7%A3%E7%AD%94)文档寻求帮助。 diff --git a/src/statusbar/LeetCodeStatusBarItem.ts b/src/statusbar/LeetCodeStatusBarItem.ts index ef7af685..749bbfac 100644 --- a/src/statusbar/LeetCodeStatusBarItem.ts +++ b/src/statusbar/LeetCodeStatusBarItem.ts @@ -25,6 +25,14 @@ export class LeetCodeStatusBarItem implements vscode.Disposable { } } + public show(): void { + this.statusBarItem.show(); + } + + public hide(): void { + this.statusBarItem.hide(); + } + public dispose(): void { this.statusBarItem.dispose(); } diff --git a/src/statusbar/leetCodeStatusBarController.ts b/src/statusbar/leetCodeStatusBarController.ts index 0e4d4acd..177853a1 100644 --- a/src/statusbar/leetCodeStatusBarController.ts +++ b/src/statusbar/leetCodeStatusBarController.ts @@ -2,29 +2,20 @@ // Licensed under the MIT license. import { ConfigurationChangeEvent, Disposable, workspace, WorkspaceConfiguration } from "vscode"; -import { leetCodeManager } from "../leetCodeManager"; import { UserStatus } from "../shared"; import { LeetCodeStatusBarItem } from "./LeetCodeStatusBarItem"; class LeetCodeStatusBarController implements Disposable { - private statusBar: LeetCodeStatusBarItem | undefined; + private statusBar: LeetCodeStatusBarItem; private configurationChangeListener: Disposable; constructor() { - if (this.isStatusBarEnabled()) { - this.statusBar = new LeetCodeStatusBarItem(); - } + this.statusBar = new LeetCodeStatusBarItem(); + this.setStatusBarVisibility(); this.configurationChangeListener = workspace.onDidChangeConfiguration((event: ConfigurationChangeEvent) => { if (event.affectsConfiguration("leetcode.enableStatusBar")) { - const isStatusBarEnabled: boolean = this.isStatusBarEnabled(); - if (isStatusBarEnabled && this.statusBar === undefined) { - this.statusBar = new LeetCodeStatusBarItem(); - this.statusBar.updateStatusBar(leetCodeManager.getStatus(), leetCodeManager.getUser()); - } else if (!isStatusBarEnabled && this.statusBar !== undefined) { - this.statusBar.dispose(); - this.statusBar = undefined; - } + this.setStatusBarVisibility(); } }, this); } @@ -36,12 +27,18 @@ class LeetCodeStatusBarController implements Disposable { } public dispose(): void { - if (this.statusBar) { - this.statusBar.dispose(); - } + this.statusBar.dispose(); this.configurationChangeListener.dispose(); } + private setStatusBarVisibility(): void { + if (this.isStatusBarEnabled()) { + this.statusBar.show(); + } else { + this.statusBar.hide(); + } + } + private isStatusBarEnabled(): boolean { const configuration: WorkspaceConfiguration = workspace.getConfiguration(); return configuration.get("leetcode.enableStatusBar", false); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy