diff --git a/Cargo.lock b/Cargo.lock
index 1ef0a49..19209e5 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1222,7 +1222,7 @@ dependencies = [
[[package]]
name = "cosmic-config"
version = "0.1.0"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"atomicwrites",
"cosmic-config-derive",
@@ -1241,7 +1241,7 @@ dependencies = [
[[package]]
name = "cosmic-config-derive"
version = "0.1.0"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"quote",
"syn 1.0.109",
@@ -1348,7 +1348,7 @@ dependencies = [
[[package]]
name = "cosmic-theme"
version = "0.1.0"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"almost",
"cosmic-config",
@@ -2776,7 +2776,7 @@ dependencies = [
[[package]]
name = "iced"
version = "0.14.0-dev"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"dnd",
"iced_accessibility",
@@ -2794,7 +2794,7 @@ dependencies = [
[[package]]
name = "iced_accessibility"
version = "0.1.0"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"accesskit",
"accesskit_winit",
@@ -2803,7 +2803,7 @@ dependencies = [
[[package]]
name = "iced_core"
version = "0.14.0-dev"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"bitflags 2.6.0",
"bytes",
@@ -2827,7 +2827,7 @@ dependencies = [
[[package]]
name = "iced_futures"
version = "0.14.0-dev"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"futures",
"iced_core",
@@ -2853,7 +2853,7 @@ dependencies = [
[[package]]
name = "iced_graphics"
version = "0.14.0-dev"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"bitflags 2.6.0",
"bytemuck",
@@ -2875,7 +2875,7 @@ dependencies = [
[[package]]
name = "iced_renderer"
version = "0.14.0-dev"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"iced_graphics",
"iced_tiny_skia",
@@ -2887,7 +2887,7 @@ dependencies = [
[[package]]
name = "iced_runtime"
version = "0.14.0-dev"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"bytes",
"dnd",
@@ -2902,7 +2902,7 @@ dependencies = [
[[package]]
name = "iced_tiny_skia"
version = "0.14.0-dev"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"bytemuck",
"cosmic-text",
@@ -2918,7 +2918,7 @@ dependencies = [
[[package]]
name = "iced_wgpu"
version = "0.14.0-dev"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"as-raw-xcb-connection",
"bitflags 2.6.0",
@@ -2949,7 +2949,7 @@ dependencies = [
[[package]]
name = "iced_widget"
version = "0.14.0-dev"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"dnd",
"iced_renderer",
@@ -2967,7 +2967,7 @@ dependencies = [
[[package]]
name = "iced_winit"
version = "0.14.0-dev"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"dnd",
"iced_futures",
@@ -3544,14 +3544,14 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.162"
+version = "0.2.164"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398"
+checksum = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f"
[[package]]
name = "libcosmic"
version = "0.1.0"
-source = "git+https://github.com/pop-os/libcosmic.git#aaadf7199ebed8a5a04ebed559f62455d622689e"
+source = "git+https://github.com/pop-os/libcosmic.git#a355a049d917823dafcd6669cad6afa6983bc6c6"
dependencies = [
"apply",
"ashpd 0.9.2",
diff --git a/res/icons/hicolor/128x128/apps/com.system76.CosmicFiles.svg b/res/icons/hicolor/128x128/apps/com.system76.CosmicFiles.svg
index 3acc2f1..a72c116 100644
--- a/res/icons/hicolor/128x128/apps/com.system76.CosmicFiles.svg
+++ b/res/icons/hicolor/128x128/apps/com.system76.CosmicFiles.svg
@@ -1,12 +1,10 @@
diff --git a/res/icons/hicolor/16x16/apps/com.system76.CosmicFiles.svg b/res/icons/hicolor/16x16/apps/com.system76.CosmicFiles.svg
index 0ae0da9..78a0697 100644
--- a/res/icons/hicolor/16x16/apps/com.system76.CosmicFiles.svg
+++ b/res/icons/hicolor/16x16/apps/com.system76.CosmicFiles.svg
@@ -1,12 +1,10 @@
diff --git a/res/icons/hicolor/24x24/apps/com.system76.CosmicFiles.svg b/res/icons/hicolor/24x24/apps/com.system76.CosmicFiles.svg
index 0ceb87d..54940ee 100644
--- a/res/icons/hicolor/24x24/apps/com.system76.CosmicFiles.svg
+++ b/res/icons/hicolor/24x24/apps/com.system76.CosmicFiles.svg
@@ -1,12 +1,10 @@
diff --git a/res/icons/hicolor/256x256/apps/com.system76.CosmicFiles.svg b/res/icons/hicolor/256x256/apps/com.system76.CosmicFiles.svg
index 3c40602..d24cab1 100644
--- a/res/icons/hicolor/256x256/apps/com.system76.CosmicFiles.svg
+++ b/res/icons/hicolor/256x256/apps/com.system76.CosmicFiles.svg
@@ -1,12 +1,10 @@
diff --git a/res/icons/hicolor/32x32/apps/com.system76.CosmicFiles.svg b/res/icons/hicolor/32x32/apps/com.system76.CosmicFiles.svg
index 92a83ca..973ff37 100644
--- a/res/icons/hicolor/32x32/apps/com.system76.CosmicFiles.svg
+++ b/res/icons/hicolor/32x32/apps/com.system76.CosmicFiles.svg
@@ -1,12 +1,10 @@
diff --git a/res/icons/hicolor/48x48/apps/com.system76.CosmicFiles.svg b/res/icons/hicolor/48x48/apps/com.system76.CosmicFiles.svg
index b49771a..37fdd19 100644
--- a/res/icons/hicolor/48x48/apps/com.system76.CosmicFiles.svg
+++ b/res/icons/hicolor/48x48/apps/com.system76.CosmicFiles.svg
@@ -1,12 +1,10 @@
diff --git a/res/icons/hicolor/64x64/apps/com.system76.CosmicFiles.svg b/res/icons/hicolor/64x64/apps/com.system76.CosmicFiles.svg
index 6510078..b6e278c 100644
--- a/res/icons/hicolor/64x64/apps/com.system76.CosmicFiles.svg
+++ b/res/icons/hicolor/64x64/apps/com.system76.CosmicFiles.svg
@@ -1,12 +1,10 @@
diff --git a/src/app.rs b/src/app.rs
index 572b6f6..a725ff6 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -13,7 +13,7 @@ use cosmic::iced::{
Limits,
};
use cosmic::{
- app::{self, message, Core, Task},
+ app::{self, context_drawer, message, Core, Task},
cosmic_config, cosmic_theme, executor,
iced::{
clipboard::dnd::DndAction,
@@ -21,7 +21,6 @@ use cosmic::{
futures::{self, SinkExt},
keyboard::{Event as KeyEvent, Key, Modifiers},
stream,
- widget::scrollable,
window::{self, Event as WindowEvent, Id as WindowId},
Alignment, Event, Length, Size, Subscription,
},
@@ -372,18 +371,6 @@ pub enum ContextPage {
Settings,
}
-impl ContextPage {
- pub fn title(&self) -> String {
- match self {
- Self::About => String::new(),
- Self::EditHistory => fl!("edit-history"),
- Self::NetworkDrive => fl!("add-network-drive"),
- Self::Preview(..) => String::default(),
- Self::Settings => fl!("settings"),
- }
- }
-}
-
#[derive(Clone, Copy, Debug, Default, Eq, Hash, PartialEq)]
pub enum ArchiveType {
Tgz,
@@ -1135,16 +1122,6 @@ impl App {
let cosmic_theme::Spacing {
space_xxs, space_m, ..
} = theme::active().cosmic().spacing;
- let mut text_input =
- widget::text_input(fl!("enter-server-address"), &self.network_drive_input);
- let button = if self.network_drive_connecting.is_some() {
- widget::button::standard(fl!("connecting"))
- } else {
- text_input = text_input
- .on_input(Message::NetworkDriveInput)
- .on_submit(Message::NetworkDriveSubmit);
- widget::button::standard(fl!("connect")).on_press(Message::NetworkDriveSubmit)
- };
let mut table = widget::column::with_capacity(8);
for (i, line) in fl!("network-drive-schemes").lines().enumerate() {
let mut row = widget::row::with_capacity(2);
@@ -1165,17 +1142,15 @@ impl App {
}
}
widget::column::with_children(vec![
- text_input.into(),
widget::text(fl!("network-drive-description")).into(),
table.into(),
- widget::row::with_children(vec![widget::horizontal_space().into(), button.into()])
- .into(),
])
.spacing(space_m)
.into()
}
fn desktop_view_options(&self) -> Element {
+ let cosmic_theme::Spacing { space_l, .. } = theme::active().cosmic().spacing;
let config = self.config.desktop;
let mut children = Vec::new();
@@ -1238,7 +1213,9 @@ impl App {
children.push(section.into());
*/
- widget::column::with_children(children).into()
+ widget::column::with_children(children)
+ .padding([0, space_l, space_l, space_l])
+ .into()
}
fn edit_history(&self) -> Element {
@@ -1333,19 +1310,20 @@ impl App {
kind: &'a PreviewKind,
context_drawer: bool,
) -> Element<'a, Message> {
+ let cosmic_theme::Spacing { space_l, .. } = theme::active().cosmic().spacing;
+
let mut children = Vec::with_capacity(1);
let entity = entity_opt.unwrap_or_else(|| self.tab_model.active());
match kind {
PreviewKind::Custom(PreviewItem(item)) => {
- children.push(item.preview_view(IconSizes::default(), context_drawer));
+ children.push(item.preview_view(IconSizes::default()));
}
PreviewKind::Location(location) => {
if let Some(tab) = self.tab_model.data::(entity) {
if let Some(items) = tab.items_opt() {
for item in items.iter() {
if item.location_opt.as_ref() == Some(location) {
- children
- .push(item.preview_view(tab.config.icon_sizes, context_drawer));
+ children.push(item.preview_view(tab.config.icon_sizes));
// Only show one property view to avoid issues like hangs when generating
// preview images on thousands of files
break;
@@ -1359,8 +1337,7 @@ impl App {
if let Some(items) = tab.items_opt() {
for item in items.iter() {
if item.selected {
- children
- .push(item.preview_view(tab.config.icon_sizes, context_drawer));
+ children.push(item.preview_view(tab.config.icon_sizes));
// Only show one property view to avoid issues like hangs when generating
// preview images on thousands of files
break;
@@ -1368,15 +1345,20 @@ impl App {
}
if children.is_empty() {
if let Some(item) = &tab.parent_item_opt {
- children
- .push(item.preview_view(tab.config.icon_sizes, context_drawer));
+ children.push(item.preview_view(tab.config.icon_sizes));
}
}
}
}
}
}
- widget::column::with_children(children).into()
+ widget::column::with_children(children)
+ .padding(if context_drawer {
+ [0, 0, 0, 0]
+ } else {
+ [0, space_l, space_l, space_l]
+ })
+ .into()
}
fn settings(&self) -> Element {
@@ -2745,7 +2727,6 @@ impl Application for App {
tab::Command::AddNetworkDrive => {
self.context_page = ContextPage::NetworkDrive;
self.set_show_context(true);
- self.set_context_title(self.context_page.title());
}
tab::Command::AddToSidebar(path) => {
let mut favorites = self.config.favorites.clone();
@@ -2813,7 +2794,6 @@ impl Application for App {
tab::Command::Preview(kind) => {
self.context_page = ContextPage::Preview(Some(entity), kind);
self.set_show_context(true);
- self.set_context_title(self.context_page.title());
}
tab::Command::WindowDrag => {
if let Some(window_id) = &self.window_id_opt {
@@ -2868,7 +2848,6 @@ impl Application for App {
self.set_show_context(true);
}
self.context_page = context_page;
- self.set_context_title(self.context_page.title());
}
Message::Undo(_id) => {
// TODO: undo
@@ -3204,7 +3183,6 @@ impl Application for App {
PreviewKind::Custom(PreviewItem(item)),
);
self.set_show_context(true);
- self.set_context_title(self.context_page.title());
}
Err(err) => {
log::warn!("failed to get item from path {:?}: {}", path, err);
@@ -3323,17 +3301,69 @@ impl Application for App {
Task::none()
}
- fn context_drawer(&self) -> Option> {
+ fn context_drawer(&self) -> Option> {
if !self.core.window.show_context {
return None;
}
Some(match &self.context_page {
- ContextPage::About => self.about(),
- ContextPage::EditHistory => self.edit_history(),
- ContextPage::NetworkDrive => self.network_drive(),
- ContextPage::Preview(entity_opt, kind) => self.preview(entity_opt, kind, true),
- ContextPage::Settings => self.settings(),
+ ContextPage::About => context_drawer::context_drawer(
+ self.about(),
+ Message::ToggleContextPage(ContextPage::About),
+ ),
+ ContextPage::EditHistory => context_drawer::context_drawer(
+ self.edit_history(),
+ Message::ToggleContextPage(ContextPage::EditHistory),
+ )
+ .title(fl!("edit-history")),
+ ContextPage::NetworkDrive => {
+ let mut text_input =
+ widget::text_input(fl!("enter-server-address"), &self.network_drive_input);
+ let button = if self.network_drive_connecting.is_some() {
+ widget::button::standard(fl!("connecting"))
+ } else {
+ text_input = text_input
+ .on_input(Message::NetworkDriveInput)
+ .on_submit(Message::NetworkDriveSubmit);
+ widget::button::standard(fl!("connect")).on_press(Message::NetworkDriveSubmit)
+ };
+ context_drawer::context_drawer(
+ self.network_drive(),
+ Message::ToggleContextPage(ContextPage::NetworkDrive),
+ )
+ .title(fl!("add-network-drive"))
+ .header(text_input)
+ .footer(widget::row::with_children(vec![
+ widget::horizontal_space().into(),
+ button.into(),
+ ]))
+ }
+ ContextPage::Preview(entity_opt, kind) => {
+ let mut actions = Vec::with_capacity(3);
+ let entity = entity_opt.unwrap_or_else(|| self.tab_model.active());
+ if let Some(tab) = self.tab_model.data::(entity) {
+ if let Some(items) = tab.items_opt() {
+ for item in items.iter() {
+ if item.selected {
+ actions.extend(item.preview_header())
+ }
+ }
+ }
+ };
+ context_drawer::context_drawer(
+ self.preview(entity_opt, kind, true),
+ Message::ToggleContextPage(ContextPage::Preview(
+ entity_opt.clone(),
+ kind.clone(),
+ )),
+ )
+ .header_actions(actions)
+ }
+ ContextPage::Settings => context_drawer::context_drawer(
+ self.settings(),
+ Message::ToggleContextPage(ContextPage::Settings),
+ )
+ .title(fl!("settings")),
})
}
@@ -3885,10 +3915,7 @@ impl Application for App {
}
let cosmic_theme::Spacing {
- space_xxs,
- space_xs,
- space_s,
- ..
+ space_xs, space_s, ..
} = theme::active().cosmic().spacing;
let mut title = String::new();
@@ -3993,7 +4020,7 @@ impl Application for App {
.align_y(Alignment::Center)
.into(),
]))
- .padding([space_xxs, space_xs])
+ .padding([8, space_xs])
.layer(cosmic_theme::Layer::Primary);
Some(container.into())
@@ -4146,34 +4173,11 @@ impl Application for App {
}
};
- //TODO: these are hacks to have a sane scroll bar
- let cosmic_theme::Spacing { space_l, .. } = theme::active().cosmic().spacing;
- let scrollbar_width = 8;
- let scrollbar_margin = 8;
- widget::container(
- widget::scrollable(widget::row::with_children(vec![
- content,
- widget::Space::with_width(Length::Fixed(
- (scrollbar_width + scrollbar_margin).into(),
- ))
- .into(),
- ]))
- .direction(scrollable::Direction::Vertical(
- scrollable::Scrollbar::new()
- .width(scrollbar_width)
- .scroller_width(scrollbar_width),
- )),
- )
- .width(Length::Fill)
- .height(Length::Fill)
- .padding([
- 0,
- space_l - (scrollbar_width + scrollbar_margin),
- space_l,
- space_l,
- ])
- .class(theme::Container::WindowBackground)
- .into()
+ widget::container(widget::scrollable(content))
+ .width(Length::Fill)
+ .height(Length::Fill)
+ .class(theme::Container::WindowBackground)
+ .into()
}
fn subscription(&self) -> Subscription {
diff --git a/src/dialog.rs b/src/dialog.rs
index 8a4ca2f..1927239 100644
--- a/src/dialog.rs
+++ b/src/dialog.rs
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: GPL-3.0-only
use cosmic::{
- app::{self, cosmic::Cosmic, message, Core, Task},
+ app::{self, context_drawer, cosmic::Cosmic, message, Core, Task},
cosmic_config, cosmic_theme, executor,
iced::{
event,
@@ -461,7 +461,7 @@ impl App {
widget::layer_container(col)
.layer(cosmic_theme::Layer::Primary)
- .padding([space_xxs, space_xs])
+ .padding([8, space_xs])
.into()
}
@@ -469,13 +469,13 @@ impl App {
let mut children = Vec::with_capacity(1);
match kind {
PreviewKind::Custom(PreviewItem(item)) => {
- children.push(item.preview_view(IconSizes::default(), true));
+ children.push(item.preview_view(IconSizes::default()));
}
PreviewKind::Location(location) => {
if let Some(items) = self.tab.items_opt() {
for item in items.iter() {
if item.location_opt.as_ref() == Some(location) {
- children.push(item.preview_view(self.tab.config.icon_sizes, true));
+ children.push(item.preview_view(self.tab.config.icon_sizes));
// Only show one property view to avoid issues like hangs when generating
// preview images on thousands of files
break;
@@ -487,7 +487,7 @@ impl App {
if let Some(items) = self.tab.items_opt() {
for item in items.iter() {
if item.selected {
- children.push(item.preview_view(self.tab.config.icon_sizes, true));
+ children.push(item.preview_view(self.tab.config.icon_sizes));
// Only show one property view to avoid issues like hangs when generating
// preview images on thousands of files
break;
@@ -495,7 +495,7 @@ impl App {
}
if children.is_empty() {
if let Some(item) = &self.tab.parent_item_opt {
- children.push(item.preview_view(self.tab.config.icon_sizes, true));
+ children.push(item.preview_view(self.tab.config.icon_sizes));
}
}
}
@@ -794,13 +794,33 @@ impl Application for App {
(app, commands)
}
- fn context_drawer(&self) -> Option> {
+ fn context_drawer(&self) -> Option> {
if !self.core.window.show_context {
return None;
}
match &self.context_page {
- ContextPage::Preview(_, kind) => Some(self.preview(kind).map(Message::from)),
+ ContextPage::Preview(_, kind) => {
+ let mut actions = Vec::with_capacity(3);
+ if let Some(items) = self.tab.items_opt() {
+ for item in items.iter() {
+ if item.selected {
+ actions.extend(
+ item.preview_header().into_iter().map(|element| {
+ element.map(move |message| Message::from(message))
+ }),
+ )
+ }
+ }
+ };
+ Some(
+ context_drawer::context_drawer(
+ self.preview(kind).map(Message::from),
+ Message::Preview,
+ )
+ .header_actions(actions),
+ )
+ }
_ => None,
}
}
@@ -1401,7 +1421,6 @@ impl Application for App {
tab::Command::Preview(kind) => {
self.context_page = ContextPage::Preview(None, kind);
self.set_show_context(true);
- self.set_context_title(self.context_page.title());
}
tab::Command::WindowDrag => {
commands.push(window::drag(self.flags.window_id));
diff --git a/src/tab.rs b/src/tab.rs
index 1c5b4c3..a6e3f07 100644
--- a/src/tab.rs
+++ b/src/tab.rs
@@ -1374,42 +1374,39 @@ impl Item {
}
}
- pub fn preview_view<'a>(
- &'a self,
- sizes: IconSizes,
- nav_row: bool,
- ) -> Element<'a, app::Message> {
+ pub fn preview_header(&self) -> Vec> {
+ let mut row = Vec::with_capacity(3);
+ row.push(
+ widget::button::icon(widget::icon::from_name("go-previous-symbolic"))
+ .on_press(app::Message::TabMessage(None, Message::ItemLeft))
+ .into(),
+ );
+ row.push(
+ widget::button::icon(widget::icon::from_name("go-next-symbolic"))
+ .on_press(app::Message::TabMessage(None, Message::ItemRight))
+ .into(),
+ );
+ if self.can_gallery() {
+ if let Some(_path) = self.path_opt() {
+ row.push(
+ widget::button::icon(widget::icon::from_name("view-fullscreen-symbolic"))
+ .on_press(app::Message::TabMessage(None, Message::Gallery(true)))
+ .into(),
+ );
+ }
+ }
+ row
+ }
+
+ pub fn preview_view<'a>(&'a self, sizes: IconSizes) -> Element<'a, app::Message> {
let cosmic_theme::Spacing {
space_xxxs,
- space_xxs,
space_m,
..
} = theme::active().cosmic().spacing;
let mut column = widget::column().spacing(space_m);
- if nav_row {
- let mut row = widget::row::with_capacity(3).spacing(space_xxs);
- row = row.push(
- widget::button::icon(widget::icon::from_name("go-previous-symbolic"))
- .on_press(app::Message::TabMessage(None, Message::ItemLeft)),
- );
- row = row.push(
- widget::button::icon(widget::icon::from_name("go-next-symbolic"))
- .on_press(app::Message::TabMessage(None, Message::ItemRight)),
- );
-
- if self.can_gallery() {
- if let Some(_path) = self.path_opt() {
- row = row.push(
- widget::button::icon(widget::icon::from_name("view-fullscreen-symbolic"))
- .on_press(app::Message::TabMessage(None, Message::Gallery(true))),
- );
- }
- }
- column = column.push(row);
- }
-
column = column.push(widget::row::with_children(vec![
widget::horizontal_space().into(),
self.preview(sizes),