File indexing completed on 2024-04-21 16:32:34
0001 /*************************************************************************** 0002 numberdialog.h - description 0003 ------------------- 0004 begin : The May 24 2007 0005 copyright : (C) 2007 by Dominik Seichter 0006 email : domseichter@web.de 0007 ***************************************************************************/ 0008 0009 /*************************************************************************** 0010 * * 0011 * This program is free software; you can redistribute it and/or modify * 0012 * it under the terms of the GNU General Public License as published by * 0013 * the Free Software Foundation; either version 2 of the License, or * 0014 * (at your option) any later version. * 0015 * * 0016 ***************************************************************************/ 0017 0018 #include "numberdialog.h" 0019 0020 #include <QDialogButtonBox> 0021 #include <QVBoxLayout> 0022 0023 NumberDialog::NumberDialog(int start, int step, bool reset, QList<int> skip, QWidget *parent) 0024 : QDialog(parent) 0025 { 0026 QVBoxLayout *layout = new QVBoxLayout(this); 0027 QWidget *widget = new QWidget(this); 0028 0029 m_widget.setupUi(widget); 0030 m_buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this); 0031 0032 layout->addWidget(widget); 0033 layout->addWidget(m_buttons); 0034 0035 connect(m_buttons, &QDialogButtonBox::accepted, 0036 this, &NumberDialog::accept); 0037 connect(m_buttons, &QDialogButtonBox::rejected, 0038 this, &NumberDialog::reject); 0039 0040 connect(m_widget.buttonAdd, &QPushButton::clicked, 0041 this, &NumberDialog::slotAddNumber); 0042 connect(m_widget.buttonRemove, &QPushButton::clicked, this, 0043 &NumberDialog::slotRemoveNumber); 0044 connect(m_widget.listSkip, &QListWidget::itemSelectionChanged, 0045 this, &NumberDialog::slotEnableControls); 0046 m_widget.spinStart->setValue(start); 0047 m_widget.spinStep->setValue(step); 0048 m_widget.checkReset->setChecked(reset); 0049 m_widget.listSkip->setSortingEnabled(true); // TODO: sort numeric 0050 0051 QList<int>::ConstIterator it = skip.constBegin(); 0052 while (it != skip.constEnd()) { 0053 m_widget.listSkip->addItem(QString::number(*it)); 0054 ++it; 0055 } 0056 } 0057 0058 QList<int> NumberDialog::skipNumbers() const 0059 { 0060 QList<int> list; 0061 0062 for (int i = 0; i < m_widget.listSkip->count(); i++) { 0063 QListWidgetItem *item = m_widget.listSkip->item(i); 0064 list.append(item->data(Qt::DisplayRole).toInt()); 0065 0066 } 0067 return list; 0068 } 0069 0070 void NumberDialog::slotEnableControls() 0071 { 0072 QList<QListWidgetItem *> selected = m_widget.listSkip->selectedItems(); 0073 m_widget.buttonRemove->setEnabled(selected.size()); 0074 } 0075 0076 void NumberDialog::slotAddNumber() 0077 { 0078 m_widget.listSkip->addItem(QString::number(m_widget.spinNumber->value())); 0079 } 0080 0081 void NumberDialog::slotRemoveNumber() 0082 { 0083 delete m_widget.listSkip->takeItem(m_widget.listSkip->currentRow()); 0084 }