2018-09-22 06:22:51 +02:00
|
|
|
import { Component, OnInit } from '@angular/core';
|
2019-11-14 05:12:00 +01:00
|
|
|
import { FormBuilder, FormGroup } from '@angular/forms';
|
|
|
|
import { Howl } from 'howler';
|
|
|
|
|
2019-05-22 02:18:01 +02:00
|
|
|
import { environment } from '../../../../environments/environment';
|
2021-02-28 07:19:41 +01:00
|
|
|
import { ToolsService, InstanceType } from '../../../services/tools.service';
|
2019-11-14 05:12:00 +01:00
|
|
|
import { UserNotificationService, NotificationSoundDefinition } from '../../../services/user-notification.service';
|
2020-03-07 06:31:14 +01:00
|
|
|
import { ServiceWorkerService } from '../../../services/service-worker.service';
|
2023-08-04 00:45:55 +02:00
|
|
|
import { ContentWarningPolicy, ContentWarningPolicyEnum, TimeLineModeEnum, TimeLineHeaderEnum, ILanguage } from '../../../states/settings.state';
|
2020-05-01 04:38:16 +02:00
|
|
|
import { NotificationService } from '../../../services/notification.service';
|
2020-09-12 20:17:54 +02:00
|
|
|
import { NavigationService } from '../../../services/navigation.service';
|
2021-02-28 08:38:42 +01:00
|
|
|
import { SettingsService } from '../../../services/settings.service';
|
2023-08-04 00:45:55 +02:00
|
|
|
import { LanguageService } from '../../../services/language.service';
|
2018-09-22 06:22:51 +02:00
|
|
|
|
|
|
|
@Component({
|
2019-05-21 07:19:34 +02:00
|
|
|
selector: 'app-settings',
|
|
|
|
templateUrl: './settings.component.html',
|
|
|
|
styleUrls: ['./settings.component.scss']
|
2018-09-22 06:22:51 +02:00
|
|
|
})
|
2020-02-20 05:40:11 +01:00
|
|
|
|
2018-09-22 06:22:51 +02:00
|
|
|
export class SettingsComponent implements OnInit {
|
2020-03-07 17:01:20 +01:00
|
|
|
|
2019-11-14 05:12:00 +01:00
|
|
|
notificationSounds: NotificationSoundDefinition[];
|
|
|
|
notificationSoundId: string;
|
|
|
|
notificationForm: FormGroup;
|
2018-09-22 06:22:51 +02:00
|
|
|
|
2019-11-15 04:58:09 +01:00
|
|
|
disableAutofocusEnabled: boolean;
|
2020-04-11 05:27:29 +02:00
|
|
|
disableRemoteStatusFetchingEnabled: boolean;
|
2019-11-15 04:58:09 +01:00
|
|
|
disableAvatarNotificationsEnabled: boolean;
|
|
|
|
disableSoundsEnabled: boolean;
|
|
|
|
version: string;
|
|
|
|
|
2021-02-28 07:19:41 +01:00
|
|
|
hasPleromaAccount: boolean;
|
|
|
|
autoFollowOnListEnabled: boolean;
|
|
|
|
|
2021-02-28 07:50:06 +01:00
|
|
|
twitterBridgeEnabled: boolean;
|
|
|
|
|
2020-02-20 05:40:11 +01:00
|
|
|
columnShortcutEnabled: ColumnShortcut = ColumnShortcut.Ctrl;
|
2020-04-20 06:19:56 +02:00
|
|
|
timeLineHeader: TimeLineHeaderEnum = TimeLineHeaderEnum.Title_DomainName;
|
2020-04-19 06:23:08 +02:00
|
|
|
timeLineMode: TimeLineModeEnum = TimeLineModeEnum.OnTop;
|
2020-03-28 22:04:36 +01:00
|
|
|
contentWarningPolicy: ContentWarningPolicyEnum = ContentWarningPolicyEnum.None;
|
2020-03-27 06:06:06 +01:00
|
|
|
|
|
|
|
private addCwOnContent: string;
|
|
|
|
set setAddCwOnContent(value: string) {
|
2020-03-28 22:04:36 +01:00
|
|
|
this.setCwPolicy(null, value, null, null);
|
2020-03-27 06:06:06 +01:00
|
|
|
this.addCwOnContent = value.trim();
|
|
|
|
}
|
|
|
|
get setAddCwOnContent(): string {
|
|
|
|
return this.addCwOnContent;
|
|
|
|
}
|
|
|
|
|
|
|
|
private removeCwOnContent: string;
|
|
|
|
set setRemoveCwOnContent(value: string) {
|
2020-03-28 22:04:36 +01:00
|
|
|
this.setCwPolicy(null, null, value, null);
|
2020-03-27 06:06:06 +01:00
|
|
|
this.removeCwOnContent = value.trim();
|
|
|
|
}
|
|
|
|
get setRemoveCwOnContent(): string {
|
|
|
|
return this.removeCwOnContent;
|
|
|
|
}
|
|
|
|
|
|
|
|
private contentHidedCompletely: string;
|
|
|
|
set setContentHidedCompletely(value: string) {
|
2020-03-28 22:04:36 +01:00
|
|
|
this.setCwPolicy(null, null, null, value);
|
2020-03-27 06:06:06 +01:00
|
|
|
this.contentHidedCompletely = value.trim();
|
|
|
|
}
|
|
|
|
get setContentHidedCompletely(): string {
|
|
|
|
return this.contentHidedCompletely;
|
|
|
|
}
|
|
|
|
|
2021-02-28 07:50:06 +01:00
|
|
|
private twitterBridgeInstance: string;
|
|
|
|
set setTwitterBridgeInstance(value: string) {
|
|
|
|
let instance = value.replace('https://', '').replace('http://', '').replace('/', '').trim();
|
|
|
|
this.setBridgeInstance(instance);
|
|
|
|
this.twitterBridgeInstance = instance;
|
|
|
|
}
|
|
|
|
get setTwitterBridgeInstance(): string {
|
|
|
|
return this.twitterBridgeInstance;
|
|
|
|
}
|
|
|
|
|
2019-11-14 05:12:00 +01:00
|
|
|
constructor(
|
2023-08-04 00:45:55 +02:00
|
|
|
private readonly languageService: LanguageService,
|
2021-02-28 08:38:42 +01:00
|
|
|
private readonly settingsService: SettingsService,
|
2020-09-12 20:17:54 +02:00
|
|
|
private readonly navigationService: NavigationService,
|
2019-11-14 05:12:00 +01:00
|
|
|
private formBuilder: FormBuilder,
|
2020-03-07 06:31:14 +01:00
|
|
|
private serviceWorkersService: ServiceWorkerService,
|
2019-11-14 05:12:00 +01:00
|
|
|
private readonly toolsService: ToolsService,
|
2020-05-01 04:38:16 +02:00
|
|
|
private readonly notificationService: NotificationService,
|
2019-11-14 05:12:00 +01:00
|
|
|
private readonly userNotificationsService: UserNotificationService) { }
|
2019-05-21 07:19:34 +02:00
|
|
|
|
|
|
|
ngOnInit() {
|
|
|
|
this.version = environment.VERSION;
|
2019-11-14 05:12:00 +01:00
|
|
|
|
2021-02-28 08:38:42 +01:00
|
|
|
const settings = this.settingsService.getSettings();
|
2019-11-16 23:27:29 +01:00
|
|
|
|
2019-11-14 05:12:00 +01:00
|
|
|
this.notificationSounds = this.userNotificationsService.getAllNotificationSounds();
|
2019-11-16 23:27:29 +01:00
|
|
|
this.notificationSoundId = settings.notificationSoundFileId;
|
2019-11-14 05:12:00 +01:00
|
|
|
this.notificationForm = this.formBuilder.group({
|
|
|
|
countryControl: [this.notificationSounds[this.notificationSoundId].id]
|
|
|
|
});
|
2019-11-16 23:27:29 +01:00
|
|
|
|
|
|
|
this.disableAutofocusEnabled = settings.disableAutofocus;
|
|
|
|
this.disableAvatarNotificationsEnabled = settings.disableAvatarNotifications;
|
|
|
|
this.disableSoundsEnabled = settings.disableSounds;
|
2020-04-11 05:27:29 +02:00
|
|
|
this.disableRemoteStatusFetchingEnabled = settings.disableRemoteStatusFetching;
|
2020-02-20 05:40:11 +01:00
|
|
|
|
2020-03-07 17:01:20 +01:00
|
|
|
if (!settings.columnSwitchingWinAlt) {
|
2020-02-20 05:40:11 +01:00
|
|
|
this.columnShortcutEnabled = ColumnShortcut.Ctrl;
|
|
|
|
} else {
|
|
|
|
this.columnShortcutEnabled = ColumnShortcut.Win;
|
|
|
|
}
|
2020-03-28 22:04:36 +01:00
|
|
|
|
|
|
|
this.contentWarningPolicy = settings.contentWarningPolicy.policy;
|
|
|
|
this.addCwOnContent = settings.contentWarningPolicy.addCwOnContent.join(';');
|
|
|
|
this.removeCwOnContent = settings.contentWarningPolicy.removeCwOnContent.join(';');
|
|
|
|
this.contentHidedCompletely = settings.contentWarningPolicy.hideCompletlyContent.join(';');
|
2020-04-19 06:23:08 +02:00
|
|
|
|
2020-04-20 06:19:56 +02:00
|
|
|
this.timeLineHeader = settings.timelineHeader;
|
2020-04-19 06:23:08 +02:00
|
|
|
this.timeLineMode = settings.timelineMode;
|
2021-02-28 07:19:41 +01:00
|
|
|
|
|
|
|
this.autoFollowOnListEnabled = settings.autoFollowOnListEnabled;
|
|
|
|
const accs = this.toolsService.getAllAccounts();
|
|
|
|
accs.forEach(a => {
|
|
|
|
this.toolsService.getInstanceInfo(a)
|
|
|
|
.then(ins => {
|
|
|
|
if(ins.type === InstanceType.Pleroma){
|
|
|
|
this.hasPleromaAccount = true;
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.catch(err => console.error(err));
|
2021-02-28 07:50:06 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
this.twitterBridgeEnabled = settings.twitterBridgeEnabled;
|
|
|
|
this.twitterBridgeInstance = settings.twitterBridgeInstance;
|
2023-08-04 00:45:55 +02:00
|
|
|
|
|
|
|
this.configuredLangs = this.languageService.getConfiguredLanguages();
|
|
|
|
}
|
|
|
|
|
|
|
|
configuredLangs: ILanguage[] = [];
|
|
|
|
searchedLangs: ILanguage[] = [];
|
2023-08-04 04:44:14 +02:00
|
|
|
|
|
|
|
searchLang: string;
|
|
|
|
|
2023-08-04 00:45:55 +02:00
|
|
|
onSearchLang(input: string) {
|
|
|
|
console.warn(input);
|
|
|
|
this.searchedLangs = this.languageService.searchLanguage(input);
|
|
|
|
}
|
|
|
|
|
|
|
|
onAddLang(lang: ILanguage): boolean {
|
2023-08-04 04:44:14 +02:00
|
|
|
if(this.configuredLangs.find(x => x.iso639 === lang.iso639)) return false;
|
|
|
|
|
2023-08-04 00:45:55 +02:00
|
|
|
this.configuredLangs.push(lang);
|
|
|
|
this.languageService.addLanguage(lang);
|
2023-08-04 04:44:14 +02:00
|
|
|
|
|
|
|
this.searchLang = '';
|
|
|
|
this.searchedLangs.length = 0;
|
|
|
|
|
2023-08-04 00:45:55 +02:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
onRemoveLang(lang: ILanguage): boolean {
|
|
|
|
this.configuredLangs = this.configuredLangs.filter(x => x.iso639 !== lang.iso639);
|
|
|
|
this.languageService.removeLanguage(lang);
|
|
|
|
return false;
|
2020-02-20 05:40:11 +01:00
|
|
|
}
|
|
|
|
|
2020-03-07 17:01:20 +01:00
|
|
|
onShortcutChange(id: ColumnShortcut) {
|
2020-02-20 05:40:11 +01:00
|
|
|
this.columnShortcutEnabled = id;
|
2020-05-01 04:38:16 +02:00
|
|
|
this.notifyRestartNeeded();
|
2020-02-20 05:40:11 +01:00
|
|
|
|
2021-02-28 08:38:42 +01:00
|
|
|
let settings = this.settingsService.getSettings();
|
2020-02-20 05:40:11 +01:00
|
|
|
settings.columnSwitchingWinAlt = id === ColumnShortcut.Win;
|
2021-02-28 08:38:42 +01:00
|
|
|
this.settingsService.saveSettings(settings);
|
2020-02-20 05:40:11 +01:00
|
|
|
}
|
|
|
|
|
2020-04-20 06:19:56 +02:00
|
|
|
onTimeLineHeaderChange(id: TimeLineHeaderEnum){
|
|
|
|
this.timeLineHeader = id;
|
2020-05-01 04:38:16 +02:00
|
|
|
this.notifyRestartNeeded();
|
2020-04-20 06:19:56 +02:00
|
|
|
|
2021-02-28 08:38:42 +01:00
|
|
|
let settings = this.settingsService.getSettings();
|
2020-04-20 06:19:56 +02:00
|
|
|
settings.timelineHeader = id;
|
2021-02-28 08:38:42 +01:00
|
|
|
this.settingsService.saveSettings(settings);
|
2020-04-20 06:19:56 +02:00
|
|
|
}
|
|
|
|
|
2020-04-19 06:23:08 +02:00
|
|
|
onTimeLineModeChange(id: TimeLineModeEnum){
|
2020-04-19 06:14:16 +02:00
|
|
|
this.timeLineMode = id;
|
2020-05-01 04:38:16 +02:00
|
|
|
this.notifyRestartNeeded();
|
2020-04-19 06:14:16 +02:00
|
|
|
|
2021-02-28 08:38:42 +01:00
|
|
|
let settings = this.settingsService.getSettings();
|
2020-04-19 06:23:08 +02:00
|
|
|
settings.timelineMode = id;
|
2021-02-28 08:38:42 +01:00
|
|
|
this.settingsService.saveSettings(settings);
|
2020-04-19 06:14:16 +02:00
|
|
|
}
|
|
|
|
|
2020-03-28 22:04:36 +01:00
|
|
|
onCwPolicyChange(id: ContentWarningPolicyEnum) {
|
2020-03-27 06:06:06 +01:00
|
|
|
this.contentWarningPolicy = id;
|
2020-05-01 04:38:16 +02:00
|
|
|
this.notifyRestartNeeded();
|
2020-03-28 22:04:36 +01:00
|
|
|
|
|
|
|
this.setCwPolicy(id);
|
|
|
|
}
|
|
|
|
|
|
|
|
private setCwPolicy(id: ContentWarningPolicyEnum = null, addCw: string = null, removeCw: string = null, hide: string = null){
|
2020-05-01 04:38:16 +02:00
|
|
|
this.notifyRestartNeeded();
|
2021-02-28 08:38:42 +01:00
|
|
|
let settings = this.settingsService.getSettings();
|
2020-03-28 22:04:36 +01:00
|
|
|
let cwPolicySettings = new ContentWarningPolicy();
|
|
|
|
|
2020-03-29 00:10:15 +01:00
|
|
|
if(id !== null){
|
2020-03-28 22:04:36 +01:00
|
|
|
cwPolicySettings.policy = id;
|
|
|
|
} else {
|
|
|
|
cwPolicySettings.policy = settings.contentWarningPolicy.policy;
|
|
|
|
}
|
|
|
|
|
2020-03-29 00:10:15 +01:00
|
|
|
if(addCw !== null){
|
2020-03-28 23:58:40 +01:00
|
|
|
cwPolicySettings.addCwOnContent = this.splitCwValues(addCw);
|
2020-03-28 22:04:36 +01:00
|
|
|
} else {
|
|
|
|
cwPolicySettings.addCwOnContent = settings.contentWarningPolicy.addCwOnContent;
|
|
|
|
}
|
|
|
|
|
2020-03-29 00:10:15 +01:00
|
|
|
if(removeCw !== null){
|
2020-03-28 23:58:40 +01:00
|
|
|
cwPolicySettings.removeCwOnContent = this.splitCwValues(removeCw);
|
2020-03-28 22:04:36 +01:00
|
|
|
} else {
|
|
|
|
cwPolicySettings.removeCwOnContent = settings.contentWarningPolicy.removeCwOnContent;
|
|
|
|
}
|
|
|
|
|
2020-03-29 00:10:15 +01:00
|
|
|
if(hide !== null){
|
2020-03-28 23:58:40 +01:00
|
|
|
cwPolicySettings.hideCompletlyContent = this.splitCwValues(hide);
|
2020-03-28 22:04:36 +01:00
|
|
|
} else {
|
|
|
|
cwPolicySettings.hideCompletlyContent = settings.contentWarningPolicy.hideCompletlyContent;
|
|
|
|
}
|
|
|
|
|
2021-02-28 08:38:42 +01:00
|
|
|
this.settingsService.saveContentWarningPolicy(cwPolicySettings);
|
2021-02-28 07:50:06 +01:00
|
|
|
}
|
2020-03-27 06:06:06 +01:00
|
|
|
|
2020-03-28 23:58:40 +01:00
|
|
|
private splitCwValues(data: string): string[]{
|
2020-04-01 00:58:05 +02:00
|
|
|
return data.split(';').map(x => x.trim().toLowerCase()).filter((value, index, self) => self.indexOf(value) === index).filter(y => y !== '');
|
2020-03-28 23:58:40 +01:00
|
|
|
}
|
|
|
|
|
2021-02-28 07:50:06 +01:00
|
|
|
private setBridgeInstance(instance: string){
|
2021-02-28 08:38:42 +01:00
|
|
|
let settings = this.settingsService.getSettings();
|
2021-02-28 07:50:06 +01:00
|
|
|
settings.twitterBridgeInstance = instance;
|
2021-02-28 08:38:42 +01:00
|
|
|
this.settingsService.saveSettings(settings);
|
2021-02-28 07:50:06 +01:00
|
|
|
}
|
|
|
|
|
2020-05-01 04:38:16 +02:00
|
|
|
// reload(): boolean {
|
|
|
|
// window.location.reload();
|
|
|
|
// return false;
|
|
|
|
// }
|
2019-11-14 05:12:00 +01:00
|
|
|
|
|
|
|
onChange(soundId: string) {
|
|
|
|
this.notificationSoundId = soundId;
|
2021-02-28 08:38:42 +01:00
|
|
|
let settings = this.settingsService.getSettings()
|
2019-11-14 05:12:00 +01:00
|
|
|
settings.notificationSoundFileId = soundId;
|
2021-02-28 08:38:42 +01:00
|
|
|
this.settingsService.saveSettings(settings);
|
2019-11-14 05:12:00 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
playNotificationSound(): boolean {
|
|
|
|
let soundData = this.notificationSounds.find(x => x.id === this.notificationSoundId);
|
|
|
|
|
|
|
|
let sound = new Howl({
|
|
|
|
src: [soundData.path]
|
|
|
|
});
|
|
|
|
sound.play();
|
|
|
|
|
|
|
|
return false;
|
2019-05-21 07:19:34 +02:00
|
|
|
}
|
2019-11-15 04:58:09 +01:00
|
|
|
|
2020-03-07 17:01:20 +01:00
|
|
|
onDisableAutofocusChanged() {
|
2020-05-01 04:38:16 +02:00
|
|
|
this.notifyRestartNeeded();
|
2021-02-28 08:38:42 +01:00
|
|
|
let settings = this.settingsService.getSettings();
|
2019-11-16 23:27:29 +01:00
|
|
|
settings.disableAutofocus = this.disableAutofocusEnabled;
|
2021-02-28 08:38:42 +01:00
|
|
|
this.settingsService.saveSettings(settings);
|
2019-11-15 04:58:09 +01:00
|
|
|
}
|
|
|
|
|
2020-04-11 05:27:29 +02:00
|
|
|
onDisableRemoteStatusFetchingChanged() {
|
2020-05-01 04:40:52 +02:00
|
|
|
this.notifyRestartNeeded();
|
2021-02-28 08:38:42 +01:00
|
|
|
let settings = this.settingsService.getSettings();
|
2020-04-11 05:27:29 +02:00
|
|
|
settings.disableRemoteStatusFetching = this.disableRemoteStatusFetchingEnabled;
|
2021-02-28 08:38:42 +01:00
|
|
|
this.settingsService.saveSettings(settings);
|
2020-04-11 05:27:29 +02:00
|
|
|
}
|
|
|
|
|
2020-03-07 17:01:20 +01:00
|
|
|
onDisableAvatarNotificationsChanged() {
|
2020-05-01 04:38:16 +02:00
|
|
|
this.notifyRestartNeeded();
|
2021-02-28 08:38:42 +01:00
|
|
|
let settings = this.settingsService.getSettings();
|
2019-11-16 23:27:29 +01:00
|
|
|
settings.disableAvatarNotifications = this.disableAvatarNotificationsEnabled;
|
2021-02-28 08:38:42 +01:00
|
|
|
this.settingsService.saveSettings(settings);
|
2019-11-15 04:58:09 +01:00
|
|
|
}
|
|
|
|
|
2020-03-07 17:01:20 +01:00
|
|
|
onDisableSoundsEnabledChanged() {
|
2021-02-28 08:38:42 +01:00
|
|
|
let settings = this.settingsService.getSettings();
|
2019-11-16 23:27:29 +01:00
|
|
|
settings.disableSounds = this.disableSoundsEnabled;
|
2021-02-28 08:38:42 +01:00
|
|
|
this.settingsService.saveSettings(settings);
|
2019-11-15 04:58:09 +01:00
|
|
|
}
|
|
|
|
|
2021-02-28 07:19:41 +01:00
|
|
|
onAutoFollowOnListChanged(){
|
2021-02-28 08:38:42 +01:00
|
|
|
let settings = this.settingsService.getSettings();
|
2021-02-28 07:19:41 +01:00
|
|
|
settings.autoFollowOnListEnabled = this.autoFollowOnListEnabled;
|
2021-02-28 08:38:42 +01:00
|
|
|
this.settingsService.saveSettings(settings);
|
2021-02-28 07:19:41 +01:00
|
|
|
}
|
|
|
|
|
2021-02-28 07:50:06 +01:00
|
|
|
onTwitterBridgeEnabledChanged(){
|
2021-02-28 08:38:42 +01:00
|
|
|
let settings = this.settingsService.getSettings();
|
2021-02-28 07:50:06 +01:00
|
|
|
settings.twitterBridgeEnabled = this.twitterBridgeEnabled;
|
2021-02-28 08:38:42 +01:00
|
|
|
this.settingsService.saveSettings(settings);
|
2021-02-28 07:50:06 +01:00
|
|
|
}
|
|
|
|
|
2019-12-01 03:42:50 +01:00
|
|
|
isCleanningAll: boolean = false;
|
|
|
|
startClearAllLocalData(): boolean {
|
|
|
|
this.isCleanningAll = !this.isCleanningAll;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2020-03-07 17:01:20 +01:00
|
|
|
confirmClearAll(): boolean {
|
2019-12-01 03:42:50 +01:00
|
|
|
localStorage.clear();
|
|
|
|
location.reload();
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
cancelClearAll(): boolean {
|
|
|
|
this.isCleanningAll = false;
|
|
|
|
return false;
|
|
|
|
}
|
2020-03-07 06:31:14 +01:00
|
|
|
|
2020-03-07 17:01:20 +01:00
|
|
|
isCheckingUpdates = false;
|
2020-03-07 06:31:14 +01:00
|
|
|
checkForUpdates(): boolean {
|
2020-03-07 17:01:20 +01:00
|
|
|
this.isCheckingUpdates = true;
|
|
|
|
this.serviceWorkersService.checkForUpdates()
|
|
|
|
.catch(err => {
|
|
|
|
console.error(err);
|
|
|
|
})
|
|
|
|
.then(() => {
|
|
|
|
this.isCheckingUpdates = false;
|
|
|
|
});
|
2020-03-07 06:31:14 +01:00
|
|
|
return false;
|
|
|
|
}
|
2020-05-01 04:38:16 +02:00
|
|
|
|
|
|
|
notifyRestartNeeded(){
|
|
|
|
this.notificationService.notifyRestartNotification('Reload to apply changes');
|
|
|
|
}
|
2020-09-12 20:17:54 +02:00
|
|
|
|
|
|
|
openTutorial(): boolean {
|
|
|
|
localStorage.setItem('tutorial', JSON.stringify(false));
|
|
|
|
this.navigationService.closePanel();
|
|
|
|
return false;
|
|
|
|
}
|
2020-02-20 05:40:11 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
enum ColumnShortcut {
|
2020-03-07 17:01:20 +01:00
|
|
|
Ctrl = 1,
|
2020-02-20 05:40:11 +01:00
|
|
|
Win = 2
|
2019-05-22 02:18:01 +02:00
|
|
|
}
|