Support drag drop in the Model List Dialog.

This commit is contained in:
Leonardo Zide
2026-05-10 14:51:51 -07:00
parent b6f7f92e7e
commit 043e867061
3 changed files with 3 additions and 86 deletions
+3 -68
View File
@@ -23,11 +23,12 @@ lcModelListDialog::lcModelListDialog(QWidget* Parent, const std::vector<std::uni
connect(ui->RenameModel, &QPushButton::clicked, this, &lcModelListDialog::RenameModelClicked);
connect(ui->ExportModel, &QPushButton::clicked, this, &lcModelListDialog::ExportModelClicked);
connect(ui->DuplicateModel, &QPushButton::clicked, this, &lcModelListDialog::DuplicateModelClicked);
connect(ui->MoveUp, &QPushButton::clicked, this, &lcModelListDialog::MoveUpClicked);
connect(ui->MoveDown, &QPushButton::clicked, this, &lcModelListDialog::MoveDownClicked);
connect(ui->ModelList, &QListWidget::itemDoubleClicked, this, &lcModelListDialog::ModelListItemDoubleClicked);
connect(ui->ModelList, &QListWidget::itemSelectionChanged, this, &lcModelListDialog::ModelListItemSelectionChanged);
ui->ModelList->setDefaultDropAction(Qt::DropAction::MoveAction);
ui->ModelList->setDragDropMode(QAbstractItemView::DragDropMode::InternalMove);
lcModel* ActiveModel = lcGetActiveProject()->GetActiveModel();
int ActiveModelIndex = -1;
@@ -87,26 +88,6 @@ void lcModelListDialog::UpdateButtons()
ui->DeleteModel->setEnabled(ModelCount > 1);
ui->SetActiveModel->setEnabled(ui->ModelList->currentItem() != nullptr);
bool MoveUp = false;
bool MoveDown = false;
for (int Row = 0; Row < ui->ModelList->count(); Row++)
{
QListWidgetItem* Item = ui->ModelList->item(Row);
if (!Item->isSelected())
continue;
if (Row > 0 && !ui->ModelList->item(Row - 1)->isSelected())
MoveUp = true;
if (Row < ModelCount - 1 && !ui->ModelList->item(Row + 1)->isSelected())
MoveDown = true;
}
ui->MoveUp->setEnabled(MoveUp);
ui->MoveDown->setEnabled(MoveDown);
}
void lcModelListDialog::accept()
@@ -296,52 +277,6 @@ void lcModelListDialog::DuplicateModelClicked()
UpdateButtons();
}
void lcModelListDialog::MoveUpClicked()
{
bool Blocked = ui->ModelList->blockSignals(true);
for (int Row = 1; Row < ui->ModelList->count(); Row++)
{
QListWidgetItem* Item = ui->ModelList->item(Row);
if (!Item->isSelected())
continue;
if (ui->ModelList->item(Row - 1)->isSelected())
continue;
ui->ModelList->takeItem(Row);
ui->ModelList->insertItem(Row - 1, Item);
Item->setSelected(true);
}
ui->ModelList->blockSignals(Blocked);
UpdateButtons();
}
void lcModelListDialog::MoveDownClicked()
{
bool Blocked = ui->ModelList->blockSignals(true);
for (int Row = ui->ModelList->count() - 2; Row >= 0; Row--)
{
QListWidgetItem* Item = ui->ModelList->item(Row);
if (!Item->isSelected())
continue;
if (ui->ModelList->item(Row + 1)->isSelected())
continue;
ui->ModelList->takeItem(Row);
ui->ModelList->insertItem(Row + 1, Item);
Item->setSelected(true);
}
ui->ModelList->blockSignals(Blocked);
UpdateButtons();
}
void lcModelListDialog::ModelListItemDoubleClicked(QListWidgetItem* Item)
{
mActiveModelItem = Item;
-2
View File
@@ -32,8 +32,6 @@ private slots:
void RenameModelClicked();
void ExportModelClicked();
void DuplicateModelClicked();
void MoveUpClicked();
void MoveDownClicked();
void ModelListItemDoubleClicked(QListWidgetItem* Item);
void ModelListItemSelectionChanged();
-16
View File
@@ -60,20 +60,6 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="MoveUp">
<property name="text">
<string>Move &amp;Up</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="MoveDown">
<property name="text">
<string>Move &amp;Down</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="SetActiveModel">
<property name="text">
@@ -117,8 +103,6 @@
<tabstop>RenameModel</tabstop>
<tabstop>ExportModel</tabstop>
<tabstop>DuplicateModel</tabstop>
<tabstop>MoveUp</tabstop>
<tabstop>MoveDown</tabstop>
<tabstop>SetActiveModel</tabstop>
</tabstops>
<resources/>