From a3c2247ef1ec7957ebe2635ae2d644097a4cb3e6 Mon Sep 17 00:00:00 2001
From: Xiao Gui <xgui3783@gmail.com>
Date: Thu, 7 Oct 2021 10:38:54 +0200
Subject: [PATCH] feat: add keyboard shortcut to mesh togglers

---
 src/viewerModule/threeSurfer/module.ts                      | 2 ++
 .../threeSurfer/threeSurferGlue/threeSurfer.component.ts    | 6 ++++++
 .../threeSurfer/threeSurferGlue/threeSurfer.template.html   | 6 ++++++
 3 files changed, 14 insertions(+)

diff --git a/src/viewerModule/threeSurfer/module.ts b/src/viewerModule/threeSurfer/module.ts
index 5c58247b6..21f11580b 100644
--- a/src/viewerModule/threeSurfer/module.ts
+++ b/src/viewerModule/threeSurfer/module.ts
@@ -1,6 +1,7 @@
 import { CommonModule } from "@angular/common";
 import { NgModule } from "@angular/core";
 import { FormsModule } from "@angular/forms";
+import { ComponentsModule } from "src/components";
 import { AngularMaterialModule } from "src/sharedModules";
 import { UtilModule } from "src/util";
 import { ThreeSurferGlueCmp } from "./threeSurferGlue/threeSurfer.component";
@@ -12,6 +13,7 @@ import { ThreeSurferViewerConfig } from "./tsViewerConfig/tsViewerConfig.compone
     AngularMaterialModule,
     UtilModule,
     FormsModule,
+    ComponentsModule,
   ],
   declarations: [
     ThreeSurferGlueCmp,
diff --git a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
index 1623089a1..551bec7a5 100644
--- a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
+++ b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
@@ -688,4 +688,10 @@ export class ThreeSurferGlueCmp implements IViewer<'threeSurfer'>, OnChanges, Af
   ngOnDestroy() {
     while (this.onDestroyCb.length > 0) this.onDestroyCb.pop()()
   }
+
+  toggleMode(){
+    const currIdx = this.modes.findIndex(m => m.name === this.selectedMode)
+    const newIdx = (currIdx + 1) % this.modes.length
+    this.loadMode(this.modes[newIdx])
+  }
 }
diff --git a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.template.html b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.template.html
index 56a25de05..c1981ce4f 100644
--- a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.template.html
+++ b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.template.html
@@ -7,6 +7,8 @@
 
   <!-- selector & configurator -->
   <button mat-icon-button
+    [iav-key-listener]="[{ type: 'keydown', key: 'q', target: 'document' }]"
+    (iav-key-event)="toggleMode()"
     color="primary"
     class="pe-all"
     [matMenuTriggerFor]="fsModeSelMenu">
@@ -39,5 +41,9 @@
     <span>
       {{ mode.name }}
     </span>
+    <markdown-dom *ngIf="mode.name === selectedMode"
+      class="d-inline-block">
+      `[q]`
+    </markdown-dom>
   </button>
 </mat-menu>
-- 
GitLab