diff --git a/source/view/ubl-settings-diskquota.cc b/source/view/ubl-settings-diskquota.cc index 50026f2..cb06244 100755 --- a/source/view/ubl-settings-diskquota.cc +++ b/source/view/ubl-settings-diskquota.cc @@ -432,6 +432,7 @@ void MainWindow::wrapper_load_system() { int error_save = obj_wrapper_load_save->get_error_save(); int error_load = obj_wrapper_load_save->get_error_load(); this->info_warning_error(id_mess, error_save, error_load); + this->init_work_tv_g_u_p(); } void MainWindow::wrapper_load_global() { @@ -439,6 +440,7 @@ void MainWindow::wrapper_load_global() { int error_save = obj_wrapper_load_save->get_error_save(); int error_load = obj_wrapper_load_save->get_error_load(); this->info_warning_error(id_mess, error_save, error_load); + this->init_work_tv_g_u_p(); } void MainWindow::event() { @@ -463,14 +465,14 @@ void MainWindow::event() { sigc::bind*, const Gtk::TreeModel::iterator*, bool&> (sigc::mem_fun( *this, &MainWindow::remove_template), &list_store_project, &iter_project, flag_validate_del_project)); btnAddProject->signal_clicked().connect( - sigc::bind, struct tv_g_u_p> (sigc::mem_fun( *this, - &MainWindow::set_add_tv_g_u_p), row, list_store_project, obj_tv_g_u_p)); + sigc::bind&, struct tv_g_u_p> (sigc::mem_fun( *this, + &MainWindow::set_add_tv_g_u_p),ProjectQuotasTree, row, list_store_project, obj_tv_g_u_p)); btnAddUsers->signal_clicked().connect( - sigc::bind, struct tv_g_u_p> (sigc::mem_fun( *this, - &MainWindow::set_add_tv_g_u_p), row, list_store_users, obj_tv_g_u_p)); + sigc::bind&, struct tv_g_u_p> (sigc::mem_fun( *this, + &MainWindow::set_add_tv_g_u_p),usersQuotasTree, row, list_store_users, obj_tv_g_u_p)); btnAddGroups->signal_clicked().connect( - sigc::bind, struct tv_g_u_p> (sigc::mem_fun( *this, - &MainWindow::set_add_tv_g_u_p), row, list_store_groups, obj_tv_g_u_p)); + sigc::bind&, struct tv_g_u_p> (sigc::mem_fun( *this, + &MainWindow::set_add_tv_g_u_p),groupsQuotasTree, row, list_store_groups, obj_tv_g_u_p)); } void MainWindow::remove_template(Glib::RefPtr* list_store, const Gtk::TreeModel::iterator* iter, bool& flag_validate_del) { @@ -491,18 +493,20 @@ void MainWindow::remove_template(Glib::RefPtr* list_store, const flag_validate_del = false; } -void MainWindow::set_add_tv_g_u_p(Gtk::TreeModel::Row &row, Glib::RefPtr list_store, struct tv_g_u_p obj_tv_g_u_p) { - row = *(list_store->append()); - row[m_columns.name] = obj_tv_g_u_p.name; - row[m_columns.quotas] = obj_tv_g_u_p.quotas; - row[m_columns.size] = obj_tv_g_u_p.size; - row[m_columns.soft_limit_size] = obj_tv_g_u_p.soft_limit_size; - row[m_columns.hard_limit_size] = obj_tv_g_u_p.hard_limit_size; - row[m_columns.deferring_size] = obj_tv_g_u_p.deferring_size; - row[m_columns.files] = obj_tv_g_u_p.files; - row[m_columns.soft_limit_files] = obj_tv_g_u_p.soft_limit_files; - row[m_columns.hard_limit_delay] = obj_tv_g_u_p.hard_limit_delay; - row[m_columns.deferring_files] = obj_tv_g_u_p.deferring_files; +void MainWindow::set_add_tv_g_u_p(Gtk::TreeView* tree_view, Gtk::TreeModel::Row &row, Glib::RefPtr& list_store, struct tv_g_u_p obj_tv_g_u_p) { + if (this->check_space(tree_view)) { + row = *(list_store->append()); + row[m_columns.name] = obj_tv_g_u_p.name; + row[m_columns.quotas] = obj_tv_g_u_p.quotas; + row[m_columns.size] = obj_tv_g_u_p.size; + row[m_columns.soft_limit_size] = obj_tv_g_u_p.soft_limit_size; + row[m_columns.hard_limit_size] = obj_tv_g_u_p.hard_limit_size; + row[m_columns.deferring_size] = obj_tv_g_u_p.deferring_size; + row[m_columns.files] = obj_tv_g_u_p.files; + row[m_columns.soft_limit_files] = obj_tv_g_u_p.soft_limit_files; + row[m_columns.hard_limit_delay] = obj_tv_g_u_p.hard_limit_delay; + row[m_columns.deferring_files] = obj_tv_g_u_p.deferring_files; + } } void MainWindow::mode_switch_quota() { @@ -519,6 +523,21 @@ void MainWindow::filters_show() { obj_view_filters->show(); } +bool MainWindow::check_space(Gtk::TreeView* tree_view) { + Glib::RefPtr tree_view_model = tree_view->get_model(); + Gtk::TreeModel::Children children = tree_view_model->children(); + string name = ""; + string quotas = ""; + for(Gtk::TreeModel::iterator iter = children.begin(); iter != children.end(); ++iter) { + Gtk::TreeModel::Row row = *iter; + name = row[m_columns.name] + ""; + quotas = row[m_columns.quotas] + ""; + if (name.length() == 0 || quotas.length() == 0) { + return false; + } + } + return true; +} void MainWindow::info_status_app(string stule) { Glib::RefPtr boxInfo = boxInfoError->get_style_context(); diff --git a/source/view/ubl-settings-diskquota.h b/source/view/ubl-settings-diskquota.h index 6319693..3a9a0d2 100644 --- a/source/view/ubl-settings-diskquota.h +++ b/source/view/ubl-settings-diskquota.h @@ -215,7 +215,7 @@ class MainWindow { void init_tree_view(); void del_columns(); void set_obj_browser(View_open_browser* obj_open_browser); - void set_add_tv_g_u_p(Gtk::TreeModel::Row &row, Glib::RefPtr list_store, struct tv_g_u_p obj_tv_g_u_p); + void set_add_tv_g_u_p(Gtk::TreeView* tree_view, Gtk::TreeModel::Row &row, Glib::RefPtr& list_store, struct tv_g_u_p obj_tv_g_u_p); void off_quota_system(Gtk::ComboBoxText* combo_box, string quota_type); void mode_switch_quota(); void save_quotegroupSaveButton(); @@ -236,6 +236,7 @@ class MainWindow { void wrapper_save_system(); void wrapper_save_global(); void set_obj_view_filters(View_filters* obj_view_filters); + bool check_space(Gtk::TreeView* tree_view); }; void wrapper_help_show(GtkWidget *self, char* link, gpointer user_data); void help();