improv: change Pin/Unpin to "Pin to app tray"

This commit is contained in:
git-f0x 2024-07-18 15:18:43 +02:00 committed by Ashley Wulber
parent ca0e99268c
commit d10f1e27ac
20 changed files with 62 additions and 56 deletions

View file

@ -58,7 +58,8 @@ serde = { version = "1.0.152", features = ["derive"] }
freedesktop-desktop-entry = "0.6.1" freedesktop-desktop-entry = "0.6.1"
[profile.release] [profile.release]
lto = "fat" #lto = "fat"
opt-level = 1
[workspace.metadata.cargo-machete] [workspace.metadata.cargo-machete]
ignored = ["libcosmic"] ignored = ["libcosmic"]

View file

@ -1,6 +1,5 @@
cosmic-app-list = Cosmic Dock-App-Liste cosmic-app-list = Cosmic Dock-App-Liste
pin = Favorisieren pin = Favorisieren
unpin = Entfavorisieren
quit = Beenden quit = Beenden
quit-all = Alle beenden quit-all = Alle beenden
new-window = Neues Fenster new-window = Neues Fenster

View file

@ -1,6 +1,5 @@
cosmic-app-list = App Tray cosmic-app-list = App Tray
pin = Pin pin = Pin to app tray
unpin = Unpin
quit = Quit quit = Quit
quit-all = Quit All quit-all = Quit All
new-window = New Window new-window = New Window

View file

@ -1,6 +1,5 @@
cosmic-app-list = Lista de aplicaciones Cosmic cosmic-app-list = Lista de aplicaciones Cosmic
pin = Añadir a favoritos pin = Añadir a favoritos
unpin = Quitar de favoritos
quit = Cerrar quit = Cerrar
quit-all = Cerrar todas quit-all = Cerrar todas
new-window = Nueva ventana new-window = Nueva ventana

View file

@ -1,6 +1,5 @@
cosmic-app-list = لیست برنامه های داک Cosmic cosmic-app-list = لیست برنامه های داک Cosmic
pin = مورد علاقه pin = مورد علاقه
unpin = برداشتن از مورد علافه
quit = ترک quit = ترک
quit-all = ترک همه quit-all = ترک همه
new-window = پنجره جدید new-window = پنجره جدید

View file

@ -1,6 +1,5 @@
cosmic-app-list = Telakoitu Cosmic sovellusluettelo cosmic-app-list = Telakoitu Cosmic sovellusluettelo
pin = Suosikki pin = Suosikki
unpin = Inhokki
quit = Sulje quit = Sulje
quit-all = Sulje Kaikki quit-all = Sulje Kaikki
new-window = Uusi Ikkuna new-window = Uusi Ikkuna

View file

@ -1,6 +1,5 @@
cosmic-app-list = Liste des applictions COSMIC cosmic-app-list = Liste des applictions COSMIC
pin = Mettre en favori pin = Mettre en favori
unpin = Enlever des favoris
quit = Quitter quit = Quitter
quit-all = Tout quitter quit-all = Tout quitter
new-window = Nouvelle fenêtre new-window = Nouvelle fenêtre

View file

@ -1,6 +1,5 @@
cosmic-app-list = Lista applicazioni - Cosmic dock cosmic-app-list = Lista applicazioni - Cosmic dock
pin = Aggiungi ai preferiti pin = Aggiungi ai preferiti
unpin = Rimuovi dai preferiti
quit = Chiudi quit = Chiudi
quit-all = Chiudi Tutto quit-all = Chiudi Tutto
new-window = Nuova finestra new-window = Nuova finestra

View file

@ -1,6 +1,5 @@
cosmic-app-list = Cosmicドックのアプリ一覧 cosmic-app-list = Cosmicドックのアプリ一覧
pin = お気に入りに追加 pin = お気に入りに追加
unpin = お気に入りから削除
quit = 終了 quit = 終了
quit-all = 全てのウィンドウを終了 quit-all = 全てのウィンドウを終了
new-window = 新しいウィンドウ new-window = 新しいウィンドウ

View file

@ -1,6 +1,5 @@
cosmic-app-list = 코스믹 독 앱 목록 cosmic-app-list = 코스믹 독 앱 목록
pin = 즐겨찾기 pin = 즐겨찾기
unpin = 즐겨찾기 해제
quit = 끝내기 quit = 끝내기
quit-all = 모두 끝내기 quit-all = 모두 끝내기
new-window = 새 창 new-window = 새 창

View file

@ -1,6 +1,5 @@
cosmic-app-list = Cosmic Dock App Lijst cosmic-app-list = Cosmic Dock App Lijst
pin = Favorieten pin = Favorieten
unpin = Haal uit favorieten
quit = Afsluiten quit = Afsluiten
quit-all = Alles afsluiten quit-all = Alles afsluiten
new-window = Nieuw venster new-window = Nieuw venster

View file

