IconSizeDialog::IconSizeDialog(const QString &caption, const QString &message, const QString &icon, int iconSize, QWidget *parent) : QDialog(parent) { // QDialog options setWindowTitle(caption); QWidget *mainWidget = new QWidget(this); QVBoxLayout *mainLayout = new QVBoxLayout; setLayout(mainLayout); mainLayout->addWidget(mainWidget); setModal(true); QWidget *page = new QWidget(this); QVBoxLayout *topLayout = new QVBoxLayout(page); QLabel *label = new QLabel(message, page); topLayout->addWidget(label); QListWidget *iconView = new UndraggableKIconView(page); m_size16 = new QListWidgetItem(DesktopIcon(icon, 16), i18n("16 by 16 pixels"), iconView); m_size22 = new QListWidgetItem(DesktopIcon(icon, 22), i18n("22 by 22 pixels"), iconView); m_size32 = new QListWidgetItem(DesktopIcon(icon, 32), i18n("32 by 32 pixels"), iconView); m_size48 = new QListWidgetItem(DesktopIcon(icon, 48), i18n("48 by 48 pixels"), iconView); m_size64 = new QListWidgetItem(DesktopIcon(icon, 64), i18n("64 by 64 pixels"), iconView); m_size128 = new QListWidgetItem(DesktopIcon(icon, 128), i18n("128 by 128 pixels"), iconView); iconView->setIconSize(QSize(128, 128)); iconView->setMinimumSize(QSize(128*6 + (6 + 2) * iconView->spacing() + 20, m_size128->sizeHint().height() + 2 * iconView->spacing() + 20)); topLayout->addWidget(iconView); switch (iconSize) { case 16: m_size16->setSelected(true); m_iconSize = 16; break; case 22: m_size22->setSelected(true); m_iconSize = 22; break; default: case 32: m_size32->setSelected(true); m_iconSize = 32; break; case 48: m_size48->setSelected(true); m_iconSize = 48; break; case 64: m_size64->setSelected(true); m_iconSize = 64; break; case 128: m_size128->setSelected(true); m_iconSize = 128; break; } connect(iconView, SIGNAL(executed(QListWidgetItem*)), this, SLOT(choose(QListWidgetItem*))); connect(iconView, SIGNAL(itemActivated(QListWidgetItem*)), this, SLOT(choose(QListWidgetItem*))); connect(iconView, SIGNAL(itemSelectionChanged()), this, SLOT(slotSelectionChanged())); mainLayout->addWidget(page); QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel, this); okButton = buttonBox->button(QDialogButtonBox::Ok); okButton->setDefault(true); okButton->setShortcut(Qt::CTRL | Qt::Key_Return); connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); mainLayout->addWidget(buttonBox); connect(buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), SLOT(slotCancel())); }
void ItemOrderList::dropEvent(QDropEvent *event) { event->accept(); QListWidget *list = ui->listWidgetItems; const QPoint pos = list->mapFromParent(event->pos()); const int s = list->spacing(); QModelIndex index = list->indexAt(pos); if ( !index.isValid() ) index = list->indexAt( pos + QPoint(s, - 2 * s) ); emit dropped( event->mimeData()->text(), index.row() ); }