Skip to content

Commit 9a165c8

Browse files
committed
release
1 parent b1c2922 commit 9a165c8

File tree

17 files changed

+344
-238
lines changed

17 files changed

+344
-238
lines changed

Cargo.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
[package]
22
name = "booklibrs"
3-
version = "1.0.15"
3+
version = "1.1.0"
44
authors = ["Paranid5 <dinaraparanid@gmail.com>"]
55
edition = "2018"
66
license = "MIT/Apache-2.0"
77
description = "Book libarary project including giveaway operations and gui interface."
88
homepage = "https://github.com/dinaraparanid/Library_rs"
9-
documentation = "https://docs.rs/binartree/1.0.15/booklibrs/"
9+
documentation = "https://docs.rs/binartree/1.1.0/booklibrs/"
1010

1111
[dependencies]
1212
chrono = "0.4.19"

src/actions/book/utils.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
extern crate fltk;
22

3-
use fltk::dialog::alert;
4-
53
use crate::{books::book_sys::BookSystem, Lang};
4+
use fltk::dialog::alert;
65

76
/// Function that checks
87
/// if input of book was empty

src/actions/genres.rs

+9-23
Original file line numberDiff line numberDiff line change
@@ -214,17 +214,17 @@ pub fn customize_book_genre(
214214
500,
215215
100,
216216
300,
217-
50 * genres.genres.len() as i32,
217+
50 * genres.len() as i32,
218218
match lang {
219219
Lang::English => "Select Genres",
220220
Lang::Russian => "Выбрать жанры",
221221
},
222222
);
223223

224224
let mut genre_choice =
225-
CheckBrowser::new(0, 0, 300, 50 * genres.genres.len() as i32, "");
225+
CheckBrowser::new(0, 0, 300, 50 * genres.len() as i32, "");
226226

227-
genres.genres.iter().for_each(|g| unsafe {
227+
genres.iter().for_each(|g| unsafe {
228228
genre_choice.add(
229229
g.as_str(),
230230
if let Some(gen) = &(**book_system.books.get_unchecked(index))
@@ -246,7 +246,7 @@ pub fn customize_book_genre(
246246
wind.show();
247247

248248
while app.wait() {
249-
(0..genres.genres.len()).for_each(|i| {
249+
(0..genres.len()).for_each(|i| {
250250
if genre_choice.checked(i as i32 + 1) {
251251
unsafe {
252252
if (**book_system.books.get_unchecked(index))
@@ -260,13 +260,7 @@ pub fn customize_book_genre(
260260
.as_mut()
261261
.unwrap()
262262
.insert(
263-
genres
264-
.genres
265-
.iter()
266-
.skip(i)
267-
.next()
268-
.unwrap()
269-
.clone(),
263+
genres.iter().skip(i).next().unwrap().clone(),
270264
);
271265
} else {
272266
(**book_system.books.get_unchecked(index))
@@ -279,13 +273,7 @@ pub fn customize_book_genre(
279273
.as_mut()
280274
.unwrap()
281275
.insert(
282-
genres
283-
.genres
284-
.iter()
285-
.skip(i)
286-
.next()
287-
.unwrap()
288-
.clone(),
276+
genres.iter().skip(i).next().unwrap().clone(),
289277
);
290278
}
291279
}
@@ -303,9 +291,7 @@ pub fn customize_book_genre(
303291
.genres
304292
.as_mut()
305293
.unwrap()
306-
.remove(
307-
genres.genres.iter().skip(i).next().unwrap(),
308-
);
294+
.remove(genres.iter().skip(i).next().unwrap());
309295

310296
if (**book_system.books.get_unchecked(index))
311297
.borrow()
@@ -350,7 +336,7 @@ pub fn find_by_genre_simple(
350336
) -> Vec<(String, String, u16)> {
351337
let mut find = vec![];
352338

353-
book_system.books.iter().for_each(|x| {
339+
book_system.iter().for_each(|x| {
354340
if (**x).borrow().genres.is_some()
355341
&& (**x)
356342
.borrow()
@@ -417,7 +403,7 @@ fn find_by_genre(book_system: &BookSystem, app: &App, lang: Lang) {
417403
let mut book_table = Table::new(0, 0, 300, 400, "");
418404
let mut find = vec![];
419405

420-
book_system.books.iter().for_each(|x| {
406+
book_system.iter().for_each(|x| {
421407
if (**x).borrow().genres.is_some()
422408
&& (**x)
423409
.borrow()

src/actions/giveaway/full.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ pub fn change_return_date(
6464
reader_base,
6565
genres,
6666
caretaker,
67-
app,
6867
lang,
6968
);
7069
}
@@ -230,15 +229,15 @@ pub fn get_book(
230229
}
231230

232231
None => {
233-
caretaker.pop();
232+
caretaker.pop().unwrap();
234233
return;
235234
}
236235
}
237236
}
238237
}
239238
break;
240239
} else if !inp.shown() {
241-
caretaker.pop();
240+
caretaker.pop().unwrap();
242241
break;
243242
}
244243
}

src/actions/giveaway/simple.rs

+124-10
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use fltk::{
1919
prelude::*,
2020
};
2121

22-
use chrono::Local;
22+
use chrono::{Datelike, Local};
2323
use fltk_calendar::calendar::Calendar;
2424
use std::{cell::RefCell, rc::Weak};
2525

@@ -103,8 +103,7 @@ pub(crate) fn give_book_known_reader(
103103
if msg {
104104
win.hide();
105105

106-
let cal = Calendar::default();
107-
let date = cal.get_date();
106+
let date = Calendar::default().get_date();
108107

109108
return match date {
110109
Some(date) => {
@@ -611,7 +610,6 @@ pub(crate) fn get_book_known_reader(
611610
};
612611

613612
let bind = book_system
614-
.books
615613
.iter()
616614
.position(|b| b.as_ptr() == book.as_ptr())
617615
.unwrap();
@@ -775,7 +773,7 @@ fn get_book_known_reader_input(
775773
}
776774
},
777775
);
778-
caretaker.pop();
776+
caretaker.pop().unwrap();
779777
false
780778
}
781779

@@ -859,7 +857,7 @@ fn get_book_known_reader_input(
859857
}
860858
break;
861859
} else if !inp2.shown() {
862-
caretaker.pop();
860+
caretaker.pop().unwrap();
863861
return false;
864862
}
865863
}
@@ -872,6 +870,122 @@ fn get_book_known_reader_input(
872870
873871
#[inline]
874872
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(
875989
book_op: &Option<Weak<RefCell<Book>>>,
876990
book_system: &mut BookSystem,
877991
reader_base: &ReaderBase,
@@ -974,15 +1088,15 @@ pub fn change_return_date_simple(
9741088
match lang {
9751089
Lang::English => {
9761090
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"
9791093
)
9801094
}
9811095

9821096
Lang::Russian => {
9831097
concat!(
984-
"Дата обязана быть не позже дедлайна",
985-
" и не позже сегоднешней даты"
1098+
"Дата обязана быть не позже дедлайна",
1099+
" и не позже сегоднешней даты"
9861100
)
9871101
}
9881102
},

src/actions/read/add_rem/full.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,7 @@ pub fn add_reader(
9999
if msg {
100100
win.hide();
101101

102-
let cal = Calendar::default();
103-
let date = cal.get_date();
104-
105-
match date {
102+
match Calendar::default().get_date() {
106103
Some(date) => {
107104
match reader_base.add_reader(
108105
unsafe { reader.get_unchecked(0).clone() },

src/actions/read/change/simple.rs

+1-5
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ use crate::{
1010
};
1111

1212
use fltk::{app, app::App, dialog::alert, input::Input, prelude::*};
13-
1413
use fltk_calendar::calendar::Calendar;
1514

1615
/// Function that changes
@@ -384,10 +383,7 @@ pub(crate) fn change_age_simple(
384383
if msg {
385384
win.hide();
386385

387-
let cal = Calendar::default();
388-
let date = cal.get_date();
389-
390-
return match date {
386+
return match Calendar::default().get_date() {
391387
Some(date) => match reader_base.change_age(ind, Date::from(date)) {
392388
Ok(_) => {
393389
fltk::dialog::message(

src/actions/read/info/full.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ pub fn reader_info(
6060
if let Some(ind) = check {
6161
reader_info_simple(
6262
ind,
63-
&mut *(*reader_base).borrow_mut(),
64-
&mut *(*book_system).borrow_mut(),
63+
reader_base.clone(),
64+
book_system.clone(),
6565
genres,
6666
caretaker,
6767
app,

0 commit comments

Comments
 (0)