Skip to content

Commit

Permalink
Merge pull request #248 from LiChenG-P/main
Browse files Browse the repository at this point in the history
Improve code readability via match expression
  • Loading branch information
GyulyVGC committed Jun 6, 2023
2 parents 7f0ad11 + f64183e commit 76c6f8c
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 90 deletions.
134 changes: 54 additions & 80 deletions src/gui/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,93 +70,67 @@ impl Application for Sniffer {

let content = Column::new().push(header).push(body).push(footer);

if self.modal.is_none() && self.settings_page.is_none() {
content.into()
} else if self.modal.is_some() {
let overlay = match self.modal.unwrap() {
MyModal::Quit => get_exit_overlay(style, font, self.language),
MyModal::ClearAll => get_clear_all_overlay(style, font, self.language),
MyModal::ConnectionDetails(connection_index) => {
connection_details_page(self, connection_index)
match self.modal {
None => {
if let Some(settings_page) = self.settings_page {
let overlay = match settings_page {
SettingsPage::Notifications => settings_notifications_page(self),
SettingsPage::Appearance => settings_style_page(self),
SettingsPage::Language => settings_language_page(self),
};

Modal::new(content, overlay)
.on_blur(Message::CloseSettings)
.into()
} else {
content.into()
}
};

Modal::new(content, overlay)
.on_blur(Message::HideModal)
.into()
} else {
let overlay = match self.settings_page.unwrap() {
SettingsPage::Notifications => settings_notifications_page(self),
SettingsPage::Appearance => settings_style_page(self),
SettingsPage::Language => settings_language_page(self),
};

Modal::new(content, overlay)
.on_blur(Message::CloseSettings)
.into()
}
Some(modal) => {
let overlay = match modal {
MyModal::Quit => get_exit_overlay(style, font, self.language),
MyModal::ClearAll => get_clear_all_overlay(style, font, self.language),
MyModal::ConnectionDetails(connection_index) => {
connection_details_page(self, connection_index)
}
};

Modal::new(content, overlay)
.on_blur(Message::HideModal)
.into()
}
}
}

fn subscription(&self) -> Subscription<Message> {
const NO_MODIFIER: iced_native::keyboard::Modifiers =
iced_native::keyboard::Modifiers::empty();
use iced_native::keyboard::{Event, KeyCode, Modifiers};
let hot_keys_subscription =
iced_native::subscription::events_with(|event, _| match event {
// ctrl+Q => exit
iced_native::Event::Keyboard(iced_native::keyboard::Event::KeyPressed {
key_code: iced_native::keyboard::KeyCode::Q,
modifiers: iced_native::keyboard::Modifiers::COMMAND,
}) => Some(Message::Quit),
// return => return key pressed
iced_native::Event::Keyboard(iced_native::keyboard::Event::KeyPressed {
key_code: iced_native::keyboard::KeyCode::Enter,
..
}) => Some(Message::ReturnKeyPressed),
// esc => esc key pressed
iced_native::Event::Keyboard(iced_native::keyboard::Event::KeyPressed {
key_code: iced_native::keyboard::KeyCode::Escape,
..
}) => Some(Message::EscKeyPressed),
// tab => switch to next page
iced_native::Event::Keyboard(iced_native::keyboard::Event::KeyPressed {
key_code: iced_native::keyboard::KeyCode::Tab,
modifiers: NO_MODIFIER,
}) => Some(Message::SwitchPage(true)),
// shift+tab => switch to previous page
iced_native::Event::Keyboard(iced_native::keyboard::Event::KeyPressed {
key_code: iced_native::keyboard::KeyCode::Tab,
modifiers: iced_native::keyboard::Modifiers::SHIFT,
}) => Some(Message::SwitchPage(false)),
// ctrl+O => open full report
iced_native::Event::Keyboard(iced_native::keyboard::Event::KeyPressed {
key_code: iced_native::keyboard::KeyCode::O,
modifiers: iced_native::keyboard::Modifiers::COMMAND,
}) => Some(Message::OpenReport),
// ctrl+, => open settings
iced_native::Event::Keyboard(iced_native::keyboard::Event::KeyPressed {
key_code: iced_native::keyboard::KeyCode::Comma,
modifiers: iced_native::keyboard::Modifiers::COMMAND,
}) => Some(Message::OpenLastSettings),
// backspace => reset button pressed
iced_native::Event::Keyboard(iced_native::keyboard::Event::KeyPressed {
key_code: iced_native::keyboard::KeyCode::Backspace,
modifiers: iced_native::keyboard::Modifiers::COMMAND,
}) => Some(Message::ResetButtonPressed),
// ctrl+D => ctrl+D keys pressed
iced_native::Event::Keyboard(iced_native::keyboard::Event::KeyPressed {
key_code: iced_native::keyboard::KeyCode::D,
modifiers: iced_native::keyboard::Modifiers::COMMAND,
}) => Some(Message::CtrlDPressed),
// left arrow => one page before the current one
iced_native::Event::Keyboard(iced_native::keyboard::Event::KeyPressed {
key_code: iced_native::keyboard::KeyCode::Left,
modifiers: iced_native::keyboard::Modifiers::COMMAND,
}) => Some(Message::ArrowPressed(false)),
// right arrow => one page after the current one
iced_native::Event::Keyboard(iced_native::keyboard::Event::KeyPressed {
key_code: iced_native::keyboard::KeyCode::Right,
modifiers: iced_native::keyboard::Modifiers::COMMAND,
}) => Some(Message::ArrowPressed(true)),
iced_native::Event::Keyboard(Event::KeyPressed {
key_code,
modifiers,
}) => match modifiers {
Modifiers::COMMAND => match key_code {
KeyCode::Q => Some(Message::Quit),
KeyCode::O => Some(Message::OpenReport),
KeyCode::Comma => Some(Message::OpenLastSettings),
KeyCode::Backspace => Some(Message::ResetButtonPressed),
KeyCode::D => Some(Message::CtrlDPressed),
KeyCode::Left => Some(Message::ArrowPressed(false)),
KeyCode::Right => Some(Message::ArrowPressed(true)),
_ => None,
},
Modifiers::SHIFT => match key_code {
KeyCode::Tab => Some(Message::SwitchPage(false)),
_ => None,
},
_ => match key_code {
KeyCode::Enter => Some(Message::ReturnKeyPressed),
KeyCode::Escape => Some(Message::EscKeyPressed),
KeyCode::Tab => Some(Message::SwitchPage(true)),
_ => None,
},
},
_ => None,
});
let time_subscription = match *self.status_pair.0.lock().unwrap() {
Expand Down
21 changes: 11 additions & 10 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,19 +66,20 @@ pub fn main() -> iced::Result {
process::exit(1);
}));

let config_settings_result = confy::load::<ConfigSettings>("sniffnet", "settings");
if config_settings_result.is_err() {
// it happens when changing the ConfigSettings struct fields during development or after new releases
let config_settings = if let Ok(setting) = confy::load::<ConfigSettings>("sniffnet", "settings")
{
setting
} else {
confy::store("sniffnet", "settings", ConfigSettings::default()).unwrap_or(());
}
let config_settings = config_settings_result.unwrap_or(ConfigSettings::default());
ConfigSettings::default()
};

let config_device_result = confy::load::<ConfigDevice>("sniffnet", "device");
if config_device_result.is_err() {
// it happens when changing the ConfigDevice struct fields during development or after new releases
let config_device = if let Ok(device) = confy::load::<ConfigDevice>("sniffnet", "device") {
device
} else {
confy::store("sniffnet", "device", ConfigDevice::default()).unwrap_or(());
}
let config_device = config_device_result.unwrap_or(ConfigDevice::default());
ConfigDevice::default()
};

thread::Builder::new()
.name("thread_check_updates".to_string())
Expand Down

0 comments on commit 76c6f8c

Please sign in to comment.