@ -1,6 +1,5 @@
cosmic-app-list = Lista Apek Doku Cosmic cosmic-app-list = Lista Apek Doku Cosmic
pin = Przypnij pin = Przypnij
unpin = Odepnij
quit = Zamknij quit = Zamknij
quit-all = Zamknij Wszystkie quit-all = Zamknij Wszystkie
new-window = Nowe Okno new-window = Nowe Okno

View file

@ -1,6 +1,5 @@
cosmic-app-list = Bandeja de Aplicativo cosmic-app-list = Bandeja de Aplicativo
pin = Fixar pin = Fixar
unpin = Remover
quit = Sair quit = Sair
quit-all = Sair de Todos quit-all = Sair de Todos
new-window = Nova Janela new-window = Nova Janela

View file

@ -1,6 +1,5 @@
cosmic-app-list = Lista de Aplicações Cosmic Dock cosmic-app-list = Lista de Aplicações Cosmic Dock
pin = Adicionar aos favoritos pin = Adicionar aos favoritos
unpin = Remover dos favoritos
quit = Sair quit = Sair
quit-all = Sair de todos quit-all = Sair de todos
new-window = Nova janela new-window = Nova janela

View file

@ -1,6 +1,5 @@
cosmic-app-list = Список приложений cosmic-app-list = Список приложений
pin = В избранные pin = В избранные
unpin = Убрать из избранных
quit = Завершить quit = Завершить
quit-all = Завершить все quit-all = Завершить все
new-window = Новое окно new-window = Новое окно

View file

@ -1,6 +1,5 @@
cosmic-app-list = Листа апликација cosmic-app-list = Трака апликација
pin = Прикачи pin = Закачи за траку апликација
unpin = Откачи
quit = Затвори quit = Затвори
quit-all = Затвори све quit-all = Затвори све
new-window = Нови прозор new-window = Нови прозор

View file

@ -1,6 +1,5 @@
cosmic-app-list = Lista aplikacija cosmic-app-list = Traka aplikacija
pin = Prikači pin = Zakači za traku aplikacija
unpin = Otkači
quit = Zatvori quit = Zatvori
quit-all = Zatvori sve quit-all = Zatvori sve
new-window = Novi prozor new-window = Novi prozor

View file

@ -1,6 +1,5 @@
cosmic-app-list = Uygulama Çekmecesi cosmic-app-list = Uygulama Çekmecesi
pin = Sabitle pin = Sabitle
unpin = Sabitlemeyi kaldır
quit = Çıkış quit = Çıkış
quit-all = Tümünden çık quit-all = Tümünden çık
new-window = Yeni pencere new-window = Yeni pencere

View file

@ -1,6 +1,5 @@
cosmic-app-list = 应用托盘 cosmic-app-list = 应用托盘
pin = 固定 pin = 固定
unpin = 取消固定
quit = 退出 quit = 退出
quit-all = 全部退出 quit-all = 全部退出
new-window = 新窗口 new-window = 新窗口

View file

