Change SystemTime to u64

This commit is contained in:
Rafał Mikrut 2020-10-01 06:53:10 +02:00
parent 679bbafbd6
commit 7a1a9ea9f6
6 changed files with 80 additions and 65 deletions

View File

@ -9,14 +9,13 @@ use std::collections::BTreeMap;
use std::fs;
use std::fs::{File, Metadata};
use std::io::Write;
use std::time::SystemTime;
use std::time::{SystemTime, UNIX_EPOCH};
#[derive(Clone)]
pub struct FileEntry {
pub path: String,
pub size: u64,
pub created_date: SystemTime,
pub modified_date: SystemTime,
pub modified_date: u64,
}
/// Info struck with helpful information's about results
@ -203,15 +202,8 @@ impl BigFile {
let fe: FileEntry = FileEntry {
path: current_file_name.clone(),
size: metadata.len(),
created_date: match metadata.created() {
Ok(t) => t,
Err(_) => {
self.text_messages.warnings.push("Unable to get creation date from file ".to_string() + current_file_name.as_str());
continue;
} // Permissions Denied
},
modified_date: match metadata.modified() {
Ok(t) => t,
Ok(t) => t.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs(),
Err(_) => {
self.text_messages.warnings.push("Unable to get modification date from file ".to_string() + current_file_name.as_str());
continue;

View File

@ -35,8 +35,7 @@ pub enum DeleteMethod {
pub struct FileEntry {
pub path: String,
pub size: u64,
pub created_date: SystemTime,
pub modified_date: SystemTime,
pub modified_date: u64,
}
/// Info struck with helpful information's about results
@ -286,15 +285,8 @@ impl DuplicateFinder {
let fe: FileEntry = FileEntry {
path: current_file_name.clone(),
size: metadata.len(),
created_date: match metadata.created() {
Ok(t) => t,
Err(_) => {
self.text_messages.warnings.push("Unable to get creation date from file ".to_string() + current_file_name.as_str());
continue;
} // Permissions Denied
},
modified_date: match metadata.modified() {
Ok(t) => t,
Ok(t) => t.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs(),
Err(_) => {
self.text_messages.warnings.push("Unable to get modification date from file ".to_string() + current_file_name.as_str());
continue;
@ -651,9 +643,8 @@ fn delete_files(vector: &[FileEntry], delete_method: &DeleteMethod, warnings: &m
match delete_method {
DeleteMethod::OneOldest => {
for (index, file) in vector.iter().enumerate() {
let time_since_epoch = file.created_date.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs();
if q_time == 0 || q_time > time_since_epoch {
q_time = time_since_epoch;
if q_time == 0 || q_time > file.modified_date {
q_time = file.modified_date;
q_index = index;
}
}
@ -670,9 +661,8 @@ fn delete_files(vector: &[FileEntry], delete_method: &DeleteMethod, warnings: &m
}
DeleteMethod::OneNewest => {
for (index, file) in vector.iter().enumerate() {
let time_since_epoch = file.created_date.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs();
if q_time == 0 || q_time < time_since_epoch {
q_time = time_since_epoch;
if q_time == 0 || q_time < file.modified_date {
q_time = file.modified_date;
q_index = index;
}
}
@ -689,9 +679,8 @@ fn delete_files(vector: &[FileEntry], delete_method: &DeleteMethod, warnings: &m
}
DeleteMethod::AllExceptOldest => {
for (index, file) in vector.iter().enumerate() {
let time_since_epoch = file.created_date.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs();
if q_time == 0 || q_time > time_since_epoch {
q_time = time_since_epoch;
if q_time == 0 || q_time > file.modified_date {
q_time = file.modified_date;
q_index = index;
}
}
@ -712,9 +701,8 @@ fn delete_files(vector: &[FileEntry], delete_method: &DeleteMethod, warnings: &m
}
DeleteMethod::AllExceptNewest => {
for (index, file) in vector.iter().enumerate() {
let time_since_epoch = file.created_date.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs();
if q_time == 0 || q_time < time_since_epoch {
q_time = time_since_epoch;
if q_time == 0 || q_time < file.modified_date {
q_time = file.modified_date;
q_index = index;
}
}

View File

@ -1,7 +1,7 @@
use std::fs;
use std::fs::{File, Metadata};
use std::io::prelude::*;
use std::time::SystemTime;
use std::time::{SystemTime, UNIX_EPOCH};
use crate::common::Common;
use crate::common_directory::Directories;
@ -19,8 +19,7 @@ pub enum DeleteMethod {
#[derive(Clone)]
pub struct FileEntry {
pub path: String,
pub created_date: SystemTime,
pub modified_date: SystemTime,
pub modified_date: u64,
}
/// Info struck with helpful information's about results
@ -228,15 +227,8 @@ impl EmptyFiles {
// Creating new file entry
let fe: FileEntry = FileEntry {
path: current_file_name.clone(),
created_date: match metadata.created() {
Ok(t) => t,
Err(_) => {
self.text_messages.warnings.push("Unable to get creation date from file ".to_string() + current_file_name.as_str());
continue;
} // Permissions Denied
},
modified_date: match metadata.modified() {
Ok(t) => t,
Ok(t) => t.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs(),
Err(_) => {
self.text_messages.warnings.push("Unable to get modification date from file ".to_string() + current_file_name.as_str());
continue;

View File

@ -6,7 +6,7 @@ use std::collections::BTreeMap;
use std::fs;
use std::fs::{File, Metadata};
use std::io::Write;
use std::time::SystemTime;
use std::time::{SystemTime, UNIX_EPOCH};
/// Enum with values which show if folder is empty.
/// In function "optimize_folders" automatically "Maybe" is changed to "Yes", so it is not necessary to put it here
@ -21,7 +21,7 @@ enum FolderEmptiness {
pub struct FolderEntry {
parent_path: Option<String>, // Usable only when finding
is_empty: FolderEmptiness,
pub modified_date: SystemTime,
pub modified_date: u64,
}
/// Struct to store most basics info about all folder
@ -128,7 +128,7 @@ impl EmptyFolder {
FolderEntry {
parent_path: None,
is_empty: FolderEmptiness::Maybe,
modified_date: SystemTime::now(),
modified_date: 0,
},
);
folders_to_check.push(id.clone());
@ -182,10 +182,10 @@ impl EmptyFolder {
parent_path: Option::from(current_folder.clone()),
is_empty: FolderEmptiness::Maybe,
modified_date: match metadata.modified() {
Ok(t) => t,
Ok(t) => t.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs(),
Err(_) => {
self.text_messages.warnings.push(format!("Failed to read modification date of folder {}", current_folder));
SystemTime::now()
continue;
}
},
},

View File

@ -1,7 +1,7 @@
use std::fs;
use std::fs::{File, Metadata};
use std::io::prelude::*;
use std::time::SystemTime;
use std::time::{SystemTime, UNIX_EPOCH};
use crate::common::Common;
use crate::common_directory::Directories;
@ -18,8 +18,7 @@ pub enum DeleteMethod {
#[derive(Clone)]
pub struct FileEntry {
pub path: String,
pub created_date: SystemTime,
pub modified_date: SystemTime,
pub modified_date: u64,
}
/// Info struck with helpful information's about results
@ -219,15 +218,8 @@ impl Temporary {
// Creating new file entry
let fe: FileEntry = FileEntry {
path: current_file_name.clone(),
created_date: match metadata.created() {
Ok(t) => t,
Err(_) => {
self.text_messages.warnings.push("Unable to get creation date from file ".to_string() + current_file_name.as_str());
continue;
} // Permissions Denied
},
modified_date: match metadata.modified() {
Ok(t) => t,
Ok(t) => t.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs(),
Err(_) => {
self.text_messages.warnings.push("Unable to get modification date from file ".to_string() + current_file_name.as_str());
continue;

View File

@ -15,7 +15,6 @@ use gtk::{Builder, SelectionMode, TreeIter, TreeView};
use std::cell::RefCell;
use std::collections::HashMap;
use std::rc::Rc;
use std::time::UNIX_EPOCH;
use std::{env, fs, process};
fn main() {
@ -410,7 +409,7 @@ fn main() {
let values: [&dyn ToValue; 4] = [
&(path[index + 1..].to_string()),
&(path[..index].to_string()),
&(NaiveDateTime::from_timestamp(entry.modified_date.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs() as i64, 0).to_string()),
&(NaiveDateTime::from_timestamp(entry.modified_date as i64, 0).to_string()),
&(MAIN_ROW_COLOR.to_string()),
];
list_store.set(&list_store.append(), &col_indices, &values);
@ -436,7 +435,7 @@ fn main() {
let values: [&dyn ToValue; 4] = [
&(path[index + 1..].to_string()),
&(path[..index].to_string()),
&(NaiveDateTime::from_timestamp(entry.modified_date.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs() as i64, 0).to_string()),
&(NaiveDateTime::from_timestamp(entry.modified_date as i64, 0).to_string()),
&(MAIN_ROW_COLOR.to_string()),
];
list_store.set(&list_store.append(), &col_indices, &values);
@ -513,7 +512,7 @@ fn main() {
let values: [&dyn ToValue; 4] = [
&(name[index + 1..].to_string()),
&(name[..index].to_string()),
&(NaiveDateTime::from_timestamp(entry.modified_date.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs() as i64, 0).to_string()),
&(NaiveDateTime::from_timestamp(entry.modified_date as i64, 0).to_string()),
&(MAIN_ROW_COLOR.to_string()),
];
list_store.set(&list_store.append(), &col_indices, &values);
@ -703,7 +702,7 @@ fn main() {
selection.select_all();
} else {
let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records
// let tree_iter_selection
let mut current_path_index = 0;
let mut tree_iter_selected: TreeIter;
loop {
@ -727,6 +726,58 @@ fn main() {
popover_select.popdown();
});
}
// // All except oldest
// {
// // let scrolled_window_duplicate_finder = scrolled_window_duplicate_finder.clone();
// // let popover_select = popover_select.clone();
// buttons_popover_reverse.connect_clicked(move |_| {
// let tree_view = scrolled_window_duplicate_finder.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap();
// let selection = tree_view.get_selection();
//
// let (vector_tree_path, tree_model) = selection.get_selected_rows();
//
// {
// let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records
//
// let mut current_path_index = 0;
// let mut tree_iter_selected: TreeIter;
//
// let color = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), Columns3Default::Color as i32).get::<String>().unwrap().unwrap();
//
// loop {
// let array_to_have: Vec<SystemTime> = Vec::new();
// let oldest_index : Option<int> = None;
//
// loop {
// if color == HEADER_ROW_COLOR {
// break;
// }
//
//
//
// if current_path_index >= vector_tree_path.len() {
// selection.select_iter(&tree_iter_all);
// } else {
// tree_iter_selected = tree_model.get_iter(vector_tree_path.get(current_path_index).unwrap()).unwrap();
// if tree_model.get_path(&tree_iter_all).unwrap() == tree_model.get_path(&tree_iter_selected).unwrap() {
// selection.unselect_iter(&tree_iter_selected);
// current_path_index += 1;
// } else {
// selection.select_iter(&tree_iter_all);
// }
// }
// if !tree_model.iter_next(&tree_iter_all) {
// break;
// }
// }
// if arry
// }
// }
//
// popover_select.popdown();
// });
// }
}
// Upper Notepad
{