Пример #1
0
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();
}
Пример #2
0
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();
}