Добавлено ограничение максимального размера диска

pull/24/head
Igor Belitskiy 2 years ago
parent 0c6de34cdd
commit 88acbfba09

@ -52,6 +52,7 @@ typedef struct{
char* fs;
char* mount_point;
char* name;
} disk_status;
typedef struct{

@ -8,7 +8,7 @@ vector *get_device_vec()
}
void device_disk_parsed() {
char *cmd = "findmnt -lo source,target,fstype,label -t ext4";
char *cmd = "findmnt -lo source,target,fstype,label,size -t ext4";
vector_init(&vec_disk);
int size = 0;
char **responce = yon_config_load(cmd, &size);
@ -34,7 +34,10 @@ void device_disk_parsed() {
obj_device_config->file_system = yon_char_new(name_disk[index_1]);
}
else if (flag == 3) {
obj_device_config->type_dick = yon_char_new(name_disk[index_1]);
obj_device_config->type_dick = yon_char_new(name_disk[index_1]);
}
else if (flag == 4) {
obj_device_config->size_disk = philos_convert_memory(yon_char_new(name_disk[index_1]));
}
flag+=1;
}
@ -52,7 +55,8 @@ void device_disk_parsed() {
}
philos_free_string_array(&responce, size);
}
void device_fill_disk(GtkWidget *combo_box_text, vector* vec_filt)
{
vector vec;

@ -12,6 +12,7 @@ typedef struct {
char* mounted;
char* type_dick;
char* description_disk;
size_t size_disk;
} device_config;
void device_disk_parsed();

@ -506,14 +506,15 @@ void philos_fill_combo_box_text(GtkWidget *cbt, config_str list_data, int size)
void philos_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value) {
gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check));
guint value_spin = gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin));
//guint value_spin = gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin));
guint value_spin = atoi((char*)gtk_entry_get_text(GTK_ENTRY(spin)));
if (active != -1) {
GtkAdjustment* adjustment = NULL;
adjustment = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(spin));
gtk_adjustment_set_lower(adjustment, 0.0);
gtk_adjustment_set_page_increment(adjustment, 1.0);
if (combo == NULL) {
gtk_adjustment_set_upper(adjustment, (gdouble)(value*100));
gtk_adjustment_set_upper(adjustment, (value*100));
if ((value*100)<value_spin) {
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), (value*100));
}
@ -521,18 +522,17 @@ void philos_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *co
else {
int index = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
if (index == 0) {
float pow_mem_size = get_size_pow_memory(value, index);
gtk_adjustment_set_upper(adjustment, (gdouble)value);
gtk_adjustment_set_upper(adjustment, value);
if (value<value_spin) {
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), value);
}
}
else if (index == -1) {}
else {
float pow_mem_size = get_size_pow_memory(value, index);
gtk_adjustment_set_upper(adjustment, (gdouble)pow_mem_size);
size_t pow_mem_size = (size_t)get_size_pow_memory(value, index);
gtk_adjustment_set_upper(adjustment, pow_mem_size);
if (pow_mem_size<value_spin) {
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), pow_mem_size);
//gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), (int)pow_mem_size);
}
}
@ -547,7 +547,6 @@ void philos_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *com
if (!active) {
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
}
gtk_widget_set_sensitive(combo, active);
}
}
@ -855,4 +854,20 @@ char *philos_char_from_size_t(size_t int_to_convert) {
sprintf(ch, "%d", int_to_convert);
return ch;
}
size_t philos_convert_memory(char* num_memory_pow) {
float num_f = atof(yon_char_new(num_memory_pow));
if (strstr(num_memory_pow,"K") != NULL) {
return (size_t)(num_f);
}
else if (strstr(num_memory_pow,"M") != NULL) {
return (size_t)(num_f*1024);
}
else if (strstr(num_memory_pow,"G") != NULL) {
return (size_t)(num_f*1024*1024);
}
else if (strstr(num_memory_pow,"T") != NULL) {
return (size_t)(num_f*1024*1024*1024);
}
return 0;
}

@ -153,5 +153,6 @@ void philos_set_size_memory_integer(char* str_find, size_t* array_data);
me_time time_convert(size_t seconds);
char* fill_tree_view_id(int id);
char *philos_char_from_size_t(size_t int_to_convert);
size_t philos_convert_memory(char* num_memory_pow);
#endif

