Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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."
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand All @@ -26,7 +26,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
}

leetCodeManager.on("statusChanged", () => {
leetCodeStatusBarItem.updateStatusBar(leetCodeManager.getStatus(), leetCodeManager.getUser());
leetCodeStatusBarController.updateStatusBar(leetCodeManager.getStatus(), leetCodeManager.getUser());
leetCodeTreeDataProvider.refresh();
});

Expand All @@ -36,7 +36,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
leetCodeSolutionProvider.initialize(context);

context.subscriptions.push(
leetCodeStatusBarItem,
leetCodeStatusBarController,
leetCodeChannel,
leetCodePreviewProvider,
leetCodeResultProvider,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand All @@ -29,5 +29,3 @@ class LeetCodeStatusBarItem implements vscode.Disposable {
this.statusBarItem.dispose();
}
}

export const leetCodeStatusBarItem: LeetCodeStatusBarItem = new LeetCodeStatusBarItem();
51 changes: 51 additions & 0 deletions src/statusbar/leetCodeStatusBarController.ts
Original file line number Diff line number Diff line change
@@ -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<boolean>("leetcode.enableStatusBar", false);
}
}

export const leetCodeStatusBarController: LeetCodeStatusBarController = new LeetCodeStatusBarController();