Author: mir3x Date: Wed Sep 24 21:31:02 2014 New Revision: 26570 URL: http://svn.gna.org/viewcvs/freeciv?rev=26570&view=rev Log: Added 4 buttons to worklist ( add, move current production up, move down, delete )
See patch #5270 Modified: trunk/client/gui-qt/citydlg.cpp trunk/client/gui-qt/citydlg.h Modified: trunk/client/gui-qt/citydlg.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/citydlg.cpp?rev=26570&r1=26569&r2=26570&view=diff ============================================================================== --- trunk/client/gui-qt/citydlg.cpp (original) +++ trunk/client/gui-qt/citydlg.cpp Wed Sep 24 21:31:02 2014 @@ -804,7 +804,20 @@ QGroupBox *group_box = new QGroupBox(_("Worklist Option")); QGridLayout *qgrid = new QGridLayout; QPushButton *but2 = new QPushButton; - + QHBoxLayout *work_but_layout = new QHBoxLayout; + work_next_but = new QPushButton(style()-> + standardIcon(QStyle::SP_ArrowDown), ""); + work_prev_but = new QPushButton(style()-> + standardIcon(QStyle::SP_ArrowUp), ""); + work_add_but = new QPushButton(); + work_add_but->setIcon(QIcon(*(get_arrow_sprite(tileset, + ARROW_PLUS)->pm))); + work_rem_but = new QPushButton(style()->standardIcon( + QStyle::SP_DialogDiscardButton), ""); + work_but_layout->addWidget(work_add_but); + work_but_layout->addWidget(work_next_but); + work_but_layout->addWidget(work_prev_but); + work_but_layout->addWidget(work_rem_but); but_menu_worklist = new QPushButton; item_button_p = new QPushButton; @@ -832,11 +845,11 @@ r3 = new QRadioButton(_("Insert After")); r4 = new QRadioButton(_("Add Last")); r4->setChecked(true); + vbox->addLayout(work_but_layout); vbox->addWidget(r1); vbox->addWidget(r2); vbox->addWidget(r3); vbox->addWidget(r4); - vbox->addStretch(1); group_box->setLayout(vbox); p_table_p->setColumnCount(3); @@ -903,6 +916,10 @@ connect(buy_button_p, SIGNAL(clicked()), SLOT(buy())); connect(production_combo_p, SIGNAL(clicked()), SLOT(show_targets_worklist())); + connect(work_add_but, SIGNAL(clicked()), SLOT(show_targets_worklist())); + connect(work_prev_but, SIGNAL(clicked()), SLOT(worklist_up())); + connect(work_next_but, SIGNAL(clicked()), SLOT(worklist_down())); + connect(work_rem_but, SIGNAL(clicked()), SLOT(worklist_del())); connect(item_button_p, SIGNAL(clicked()), SLOT(show_targets())); connect(p_table_p, @@ -1129,8 +1146,35 @@ } else { cma_enable_but->setDisabled(true); } -} - + update_prod_buttons(); +} + +/**************************************************************************** + Update sensitivity of buttons in production tab +****************************************************************************/ +void city_dialog::update_prod_buttons() +{ + work_next_but->setDisabled(true); + work_prev_but->setDisabled(true); + work_add_but->setDisabled(true); + work_rem_but->setDisabled(true); + if (client.conn.playing && city_owner(pcity) == client.conn.playing) { + work_add_but->setEnabled(true); + if (selected_row_p >= 0 && selected_row_p < p_table_p->rowCount()) { + work_rem_but->setEnabled(true); + } + if (selected_row_p >= 0 && selected_row_p < p_table_p->rowCount() - 1) { + work_next_but->setEnabled(true); + } + if (selected_row_p > 0 && selected_row_p < p_table_p->rowCount()) { + work_prev_but->setEnabled(true); + } + } +} + +/**************************************************************************** + City dialog destructor +****************************************************************************/ city_dialog::~city_dialog() { if (citizen_pixmap) { @@ -1986,6 +2030,7 @@ } index = indexes.at(0); selected_row_p = index.row(); + update_prod_buttons(); } /**************************************************************************** @@ -2326,6 +2371,68 @@ } worklist_init(&empty); city_set_worklist(pcity, &empty); +} + +/**************************************************************************** + Move current item on worklist up +****************************************************************************/ +void city_dialog::worklist_up() +{ + QModelIndex index; + struct worklist queue; + struct universal *target = new universal; + QVariant qvar; + + if (selected_row_p < 1 || selected_row_p >= p_table_p->rowCount()) { + return; + } + city_get_queue(pcity, &queue); + worklist_peek_ith(&queue, target, selected_row_p); + worklist_remove(&queue, selected_row_p); + worklist_insert(&queue, *target, selected_row_p - 1); + city_set_queue(pcity, &queue); + index = p_table_p->model()->index(selected_row_p - 1, 0); + p_table_p->setCurrentIndex(index); + delete target; + +} + +/**************************************************************************** + Remove current item on worklist +****************************************************************************/ +void city_dialog::worklist_del() +{ + QTableWidgetItem *item; + if (selected_row_p < 0 + || selected_row_p >= p_table_p->rowCount()) { + return; + } + item = p_table_p->item(selected_row_p, 0); + dbl_click_p(item); + update_prod_buttons(); +} + +/**************************************************************************** + Move current item on worklist down +****************************************************************************/ +void city_dialog::worklist_down() +{ + QModelIndex index; + struct worklist queue; + struct universal *target = new universal; + QVariant qvar; + + if (selected_row_p < 0 || selected_row_p >= p_table_p->rowCount() - 1 ) { + return; + } + city_get_queue(pcity, &queue); + worklist_peek_ith(&queue, target, selected_row_p); + worklist_remove(&queue, selected_row_p); + worklist_insert(&queue, *target, selected_row_p + 1); + city_set_queue(pcity, &queue); + index = p_table_p->model()->index(selected_row_p + 1, 0); + p_table_p->setCurrentIndex(index); + delete target; } /**************************************************************************** Modified: trunk/client/gui-qt/citydlg.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/citydlg.h?rev=26570&r1=26569&r2=26570&view=diff ============================================================================== --- trunk/client/gui-qt/citydlg.h (original) +++ trunk/client/gui-qt/citydlg.h Wed Sep 24 21:31:02 2014 @@ -337,6 +337,10 @@ QPushButton *cma_enable_but; QPushButton *next_city_but; QPushButton *prev_city_but; + QPushButton *work_next_but; + QPushButton *work_prev_but; + QPushButton *work_add_but; + QPushButton *work_rem_but; QPushButton *but_menu_worklist; QPixmap *citizen_pixmap; unit_info *current_units; @@ -368,6 +372,7 @@ void update_cma_tab(); void update_disabled(); void update_sliders(); + void update_prod_buttons(); private slots: void next_city(); @@ -382,6 +387,9 @@ void item_selected(const QItemSelection &sl, const QItemSelection &ds); void clear_worklist(); void save_worklist(); + void worklist_up(); + void worklist_down(); + void worklist_del(); void display_worklist_menu(const QPoint &p); void disband_state_changed(int state); void update_results_text(); _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits