Skip to content

Commit 4bec7b7

Browse files
committed
Better menubar menu
1 parent d1597ae commit 4bec7b7

File tree

2 files changed

+55
-5
lines changed

2 files changed

+55
-5
lines changed

src/app/menubar.rs

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use tray_icon::{
1212

1313
use crate::{
1414
app::{Message, tile::ExtSender},
15-
utils::open_settings,
15+
utils::{open_settings, open_url},
1616
};
1717

1818
use tokio::runtime::Runtime;
@@ -29,10 +29,14 @@ pub fn menu_icon(hotkey: (Option<Modifiers>, Code), hotkey_id: u32, sender: ExtS
2929
let menu = Menu::with_items(&[
3030
&version_item(),
3131
&about_item(image),
32+
&open_github_item(),
3233
&PredefinedMenuItem::separator(),
3334
&refresh_item(),
3435
&open_item(hotkey),
3536
&PredefinedMenuItem::separator(),
37+
&open_issue_item(),
38+
&get_help_item(),
39+
&PredefinedMenuItem::separator(),
3640
&open_settings_item(),
3741
&quit_item(),
3842
])
@@ -67,6 +71,9 @@ fn init_event_handler(sender: ExtSender, hotkey_id: u32) {
6771
sender.clone().try_send(Message::ReloadConfig).unwrap();
6872
});
6973
}
74+
"open_issue_page" => {
75+
open_url("https://github.com/unsecretised/rustcast/issues/new");
76+
}
7077
"show_rustcast" => {
7178
runtime.spawn(async move {
7279
sender
@@ -75,9 +82,15 @@ fn init_event_handler(sender: ExtSender, hotkey_id: u32) {
7582
.unwrap();
7683
});
7784
}
85+
"open_help_page" => {
86+
open_url("https://github.com/unsecretised/rustcast/discussions");
87+
}
7888
"open_preferences" => {
7989
open_settings();
8090
}
91+
"open_github_page" => {
92+
open_url("https://github.com/unsecretised/rustcast");
93+
}
8194
_ => {}
8295
}
8396
}));
@@ -91,16 +104,34 @@ fn version_item() -> MenuItem {
91104
fn open_item(hotkey: (Option<Modifiers>, Code)) -> MenuItem {
92105
MenuItem::with_id(
93106
"show_rustcast",
94-
"Toggle RustCast",
107+
"Toggle View",
95108
true,
96109
Some(Accelerator::new(hotkey.0, hotkey.1)),
97110
)
98111
}
99112

113+
fn open_github_item() -> MenuItem {
114+
MenuItem::with_id(
115+
"open_github_page",
116+
"Star on Github",
117+
true,
118+
None
119+
)
120+
}
121+
122+
fn open_issue_item() -> MenuItem {
123+
MenuItem::with_id(
124+
"open_issue_page",
125+
"Report an Issue",
126+
true,
127+
None
128+
)
129+
}
130+
100131
fn refresh_item() -> MenuItem {
101132
MenuItem::with_id(
102133
"refresh_rustcast",
103-
"Refresh RustCast",
134+
"Refresh",
104135
true,
105136
Some(Accelerator::new(
106137
Some(Modifiers::SUPER),
@@ -118,8 +149,17 @@ fn open_settings_item() -> MenuItem {
118149
)
119150
}
120151

152+
fn get_help_item() -> MenuItem {
153+
MenuItem::with_id(
154+
"open_help_page",
155+
"Help",
156+
true,
157+
None
158+
)
159+
}
160+
121161
fn quit_item() -> PredefinedMenuItem {
122-
PredefinedMenuItem::quit(Some("Quit RustCast"))
162+
PredefinedMenuItem::quit(Some("Quit"))
123163
}
124164

125165
fn about_item(image: DynamicImage) -> PredefinedMenuItem {
@@ -135,5 +175,5 @@ fn about_item(image: DynamicImage) -> PredefinedMenuItem {
135175
.license(Some("MIT"))
136176
.build();
137177

138-
PredefinedMenuItem::about(Some("About RustCast"), Some(about_metadata_builder))
178+
PredefinedMenuItem::about(Some("About.."), Some(about_metadata_builder))
139179
}

src/utils.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,16 @@ pub fn open_settings() {
188188
});
189189
}
190190

191+
pub fn open_url(url: &str) {
192+
let url = url.to_owned();
193+
thread::spawn(move || {
194+
NSWorkspace::new().openURL(&NSURL::URLWithString_relativeToURL(
195+
&objc2_foundation::NSString::from_str(&url),
196+
None,
197+
).unwrap());
198+
});
199+
}
200+
191201
pub fn is_valid_url(s: &str) -> bool {
192202
s.ends_with(".com")
193203
|| s.ends_with(".net")

0 commit comments

Comments
 (0)