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"
[profile.release]
lto = "fat"
#lto = "fat"
opt-level = 1
[workspace.metadata.cargo-machete]
ignored = ["libcosmic"]

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -42,10 +42,11 @@ use cosmic::{
iced_sctk::commands::data_device::{
accept_mime_type, finish_dnd, request_dnd_data, set_actions, start_drag,
},
iced_style::application,
iced_style::{application, svg},
theme::{Button, Container},
widget::{
button, divider, horizontal_space,
button, divider, horizontal_space, icon,
icon::from_name,
image::Handle,
rectangle_tracker::{rectangle_tracker_subscription, RectangleTracker, RectangleUpdate},
text, Image,
@ -62,7 +63,7 @@ use futures::future::pending;
use iced::{widget::container, Alignment, Background, Length};
use itertools::Itertools;
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 tokio::time::sleep;
use url::Url;
@ -582,7 +583,7 @@ where
pub fn menu_control_padding() -> Padding {
let theme = cosmic::theme::active();
let cosmic = theme.cosmic();
[0, cosmic.space_m()].into()
[cosmic.space_xxs(), cosmic.space_m()].into()
}
impl cosmic::Application for CosmicAppList {
@ -1414,11 +1415,11 @@ impl cosmic::Application for CosmicAppList {
match popup_type {
PopupType::RightClickMenu => {
fn menu_button(label: String) -> cosmic::widget::Button<'static, Message> {
text::body(label)
fn menu_button<'a, Message>(
content: impl Into<Element<'a, Message>>,
) -> cosmic::widget::Button<'a, Message> {
cosmic::widget::button(content)
.height(36)
.vertical_alignment(iced::alignment::Vertical::Center)
.apply(cosmic::widget::button)
.style(Button::AppletMenu)
.padding(menu_control_padding())
.width(Length::Fill)
@ -1429,7 +1430,7 @@ impl cosmic::Application for CosmicAppList {
if let Some(exec) = desktop_info.exec() {
if !toplevels.is_empty() {
content = content.push(
menu_button(fl!("new-window"))
menu_button(text::body(fl!("new-window")))
.on_press(Message::Exec(exec.to_string(), None)),
);
} 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() {
content = content.push(
menu_button(format!(
menu_button(text::body(format!(
"{} {}",
fl!("run-on", gpu = gpu.name.clone()),
if i == default_idx {
@ -1448,13 +1449,13 @@ impl cosmic::Application for CosmicAppList {
} else {
String::new()
}
))
)))
.on_press(Message::Exec(exec.to_string(), Some(i))),
);
}
} else {
content = content.push(
menu_button(fl!("run"))
menu_button(text::body(fl!("run")))
.on_press(Message::Exec(exec.to_string(), None)),
);
}
@ -1472,7 +1473,8 @@ impl cosmic::Application for CosmicAppList {
continue;
};
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());
@ -1487,31 +1489,52 @@ impl cosmic::Application for CosmicAppList {
info.title.clone()
};
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(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() {
0 => content,
1 => content.push(
menu_button(fl!("quit"))
.on_press(Message::Quit(desktop_info.id().to_string())),
),
_ => content.push(
menu_button(fl!("quit-all"))
.on_press(Message::Quit(desktop_info.id().to_string())),
),
};
let svg_accent = Rc::new(|theme: &cosmic::Theme| {
let color = theme.cosmic().accent_color().into();
svg::Appearance { color: Some(color) }
});
content = content.push(
menu_button(
if is_pinned {
row![
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()
}
PopupType::TopLevelList => match self.core.applet.anchor {