mirror of
https://github.com/mii443/vrclipboard-ime-gui.git
synced 2025-08-22 16:15:32 +00:00
refactor handler.rs
This commit is contained in:
@ -54,29 +54,59 @@ impl ConversionHandler {
|
|||||||
|
|
||||||
self.last_text = contents.to_string().clone();
|
self.last_text = contents.to_string().clone();
|
||||||
|
|
||||||
let sock = UdpSocket::bind("127.0.0.1:0").unwrap();
|
self.return_conversion(contents.to_string(), converted, config);
|
||||||
let msg_buf = encoder::encode(&OscPacket::Message(OscMessage {
|
|
||||||
addr: "/chatbox/input".to_string(),
|
|
||||||
args: vec![
|
|
||||||
OscType::String(converted.clone()),
|
|
||||||
OscType::Bool(false),
|
|
||||||
OscType::Bool(true)
|
|
||||||
]
|
|
||||||
})).unwrap();
|
|
||||||
|
|
||||||
sock.send_to(&msg_buf, "127.0.0.1:9000").unwrap();
|
CallbackResult::Next
|
||||||
|
}
|
||||||
|
|
||||||
|
fn return_conversion(&mut self, parsed_contents: String, converted: String, config: &Config) {
|
||||||
|
match config.on_copy_mode {
|
||||||
|
OnCopyMode::ReturnToClipboard => {
|
||||||
|
let mut count = 0;
|
||||||
|
while self.clipboard_ctx.set_contents(converted.clone()).is_err() {
|
||||||
|
if count > 4 {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
OnCopyMode::ReturnToChatbox => {
|
||||||
|
let sock = UdpSocket::bind("127.0.0.1:0").unwrap();
|
||||||
|
let msg_buf = encoder::encode(&OscPacket::Message(OscMessage {
|
||||||
|
addr: "/chatbox/input".to_string(),
|
||||||
|
args: vec![
|
||||||
|
OscType::String(converted.clone()),
|
||||||
|
OscType::Bool(false),
|
||||||
|
OscType::Bool(true)
|
||||||
|
]
|
||||||
|
})).unwrap();
|
||||||
|
|
||||||
|
sock.send_to(&msg_buf, "127.0.0.1:9000").unwrap();
|
||||||
|
},
|
||||||
|
OnCopyMode::SendDirectly => {
|
||||||
|
let sock = UdpSocket::bind("127.0.0.1:0").unwrap();
|
||||||
|
let msg_buf = encoder::encode(&OscPacket::Message(OscMessage {
|
||||||
|
addr: "/chatbox/input".to_string(),
|
||||||
|
args: vec![
|
||||||
|
OscType::String(converted.clone()),
|
||||||
|
OscType::Bool(true),
|
||||||
|
OscType::Bool(true)
|
||||||
|
]
|
||||||
|
})).unwrap();
|
||||||
|
|
||||||
|
sock.send_to(&msg_buf, "127.0.0.1:9000").unwrap();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
let datetime = Local::now();
|
let datetime = Local::now();
|
||||||
if self.app_handle
|
if self.app_handle
|
||||||
.emit_all("addLog", Log {
|
.emit_all("addLog", Log {
|
||||||
time: datetime.format("%Y %m/%d %H:%M:%S").to_string(),
|
time: datetime.format("%Y %m/%d %H:%M:%S").to_string(),
|
||||||
original: contents.to_string().clone(),
|
original: parsed_contents,
|
||||||
converted
|
converted
|
||||||
}).is_err() {
|
}).is_err() {
|
||||||
println!("App handle add log failed.");
|
println!("App handle add log failed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
CallbackResult::Next
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,53 +136,7 @@ impl ClipboardHandler for ConversionHandler {
|
|||||||
|
|
||||||
self.last_text = converted.clone();
|
self.last_text = converted.clone();
|
||||||
|
|
||||||
match config.on_copy_mode {
|
self.return_conversion(parsed_contents, converted, &config);
|
||||||
OnCopyMode::ReturnToClipboard => {
|
|
||||||
let mut count = 0;
|
|
||||||
while self.clipboard_ctx.set_contents(converted.clone()).is_err() {
|
|
||||||
if count > 4 {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
count += 1;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
OnCopyMode::ReturnToChatbox => {
|
|
||||||
let sock = UdpSocket::bind("127.0.0.1:0").unwrap();
|
|
||||||
let msg_buf = encoder::encode(&OscPacket::Message(OscMessage {
|
|
||||||
addr: "/chatbox/input".to_string(),
|
|
||||||
args: vec![
|
|
||||||
OscType::String(converted.clone()),
|
|
||||||
OscType::Bool(false),
|
|
||||||
OscType::Bool(true)
|
|
||||||
]
|
|
||||||
})).unwrap();
|
|
||||||
|
|
||||||
sock.send_to(&msg_buf, "127.0.0.1:9000").unwrap();
|
|
||||||
},
|
|
||||||
OnCopyMode::SendDirectly => {
|
|
||||||
let sock = UdpSocket::bind("127.0.0.1:0").unwrap();
|
|
||||||
let msg_buf = encoder::encode(&OscPacket::Message(OscMessage {
|
|
||||||
addr: "/chatbox/input".to_string(),
|
|
||||||
args: vec![
|
|
||||||
OscType::String(converted.clone()),
|
|
||||||
OscType::Bool(true),
|
|
||||||
OscType::Bool(true)
|
|
||||||
]
|
|
||||||
})).unwrap();
|
|
||||||
|
|
||||||
sock.send_to(&msg_buf, "127.0.0.1:9000").unwrap();
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
let datetime = Local::now();
|
|
||||||
if self.app_handle
|
|
||||||
.emit_all("addLog", Log {
|
|
||||||
time: datetime.format("%Y %m/%d %H:%M:%S").to_string(),
|
|
||||||
original: parsed_contents,
|
|
||||||
converted
|
|
||||||
}).is_err() {
|
|
||||||
println!("App handle add log failed.");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
self.last_text = contents;
|
self.last_text = contents;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user