diff --git a/fitnesstrax/app/src/app.rs b/fitnesstrax/app/src/app.rs index 18b67ea..2aafc94 100644 --- a/fitnesstrax/app/src/app.rs +++ b/fitnesstrax/app/src/app.rs @@ -157,7 +157,7 @@ impl RecordProvider for App { .map_err(|_| WriteError::Unhandled) } - async fn delete_record(&self, id: RecordId) -> Result<(), WriteError> { + async fn delete_record(&self, _id: RecordId) -> Result<(), WriteError> { unimplemented!() } } diff --git a/fitnesstrax/app/src/app_window.rs b/fitnesstrax/app/src/app_window.rs index 2359f62..24f0484 100644 --- a/fitnesstrax/app/src/app_window.rs +++ b/fitnesstrax/app/src/app_window.rs @@ -15,15 +15,14 @@ You should have received a copy of the GNU General Public License along with Fit */ use crate::{ - app::{App, RecordProvider}, + app::App, types::DayInterval, view_models::DayDetailViewModel, views::{DayDetailView, HistoricalView, PlaceholderView, View, WelcomeView}, }; use adw::prelude::*; use chrono::{Duration, Local}; -use emseries::Record; -use ft_core::TraxRecord; + use gio::resources_lookup_data; use gtk::STYLE_PROVIDER_PRIORITY_USER; use std::{cell::RefCell, path::PathBuf, rc::Rc}; @@ -126,6 +125,7 @@ impl AppWindow { s } + #[allow(unused)] fn show_welcome_view(&self) { let view = View::Welcome(WelcomeView::new({ let s = self.clone(); @@ -178,6 +178,7 @@ impl AppWindow { self.layout.append(¤t_widget.widget()); } + #[allow(unused)] fn on_apply_config(&self, path: PathBuf) { glib::spawn_future_local({ let s = self.clone(); diff --git a/fitnesstrax/app/src/components/day.rs b/fitnesstrax/app/src/components/day.rs index db0edf3..0b8791f 100644 --- a/fitnesstrax/app/src/components/day.rs +++ b/fitnesstrax/app/src/components/day.rs @@ -223,6 +223,7 @@ impl DayDetail { pub struct DayEditPrivate { on_finished: RefCell>, + #[allow(unused)] workout_rows: RefCell, view_model: RefCell>, } diff --git a/fitnesstrax/app/src/components/text_entry.rs b/fitnesstrax/app/src/components/text_entry.rs index ff8c206..9cf0542 100644 --- a/fitnesstrax/app/src/components/text_entry.rs +++ b/fitnesstrax/app/src/components/text_entry.rs @@ -106,6 +106,7 @@ impl TextEntry { } } +#[allow(unused)] pub fn time_field( value: Option, on_update: OnUpdate, @@ -122,6 +123,7 @@ where ) } +#[allow(unused)] pub fn distance_field( value: Option, on_update: OnUpdate, @@ -138,6 +140,7 @@ where ) } +#[allow(unused)] pub fn duration_field( value: Option, on_update: OnUpdate, diff --git a/fitnesstrax/app/src/components/weight.rs b/fitnesstrax/app/src/components/weight.rs index 23ab48f..615f3f2 100644 --- a/fitnesstrax/app/src/components/weight.rs +++ b/fitnesstrax/app/src/components/weight.rs @@ -15,7 +15,6 @@ You should have received a copy of the GNU General Public License along with Fit */ use crate::{ - components::TextEntry, types::{FormatOption, WeightFormatter}, }; use gtk::prelude::*; diff --git a/fitnesstrax/app/src/types.rs b/fitnesstrax/app/src/types.rs index 5172add..a0614c3 100644 --- a/fitnesstrax/app/src/types.rs +++ b/fitnesstrax/app/src/types.rs @@ -53,6 +53,7 @@ impl Iterator for DayIterator { #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum FormatOption { Abbreviated, + #[allow(unused)] Full, } @@ -60,6 +61,7 @@ pub enum FormatOption { pub struct TimeFormatter(chrono::NaiveTime); impl TimeFormatter { + #[allow(unused)] pub fn format(&self, option: FormatOption) -> String { match option { FormatOption::Abbreviated => self.0.format("%H:%M"), @@ -68,6 +70,7 @@ impl TimeFormatter { .to_string() } + #[allow(unused)] pub fn parse(s: &str) -> Result { let parts = s .split(':') @@ -104,6 +107,7 @@ impl From for TimeFormatter { pub struct WeightFormatter(si::Kilogram); impl WeightFormatter { + #[allow(unused)] pub fn format(&self, option: FormatOption) -> String { match option { FormatOption::Abbreviated => format!("{} kg", self.0.value_unsafe), @@ -111,6 +115,7 @@ impl WeightFormatter { } } + #[allow(unused)] pub fn parse(s: &str) -> Result { s.parse::() .map(|w| WeightFormatter(w * si::KG)) @@ -149,6 +154,7 @@ impl From> for WeightFormatter { pub struct DistanceFormatter(si::Meter); impl DistanceFormatter { + #[allow(unused)] pub fn format(&self, option: FormatOption) -> String { match option { FormatOption::Abbreviated => format!("{} km", self.0.value_unsafe / 1000.), @@ -156,6 +162,7 @@ impl DistanceFormatter { } } + #[allow(unused)] pub fn parse(s: &str) -> Result { let value = s.parse::().map_err(|_| ParseError)?; Ok(DistanceFormatter(value * 1000. * si::M)) @@ -193,6 +200,7 @@ impl From> for DistanceFormatter { pub struct DurationFormatter(si::Second); impl DurationFormatter { + #[allow(unused)] pub fn format(&self, option: FormatOption) -> String { let (hours, minutes) = self.hours_and_minutes(); let (h, m) = match option { @@ -206,11 +214,13 @@ impl DurationFormatter { } } + #[allow(unused)] pub fn parse(s: &str) -> Result { let value = s.parse::().map_err(|_| ParseError)?; Ok(DurationFormatter(value * 60. * si::S)) } + #[allow(unused)] fn hours_and_minutes(&self) -> (i64, i64) { let minutes: i64 = (self.0.value_unsafe / 60.).round() as i64; let hours: i64 = minutes / 60; diff --git a/fitnesstrax/app/src/view_models/day_detail.rs b/fitnesstrax/app/src/view_models/day_detail.rs index 07a70cb..03d37ee 100644 --- a/fitnesstrax/app/src/view_models/day_detail.rs +++ b/fitnesstrax/app/src/view_models/day_detail.rs @@ -14,11 +14,13 @@ General Public License for more details. You should have received a copy of the GNU General Public License along with FitnessTrax. If not, see . */ +#[allow(unused_imports)] use crate::app::{ReadError, RecordProvider, WriteError}; +#[allow(unused_imports)] use chrono::NaiveDate; use dimensioned::si; use emseries::{Record, RecordId, Recordable}; -use ft_core::{RecordType, TimeDistance, TimeDistanceWorkoutType, TraxRecord}; +use ft_core::{TimeDistance, TimeDistanceWorkoutType, TraxRecord}; use std::{ collections::HashMap, ops::Deref, @@ -46,10 +48,10 @@ impl RecordState { fn exists(&self) -> bool { match self { - RecordState::Original(ref r) => true, - RecordState::New(ref r) => true, - RecordState::Updated(ref r) => true, - RecordState::Deleted(ref r) => false, + RecordState::Original(ref _r) => true, + RecordState::New(ref _r) => true, + RecordState::Updated(ref _r) => true, + RecordState::Deleted(ref _r) => false, } } @@ -158,7 +160,7 @@ impl DayDetailViewModel { } pub fn weight(&self) -> Option> { - (*self.weight.read().unwrap()).as_ref().map(|w| (*w).weight) + (*self.weight.read().unwrap()).as_ref().map(|w| w.weight) } pub fn set_weight(&self, new_weight: si::Kilogram) { @@ -220,7 +222,7 @@ impl DayDetailViewModel { let data = workout.data.clone(); let mut record_set = self.records.write().unwrap(); - if let Some(record_state) = record_set.get(&id).clone() { + if let Some(record_state) = record_set.get(&id) { let updated_state = match **record_state { TraxRecord::BikeRide(_) => { Some(record_state.clone().with_value(TraxRecord::BikeRide(data))) @@ -281,15 +283,13 @@ impl DayDetailViewModel { ) } + #[allow(unused)] fn get_record(&self, id: &RecordId) -> Option> { let record_set = self.records.read().unwrap(); - match record_set.get(&id) { - Some(record) => Some(Record { - id: id.clone(), - data: (**record).clone(), - }), - None => None, - } + record_set.get(id).map(|record| Record { + id: id.clone(), + data: (**record).clone(), + }) } pub fn remove_record(&self, id: RecordId) { @@ -486,28 +486,28 @@ mod test { Record { id: RecordId::default(), data: TraxRecord::Weight(ft_core::Weight { - date: oct_12.clone(), + date: oct_12, weight: 93. * si::KG, }), }, Record { id: RecordId::default(), data: TraxRecord::Weight(ft_core::Weight { - date: oct_13.clone(), + date: oct_13, weight: 95. * si::KG, }), }, Record { id: RecordId::default(), data: TraxRecord::Steps(ft_core::Steps { - date: oct_13.clone(), + date: oct_13, count: 2500, }), }, Record { id: RecordId::default(), data: TraxRecord::BikeRide(ft_core::TimeDistance { - datetime: oct_13_am.clone(), + datetime: oct_13_am, distance: Some(15000. * si::M), duration: Some(3600. * si::S), comments: Some("somecomments present".to_owned()), @@ -522,7 +522,7 @@ mod test { #[tokio::test] async fn it_honors_only_the_first_weight_and_step_record() { - let (view_model, provider) = create_view_model().await; + let (view_model, _provider) = create_view_model().await; assert_eq!(view_model.weight(), Some(95. * si::KG)); assert_eq!(view_model.steps(), Some(2500)); } @@ -647,7 +647,7 @@ mod test { #[tokio::test] async fn it_can_delete_an_existing_record() { let (view_model, provider) = create_view_model().await; - let mut workout = view_model + let workout = view_model .time_distance_records(TimeDistanceWorkoutType::BikeRide) .first() .cloned() diff --git a/fitnesstrax/app/src/views/historical_view.rs b/fitnesstrax/app/src/views/historical_view.rs index cd7c782..acbf44b 100644 --- a/fitnesstrax/app/src/views/historical_view.rs +++ b/fitnesstrax/app/src/views/historical_view.rs @@ -17,12 +17,12 @@ You should have received a copy of the GNU General Public License along with Fit use crate::{ app::App, components::DaySummary, types::DayInterval, view_models::DayDetailViewModel, }; -use chrono::NaiveDate; -use emseries::Record; -use ft_core::TraxRecord; + + + use glib::Object; use gtk::{prelude::*, subclass::prelude::*}; -use std::{cell::RefCell, collections::HashMap, rc::Rc}; +use std::{cell::RefCell, rc::Rc}; /// The historical view will show a window into the main database. It will show some version of /// daily summaries, daily details, and will provide all functions the user may need for editing diff --git a/fitnesstrax/app/src/views/mod.rs b/fitnesstrax/app/src/views/mod.rs index 9957823..a8c7360 100644 --- a/fitnesstrax/app/src/views/mod.rs +++ b/fitnesstrax/app/src/views/mod.rs @@ -30,6 +30,7 @@ pub use welcome_view::WelcomeView; pub enum View { Placeholder(PlaceholderView), + #[allow(unused)] Welcome(WelcomeView), Historical(HistoricalView), }