Skip to content
Merged
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
4 changes: 3 additions & 1 deletion CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
- Moved project to COSMIC utils
- Renamed from Fprint to Enroll
- Redesigned icon svg
0.4.1:
0.4.1:
- Switched to snake case in ID
- Renamed icon.svg to enroll.svg
0.5.0: Refactored users to nav & fingerprint picker
0.5.1: Added placeholder user icon
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "cosmic-utils-enroll"
version = "0.5.0"
version = "0.5.1"
edition = "2024"
license = "MPL-2.0"
description = "GUI for fprintd fingerprint enrolling"
Expand Down
25 changes: 12 additions & 13 deletions src/app/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ use cosmic::iced::{Alignment, Length, Subscription};
use cosmic::prelude::*;
use cosmic::widget::{self, dialog, menu, nav_bar, text};
use cosmic::{cosmic_theme, theme};

use futures_util::SinkExt;
use nix::unistd::{Uid, User};
use std::collections::HashMap;
Expand All @@ -42,11 +43,11 @@ fn initialize_users() -> (Vec<UserOption>, nav_bar::Model, Option<UserOption>) {
for path in user_paths {
if let Ok(builder) = UserProxyBlocking::builder(&conn).path(&path) {
if let Ok(user_proxy) = builder.build() {
if let (Ok(name), Ok(real_name)) = (
if let (Ok(name), Ok(real_name), Ok(icon)) = (
user_proxy.user_name(),
user_proxy.real_name(),
user_proxy.icon_file()
) {
let icon = user_proxy.icon_file().unwrap_or_default();
users.push(UserOption {
username: Arc::new(name),
realname: Arc::new(real_name),
Expand All @@ -60,19 +61,17 @@ fn initialize_users() -> (Vec<UserOption>, nav_bar::Model, Option<UserOption>) {
}
}

// TODO: to use actual icon need custom nav
let mut nav = nav_bar::Model::default();
let mut selected_user = None;
let current_username = User::from_uid(Uid::current())
.ok()
.flatten()
.map(|u| u.name);

// TODO: use actual icon
for user_opt in &users {
let mut item = nav.insert().text(user_opt.to_string());
if !user_opt.icon.is_empty() {
item = item.icon(cosmic::widget::icon::from_name(user_opt.icon.as_str()));
}
let id = item.id();
let id = nav.insert().text(user_opt.to_string()).icon(widget::icon::from_name("user-idle-symbolic")).id();
if selected_user.is_none() || current_username.as_deref() == Some(&*user_opt.username) {
nav.activate(id);
selected_user = Some(user_opt.clone());
Expand Down Expand Up @@ -240,18 +239,18 @@ impl cosmic::Application for AppModel {
fn view(&self) -> Element<'_, Self::Message> {
let mut column = widget::column()
.push(self.view_header())
.push(self.view_icon());

if let Some(progress) = self.view_progress() {
column = column.push(progress);
}
.push(self.view_status());

if let Some(picker) = self.view_finger_picker() {
column = column.push(picker);
}

if let Some(progress) = self.view_progress() {
column = column.push(progress);
}

column
.push(self.view_status())
.push(self.view_icon())
.push(self.view_controls())
.align_x(Horizontal::Center)
.spacing(MAIN_SPACING)
Expand Down