Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion data/cosmic.portal
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[portal]
DBusName=org.freedesktop.impl.portal.desktop.cosmic
Interfaces=org.freedesktop.impl.portal.Access;org.freedesktop.impl.portal.FileChooser;org.freedesktop.impl.portal.Screenshot;org.freedesktop.impl.portal.Settings;org.freedesktop.impl.portal.ScreenCast
Interfaces=org.freedesktop.impl.portal.Access;org.freedesktop.impl.portal.FileChooser;org.freedesktop.impl.portal.AppChooser;org.freedesktop.impl.portal.Screenshot;org.freedesktop.impl.portal.Settings;org.freedesktop.impl.portal.ScreenCast
UseIn=COSMIC
3 changes: 3 additions & 0 deletions i18n/en/xdg_desktop_portal_cosmic.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ save-to = Save to
.pictures = { save-to } Pictures
.documents = { save-to } Documents
choose-folder = Choose folder
open = Open
open-with = Open with
open-item-with = Open "{$name}" with

share-screen = Share your screen
.description = The system wants to share the contents of your screen with "{$app_name}". Select a screen or window to share.
Expand Down
13 changes: 12 additions & 1 deletion src/app.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
use crate::{access, config, file_chooser, screencast_dialog, screenshot, subscription};
use crate::{
access, app_chooser, config, file_chooser, screencast_dialog, screenshot, subscription,
};
use cosmic::Task;
use cosmic::iced_core::event::wayland::OutputEvent;
use cosmic::widget;
Expand Down Expand Up @@ -31,6 +33,7 @@ pub struct CosmicPortal {
pub config: config::Config,

pub access_args: Option<access::AccessDialogArgs>,
pub app_chooser_args: Option<app_chooser::AppChooserArgs>,

pub file_choosers: HashMap<window::Id, (file_chooser::Args, file_chooser::Dialog)>,

Expand Down Expand Up @@ -60,6 +63,7 @@ pub struct OutputState {
#[derive(Debug, Clone)]
pub enum Msg {
Access(access::Msg),
AppChooser(app_chooser::Msg),
FileChooser(window::Id, file_chooser::Msg),
Screenshot(screenshot::Msg),
Screencast(screencast_dialog::Msg),
Expand Down Expand Up @@ -108,6 +112,7 @@ impl cosmic::Application for CosmicPortal {
config_handler,
config,
access_args: Default::default(),
app_chooser_args: Default::default(),
file_choosers: Default::default(),
screenshot_args: Default::default(),
screencast_args: Default::default(),
Expand All @@ -130,6 +135,8 @@ impl cosmic::Application for CosmicPortal {
fn view_window(&self, id: window::Id) -> cosmic::Element<'_, Self::Message> {
if Some(id) == self.access_args.as_ref().map(|args| args.access_id) {
access::view(self).map(Msg::Access)
} else if Some(id) == self.app_chooser_args.as_ref().map(|args| args.surface_id) {
app_chooser::view(self).map(Msg::AppChooser)
} else if id == *screencast_dialog::SCREENCAST_ID {
screencast_dialog::view(self).map(Msg::Screencast)
} else if self.outputs.iter().any(|o| o.id == id) {
Expand All @@ -145,11 +152,15 @@ impl cosmic::Application for CosmicPortal {
) -> cosmic::iced::Task<cosmic::Action<Self::Message>> {
match message {
Msg::Access(m) => access::update_msg(self, m).map(cosmic::Action::App),
Msg::AppChooser(m) => app_chooser::update_msg(self, m).map(cosmic::Action::App),
Msg::FileChooser(id, m) => file_chooser::update_msg(self, id, m),
Msg::Portal(e) => match e {
subscription::Event::Access(args) => {
access::update_args(self, args).map(cosmic::Action::App)
}
subscription::Event::AppChooser(args) => {
app_chooser::update_args(self, args).map(cosmic::Action::App)
}
subscription::Event::FileChooser(args) => file_chooser::update_args(self, args),
subscription::Event::Screenshot(args) => {
screenshot::update_args(self, args).map(cosmic::Action::App)
Expand Down
Loading