@@ -19,7 +19,7 @@ use fltk::{
19
19
prelude:: * ,
20
20
} ;
21
21
22
- use chrono:: Local ;
22
+ use chrono:: { Datelike , Local } ;
23
23
use fltk_calendar:: calendar:: Calendar ;
24
24
use std:: { cell:: RefCell , rc:: Weak } ;
25
25
@@ -103,8 +103,7 @@ pub(crate) fn give_book_known_reader(
103
103
if msg {
104
104
win. hide ( ) ;
105
105
106
- let cal = Calendar :: default ( ) ;
107
- let date = cal. get_date ( ) ;
106
+ let date = Calendar :: default ( ) . get_date ( ) ;
108
107
109
108
return match date {
110
109
Some ( date) => {
@@ -611,7 +610,6 @@ pub(crate) fn get_book_known_reader(
611
610
} ;
612
611
613
612
let bind = book_system
614
- . books
615
613
. iter ( )
616
614
. position ( |b| b. as_ptr ( ) == book. as_ptr ( ) )
617
615
. unwrap ( ) ;
@@ -775,7 +773,7 @@ fn get_book_known_reader_input(
775
773
}
776
774
} ,
777
775
) ;
778
- caretaker. pop ( ) ;
776
+ caretaker. pop ( ) . unwrap ( ) ;
779
777
false
780
778
}
781
779
@@ -859,7 +857,7 @@ fn get_book_known_reader_input(
859
857
}
860
858
break ;
861
859
} else if !inp2. shown ( ) {
862
- caretaker. pop ( ) ;
860
+ caretaker. pop ( ) . unwrap ( ) ;
863
861
return false ;
864
862
}
865
863
}
@@ -872,6 +870,122 @@ fn get_book_known_reader_input(
872
870
873
871
#[ inline]
874
872
pub fn change_return_date_simple (
873
+ book_op : & Option < Weak < RefCell < Book > > > ,
874
+ book_system : & mut BookSystem ,
875
+ reader_base : & ReaderBase ,
876
+ genres : & Genres ,
877
+ caretaker : & mut Caretaker ,
878
+ lang : Lang ,
879
+ ) -> bool {
880
+ caretaker. add_memento ( reader_base, book_system, genres) ;
881
+
882
+ return match book_op {
883
+ None => {
884
+ alert (
885
+ 500 ,
886
+ 500 ,
887
+ match lang {
888
+ Lang :: English => "This reader isn't reading anything" ,
889
+ Lang :: Russian => "Этот читатель ни читает книгу" ,
890
+ } ,
891
+ ) ;
892
+
893
+ caretaker. pop ( ) . unwrap ( ) ;
894
+ false
895
+ }
896
+
897
+ Some ( book) => {
898
+ return match Calendar :: default ( ) . get_date ( ) {
899
+ None => {
900
+ alert (
901
+ 500 ,
902
+ 500 ,
903
+ match lang {
904
+ Lang :: English => "Date wasn't selected" ,
905
+ Lang :: Russian => "Дата не была выбрана" ,
906
+ } ,
907
+ ) ;
908
+ false
909
+ }
910
+
911
+ Some ( date) => {
912
+ let new_date = Date {
913
+ day : date. day ( ) as u8 ,
914
+ month : date. month ( ) as u8 ,
915
+ year : date. year ( ) as u16 ,
916
+ } ;
917
+
918
+ let start = ( ( * ( * book. upgrade ( ) . unwrap ( ) )
919
+ . borrow_mut ( )
920
+ . readers
921
+ . last_mut ( )
922
+ . unwrap ( ) )
923
+ . 1 )
924
+ . 0 ;
925
+
926
+ if new_date >= start && new_date >= Date :: from ( Local :: now ( ) ) {
927
+ ( ( * ( * book. upgrade ( ) . unwrap ( ) )
928
+ . borrow_mut ( )
929
+ . readers
930
+ . last_mut ( )
931
+ . unwrap ( ) )
932
+ . 1 )
933
+ . 1 = new_date;
934
+
935
+ fltk:: dialog:: message (
936
+ 500 ,
937
+ 500 ,
938
+ match lang {
939
+ Lang :: English => "Date is successfully changed" ,
940
+ Lang :: Russian => "Дата успешно изменена" ,
941
+ } ,
942
+ ) ;
943
+
944
+ book_system. save ( ) ;
945
+ true
946
+ } else {
947
+ alert (
948
+ 500 ,
949
+ 500 ,
950
+ match lang {
951
+ Lang :: English => {
952
+ concat ! (
953
+ "Date can only be not earlier than deadline" ,
954
+ " and not earlier than today"
955
+ )
956
+ }
957
+
958
+ Lang :: Russian => {
959
+ concat ! (
960
+ "Дата обязана быть не позже дедлайна" ,
961
+ " и не позже сегоднешней даты"
962
+ )
963
+ }
964
+ } ,
965
+ ) ;
966
+
967
+ caretaker. pop ( ) . unwrap ( ) ;
968
+ false
969
+ }
970
+ }
971
+ }
972
+ }
973
+ } ;
974
+ }
975
+
976
+ /// **DEPRECATED**
977
+ ///
978
+ /// Used before. Requires user input.
979
+ /// Consider using **change_return_date_simple() instead**
980
+ ///
981
+ /// Function that changes
982
+ /// return date for already known book
983
+
984
+ #[ allow( dead_code) ]
985
+ #[ deprecated(
986
+ note = "Used before. Requires user input. Consider using change_return_date_simple() instead"
987
+ ) ]
988
+ fn change_return_date_simple_input (
875
989
book_op : & Option < Weak < RefCell < Book > > > ,
876
990
book_system : & mut BookSystem ,
877
991
reader_base : & ReaderBase ,
@@ -974,15 +1088,15 @@ pub fn change_return_date_simple(
974
1088
match lang {
975
1089
Lang :: English => {
976
1090
concat ! (
977
- "Date can only be not earlier than deadline" ,
978
- " and not earlier than today"
1091
+ "Date can only be not earlier than deadline" ,
1092
+ " and not earlier than today"
979
1093
)
980
1094
}
981
1095
982
1096
Lang :: Russian => {
983
1097
concat ! (
984
- "Дата обязана быть не позже дедлайна" ,
985
- " и не позже сегоднешней даты"
1098
+ "Дата обязана быть не позже дедлайна" ,
1099
+ " и не позже сегоднешней даты"
986
1100
)
987
1101
}
988
1102
} ,
0 commit comments