void RoomsDialog::createUI() { this->setWindowTitle(QString::fromUtf8("Tantermek")); this->m_newButton = new QPushButton(QString::fromUtf8("Új")); this->m_modifyButton = new QPushButton(QString::fromUtf8("Módosítások alkalmazása")); this->m_delButton = new QPushButton(QString::fromUtf8("Kijelöltek törlése")); this->m_clearAllButton = new QPushButton(QString::fromUtf8("Mind törlése")); this->m_refreshButton = new QPushButton(QString::fromUtf8("Tábla frissítése")); this->m_buttonsLayout = new QHBoxLayout(); this->m_buttonsLayout->addWidget(this->m_newButton); this->m_buttonsLayout->addWidget(this->m_modifyButton); this->m_buttonsLayout->addWidget(this->m_delButton); this->m_buttonsLayout->addWidget(this->m_clearAllButton); this->m_buttonsLayout->addWidget(this->m_refreshButton); this->m_tableWidget = new QTableWidget(); this->m_tableWidget->setMinimumSize(650, 400); this->m_layout = new QVBoxLayout(); this->m_layout->addLayout(this->m_buttonsLayout); this->m_layout->addWidget(this->m_tableWidget); this->setLayout(this->m_layout); connect(this->m_newButton, SIGNAL(clicked()), this, SLOT(newButtonClicked())); connect(this->m_modifyButton, SIGNAL(clicked()), this, SLOT(modifyButtonClicked())); connect(this->m_delButton, SIGNAL(clicked()), this, SLOT(delButtonClicked())); connect(this->m_clearAllButton, SIGNAL(clicked()), gdata, SLOT(deleteAllRooms())); connect(this->m_refreshButton, SIGNAL(clicked()), this, SLOT(refreshTable())); connect(gdata, SIGNAL(roomsReady()), this, SLOT(roomsReady())); }
WorkoutEditorBase::WorkoutEditorBase(QStringList &colms, QWidget *parent) :QFrame(parent) { QVBoxLayout *layout = new QVBoxLayout(); QHBoxLayout *row1Layout = new QHBoxLayout(); table = new QTableWidget(); table->setColumnCount(colms.count()); table->setHorizontalHeaderLabels(colms); #if QT_VERSION > 0x050000 table->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); #else table->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); #endif table->setShowGrid(true); table->setAlternatingRowColors(true); table->resizeColumnsToContents(); row1Layout->addWidget(table); connect(table,SIGNAL(cellChanged(int,int)),this,SLOT(cellChanged(int,int))); QHBoxLayout *row2Layout = new QHBoxLayout(); QPushButton *delButton = new QPushButton(); delButton->setText(tr("Delete")); delButton->setToolTip(tr("Delete the highlighted row")); connect(delButton,SIGNAL(clicked()),this,SLOT(delButtonClicked())); row2Layout->addWidget(delButton); QPushButton *addButton = new QPushButton(); addButton->setText(tr("Add")); addButton->setToolTip(tr("Add row at end")); connect(addButton,SIGNAL(clicked()),this,SLOT(addButtonClicked())); row2Layout->addWidget(addButton); QPushButton *insertButton = new QPushButton(); insertButton->setText(tr("Insert")); insertButton->setToolTip(tr("Add a Lap below the highlighted row")); connect(insertButton,SIGNAL(clicked()),this,SLOT(insertButtonClicked())); row2Layout->addWidget(insertButton); QPushButton *lapButton = new QPushButton(); lapButton->setText(tr("Lap")); lapButton->setToolTip(tr("Add a Lap below the highlighted row")); row2Layout->addWidget(lapButton); connect(lapButton,SIGNAL(clicked()),this,SLOT(lapButtonClicked())); layout->addLayout(row1Layout); layout->addLayout(row2Layout); setLayout(layout); }
void TopLevel::config() { if (!confdlg) { confdlg = new KDialogBase(KDialogBase::Plain, i18n("Configure Tea Cooker"), KDialogBase::Ok|KDialogBase::Cancel|KDialogBase::Help, KDialogBase::Ok, this, "config", true); QWidget *page = confdlg->plainPage(); // FIXME: enforce sensible initial/default size of dialog // FIXME: modal is ok, but can avoid always-on-top? QBoxLayout *top_box = new QVBoxLayout(page, 0, 8); // whole config-stuff QBoxLayout *box = new QHBoxLayout(top_box); // list + properties /* left side - tea list and list-modifying buttons */ QBoxLayout *leftside = new QVBoxLayout(box); QGroupBox *listgroup = new QGroupBox(2, Vertical, i18n("Tea List"), page); leftside->addWidget(listgroup, 0, 0); listbox = new QListView(listgroup, "listBox"); listbox->addColumn(i18n("Name")); listbox->header()->setClickEnabled(false, listbox->header()->count()-1); listbox->addColumn(i18n("Time")); listbox->header()->setClickEnabled(false, listbox->header()->count()-1); listbox->setSorting(-1); connect(listbox, SIGNAL(selectionChanged()), SLOT(listBoxItemSelected())); // now buttons for editing the tea-list QWidget *listgroup_widget = new QWidget(listgroup); QBoxLayout *hbox = new QHBoxLayout(listgroup_widget); hbox->setSpacing(4); btn_new = new QPushButton(QString::null, listgroup_widget); QToolTip::add(btn_new, i18n("New")); btn_new->setPixmap(SmallIcon("filenew")); btn_new->setMinimumSize(btn_new->sizeHint() * 1.2); connect(btn_new, SIGNAL(clicked()), SLOT(newButtonClicked())); hbox->addWidget(btn_new); btn_del = new QPushButton(QString::null, listgroup_widget); QToolTip::add(btn_del, i18n("Delete")); btn_del->setIconSet(SmallIconSet("editdelete")); btn_del->setMinimumSize(btn_new->sizeHint() * 1.2); connect(btn_del, SIGNAL(clicked()), SLOT(delButtonClicked())); hbox->addWidget(btn_del); btn_up = new QPushButton(QString::null, listgroup_widget); QToolTip::add(btn_up, i18n("Up")); btn_up->setIconSet(SmallIconSet("up")); btn_up->setMinimumSize(btn_up->sizeHint() * 1.2); connect(btn_up, SIGNAL(clicked()), SLOT(upButtonClicked())); hbox->addWidget(btn_up); btn_down = new QPushButton(QString::null, listgroup_widget); QToolTip::add(btn_down, i18n("Down")); btn_down->setIconSet(SmallIconSet("down")); btn_down->setMinimumSize(btn_down->sizeHint() * 1.2); connect(btn_down, SIGNAL(clicked()), SLOT(downButtonClicked())); hbox->addWidget(btn_down); hbox->addStretch(10); /* right side - tea properties */ QBoxLayout *rightside = new QVBoxLayout(box); editgroup = new QGroupBox(2, Vertical, i18n("Tea Properties"), page); rightside->addWidget(editgroup, 0, 0); QHBox *propbox = new QHBox(editgroup); // FIXME: - must enforce correct vertical alignment of each label-editor pair // (better use one HBox for each label-editor pair?) QVBox *propleft = new QVBox(propbox); QVBox *propright = new QVBox(propbox); nameEdit = new QLineEdit(propright); nameEdit->setFixedHeight(nameEdit->sizeHint().height()); nameEdit->setAlignment(QLineEdit::AlignLeft); QLabel *l = new QLabel(nameEdit, i18n("Name:"), propleft); l->setFixedSize(l->sizeHint()); connect(nameEdit, SIGNAL(textChanged(const QString&)), SLOT(nameEditTextChanged(const QString&)) ); timeEdit = new TimeEdit(propright); timeEdit->setFixedHeight(timeEdit->sizeHint().height()); l = new QLabel(timeEdit, i18n("Tea time:"), propleft); l->setFixedSize(l->sizeHint()); connect(timeEdit, SIGNAL(valueChanged(int)), SLOT(spinBoxValueChanged(int))); /* bottom - timeout actions */ QGroupBox *actiongroup = new QGroupBox(4, Vertical, i18n("Action"), page); top_box->addWidget(actiongroup, 0, 0); QWidget *actionconf_widget = new QWidget(actiongroup); QBoxLayout *actionconf_hbox = new QHBoxLayout(actionconf_widget); btn_conf = new QPushButton(i18n("Configure Events..."), actionconf_widget); actionconf_hbox->addWidget(btn_conf); connect(btn_conf, SIGNAL(clicked()), SLOT(confButtonClicked())); actionconf_hbox->addStretch(10); eventEnable = new QCheckBox(i18n("Event"), actiongroup); popupEnable = new QCheckBox(i18n("Popup"), actiongroup); eventEnable->setFixedHeight(eventEnable->sizeHint().height()); popupEnable->setFixedHeight(popupEnable->sizeHint().height()); QHBox *actionbox = new QHBox(actiongroup); actionEnable = new QCheckBox(actionbox); // FIXME: add text to this line: // QLabel *actionLabel = new QLabel(i18n("Execute: "), actiongroup); actionEdit = new QLineEdit(actionbox); actionEdit->setFixedHeight(actionEdit->sizeHint().height()); QToolTip::add(actionEdit, i18n("Enter command here; '%t' will be replaced with name of steeping tea")); connect(actionEnable, SIGNAL(toggled(bool)), SLOT(actionEnableToggled(bool))); rightside->addStretch(); // single checkbox visEnable = new QCheckBox(i18n("Visualize progress in icon tray"), page); top_box->addWidget(visEnable, 0, 0); // let listbox claim all remaining vertical space top_box->setStretchFactor(box, 10); connect(confdlg, SIGNAL(helpClicked()), SLOT(help())); } // now add all defined teas (and their times) to the listview // this is done backwards because QListViewItems are inserted at the top listbox->clear(); for (int i=teas.count()-1; i>=0; i--) { TeaListItem *item = new TeaListItem(listbox); item->setName(teas[i].name); item->setTime(teas[i].time); if ((unsigned int)i == current_selected) current_item = item; } // select first entry in listbox; if no entries present then disable right side if (listempty) { enable_controls(); disable_properties(); nameEdit->setText(""); timeEdit->setValue(1); } else { listbox->setSelected(listbox->firstChild(), true); } // ------------------------- eventEnable->setChecked(useNotify); popupEnable->setChecked(usePopup); actionEnable->setChecked(useAction); actionEdit->setText(action); actionEdit->setEnabled(useAction); visEnable->setChecked(useTrayVis); if (confdlg->exec() == QDialog::Accepted) { // activate new settings useNotify = eventEnable->isChecked(); usePopup = popupEnable->isChecked(); useAction = actionEnable->isChecked(); action = actionEdit->text(); useTrayVis = visEnable->isChecked(); teas.clear(); // Copy over teas and times from the QListView int i = 0; teas.clear(); teas.resize(listbox->childCount()); for (QListViewItemIterator it(listbox); it.current() != 0; ++it) { teas[i].name = static_cast<TeaListItem *>(it.current())->name(); teas[i].time = static_cast<TeaListItem *>(it.current())->time(); if (it.current() == current_item) current_selected = i; i++; } listempty = (teas.count() == 0); rebuildTeaMenus(); // and store to config KConfig *config = kapp->config(); // remove old-style entries from default-group (if present) if (config->hasKey("UserTea")) config->deleteEntry("UserTea"); config->setGroup("General"); config->writeEntry("Beep", useNotify); config->writeEntry("Popup", usePopup); config->writeEntry("UseAction", useAction); config->writeEntry("Action", action); config->writeEntry("Tea", current_selected); config->writeEntry("UseTrayVis", useTrayVis); // first get rid of all previous tea-entries from config, then write anew config->deleteGroup("Teas", true); // deep remove of whole group config->setGroup("Teas"); config->writeEntry("Number", teas.count()); QString key; int index = 1; for (QValueVector<tea_struct>::ConstIterator it = teas.begin(); it != teas.end(); ++it) { key.sprintf("Tea%d Name", index); config->writeEntry(key, it->name); key.sprintf("Tea%d Time", index); config->writeEntry(key, it->time); index++; } config->sync(); } }