@ -42,10 +42,11 @@ use cosmic::{
iced_sctk::commands::data_device::{ iced_sctk::commands::data_device::{
accept_mime_type, finish_dnd, request_dnd_data, set_actions, start_drag, accept_mime_type, finish_dnd, request_dnd_data, set_actions, start_drag,
}, },
iced_style::application, iced_style::{application, svg},
theme::{Button, Container}, theme::{Button, Container},
widget::{ widget::{
button, divider, horizontal_space, button, divider, horizontal_space, icon,
icon::from_name,
image::Handle, image::Handle,
rectangle_tracker::{rectangle_tracker_subscription, RectangleTracker, RectangleUpdate}, rectangle_tracker::{rectangle_tracker_subscription, RectangleTracker, RectangleUpdate},
text, Image, text, Image,
@ -62,7 +63,7 @@ use futures::future::pending;
use iced::{widget::container, Alignment, Background, Length}; use iced::{widget::container, Alignment, Background, Length};
use itertools::Itertools; use itertools::Itertools;
use rand::{thread_rng, Rng}; use rand::{thread_rng, Rng};
use std::{collections::HashMap, fs, path::PathBuf, str::FromStr, time::Duration}; use std::{collections::HashMap, fs, path::PathBuf, rc::Rc, str::FromStr, time::Duration};
use switcheroo_control::Gpu; use switcheroo_control::Gpu;
use tokio::time::sleep; use tokio::time::sleep;
use url::Url; use url::Url;
@ -582,7 +583,7 @@ where
pub fn menu_control_padding() -> Padding { pub fn menu_control_padding() -> Padding {
let theme = cosmic::theme::active(); let theme = cosmic::theme::active();
let cosmic = theme.cosmic(); let cosmic = theme.cosmic();
[0, cosmic.space_m()].into() [cosmic.space_xxs(), cosmic.space_m()].into()
} }
impl cosmic::Application for CosmicAppList { impl cosmic::Application for CosmicAppList {
@ -1414,11 +1415,11 @@ impl cosmic::Application for CosmicAppList {
match popup_type { match popup_type {
PopupType::RightClickMenu => { PopupType::RightClickMenu => {
fn menu_button(label: String) -> cosmic::widget::Button<'static, Message> { fn menu_button<'a, Message>(
text::body(label) content: impl Into<Element<'a, Message>>,
) -> cosmic::widget::Button<'a, Message> {
cosmic::widget::button(content)
.height(36) .height(36)
.vertical_alignment(iced::alignment::Vertical::Center)
.apply(cosmic::widget::button)
.style(Button::AppletMenu) .style(Button::AppletMenu)
.padding(menu_control_padding()) .padding(menu_control_padding())
.width(Length::Fill) .width(Length::Fill)
@ -1429,7 +1430,7 @@ impl cosmic::Application for CosmicAppList {
if let Some(exec) = desktop_info.exec() { if let Some(exec) = desktop_info.exec() {
if !toplevels.is_empty() { if !toplevels.is_empty() {
content = content.push( content = content.push(
menu_button(fl!("new-window")) menu_button(text::body(fl!("new-window")))
.on_press(Message::Exec(exec.to_string(), None)), .on_press(Message::Exec(exec.to_string(), None)),
); );
} else if let Some(gpus) = self.gpus.as_ref() { } else if let Some(gpus) = self.gpus.as_ref() {
@ -1440,7 +1441,7 @@ impl cosmic::Application for CosmicAppList {
}; };
for (i, gpu) in gpus.iter().enumerate() { for (i, gpu) in gpus.iter().enumerate() {
content = content.push( content = content.push(
menu_button(format!( menu_button(text::body(format!(
"{} {}", "{} {}",
fl!("run-on", gpu = gpu.name.clone()), fl!("run-on", gpu = gpu.name.clone()),
if i == default_idx { if i == default_idx {
@ -1448,13 +1449,13 @@ impl cosmic::Application for CosmicAppList {
} else { } else {
String::new() String::new()
} }
)) )))
.on_press(Message::Exec(exec.to_string(), Some(i))), .on_press(Message::Exec(exec.to_string(), Some(i))),
); );
} }
} else { } else {
content = content.push( content = content.push(
menu_button(fl!("run")) menu_button(text::body(fl!("run")))
.on_press(Message::Exec(exec.to_string(), None)), .on_press(Message::Exec(exec.to_string(), None)),
); );
} }
@ -1472,7 +1473,8 @@ impl cosmic::Application for CosmicAppList {
continue; continue;
}; };
content = content.push( content = content.push(
menu_button(name.into()).on_press(Message::Exec(exec.into(), None)), menu_button(text::body(name))
.on_press(Message::Exec(exec.into(), None)),
); );
} }
content = content.push(divider::horizontal::default()); content = content.push(divider::horizontal::default());
@ -1487,31 +1489,52 @@ impl cosmic::Application for CosmicAppList {
info.title.clone() info.title.clone()
}; };
list_col = list_col.push( list_col = list_col.push(
menu_button(title).on_press(Message::Activate(handle.clone())), menu_button(text::body(title))
.on_press(Message::Activate(handle.clone())),
); );
} }
content = content.push(list_col); content = content.push(list_col);
content = content.push(divider::horizontal::default()); content = content.push(divider::horizontal::default());
} }
if is_pinned {
content =
content.push(menu_button(fl!("unpin")).on_press(Message::UnpinApp(*id)))
} else if desktop_info.exec().is_some() {
content =
content.push(menu_button(fl!("pin")).on_press(Message::PinApp(*id)))
}
content = match toplevels.len() { let svg_accent = Rc::new(|theme: &cosmic::Theme| {
0 => content, let color = theme.cosmic().accent_color().into();
1 => content.push( svg::Appearance { color: Some(color) }
menu_button(fl!("quit")) });
.on_press(Message::Quit(desktop_info.id().to_string())), content = content.push(
), menu_button(
_ => content.push( if is_pinned {
menu_button(fl!("quit-all")) row![
.on_press(Message::Quit(desktop_info.id().to_string())), icon(from_name("checkbox-checked-symbolic").into())
), .size(16)
}; .style(cosmic::theme::Svg::Custom(svg_accent.clone())),
text::body(fl!("pin"))
]
} else {
row![text::body(fl!("pin"))]
}
.spacing(8),
)
.on_press(if is_pinned {
Message::UnpinApp(*id)
} else {
Message::PinApp(*id)
}),
);
if toplevels.len() > 0 {
content = content.push(divider::horizontal::default());
content = match toplevels.len() {
1 => content.push(
menu_button(text::body(fl!("quit")))
.on_press(Message::Quit(desktop_info.id().to_string())),
),
_ => content.push(
menu_button(text::body(fl!("quit-all")))
.on_press(Message::Quit(desktop_info.id().to_string())),
),
};
}
self.core.applet.popup_container(content).into() self.core.applet.popup_container(content).into()
} }
PopupType::TopLevelList => match self.core.applet.anchor { PopupType::TopLevelList => match self.core.applet.anchor {