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 ++++++++++++++++++++++++++++++++++++++++++++++++ gui/IconPickerDialog.h | 5 ++++- gui/aboutdialog.cpp | 17 ++++++++------- gui/instancesettings.ui | 8 ------- gui/mainwindow.cpp | 1 + gui/settingsdialog.cpp | 8 ++----- gui/settingsdialog.ui | 16 ++++++++------ 7 files changed, 80 insertions(+), 30 deletions(-) (limited to 'gui') 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 ) { diff --git a/gui/IconPickerDialog.h b/gui/IconPickerDialog.h index c55f6ff2..96fc61ff 100644 --- a/gui/IconPickerDialog.h +++ b/gui/IconPickerDialog.h @@ -15,7 +15,8 @@ public: ~IconPickerDialog(); int exec(QString selection); QString selectedIconKey; - +protected: + virtual bool eventFilter ( QObject* , QEvent* ); private: Ui::IconPickerDialog *ui; @@ -23,4 +24,6 @@ private slots: void selectionChanged ( QItemSelection,QItemSelection ); void activated ( QModelIndex ); void delayed_scroll ( QModelIndex ); + void addNewIcon(); + void removeSelectedIcon(); }; diff --git a/gui/aboutdialog.cpp b/gui/aboutdialog.cpp index 876f3044..873cc175 100644 --- a/gui/aboutdialog.cpp +++ b/gui/aboutdialog.cpp @@ -1,23 +1,24 @@ #include "aboutdialog.h" #include "ui_aboutdialog.h" +#include #include #include AboutDialog::AboutDialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::AboutDialog) + QDialog(parent), + ui(new Ui::AboutDialog) { - ui->setupUi(this); + ui->setupUi(this); - ui->icon->setPixmap(QIcon(":/icons/multimc/scalable/apps/multimc.svg").pixmap(64)); + ui->icon->setPixmap(QIcon(":/icons/multimc/scalable/apps/multimc.svg").pixmap(64)); + ui->title->setText("MultiMC " + AppVersion::current.toString()); + connect(ui->closeButton, SIGNAL(clicked()), SLOT(close())); - connect(ui->closeButton, SIGNAL(clicked()), SLOT(close())); - - QApplication::instance()->connect(ui->aboutQt, SIGNAL(clicked()), SLOT(aboutQt())); + QApplication::instance()->connect(ui->aboutQt, SIGNAL(clicked()), SLOT(aboutQt())); } AboutDialog::~AboutDialog() { - delete ui; + delete ui; } diff --git a/gui/instancesettings.ui b/gui/instancesettings.ui index 4a8ae12c..49309f11 100644 --- a/gui/instancesettings.ui +++ b/gui/instancesettings.ui @@ -42,13 +42,6 @@ false - - - - Compatibility mode? - - - @@ -403,7 +396,6 @@ settingsTabs windowSizeGroupBox - compatModeCheckBox maximizedCheckBox windowWidthSpinBox windowHeightSpinBox diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index fbda2547..8b06d698 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -87,6 +87,7 @@ MainWindow::MainWindow ( QWidget *parent ) : // the rename label is inside the rename tool button renameButton = new LabeledToolButton(); renameButton->setText("Instance Name"); + renameButton->setToolTip(ui->actionRenameInstance->toolTip()); connect(renameButton, SIGNAL(clicked(bool)), SLOT(on_actionRenameInstance_triggered())); ui->instanceToolBar->insertWidget(ui->actionLaunchInstance, renameButton); ui->instanceToolBar->insertSeparator(ui->actionLaunchInstance); diff --git a/gui/settingsdialog.cpp b/gui/settingsdialog.cpp index 909706b6..52093039 100644 --- a/gui/settingsdialog.cpp +++ b/gui/settingsdialog.cpp @@ -43,12 +43,8 @@ void SettingsDialog::showEvent ( QShowEvent* ev ) void SettingsDialog::updateCheckboxStuff() { - ui->windowWidthSpinBox->setEnabled(!(ui->compatModeCheckBox->isChecked() || - ui->maximizedCheckBox->isChecked())); - ui->windowHeightSpinBox->setEnabled(!(ui->compatModeCheckBox->isChecked() || - ui->maximizedCheckBox->isChecked())); - - ui->maximizedCheckBox->setEnabled(!ui->compatModeCheckBox->isChecked()); + ui->windowWidthSpinBox->setEnabled(!ui->maximizedCheckBox->isChecked()); + ui->windowHeightSpinBox->setEnabled(! ui->maximizedCheckBox->isChecked()); } void SettingsDialog::on_instDirBrowseBtn_clicked() diff --git a/gui/settingsdialog.ui b/gui/settingsdialog.ui index 8b53b0f1..0d30e301 100644 --- a/gui/settingsdialog.ui +++ b/gui/settingsdialog.ui @@ -54,6 +54,9 @@ By last launched + + sortingModeGroup + @@ -61,6 +64,9 @@ By name + + sortingModeGroup + @@ -175,13 +181,6 @@ Window Size - - - - Compatibility mode? - - - @@ -504,4 +503,7 @@ + + + -- cgit v1.2.3