NavigatorView::NavigatorView(QObject* parent) : AbstractView(parent), m_blockSelectionChangedSignal(false), m_widget(new NavigatorWidget(this)), m_treeModel(new NavigatorTreeModel(this)) { Internal::NavigatorContext *navigatorContext = new Internal::NavigatorContext(m_widget.data()); Core::ICore::addContextObject(navigatorContext); m_widget->setTreeModel(m_treeModel.data()); connect(treeWidget()->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(changeSelection(QItemSelection,QItemSelection))); connect(m_widget.data(), SIGNAL(leftButtonClicked()), this, SLOT(leftButtonClicked())); connect(m_widget.data(), SIGNAL(rightButtonClicked()), this, SLOT(rightButtonClicked())); connect(m_widget.data(), SIGNAL(downButtonClicked()), this, SLOT(downButtonClicked())); connect(m_widget.data(), SIGNAL(upButtonClicked()), this, SLOT(upButtonClicked())); treeWidget()->setIndentation(treeWidget()->indentation() * 0.5); NameItemDelegate *idDelegate = new NameItemDelegate(this, m_treeModel.data()); IconCheckboxItemDelegate *showDelegate = new IconCheckboxItemDelegate(this, Utils::Icons::EYE_OPEN_TOOLBAR.pixmap(), Utils::Icons::EYE_CLOSED_TOOLBAR.pixmap(), m_treeModel.data()); IconCheckboxItemDelegate *exportDelegate = new IconCheckboxItemDelegate(this, Icons::EXPORT_CHECKED.pixmap(), Icons::EXPORT_UNCHECKED.pixmap(), m_treeModel.data()); #ifdef _LOCK_ITEMS_ IconCheckboxItemDelegate *lockDelegate = new IconCheckboxItemDelegate(this,":/qmldesigner/images/lock.png", ":/qmldesigner/images/hole.png",m_treeModel.data()); #endif treeWidget()->setItemDelegateForColumn(0,idDelegate); #ifdef _LOCK_ITEMS_ treeWidget()->setItemDelegateForColumn(1,lockDelegate); treeWidget()->setItemDelegateForColumn(2,showDelegate); #else treeWidget()->setItemDelegateForColumn(1,exportDelegate); treeWidget()->setItemDelegateForColumn(2,showDelegate); #endif }
NavigatorView::NavigatorView(QObject* parent) : AbstractView(parent), m_blockSelectionChangedSignal(false), m_widget(new NavigatorWidget(this)), m_treeModel(new NavigatorTreeModel(this)) { Internal::NavigatorContext *navigatorContext = new Internal::NavigatorContext(m_widget.data()); Core::ICore::addContextObject(navigatorContext); m_widget->setTreeModel(m_treeModel.data()); connect(treeWidget()->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(changeSelection(QItemSelection,QItemSelection))); connect(m_widget.data(), SIGNAL(leftButtonClicked()), this, SLOT(leftButtonClicked())); connect(m_widget.data(), SIGNAL(rightButtonClicked()), this, SLOT(rightButtonClicked())); connect(m_widget.data(), SIGNAL(downButtonClicked()), this, SLOT(downButtonClicked())); connect(m_widget.data(), SIGNAL(upButtonClicked()), this, SLOT(upButtonClicked())); treeWidget()->setIndentation(treeWidget()->indentation() * 0.5); NameItemDelegate *idDelegate = new NameItemDelegate(this, m_treeModel.data()); IconCheckboxItemDelegate *showDelegate = new IconCheckboxItemDelegate(this, Utils::ThemeHelper::themedIconPixmap(QLatin1String(":/navigator/icon/eye_open.png")), Utils::ThemeHelper::themedIconPixmap(QLatin1String(":/navigator/icon/eye_closed.png")), m_treeModel.data()); IconCheckboxItemDelegate *exportDelegate = new IconCheckboxItemDelegate(this, Utils::ThemeHelper::themedIconPixmap(QLatin1String(":/navigator/icon/export_checked.png")), Utils::ThemeHelper::themedIconPixmap(QLatin1String(":/navigator/icon/export_unchecked.png")), m_treeModel.data()); #ifdef _LOCK_ITEMS_ IconCheckboxItemDelegate *lockDelegate = new IconCheckboxItemDelegate(this,":/qmldesigner/images/lock.png", ":/qmldesigner/images/hole.png",m_treeModel.data()); #endif treeWidget()->setItemDelegateForColumn(0,idDelegate); #ifdef _LOCK_ITEMS_ treeWidget()->setItemDelegateForColumn(1,lockDelegate); treeWidget()->setItemDelegateForColumn(2,showDelegate); #else treeWidget()->setItemDelegateForColumn(1,exportDelegate); treeWidget()->setItemDelegateForColumn(2,showDelegate); #endif }
QList<QToolButton *> NavigatorWidget::createToolBarWidgets() { QList<QToolButton *> buttons; buttons << new QToolButton(); buttons.last()->setIcon(QIcon(":/navigator/icon/arrowleft.png")); buttons.last()->setToolTip(tr("Become first sibling of parent (CTRL + Left)")); buttons.last()->setShortcut(QKeySequence(Qt::Key_Left | Qt::CTRL)); connect(buttons.last(), SIGNAL(clicked()), this, SIGNAL(leftButtonClicked())); buttons << new QToolButton(); buttons.last()->setIcon(QIcon(":/navigator/icon/arrowright.png")); buttons.last()->setToolTip(tr("Become child of first sibling (CTRL + Right)")); buttons.last()->setShortcut(QKeySequence(Qt::Key_Right | Qt::CTRL)); connect(buttons.last(), SIGNAL(clicked()), this, SIGNAL(rightButtonClicked())); buttons << new QToolButton(); buttons.last()->setIcon(QIcon(":/navigator/icon/arrowdown.png")); buttons.last()->setToolTip(tr("Move down (CTRL + Down)")); buttons.last()->setShortcut(QKeySequence(Qt::Key_Down | Qt::CTRL)); connect(buttons.last(), SIGNAL(clicked()), this, SIGNAL(downButtonClicked())); buttons << new QToolButton(); buttons.last()->setIcon(QIcon(":/navigator/icon/arrowup.png")); buttons.last()->setToolTip(tr("Move up (CTRL + Up)")); buttons.last()->setShortcut(QKeySequence(Qt::Key_Up | Qt::CTRL)); connect(buttons.last(), SIGNAL(clicked()), this, SIGNAL(upButtonClicked())); return buttons; }
ContentTab::ContentTab(QWidget *parent, ObjectStore *store) : DialogTab(parent), _store(store) { setupUi(this); _up->setIcon(KstGetIcon("kst_uparrow")); _down->setIcon(KstGetIcon("kst_downarrow")); _add->setIcon(KstGetIcon("kst_rightarrow")); _remove->setIcon(KstGetIcon("kst_leftarrow")); _up->setToolTip(tr("Raise in plot order: Alt+Up")); _down->setToolTip(tr("Lower in plot order: Alt+Down")); _add->setToolTip(tr("Select: Alt+s")); _remove->setToolTip(tr("Remove: Alt+r")); connect(_add, SIGNAL(clicked()), this, SLOT(addButtonClicked())); connect(_remove, SIGNAL(clicked()), this, SLOT(removeButtonClicked())); connect(_up, SIGNAL(clicked()), this, SLOT(upButtonClicked())); connect(_down, SIGNAL(clicked()), this, SLOT(downButtonClicked())); connect(_add, SIGNAL(clicked()), this, SIGNAL(modified())); connect(_remove, SIGNAL(clicked()), this, SIGNAL(modified())); connect(_up, SIGNAL(clicked()), this, SIGNAL(modified())); connect(_down, SIGNAL(clicked()), this, SIGNAL(modified())); connect(_availableRelationList, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(availableDoubleClicked(QListWidgetItem*))); connect(_displayedRelationList, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(displayedDoubleClicked(QListWidgetItem*))); connect(_availableRelationList, SIGNAL(itemSelectionChanged()), this, SLOT(updateButtons())); connect(_displayedRelationList, SIGNAL(itemSelectionChanged()), this, SLOT(updateButtons())); connect(_editSelectedAvailable, SIGNAL(clicked()), this, SLOT(editSelectedAvailable())); connect(_editSelectedDisplayed, SIGNAL(clicked()), this, SLOT(editSelectedDisplayed())); }
QList<QToolButton *> NavigatorWidget::createToolBarWidgets() { QList<QToolButton *> buttons; buttons.append(new QToolButton()); buttons.last()->setIcon(Icons::ARROW_LEFT.icon()); buttons.last()->setToolTip(tr("Become last sibling of parent (CTRL + Left).")); buttons.last()->setShortcut(QKeySequence(Qt::Key_Left | Qt::CTRL)); connect(buttons.last(), SIGNAL(clicked()), this, SIGNAL(leftButtonClicked())); buttons.append(new QToolButton()); buttons.last()->setIcon(Icons::ARROW_RIGHT.icon()); buttons.last()->setToolTip(tr("Become child of last sibling (CTRL + Right).")); buttons.last()->setShortcut(QKeySequence(Qt::Key_Right | Qt::CTRL)); connect(buttons.last(), SIGNAL(clicked()), this, SIGNAL(rightButtonClicked())); buttons.append(new QToolButton()); buttons.last()->setIcon(Icons::ARROW_DOWN.icon()); buttons.last()->setToolTip(tr("Move down (CTRL + Down).")); buttons.last()->setShortcut(QKeySequence(Qt::Key_Down | Qt::CTRL)); connect(buttons.last(), SIGNAL(clicked()), this, SIGNAL(downButtonClicked())); buttons.append(new QToolButton()); buttons.last()->setIcon(Icons::ARROW_UP.icon()); buttons.last()->setToolTip(tr("Move up (CTRL + Up).")); buttons.last()->setShortcut(QKeySequence(Qt::Key_Up | Qt::CTRL)); connect(buttons.last(), SIGNAL(clicked()), this, SIGNAL(upButtonClicked())); return buttons; }
KstCurveDifferentiateI::KstCurveDifferentiateI(QWidget* parent, const char* name, bool modal, WFlags fl) : KstCurveDifferentiate(parent, name, modal, fl) { availableListBox->clear(); selectedListBox->clear(); availableListBox->insertItem(i18n("Line Color")); availableListBox->insertItem(i18n("Point Style")); availableListBox->insertItem(i18n("Line Style")); availableListBox->insertItem(i18n("Line Width")); connect(Cancel_2, SIGNAL(clicked()), this, SLOT(close())); connect(OK_2, SIGNAL(clicked()), this, SLOT(apply())); // more connections to emulate kactionselector behaviour connect(leftButton, SIGNAL(clicked()), this, SLOT(leftButtonClicked())); connect(rightButton, SIGNAL(clicked()), this, SLOT(rightButtonClicked())); connect(upButton, SIGNAL(clicked()), this, SLOT(upButtonClicked())); connect(downButton, SIGNAL(clicked()), this, SLOT(downButtonClicked())); connect(availableListBox, SIGNAL(highlighted(int)), this, SLOT(updateButtons())); connect(selectedListBox, SIGNAL(highlighted(int)), this, SLOT(updateButtons())); maxLineWidth->setMaxValue(KSTLINEWIDTH_MAX); maxLineWidth->setMinValue(1); _radioButtonRepeatPlot->setChecked(true); _radioButtonApplyAllWindows->setChecked(true); loadProperties(); setOptions(); updateCurveDifferentiate(); }
KstMonochromeDialogI::KstMonochromeDialogI(QWidget* parent, const char* name, bool modal, WFlags fl) : KstMonochromeDialog(parent, name, modal, fl) { availableListBox->clear(); selectedListBox->clear(); availableListBox->insertItem(i18n("Point Style")); availableListBox->insertItem(i18n("Line Style")); availableListBox->insertItem(i18n("Line Width")); connect(_Cancel, SIGNAL(clicked()), this, SLOT(accept())); connect(enhanceReadability, SIGNAL(clicked()), this, SLOT(updateButtons())); // more connections to emulate kactionselector behaviour connect(leftButton, SIGNAL(clicked()), this, SLOT(leftButtonClicked())); connect(rightButton, SIGNAL(clicked()), this, SLOT(rightButtonClicked())); connect(upButton, SIGNAL(clicked()), this, SLOT(upButtonClicked())); connect(downButton, SIGNAL(clicked()), this, SLOT(downButtonClicked())); connect(availableListBox, SIGNAL(highlighted(int)), this, SLOT(updateButtons())); connect(selectedListBox, SIGNAL(highlighted(int)), this, SLOT(updateButtons())); maxLineWidth->setMaxValue(KSTLINESTYLE_MAXTYPE); maxLineWidth->setMinValue(1); updateMonochromeDialog(); }
MetaInfoDialog::MetaInfoDialog(QWidget *parent) : QDialog(parent) { //Init the dialog, from the .ui file setupUi(this); //Hide artwork frameArtwork->hide(); //Fix size setMinimumSize(this->size()); setMaximumHeight(this->height()); //Setup table view tableView->verticalHeader()->setVisible(false); tableView->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents); tableView->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); tableView->horizontalHeader()->setStretchLastSection(true); //Enable up/down button connect(upButton, SIGNAL(clicked()), this, SLOT(upButtonClicked())); connect(downButton, SIGNAL(clicked()), this, SLOT(downButtonClicked())); connect(editButton, SIGNAL(clicked()), this, SLOT(editButtonClicked())); //Create context menu m_contextMenuInfo = new QMenu(); m_contextMenuArtwork = new QMenu(); QAction *editMetaInfoAction = m_contextMenuInfo->addAction(QIcon(":/icons/table_edit.png"), tr("Edit this Information")); QAction *copyMetaInfoAction = m_contextMenuInfo->addAction(QIcon(":/icons/page_white_copy.png"), tr("Copy everything to Meta Info tab")); QAction *clearMetaInfoAction = m_contextMenuInfo->addAction(QIcon(":/icons/bin.png"), tr("Clear all Meta Info")); QAction *loadArtworkAction = m_contextMenuArtwork->addAction(QIcon(":/icons/folder_image.png"), tr("Load Artwork From File")); QAction *clearArtworkAction = m_contextMenuArtwork->addAction(QIcon(":/icons/bin.png"), tr("Clear Artwork")); SET_FONT_BOLD(editMetaInfoAction, true); SET_FONT_BOLD(loadArtworkAction, true); connect(tableView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(infoContextMenuRequested(QPoint))); connect(labelArtwork, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(artworkContextMenuRequested(QPoint))); connect(frameArtwork, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(artworkContextMenuRequested(QPoint))); connect(editMetaInfoAction, SIGNAL(triggered(bool)), this, SLOT(editButtonClicked())); connect(copyMetaInfoAction, SIGNAL(triggered(bool)), this, SLOT(copyMetaInfoActionTriggered())); connect(clearMetaInfoAction, SIGNAL(triggered(bool)), this, SLOT(clearMetaInfoActionTriggered())); connect(loadArtworkAction, SIGNAL(triggered(bool)), this, SLOT(editButtonClicked())); connect(clearArtworkAction, SIGNAL(triggered(bool)), this, SLOT(clearArtworkActionTriggered())); //Install event filter labelArtwork->installEventFilter(this); //Translate labelHeaderText->setText(QString("<b>%1</b><br>%2").arg(tr("Meta Information"), tr("The following meta information have been extracted from the original file."))); }
NavigatorView::NavigatorView(QObject* parent) : QmlModelView(parent), m_blockSelectionChangedSignal(false), m_widget(new NavigatorWidget(this)), m_treeModel(new NavigatorTreeModel(this)) { m_widget->setTreeModel(m_treeModel.data()); connect(treeWidget()->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(changeSelection(QItemSelection,QItemSelection))); connect(m_widget.data(), SIGNAL(leftButtonClicked()), this, SLOT(leftButtonClicked())); connect(m_widget.data(), SIGNAL(rightButtonClicked()), this, SLOT(rightButtonClicked())); connect(m_widget.data(), SIGNAL(downButtonClicked()), this, SLOT(downButtonClicked())); connect(m_widget.data(), SIGNAL(upButtonClicked()), this, SLOT(upButtonClicked())); treeWidget()->setIndentation(treeWidget()->indentation() * 0.5); NameItemDelegate *idDelegate = new NameItemDelegate(this,m_treeModel.data()); IconCheckboxItemDelegate *showDelegate = new IconCheckboxItemDelegate(this,":/qmldesigner/images/eye_open.png", ":/qmldesigner/images/placeholder.png",m_treeModel.data()); #ifdef _LOCK_ITEMS_ IconCheckboxItemDelegate *lockDelegate = new IconCheckboxItemDelegate(this,":/qmldesigner/images/lock.png", ":/qmldesigner/images/hole.png",m_treeModel.data()); #endif treeWidget()->setItemDelegateForColumn(0,idDelegate); #ifdef _LOCK_ITEMS_ treeWidget()->setItemDelegateForColumn(1,lockDelegate); treeWidget()->setItemDelegateForColumn(2,showDelegate); #else treeWidget()->setItemDelegateForColumn(1,showDelegate); #endif }
LegendTab::LegendTab(QWidget *parent) : DialogTab(parent) { setupUi(this); _single = true; _up->setIcon(QPixmap(":kst_uparrow.png")); _down->setIcon(QPixmap(":kst_downarrow.png")); _add->setIcon(QPixmap(":kst_rightarrow.png")); _remove->setIcon(QPixmap(":kst_leftarrow.png")); _up->setToolTip(i18n("Raise in list order: Alt+Up")); _down->setToolTip(i18n("Lower in list order: Alt+Down")); _add->setToolTip(i18n("Select: Alt+s")); _remove->setToolTip(i18n("Remove: Alt+r")); connect(_add, SIGNAL(clicked()), this, SLOT(addButtonClicked())); connect(_remove, SIGNAL(clicked()), this, SLOT(removeButtonClicked())); connect(_up, SIGNAL(clicked()), this, SLOT(upButtonClicked())); connect(_down, SIGNAL(clicked()), this, SLOT(downButtonClicked())); connect(_add, SIGNAL(clicked()), this, SIGNAL(modified())); connect(_remove, SIGNAL(clicked()), this, SIGNAL(modified())); connect(_up, SIGNAL(clicked()), this, SIGNAL(modified())); connect(_down, SIGNAL(clicked()), this, SIGNAL(modified())); connect(_availableRelationList, SIGNAL(itemSelectionChanged()), this, SLOT(updateButtons())); connect(_displayedRelationList, SIGNAL(itemSelectionChanged()), this, SLOT(updateButtons())); connect(_availableRelationList, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(addButtonClicked())); connect(_displayedRelationList, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(removeButtonClicked())); connect(_autoContents, SIGNAL(stateChanged(int)), this, SLOT(updateActive())); connect(_autoContents, SIGNAL(stateChanged(int)), this, SIGNAL(modified())); connect(_displayVertically, SIGNAL(stateChanged(int)), this, SIGNAL(modified())); connect(_title, SIGNAL(textChanged(const QString&)), this, SIGNAL(modified())); connect(_fontSize, SIGNAL(valueChanged(double)), this, SIGNAL(modified())); connect(_bold, SIGNAL(stateChanged(int)), this, SIGNAL(modified())); connect(_underline, SIGNAL(stateChanged(int)), this, SIGNAL(modified())); connect(_italic, SIGNAL(stateChanged(int)), this, SIGNAL(modified())); connect(_family, SIGNAL(currentIndexChanged(int)), this, SIGNAL(modified())); _displayedRelationList->setSortingEnabled(false); _availableRelationList->setSortingEnabled(false); }
DifferentiateCurvesDialog::DifferentiateCurvesDialog(QWidget *parent) : QDialog(parent) { setupUi(this); if (MainWindow *mw = qobject_cast<MainWindow*>(parent)) { _store = mw->document()->objectStore(); } else { // FIXME: we need the object store qFatal("ERROR: can't construct a DifferentiateCurvesDialog without the object store"); } resetLists(); connect(_buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), this, SLOT(reject())); connect(_buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(OKClicked())); connect(_buttonBox->button(QDialogButtonBox::Apply), SIGNAL(clicked()), this, SLOT(apply())); connect(_add, SIGNAL(clicked()), this, SLOT(addButtonClicked())); connect(_remove, SIGNAL(clicked()), this, SLOT(removeButtonClicked())); connect(_up, SIGNAL(clicked()), this, SLOT(upButtonClicked())); connect(_down, SIGNAL(clicked()), this, SLOT(downButtonClicked())); connect(_availableListBox, SIGNAL(itemSelectionChanged()), this, SLOT(updateButtons())); connect(_selectedListBox, SIGNAL(itemSelectionChanged()), this, SLOT(updateButtons())); // TODO Icons required. // _up->setIcon(QPixmap(":kst_uparrow.png")); _up->setText("Up"); // _down->setIcon(QPixmap(":kst_downarrow.png")); _down->setText("Down"); // _add->setIcon(QPixmap(":kst_rightarrow.png")); _add->setText("Add"); // _remove->setIcon(QPixmap(":kst_leftarrow.png")); _remove->setText("Remove"); _maxLineWidth->setMaximum(LINEWIDTH_MAX); }
DifferentiateCurvesDialog::DifferentiateCurvesDialog(QWidget *parent) : QDialog(parent) { setupUi(this); if (MainWindow *mw = qobject_cast<MainWindow*>(parent)) { _store = mw->document()->objectStore(); } else { // FIXME: we need the object store qFatal("ERROR: can't construct a DifferentiateCurvesDialog without the object store"); } resetLists(); connect(_buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), this, SLOT(reject())); connect(_buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(OKClicked())); connect(_buttonBox->button(QDialogButtonBox::Apply), SIGNAL(clicked()), this, SLOT(apply())); connect(_add, SIGNAL(clicked()), this, SLOT(addButtonClicked())); connect(_remove, SIGNAL(clicked()), this, SLOT(removeButtonClicked())); connect(_up, SIGNAL(clicked()), this, SLOT(upButtonClicked())); connect(_down, SIGNAL(clicked()), this, SLOT(downButtonClicked())); connect(_availableListBox, SIGNAL(itemSelectionChanged()), this, SLOT(updateButtons())); connect(_selectedListBox, SIGNAL(itemSelectionChanged()), this, SLOT(updateButtons())); // Use the standard icons _up->setIcon(QPixmap(":kst_uparrow.png")); _down->setIcon(QPixmap(":kst_downarrow.png")); _add->setIcon(QPixmap(":kst_rightarrow.png")); _remove->setIcon(QPixmap(":kst_leftarrow.png")); _up->setToolTip(i18n("Move the selected property up the priority list")); _down->setToolTip(i18n("Move the selected property down the priority list")); _add->setToolTip(i18n("Add the selected property to the list of properties to cycle through")); _remove->setToolTip(i18n("Remove the selected property from the list of properties to cycle through")); _maxLineWidth->setMaximum(LINEWIDTH_MAX); }
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(); } }