Skip to content

Commit bc40db1

Browse files
committed
Safari plugin: Part 1 #15
Hack: it or `Divider()` required to display TranslatorView properly `Divider()` takes more space Show Safari plugin status and click on status to switch on/off
1 parent 537842b commit bc40db1

File tree

5 files changed

+57
-17
lines changed

5 files changed

+57
-17
lines changed

ReaderTranslator.xcodeproj/project.pbxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@
8888
F0EE0A122347AA0E004A5EAD /* DOMEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0EE0A0F23478C86004A5EAD /* DOMEvent.swift */; };
8989
F0EE0A162347BF09004A5EAD /* PageWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0EE0A152347BF09004A5EAD /* PageWebView.swift */; };
9090
F0EE0A172347BF09004A5EAD /* PageWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0EE0A152347BF09004A5EAD /* PageWebView.swift */; };
91+
F0EE0A19234897CC004A5EAD /* StatusBarView_Safari.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0EE0A18234897CC004A5EAD /* StatusBarView_Safari.swift */; };
92+
F0EE0A1A234897CC004A5EAD /* StatusBarView_Safari.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0EE0A18234897CC004A5EAD /* StatusBarView_Safari.swift */; };
9193
F0F256BD233D309F00C9D719 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0F256BC233D309F00C9D719 /* String.swift */; };
9294
F0F256C2233E6C4C00C9D719 /* FavoriteVoiceName.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0F256C1233E6C4C00C9D719 /* FavoriteVoiceName.swift */; };
9395
/* End PBXBuildFile section */
@@ -195,6 +197,7 @@
195197
F0AB12B5233F59B4005B9F2A /* StatusBarView_Voice_Volume.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusBarView_Voice_Volume.swift; sourceTree = "<group>"; };
196198
F0EE0A0F23478C86004A5EAD /* DOMEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DOMEvent.swift; sourceTree = "<group>"; };
197199
F0EE0A152347BF09004A5EAD /* PageWebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PageWebView.swift; sourceTree = "<group>"; };
200+
F0EE0A18234897CC004A5EAD /* StatusBarView_Safari.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusBarView_Safari.swift; sourceTree = "<group>"; };
198201
F0F256BC233D309F00C9D719 /* String.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = String.swift; sourceTree = "<group>"; };
199202
F0F256C1233E6C4C00C9D719 /* FavoriteVoiceName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteVoiceName.swift; sourceTree = "<group>"; };
200203
/* End PBXFileReference section */
@@ -444,6 +447,7 @@
444447
isa = PBXGroup;
445448
children = (
446449
F0AA69D3232E9762007CC07B /* StatusBarView.swift */,
450+
F0EE0A18234897CC004A5EAD /* StatusBarView_Safari.swift */,
447451
F0AB12A7233F5802005B9F2A /* StatusBarView_Tabs.swift */,
448452
F0AB12A9233F58A2005B9F2A /* StatusBarView_Zoom.swift */,
449453
F0AB12AB233F5908005B9F2A /* StatusBarView_ViewMode.swift */,
@@ -705,6 +709,7 @@
705709
F0BB43812344846200ADBEF1 /* ReaderView_PDF.swift in Sources */,
706710
F06DB117234611BB00C2DE90 /* ExtensionManager.swift in Sources */,
707711
F0BB43722344843D00ADBEF1 /* FavoriteVoiceName.swift in Sources */,
712+
F0EE0A1A234897CC004A5EAD /* StatusBarView_Safari.swift in Sources */,
708713
F0BB43712344843900ADBEF1 /* UserDefault.swift in Sources */,
709714
F0BB437C2344845000ADBEF1 /* StatusBarView_PdfPage.swift in Sources */,
710715
F026B1E82344830200E032B9 /* ReaderView_Safari.swift in Sources */,
@@ -743,6 +748,7 @@
743748
F0EE0A162347BF09004A5EAD /* PageWebView.swift in Sources */,
744749
F0F256C2233E6C4C00C9D719 /* FavoriteVoiceName.swift in Sources */,
745750
F06DB10D23450B6000C2DE90 /* View.swift in Sources */,
751+
F0EE0A19234897CC004A5EAD /* StatusBarView_Safari.swift in Sources */,
746752
F0AA69DF232E97B0007CC07B /* TranslatorView.swift in Sources */,
747753
F0AA69A3232E9710007CC07B /* SceneDelegate.swift in Sources */,
748754
F06DB1042344975E00C2DE90 /* Stack.swift in Sources */,

ReaderTranslator.xcodeproj/xcuserdata/filimo.xcuserdatad/xcschemes/xcschememanagement.plist

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,16 @@
2727
</dict>
2828
<key>SuppressBuildableAutocreation</key>
2929
<dict>
30+
<key>F0754436234479DA00E1D88E</key>
31+
<dict>
32+
<key>primary</key>
33+
<true/>
34+
</dict>
35+
<key>F075444D23447A2700E1D88E</key>
36+
<dict>
37+
<key>primary</key>
38+
<true/>
39+
</dict>
3040
<key>F0AA699C232E9710007CC07B</key>
3141
<dict>
3242
<key>primary</key>

ReaderTranslator/Views/ReaderView/ReaderView_Safari.swift

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,35 +15,39 @@ struct ReaderView_Safari: View {
1515
var body: some View {
1616
Group {
1717
if store.viewMode == .safari {
18-
Text(store.selectedText)
18+
/** Hack: it or `Divider()` required to display TranslatorView properly `Divider()` takes more space **/
19+
// Text("").frame(height: 1)
20+
Text(store.selectedText) // temporarily disable
1921
}
2022
}
2123
.onAppear {
22-
SafariExtensionManager().start(onMessageChanged: self.onMessageChanged(notificationName:))
24+
SafariExtensionManager()
25+
.start(onMessageChanged: self.onMessageChanged(notificationName:))
2326
}
2427
}
2528

2629
private func onMessageChanged(notificationName: String) {
2730
if let event = SharedContainer.getEvent() {
2831
switch event.name {
2932
case "keydown":
30-
if let extra = event.extra {
31-
if extra.altKey == true && extra.metaKey == true { //Alt+Cmd
32-
if extra.keyCode == 88 { // x
33-
self.store.isVoiceEnabled.toggle()
34-
}
35-
if extra.keyCode == 90 { // z
36-
self.store.canSafariSendSelectedText.toggle()
37-
if self.store.canSafariSendSelectedText {
38-
self.store.selectedText = event.extra?.selectedText ?? ""
39-
}
33+
if let extra = event.extra,
34+
extra.shiftKey == false,
35+
extra.metaKey == false {
36+
37+
if extra.keyCode == 65 { // a
38+
self.store.isVoiceEnabled.toggle()
39+
}
40+
if extra.keyCode == 83 { // s
41+
self.store.canSafariSendSelectedText.toggle()
42+
if self.store.canSafariSendSelectedText {
43+
self.store.selectedText = event.extra?.selectedText ?? ""
4044
}
4145
}
4246
}
4347
case "selectionchange":
4448
if store.canSafariSendSelectedText { store.selectedText = event.extra?.selectedText ?? "" }
4549
default:
46-
os_log("🐞🐞🐞DOMEvent %@ is not recognized", type: .error, event.name)
50+
os_log("DOMEvent %@ is not recognized", type: .debug, event.name)
4751
}
4852
}else{
4953
os_log("🐞🐞🐞DOMEvent is nil", type: .error)

ReaderTranslator/Views/StatusBarView/StatusBarView.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,7 @@ struct StatusBarView: View {
1919
StatusBarView_Tabs(viewMode: $store.viewMode, currentTab: $store.currentTab)
2020
StatusBarView_Zoom()
2121
StatusBarView_Voice().padding([.top,.bottom], 5)
22-
#if os(macOS)
23-
Text("Safari plugin: \(store.canSafariSendSelectedText ? "on" : "off")")
24-
.foregroundColor(store.canSafariSendSelectedText ? .green : .red)
25-
#endif
22+
StatusBarView_Safari()
2623
}.padding(.trailing, 20)
2724
}
2825
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//
2+
// StatusBarView_Safari.swift
3+
// ReaderTranslator
4+
//
5+
// Created by Viktor Kushnerov on 10/5/19.
6+
// Copyright © 2019 Viktor Kushnerov. All rights reserved.
7+
//
8+
9+
import SwiftUI
10+
11+
struct StatusBarView_Safari: View {
12+
@EnvironmentObject var store: Store
13+
var body: some View {
14+
Group {
15+
#if os(macOS)
16+
Text("Safari plugin: \(store.canSafariSendSelectedText ? "on" : "off")")
17+
.foregroundColor(store.canSafariSendSelectedText ? .green : .red)
18+
.onTapGesture { self.store.canSafariSendSelectedText.toggle() }
19+
#endif
20+
}
21+
}
22+
}
23+

0 commit comments

Comments
 (0)