diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 96 |
1 files changed, 65 insertions, 31 deletions
diff --git a/src/main.rs b/src/main.rs index 5115aab..bec4536 100644 --- a/src/main.rs +++ b/src/main.rs | |||
@@ -2,52 +2,86 @@ | |||
2 | 2 | ||
3 | use chrono::NaiveDate; | 3 | use chrono::NaiveDate; |
4 | 4 | ||
5 | use lazy_static::lazy_static; | ||
6 | |||
5 | //use cursive::views::{Dialog, EditView, LinearLayout, ListView, SelectView}; | 7 | //use cursive::views::{Dialog, EditView, LinearLayout, ListView, SelectView}; |
8 | use cursive::theme::{BaseColor, Color}; | ||
6 | use cursive::Cursive; | 9 | use cursive::Cursive; |
7 | 10 | ||
8 | mod habit; | 11 | mod habit; |
9 | use crate::habit::{Habit, HabitTrait, HabitType}; | 12 | use crate::habit::{Bit, Count, Habit}; |
10 | |||
11 | mod views; | ||
12 | use crate::views::habitview::HabitView; | ||
13 | 13 | ||
14 | mod app; | 14 | mod app; |
15 | mod theme; | 15 | mod theme; |
16 | use crate::app::{App, ViewMode}; | 16 | use crate::app::{App, ViewMode}; |
17 | 17 | ||
18 | mod views; | ||
19 | |||
20 | pub struct AppConfig { | ||
21 | pub true_chr: char, | ||
22 | pub false_chr: char, | ||
23 | pub future_chr: char, | ||
24 | |||
25 | // view dimensions | ||
26 | pub view_width: usize, | ||
27 | pub view_height: usize, | ||
28 | |||
29 | // app dimensions | ||
30 | pub grid_width: usize, | ||
31 | |||
32 | // color config | ||
33 | pub reached_color: Color, | ||
34 | pub todo_color: Color, | ||
35 | pub future_color: Color, | ||
36 | } | ||
37 | |||
38 | lazy_static! { | ||
39 | pub static ref CONFIGURATION: AppConfig = load_configuration_file(); | ||
40 | } | ||
41 | |||
42 | fn load_configuration_file() -> AppConfig { | ||
43 | return AppConfig { | ||
44 | true_chr: '·', | ||
45 | false_chr: '·', | ||
46 | future_chr: '·', | ||
47 | view_width: 25, | ||
48 | view_height: 8, | ||
49 | grid_width: 3, | ||
50 | reached_color: Color::Dark(BaseColor::Cyan), | ||
51 | todo_color: Color::Dark(BaseColor::Magenta), | ||
52 | future_color: Color::Light(BaseColor::Black), | ||
53 | }; | ||
54 | } | ||
55 | |||
18 | fn main() { | 56 | fn main() { |
19 | let mut s = Cursive::default(); | 57 | let mut s = Cursive::default(); |
20 | 58 | ||
21 | let mut gymming = Habit::new("gym", HabitType::Count(5)); | 59 | let mut gymming = Count::new("gym", 5); |
22 | gymming.insert_entry(NaiveDate::from_ymd(2020, 2, 11), HabitType::Count(7)); | 60 | gymming.insert_entry(NaiveDate::from_ymd(2020, 3, 11), 7); |
23 | gymming.insert_entry(NaiveDate::from_ymd(2020, 2, 12), HabitType::Count(8)); | 61 | gymming.insert_entry(NaiveDate::from_ymd(2020, 3, 12), 8); |
24 | gymming.insert_entry(NaiveDate::from_ymd(2020, 2, 13), HabitType::Count(9)); | 62 | gymming.insert_entry(NaiveDate::from_ymd(2020, 3, 13), 9); |
25 | gymming.insert_entry(NaiveDate::from_ymd(2020, 2, 14), HabitType::Count(10)); | 63 | gymming.insert_entry(NaiveDate::from_ymd(2020, 3, 14), 10); |
26 | gymming.insert_entry(NaiveDate::from_ymd(2020, 2, 15), HabitType::Count(11)); | 64 | gymming.insert_entry(NaiveDate::from_ymd(2020, 3, 15), 11); |
27 | 65 | ||
28 | let mut reading = Habit::new("read", HabitType::Bit(true)); | 66 | let mut reading = Bit::new("read"); |
29 | reading.insert_entry(NaiveDate::from_ymd(2020, 2, 11), HabitType::Bit(true)); | 67 | reading.insert_entry(NaiveDate::from_ymd(2020, 3, 11), true.into()); |
30 | reading.insert_entry(NaiveDate::from_ymd(2020, 2, 12), HabitType::Bit(false)); | 68 | reading.insert_entry(NaiveDate::from_ymd(2020, 3, 12), false.into()); |
31 | reading.insert_entry(NaiveDate::from_ymd(2020, 2, 13), HabitType::Bit(true)); | 69 | reading.insert_entry(NaiveDate::from_ymd(2020, 3, 13), true.into()); |
32 | reading.insert_entry(NaiveDate::from_ymd(2020, 2, 14), HabitType::Bit(false)); | 70 | reading.insert_entry(NaiveDate::from_ymd(2020, 3, 14), false.into()); |
33 | reading.insert_entry(NaiveDate::from_ymd(2020, 2, 15), HabitType::Bit(true)); | 71 | reading.insert_entry(NaiveDate::from_ymd(2020, 3, 15), true.into()); |
34 | 72 | ||
35 | let mut walking = Habit::new("walk", HabitType::Bit(true)); | 73 | let mut walking = Bit::new("walk"); |
36 | walking.insert_entry(NaiveDate::from_ymd(2020, 2, 11), HabitType::Bit(true)); | 74 | walking.insert_entry(NaiveDate::from_ymd(2020, 3, 11), true.into()); |
37 | walking.insert_entry(NaiveDate::from_ymd(2020, 2, 12), HabitType::Bit(false)); | 75 | walking.insert_entry(NaiveDate::from_ymd(2020, 3, 12), false.into()); |
38 | walking.insert_entry(NaiveDate::from_ymd(2020, 2, 13), HabitType::Bit(true)); | 76 | walking.insert_entry(NaiveDate::from_ymd(2020, 3, 13), true.into()); |
39 | walking.insert_entry(NaiveDate::from_ymd(2020, 2, 14), HabitType::Bit(false)); | 77 | walking.insert_entry(NaiveDate::from_ymd(2020, 3, 14), false.into()); |
40 | walking.insert_entry(NaiveDate::from_ymd(2020, 2, 15), HabitType::Bit(true)); | 78 | walking.insert_entry(NaiveDate::from_ymd(2020, 3, 15), true.into()); |
41 | |||
42 | let gym_view = HabitView::new(gymming); | ||
43 | let read_view = HabitView::new(reading); | ||
44 | let walk_view = HabitView::new(walking); | ||
45 | 79 | ||
46 | s.add_global_callback('q', |a| a.quit()); | 80 | s.add_global_callback('q', |a| a.quit()); |
47 | let app = App::new() | 81 | let app = App::new() |
48 | .add_habit(gym_view) | 82 | .add_habit(Box::new(gymming)) |
49 | .add_habit(read_view) | 83 | .add_habit(Box::new(reading)) |
50 | .add_habit(walk_view) | 84 | .add_habit(Box::new(walking)) |
51 | .set_mode(ViewMode::Month); | 85 | .set_mode(ViewMode::Month); |
52 | 86 | ||
53 | s.add_layer(app); | 87 | s.add_layer(app); |