diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-06-09 17:43:10 -0400 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2019-06-15 14:40:40 -0400 |
| commit | c8e1b4ab3a51cfe0f39a6f0d78cf0988c380549c (patch) | |
| tree | 549e563ba7e3dc609d9b92c6ded998c31bdb8a5e /src/editexecutablesdialog.cpp | |
| parent | 5fa7fd7fb9f3a8f67e8842420d7a2ad600722119 (diff) | |
changed the down/up pngs to be slightly offset vertically from what they were, they did not look aligned when next to each other
added status/tooltip/whatsthis strings to new buttons
change enabled status of up/down dynamically
simplified move() to just move by one
Diffstat (limited to 'src/editexecutablesdialog.cpp')
| -rw-r--r-- | src/editexecutablesdialog.cpp | 87 |
1 files changed, 54 insertions, 33 deletions
diff --git a/src/editexecutablesdialog.cpp b/src/editexecutablesdialog.cpp index 9747a86f..e2772757 100644 --- a/src/editexecutablesdialog.cpp +++ b/src/editexecutablesdialog.cpp @@ -64,7 +64,7 @@ EditExecutablesDialog::EditExecutablesDialog(OrganizerCore& oc, QWidget* parent) if (ui->list->count() > 0) { ui->list->item(0)->setSelected(true); } else { - updateUI(nullptr); + updateUI(nullptr, nullptr); } } @@ -184,23 +184,40 @@ QListWidgetItem* EditExecutablesDialog::createListItem(const Executable& exe) return newItem; } -void EditExecutablesDialog::updateUI(const Executable* e) +void EditExecutablesDialog::updateUI( + const QListWidgetItem* item, const Executable* e) { // the ui is currently being set, ignore changes m_settingUI = true; if (e) { setEdits(*e); - ui->remove->setEnabled(e->isCustom()); } else { clearEdits(); - ui->remove->setEnabled(false); } + setButtons(item, e); + // any changes from now on are from the user m_settingUI = false; } +void EditExecutablesDialog::setButtons( + const QListWidgetItem* item, const Executable* e) +{ + // add is always enabled + + if (item) { + ui->remove->setEnabled(e->isCustom()); + ui->up->setEnabled(canMove(item, -1)); + ui->down->setEnabled(canMove(item, +1)); + } else { + ui->remove->setEnabled(false); + ui->up->setEnabled(false); + ui->down->setEnabled(false); + } +} + void EditExecutablesDialog::clearEdits() { ui->title->clear(); @@ -348,47 +365,41 @@ void EditExecutablesDialog::save() } } -void EditExecutablesDialog::moveSelection(int by) +bool EditExecutablesDialog::canMove(const QListWidgetItem* item, int direction) { - auto* item = selectedItem(); if (!item) { - return; + return false; } - // moving down the list - while (by > 0) { - const auto row = ui->list->row(item); + if (direction < 0) { + // moving up + return (ui->list->row(item) > 0); - if (row >= (ui->list->count() - 1)) { - break; - } - - ui->list->takeItem(row); - ui->list->insertItem(row + 1, item); - item->setSelected(true); - - --by; + } else if (direction > 0) { + // moving down + return (ui->list->row(item) < (ui->list->count() - 1)); } - // moving up the list - while (by < 0) { - const auto row = ui->list->row(item); + return false; +} - if (row <= 0) { - break; - } +void EditExecutablesDialog::move(QListWidgetItem* item, int direction) +{ + if (!canMove(item, direction)) { + return; + } - ui->list->takeItem(row); - ui->list->insertItem(row - 1, item); - item->setSelected(true); + const auto row = ui->list->row(item); - ++by; - } + // removing item + ui->list->takeItem(row); + ui->list->insertItem(row + (direction > 0 ? 1 : -1), item); + item->setSelected(true); } void EditExecutablesDialog::on_list_itemSelectionChanged() { - updateUI(selectedExe()); + updateUI(selectedItem(), selectedExe()); } void EditExecutablesDialog::on_add_clicked() @@ -448,12 +459,22 @@ void EditExecutablesDialog::on_remove_clicked() void EditExecutablesDialog::on_up_clicked() { - moveSelection(-1); + auto* item = selectedItem(); + if (!item) { + return; + } + + move(item, -1); } void EditExecutablesDialog::on_down_clicked() { - moveSelection(+1); + auto* item = selectedItem(); + if (!item) { + return; + } + + move(item, +1); } bool EditExecutablesDialog::isTitleConflicting(const QString& s) |
