Skip to content

Commit c8a568f

Browse files
authored
Merge pull request #94 from unsecretised/add-hide-menu-bar-icon
Add hide menu bar icon
2 parents fd9bfdd + 123741f commit c8a568f

File tree

3 files changed

+29
-5
lines changed

3 files changed

+29
-5
lines changed

src/app.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ pub enum Message {
5252
ClearSearchResults,
5353
WindowFocusChanged(Id, bool),
5454
ClearSearchQuery,
55+
HideTrayIcon,
5556
ReloadConfig,
5657
SetSender(ExtSender),
5758
SwitchToPage(Page),

src/app/menubar.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ pub fn menu_icon(hotkey: (Option<Modifiers>, Code), hotkey_id: u32, sender: ExtS
3838
&get_help_item(),
3939
&PredefinedMenuItem::separator(),
4040
&open_settings_item(),
41+
&hide_tray_icon(),
4142
&quit_item(),
4243
])
4344
.unwrap();
@@ -71,6 +72,10 @@ fn init_event_handler(sender: ExtSender, hotkey_id: u32) {
7172
sender.clone().try_send(Message::ReloadConfig).unwrap();
7273
});
7374
}
75+
"hide_tray_icon" => {
76+
runtime
77+
.spawn(async move { sender.clone().try_send(Message::HideTrayIcon).unwrap() });
78+
}
7479
"open_issue_page" => {
7580
open_url("https://github.com/unsecretised/rustcast/issues/new");
7681
}
@@ -101,6 +106,10 @@ fn version_item() -> MenuItem {
101106
MenuItem::new(version, false, None)
102107
}
103108

109+
fn hide_tray_icon() -> MenuItem {
110+
MenuItem::with_id("hide_tray_icon", "Hide Tray Icon", true, None)
111+
}
112+
104113
fn open_item(hotkey: (Option<Modifiers>, Code)) -> MenuItem {
105114
MenuItem::with_id(
106115
"show_rustcast",

src/app/tile/update.rs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
use std::cmp::min;
33
use std::fs;
44
use std::path::Path;
5+
use std::thread;
56
use std::time::Duration;
67

78
use global_hotkey::hotkey::HotKey;
@@ -44,6 +45,14 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
4445
tile.visible = true;
4546
Task::none()
4647
}
48+
Message::HideTrayIcon => {
49+
tile.tray_icon = None;
50+
tile.config.show_trayicon = false;
51+
let home = std::env::var("HOME").unwrap();
52+
let confg_str = toml::to_string(&tile.config).unwrap();
53+
thread::spawn(move || fs::write(home + "/.config/rustcast/config.toml", confg_str));
54+
Task::none()
55+
}
4756

4857
Message::SetSender(sender) => {
4958
tile.sender = Some(sender.clone());
@@ -203,12 +212,17 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
203212

204213
Message::ChangeFocus(key) => {
205214
let u32_len = tile.results.len() as u32;
206-
match key {
207-
ArrowKey::ArrowDown => tile.focus_id = (tile.focus_id + 1) % u32_len,
208-
ArrowKey::ArrowUp => tile.focus_id = (tile.focus_id + u32_len - 1) % u32_len,
209-
_ => {}
215+
if u32_len > 0 {
216+
match key {
217+
ArrowKey::ArrowDown => tile.focus_id = (tile.focus_id + 1) % u32_len,
218+
ArrowKey::ArrowUp => tile.focus_id = (tile.focus_id + u32_len - 1) % u32_len,
219+
_ => {}
220+
}
221+
222+
operation::focus(format!("result-{}", tile.focus_id))
223+
} else {
224+
Task::none()
210225
}
211-
operation::focus(format!("result-{}", tile.focus_id))
212226
}
213227

214228
Message::OpenFocused => match tile.results.get(tile.focus_id as usize) {

0 commit comments

Comments
 (0)