PlantsWindow::PlantsWindow(Plants& plants, QWidget* parent) : QDialog(parent), plants(plants) { setModal(true); color_dialog = new QColorDialog; QVBoxLayout* plants_layout = new QVBoxLayout(); vector<QString> plants_str = plants_str_list(); plants_widget = new ListWidget(new PlantsModel(plants)); //plants_widget = new ListWidget(new KeyNamesModel(plants)); plants_layout->addWidget(plants_widget); QPushButton* add_plant_btn = new QPushButton(tr("Add a plant")); del_plant_btn = new QPushButton(tr("Delete plant")); del_plant_btn->setEnabled(false); AddDialog* add_plant = new AddPlantDialog(plants); QObject::connect(add_plant_btn, SIGNAL(clicked()), add_plant, SLOT(show())); QObject::connect(del_plant_btn, SIGNAL(clicked()), this, SLOT(delete_plant())); plants_layout->addWidget(add_plant_btn); plants_layout->addWidget(del_plant_btn); QPushButton* close_btn = new QPushButton(tr("Close")); plants_layout->addWidget(close_btn); QObject::connect(close_btn, SIGNAL(clicked()), this, SLOT(accept())); QVBoxLayout* var_layout = new QVBoxLayout(); var_widget = new QListView(); var_widget->setModel(new VarsModel(plants, plants_widget)); var_layout->addWidget(var_widget); add_var_btn = new QPushButton(tr("Add a variety")); AddVarDialog* add_var = new AddVarDialog(plants, plants_widget); QObject::connect(add_var_btn, SIGNAL(clicked()), add_var, SLOT(show())); var_layout->addWidget(add_var_btn); QObject::connect(add_var, SIGNAL(list_updated()), var_widget->model(), SIGNAL(layoutChanged())); QObject::connect(add_plant, SIGNAL(list_updated()), plants_widget->model(), SIGNAL(layoutChanged())); QObject::connect(plants_widget->selectionModel(), SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)), var_widget->model(), SIGNAL(layoutChanged())); QObject::connect(plants_widget->selectionModel(), SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)), this, SLOT(update_plant_data(const QModelIndex&, const QModelIndex&))); QVBoxLayout* notes_layout = new QVBoxLayout(); notes_widget = new QTextEdit(); notes_layout->addWidget(notes_widget); //update_notes(); color_btn = new QPushButton(tr("Color")); QObject::connect(color_btn, SIGNAL(clicked()), this, SLOT(set_color())); QVBoxLayout* details_layout = new QVBoxLayout(); details_layout->addLayout(var_layout); details_layout->addWidget(color_btn); details_layout->addLayout(notes_layout); QHBoxLayout* main_layout = new QHBoxLayout(this); main_layout->addLayout(plants_layout); main_layout->addLayout(details_layout); update_btns_state(); }
void PlantsWindow::update_plant_data(const QModelIndex& current_plant_mi, const QModelIndex& previous_plant_mi) { int previous_plant_index = previous_plant_mi.row(); int current_plant_index = current_plant_mi.row(); update_btns_state(); update_notes(current_plant_index, previous_plant_index); update_del_btn(current_plant_index); emit timeline_need_update(); }