You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ubl-settings-diskquota/source/model/model.c

162 lines
6.5 KiB

#include "model.h"
void model_clear_cfg(config_u_g_p* _config) {
free(_config->quota);
free(_config->size_memory);
free(_config->device);
free(_config->UNIX_file);
free(_config->files);
vectorFree(&_config->actors);
free(_config->loaded_keys);
}
void model_tree_view_add(config_u_g_p* _config) {
model_null_str_writing(_config);
}
void model_null_str_writing(config_u_g_p* _config) {
_config->quota = yon_char_new(empty_str);
_config->size_memory = yon_char_new(empty_str);
_config->device = yon_char_new(empty_str);
_config->UNIX_file = yon_char_new(empty_str);
_config->files = yon_char_new(empty_str);
_config->loaded_keys = yon_char_new(empty_str);
_config->type_arr = yon_char_new(empty_str);
_config->id = 0;
_config->soft_restriction_size = 0;
_config->soft_restriction_file = 0;
_config->severe_limitation_size = 0;
_config->severe_limitation_file = 0;
_config->deferring_size = 0;
_config->deferring_file = 0;
_config->size_memory_pow = 0;
_config->soft_restriction_size_pow = 0;
_config->severe_limitation_size_pow = 0;
vector_init(&_config->actors);
}
char* format_actors(vector* vec_actors) {
char* str_all = yon_char_new("");
char split_simvol[2] = {0};
split_simvol[0] = 0;
split_simvol[1] = 0;
char* str_actors = NULL;
if (vec_actors->vectorList.total> 0) {
for (int i = 0; i < vec_actors->vectorList.total; i++) {
str_actors = (char*)vec_actors->pfVectorGet(vec_actors, i);
if (str_actors) {
str_all = yon_char_unite(str_all,split_simvol, str_actors, NULL); // Баг
split_simvol[0] = ',';
split_simvol[1] = '\0';
}
}
}
if (strlen(str_all) < 3) {
return yon_char_new("-");
}
return str_all;
}
int fill_tree_view_project(config_all* all_config,hotebook* widget , char* str_fill, int flag_gui_add) {
GtkTreeModel *model = GTK_TREE_MODEL(widget->liststore);
if (flag_gui_add == 0) {
g_object_ref(widget->liststore);
gtk_list_store_clear(widget->liststore);
}
int flag_searhc = 0;
for (int i = 0; i < all_config->v_project.pfVectorTotal(&all_config->v_project); i++) {
config_u_g_p* _config = (config_u_g_p*)all_config->v_project.pfVectorGet(&all_config->v_project, i);
if (strcmp(_config->type_arr, str_fill) == 0) {
GtkTreeIter iter;
flag_searhc++;
gtk_list_store_append(widget->liststore,&iter);
char* deferring_size = wrapper_str_time(_config->deferring_size);
char* deferring_file = wrapper_str_time(_config->deferring_file);
gtk_list_store_set(widget->liststore,&iter,
0,fill_tree_view_id(_config->id),
1,format_actors(&_config->actors),
2,_config->quota,
3,_config->size_memory,
4,philos_format_cfg_str_size_memory("", _config->soft_restriction_size,_config->soft_restriction_size_pow),
5,philos_format_cfg_str_size_memory("", _config->severe_limitation_size,_config->severe_limitation_size_pow),
6,yon_char_from_int(_config->soft_restriction_file),
7,_config->files,
8,yon_char_from_int(_config->severe_limitation_file),
9,deferring_size,
10,deferring_file,
-1);
}
}
if (flag_gui_add != 0) {
gtk_tree_view_set_model(GTK_TREE_VIEW(widget->spinWeeksFile), model);
}
return flag_searhc;
}
int fill_tree_view_user_group(config_all* all_config, char* disk, hotebook* widget,char* str_fill ,int flag_gui_add) {
GtkTreeModel *model = GTK_TREE_MODEL(widget->liststore);
if (flag_gui_add == 0) {
g_object_ref(widget->liststore);
// gtk_tree_view_set_model(GTK_TREE_VIEW(widget->tree_view), NULL);
gtk_list_store_clear(widget->liststore);
}
int flag_searhc = 0;
vector* vec_temp = NULL;
if (strcmp(str_fill, "usrquota")==0) {
vec_temp = &all_config->v_user;
}
else {
vec_temp = &all_config->v_group;
}
if (vec_temp->vectorList.total > 0) {
for (int i = 0; i < vec_temp->vectorList.total; i++) {
config_u_g_p* _config = (config_u_g_p*)vec_temp->pfVectorGet(vec_temp, i);
if (strcmp(_config->type_arr, str_fill) == 0 && strstr(_config->UNIX_file, disk)) {
GtkTreeIter iter;
flag_searhc++;
gtk_list_store_append(widget->liststore,&iter);
char* deferring_size = wrapper_str_time(_config->deferring_size);
char* deferring_file = wrapper_str_time(_config->deferring_file);
gtk_list_store_set(widget->liststore,&iter,
0,format_actors(&_config->actors),
1,_config->quota,
2,_config->size_memory,
3,philos_format_cfg_str_size_memory("", _config->soft_restriction_size,_config->soft_restriction_size_pow),
4,philos_format_cfg_str_size_memory("", _config->severe_limitation_size,_config->severe_limitation_size_pow),
5,yon_char_from_int(_config->soft_restriction_file),
6,_config->files,
7,yon_char_from_int(_config->severe_limitation_file),
8,deferring_size,
9,deferring_file,
-1);
}
}
}
if (flag_gui_add != 0) {
gtk_tree_view_set_model(GTK_TREE_VIEW(widget->tree_view), model);
}
return flag_searhc;
}
char* wrapper_str_time(size_t seconds) {
me_time t;
if (seconds!=-1) {
t = time_convert(seconds);
t.str_time = yon_char_unite(yon_char_from_int(t.weeks),WEEKS,
yon_char_from_int(t.days), DAYS,
yon_char_from_int(t.hours), HOURS,
yon_char_from_int(t.minutes), MINUTES, NULL);
}
else {
t.str_time = yon_char_new("-");
}
return t.str_time;
}