@ -275,6 +275,11 @@ void temp_event(temp_set_window* temp_widgets) {
g_signal_connect(G_OBJECT(temp_widgets->quotegroupFilesSoftLimitCheck), "toggled", G_CALLBACK(event_toggled_all), NULL);
g_signal_connect(G_OBJECT(temp_widgets->quotegroupFilesHardLimitCheck), "toggled", G_CALLBACK(event_toggled_all), NULL);
g_signal_connect(G_OBJECT(temp_widgets->UserDeviceCombo), "changed", G_CALLBACK(temp_select_disk), NULL);
int flag = 3;
g_signal_connect(G_OBJECT(temp_widgets->quotegroupSizeSoftLimitCombo), "changed", G_CALLBACK(update_max_size_spin), &flag);
g_signal_connect(G_OBJECT(temp_widgets->quotegroupSizeHardLimitCombo), "changed", G_CALLBACK(update_max_size_spin), &flag);
g_signal_connect(G_OBJECT(temp_widgets->quotegroupSizeSoftLimitSpin), "changed", G_CALLBACK(update_max_size_spin), NULL);
g_signal_connect(G_OBJECT(temp_widgets->quotegroupSizeHardLimitSpin), "changed", G_CALLBACK(update_max_size_spin), NULL);
if (strstr(flag_temp_u_g_p,"prjquota")) {
g_signal_connect(G_OBJECT(temp_widgets->btnReviewProject),"clicked",G_CALLBACK(wrapper_show_file_manager),NULL);
g_signal_connect(G_OBJECT(temp_widgets->btnGenerateProject),"clicked",G_CALLBACK(generate_id),NULL);
@ -304,6 +309,36 @@ void temp_on_destroy_subwindow(GtkWidget *self) {
}
}
void update_max_size_spin(GtkWidget *self, int* flag) {
if (flag) {
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(temp_widgets->quotegroupSizeSoftLimitSpin), 0);
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(temp_widgets->quotegroupSizeHardLimitSpin), 0);
}
char* str_disk = NULL;
if (strcmp(set_add_edit, "add")==0) {
str_disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(temp_widgets->UserDeviceCombo));
}
else {
str_disk = (char*)gtk_label_get_label(GTK_LABEL(temp_widgets->lblSetQuotasStatus));
}
if (!str_disk) {
return;
}
for (int i = 0; i < get_device_vec()->vectorList.total; i++) {
device_config* _config = (device_config*)get_device_vec()->pfVectorGet(get_device_vec(), i);
if (strstr(str_disk, _config->name_disk)) {
philos_set_spin_adjustment(temp_widgets->quotegroupSizeSoftLimitCheck,
temp_widgets->quotegroupSizeSoftLimitSpin,
temp_widgets->quotegroupSizeSoftLimitCombo, _config->size_disk);
philos_set_spin_adjustment(temp_widgets->quotegroupSizeHardLimitCheck,
temp_widgets->quotegroupSizeHardLimitSpin,
temp_widgets->quotegroupSizeHardLimitCombo, _config->size_disk);
}
}
}
void event_toggled_all() {
philos_set_active_widgets(temp_widgets->quotegroupSizeSoftLimitCheck,
temp_widgets->quotegroupSizeSoftLimitSpin,
@ -319,6 +354,7 @@ void event_toggled_all() {
philos_set_active_widgets(temp_widgets->quotegroupFilesHardLimitCheck,
temp_widgets->quotegroupFilesHardLimitSpin,
NULL);
update_max_size_spin(NULL, NULL); ;
}
void block_btn_save() {
@ -621,7 +657,8 @@ void table_u_g_event() {
g_signal_connect(G_OBJECT(get_widget_table_u_g()->Window), "destroy", G_CALLBACK(table_u_g_destroy), NULL);
}
config_u_g_p* get_temp_gui_data_base(config_u_g_p* _config) {
config_u_g_p* get_temp_gui_data_base(config_u_g_p* _config) {
update_max_size_spin(NULL, NULL);
set_widget_config(temp_widgets->quotegroupSizeSoftLimitCheck,
temp_widgets->quotegroupSizeSoftLimitSpin,
temp_widgets->quotegroupSizeSoftLimitCombo,

@ -43,4 +43,5 @@ int wrapper_check_save();
void block_btn_save();
int table_check_save();
void temp_settings();
void show_warning_no_fill(char* text_mess);
void show_warning_no_fill(char* text_mess);
void update_max_size_spin(GtkWidget *self, int* flag);
Loading…
Cancel
Save