From 5573ed52e8b68a54330cfee21b853da53d079078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 27 Aug 2013 05:39:49 +0200 Subject: Add/remove/drag&drop for the icon picker. --- gui/IconPickerDialog.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'gui/IconPickerDialog.cpp') diff --git a/gui/IconPickerDialog.cpp b/gui/IconPickerDialog.cpp index d80673a8..d3a33e57 100644 --- a/gui/IconPickerDialog.cpp +++ b/gui/IconPickerDialog.cpp @@ -2,6 +2,9 @@ #include "instancedelegate.h" #include "ui_IconPickerDialog.h" #include "logic/IconListModel.h" +#include +#include +#include IconPickerDialog::IconPickerDialog(QWidget *parent) : QDialog(parent), @@ -25,9 +28,24 @@ IconPickerDialog::IconPickerDialog(QWidget *parent) : contentsWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); contentsWidget->setItemDelegate(new ListViewDelegate()); + //contentsWidget->setAcceptDrops(true); + contentsWidget->setDropIndicatorShown(true); + contentsWidget->viewport()->setAcceptDrops(true); + contentsWidget->setDragDropMode(QAbstractItemView::DropOnly); + contentsWidget->setDefaultDropAction(Qt::CopyAction); + + contentsWidget->installEventFilter(this); + IconList * list = IconList::instance(); contentsWidget->setModel(list); + auto buttonAdd = ui->buttonBox->addButton("Add Icon",QDialogButtonBox::ResetRole); + auto buttonRemove = ui->buttonBox->addButton("Remove Icon",QDialogButtonBox::ResetRole); + + + connect(buttonAdd,SIGNAL(clicked(bool)),SLOT(addNewIcon())); + connect(buttonRemove,SIGNAL(clicked(bool)),SLOT(removeSelectedIcon())); + connect ( contentsWidget, @@ -42,6 +60,43 @@ IconPickerDialog::IconPickerDialog(QWidget *parent) : SLOT(selectionChanged(QItemSelection,QItemSelection)) ); } +bool IconPickerDialog::eventFilter ( QObject* obj, QEvent* evt) +{ + if(obj != ui->iconView) + return QDialog::eventFilter(obj ,evt); + if (evt->type() != QEvent::KeyPress) + { + return QDialog::eventFilter(obj ,evt); + } + QKeyEvent *keyEvent = static_cast(evt); + IconList * list = IconList::instance(); + switch(keyEvent->key()) + { + case Qt::Key_Delete: + removeSelectedIcon(); + return true; + case Qt::Key_Plus: + addNewIcon(); + return true; + default: + break; + } + return QDialog::eventFilter(obj ,evt); +} + +void IconPickerDialog::addNewIcon() +{ + QStringList fileNames = QFileDialog::getOpenFileNames(this, "Select Icons", QString(), "Icons (*.png *.jpg *.jpeg)"); + IconList * list = IconList::instance(); + list->installIcons(fileNames); +} + +void IconPickerDialog::removeSelectedIcon() +{ + IconList * list = IconList::instance(); + list->deleteIcon(selectedIconKey); +} + void IconPickerDialog::activated ( QModelIndex index ) { -- cgit v1.2.3