Skip to content

Commit

Permalink
updated Date widget to latest iced
Browse files Browse the repository at this point in the history
  • Loading branch information
genusistimelord committed Jul 26, 2023
1 parent e9dc6b9 commit c3e94af
Show file tree
Hide file tree
Showing 8 changed files with 369 additions and 312 deletions.
18 changes: 18 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -364,5 +364,23 @@
"args": [],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "launch",
"name": "Debug executable 'spinner'",
"cargo": {
"args": [
"build",
"--bin=spinner",
"--package=spinner"
],
"filter": {
"name": "spinner",
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
]
}
8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ default = [
"badge",
"card",
"number_input",
#"date_picker",
"date_picker",
"color_picker",
"floating_element",
"icon_text",
Expand All @@ -54,7 +54,7 @@ default = [
#"menu",
"quad",
"context_menu",
#"spinner",
"spinner",
#"cupertino",
]

Expand Down Expand Up @@ -94,7 +94,7 @@ members = [
# "examples/cupertino/cupertino_slider",
#"examples/cupertino/cupertino_spinner",
#"examples/cupertino/cupertino_switch",
#"examples/date_picker",
"examples/date_picker",
"examples/floating_element",
"examples/floating_element_anchors",
"examples/grid",
Expand All @@ -109,7 +109,7 @@ members = [
"examples/split",
"examples/split_scroller",
#"examples/menu",
#"examples/spinner",
"examples/spinner",
"examples/context_menu"
]

Expand Down
124 changes: 84 additions & 40 deletions examples/date_picker/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use iced::{
widget::{Button, Container, Row, Text},
Alignment, Element, Length, Sandbox, Settings,
alignment, font,
widget::{container, text, Button, Container, Row, Text},
Alignment, Application, Command, Element, Length, Settings, Theme,
};
use iced_aw::{date_picker::Date, helpers::date_picker};

Expand All @@ -14,65 +15,108 @@ enum Message {
ChooseDate,
SubmitDate(Date),
CancelDate,
Loaded(Result<(), String>),
FontLoaded(Result<(), font::Error>),
}

struct DatePickerExample {
enum DatePickerExample {
Loading,
Loaded(State),
}

struct State {
date: Date,
show_picker: bool,
}

impl Sandbox for DatePickerExample {
async fn load() -> Result<(), String> {
Ok(())
}

impl Application for DatePickerExample {
type Message = Message;
type Theme = Theme;
type Executor = iced::executor::Default;
type Flags = ();

fn new() -> Self {
DatePickerExample {
date: Date::today(),
show_picker: false,
}
fn new(_flags: ()) -> (DatePickerExample, Command<Message>) {
(
DatePickerExample::Loading,
Command::batch(vec![
font::load(iced_aw::graphics::icons::ICON_FONT_BYTES).map(Message::FontLoaded),
Command::perform(load(), Message::Loaded),
]),
)
}

fn title(&self) -> String {
String::from("DatePicker example")
}

fn update(&mut self, message: Self::Message) {
match message {
Message::ChooseDate => {
//self.state.reset();
self.show_picker = true;
}
Message::SubmitDate(date) => {
self.date = date;
self.show_picker = false;
}
Message::CancelDate => {
self.show_picker = false;
fn update(&mut self, message: Self::Message) -> Command<Message> {
match self {
DatePickerExample::Loading => {
if let Message::Loaded(_) = message {
*self = DatePickerExample::Loaded(State {
date: Date::today(),
show_picker: false,
})
}
}
DatePickerExample::Loaded(state) => match message {
Message::ChooseDate => {
state.show_picker = true;
}
Message::SubmitDate(date) => {
state.date = date;
state.show_picker = false;
}
Message::CancelDate => {
state.show_picker = false;
}
_ => {}
},
}

Command::none()
}

fn view(&self) -> Element<'_, Self::Message> {
let but = Button::new(Text::new("Set Date")).on_press(Message::ChooseDate);
match self {
DatePickerExample::Loading => container(
text("Loading...")
.horizontal_alignment(alignment::Horizontal::Center)
.size(50),
)
.width(Length::Fill)
.height(Length::Fill)
.center_y()
.center_x()
.into(),
DatePickerExample::Loaded(state) => {
let but = Button::new(Text::new("Set Date")).on_press(Message::ChooseDate);

let datepicker = date_picker(
self.show_picker,
self.date,
but,
Message::CancelDate,
Message::SubmitDate,
);
let datepicker = date_picker(
state.show_picker,
state.date,
but,
Message::CancelDate,
Message::SubmitDate,
);

let row = Row::new()
.align_items(Alignment::Center)
.spacing(10)
.push(datepicker)
.push(Text::new(format!("Date: {}", self.date,)));
let row = Row::new()
.align_items(Alignment::Center)
.spacing(10)
.push(datepicker)
.push(Text::new(format!("Date: {}", state.date,)));

Container::new(row)
.center_x()
.center_y()
.width(Length::Fill)
.height(Length::Fill)
.into()
Container::new(row)
.center_x()
.center_y()
.width(Length::Fill)
.height(Length::Fill)
.into()
}
}
}
}
Loading

0 comments on commit c3e94af

Please sign in to comment.