Improve code quality

This commit is contained in:
Federico Terzi 2019-09-01 20:46:46 +02:00
parent 952fd89c42
commit 796b08b430
5 changed files with 16 additions and 9 deletions

View File

@ -180,7 +180,7 @@ void event_callback(XPointer p, XRecordInterceptData *hook)
switch (event_type) { switch (event_type) {
case KeyRelease: case KeyRelease:
printf ("%d %d KeyPress: \t%s\t%s\n", key_code, res, XKeysymToString(XkbKeycodeToKeysym(ctrl_disp, key_code, 0, 0)), buffer.data()); //printf ("%d %d KeyPress: \t%s\t%s\n", key_code, res, XKeysymToString(XkbKeycodeToKeysym(ctrl_disp, key_code, 0, 0)), buffer.data());
if (res > 0) { // Send only printable chars, todo: change if (res > 0) { // Send only printable chars, todo: change
keypress_callback(interceptor_instance, buffer.data(), buffer.size()); keypress_callback(interceptor_instance, buffer.data(), buffer.size());
} }

View File

@ -2,11 +2,11 @@ use crate::matcher::{Match, MatchReceiver};
use crate::keyboard::KeyboardSender; use crate::keyboard::KeyboardSender;
pub struct Engine<'a>{ pub struct Engine<'a>{
sender: &'a KeyboardSender sender: &'a dyn KeyboardSender
} }
impl <'a> Engine<'a> { impl <'a> Engine<'a> {
pub fn new(sender: &'a KeyboardSender) -> Engine<'a> { pub fn new(sender: &'a dyn KeyboardSender) -> Engine<'a> {
Engine{sender} Engine{sender}
} }
} }

View File

@ -25,6 +25,12 @@ impl super::KeyboardInterceptor for LinuxKeyboardInterceptor {
} }
} }
impl Drop for LinuxKeyboardInterceptor {
fn drop(&mut self) {
unsafe { cleanup(); }
}
}
pub struct LinuxKeyboardSender { pub struct LinuxKeyboardSender {
} }

View File

@ -23,8 +23,9 @@ fn main() {
let engine = Engine::new(&sender); let engine = Engine::new(&sender);
let matches = vec![Match{trigger:"e'".to_owned(), result: "è".to_owned()}, let matches = vec![Match{trigger:"e'".to_owned(), result: "è".to_owned()},
Match{trigger:"e/".to_owned(), result: "é".to_owned()},
Match{trigger:":lol".to_owned(), result: "😂".to_owned()}, Match{trigger:":lol".to_owned(), result: "😂".to_owned()},
Match{trigger:":lll".to_owned(), result: "hello".to_owned()}, Match{trigger:":llol".to_owned(), result: "😂😂😂😂😂".to_owned()},
]; ];
let mut matcher = ScrollingMatcher::new(&matches, &engine); let mut matcher = ScrollingMatcher::new(&matches, &engine);

View File

@ -2,7 +2,7 @@ use crate::matcher::{Match, MatchReceiver};
pub struct ScrollingMatcher<'a>{ pub struct ScrollingMatcher<'a>{
matches: &'a Vec<Match>, matches: &'a Vec<Match>,
receiver: &'a MatchReceiver, receiver: &'a dyn MatchReceiver,
current_set: Vec<MatchEntry<'a>> current_set: Vec<MatchEntry<'a>>
} }
@ -27,16 +27,16 @@ impl <'a> super::Matcher for ScrollingMatcher<'a> {
self.current_set = old_matches; self.current_set = old_matches;
self.current_set.append(&mut new_matches); self.current_set.append(&mut new_matches);
let mut foundMatch = None; let mut found_match = None;
for entry in self.current_set.iter_mut() { for entry in self.current_set.iter_mut() {
if entry.remaining.len() == 0 { if entry.remaining.len() == 0 {
foundMatch = Some(entry._match); found_match = Some(entry._match);
break; break;
} }
} }
if let Some(_match) = foundMatch { if let Some(_match) = found_match {
self.current_set.clear(); self.current_set.clear();
self.receiver.on_match(_match); self.receiver.on_match(_match);
} }
@ -44,7 +44,7 @@ impl <'a> super::Matcher for ScrollingMatcher<'a> {
} }
impl <'a> ScrollingMatcher<'a> { impl <'a> ScrollingMatcher<'a> {
pub fn new(matches:&'a Vec<Match>, receiver: &'a MatchReceiver) -> ScrollingMatcher<'a> { pub fn new(matches:&'a Vec<Match>, receiver: &'a dyn MatchReceiver) -> ScrollingMatcher<'a> {
let current_set = Vec::new(); let current_set = Vec::new();
ScrollingMatcher{ matches, receiver, current_set } ScrollingMatcher{ matches, receiver, current_set }
} }