1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
18 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
19 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
20 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
21 | return c > 3 && r && Object.defineProperty(target, key, r), r;
|
22 | };
|
23 | var __metadata = (this && this.__metadata) || function (k, v) {
|
24 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
25 | };
|
26 | Object.defineProperty(exports, "__esModule", { value: true });
|
27 | exports.LanguageQuickPickService = void 0;
|
28 | const inversify_1 = require("inversify");
|
29 | const nls_1 = require("../../common/nls");
|
30 | const localization_1 = require("../../common/i18n/localization");
|
31 | const quick_input_1 = require("../quick-input");
|
32 | const window_service_1 = require("../window/window-service");
|
33 | let LanguageQuickPickService = class LanguageQuickPickService {
|
34 | async pickDisplayLanguage() {
|
35 | const quickInput = this.quickInputService.createQuickPick();
|
36 | const installedItems = await this.getInstalledLanguages();
|
37 | const quickInputItems = [
|
38 | {
|
39 | type: 'separator',
|
40 | label: nls_1.nls.localizeByDefault('Installed')
|
41 | },
|
42 | ...installedItems
|
43 | ];
|
44 | quickInput.items = quickInputItems;
|
45 | quickInput.busy = true;
|
46 | const selected = installedItems.find(item => nls_1.nls.isSelectedLocale(item.languageId));
|
47 | if (selected) {
|
48 | quickInput.activeItems = [selected];
|
49 | }
|
50 | quickInput.placeholder = nls_1.nls.localizeByDefault('Configure Display Language');
|
51 | quickInput.show();
|
52 | this.getAvailableLanguages().then(availableItems => {
|
53 | if (availableItems.length > 0) {
|
54 | quickInputItems.push({
|
55 | type: 'separator',
|
56 | label: nls_1.nls.localizeByDefault('Available')
|
57 | });
|
58 | const installed = new Set(installedItems.map(e => e.languageId));
|
59 | for (const available of availableItems) {
|
60 |
|
61 | if (!installed.has(available.languageId)) {
|
62 | quickInputItems.push(available);
|
63 | }
|
64 | }
|
65 | quickInput.items = quickInputItems;
|
66 | }
|
67 | }).finally(() => {
|
68 | quickInput.busy = false;
|
69 | });
|
70 | return new Promise(resolve => {
|
71 | quickInput.onDidAccept(async () => {
|
72 | var _a;
|
73 | const selectedItem = quickInput.selectedItems[0];
|
74 | if (selectedItem) {
|
75 |
|
76 |
|
77 | await ((_a = selectedItem.execute) === null || _a === void 0 ? void 0 : _a.call(selectedItem));
|
78 | resolve(selectedItem);
|
79 | }
|
80 | else {
|
81 | resolve(undefined);
|
82 | }
|
83 | quickInput.hide();
|
84 | });
|
85 | quickInput.onDidHide(() => {
|
86 | resolve(undefined);
|
87 | });
|
88 | });
|
89 | }
|
90 | async getInstalledLanguages() {
|
91 | const languageInfos = await this.localizationProvider.getAvailableLanguages();
|
92 | const items = [];
|
93 | const en = {
|
94 | languageId: 'en',
|
95 | languageName: 'English',
|
96 | localizedLanguageName: 'English'
|
97 | };
|
98 | languageInfos.push(en);
|
99 | for (const language of languageInfos.filter(e => !!e.languageId)) {
|
100 | items.push(this.createLanguageQuickPickItem(language));
|
101 | }
|
102 | return items;
|
103 | }
|
104 | async getAvailableLanguages() {
|
105 | return [];
|
106 | }
|
107 | createLanguageQuickPickItem(language) {
|
108 | let label;
|
109 | let description;
|
110 | const languageName = language.localizedLanguageName || language.languageName;
|
111 | const id = language.languageId;
|
112 | const idLabel = id + (nls_1.nls.isSelectedLocale(id) ? ` (${nls_1.nls.localizeByDefault('Current')})` : '');
|
113 | if (languageName) {
|
114 | label = languageName;
|
115 | description = idLabel;
|
116 | }
|
117 | else {
|
118 | label = idLabel;
|
119 | }
|
120 | return {
|
121 | label,
|
122 | description,
|
123 | languageId: id,
|
124 | languageName: language.languageName,
|
125 | localizedLanguageName: language.localizedLanguageName
|
126 | };
|
127 | }
|
128 | };
|
129 | __decorate([
|
130 | (0, inversify_1.inject)(quick_input_1.QuickInputService),
|
131 | __metadata("design:type", Object)
|
132 | ], LanguageQuickPickService.prototype, "quickInputService", void 0);
|
133 | __decorate([
|
134 | (0, inversify_1.inject)(localization_1.AsyncLocalizationProvider),
|
135 | __metadata("design:type", Object)
|
136 | ], LanguageQuickPickService.prototype, "localizationProvider", void 0);
|
137 | __decorate([
|
138 | (0, inversify_1.inject)(window_service_1.WindowService),
|
139 | __metadata("design:type", Object)
|
140 | ], LanguageQuickPickService.prototype, "windowService", void 0);
|
141 | LanguageQuickPickService = __decorate([
|
142 | (0, inversify_1.injectable)()
|
143 | ], LanguageQuickPickService);
|
144 | exports.LanguageQuickPickService = LanguageQuickPickService;
|
145 |
|
\ | No newline at end of file |