21#include <QDialogButtonBox>
22#include <QStandardItemModel>
25#include "moc_qgsmodeloutputreorderwidget.cpp"
27using namespace Qt::StringLiterals;
31QgsModelOutputReorderWidget::QgsModelOutputReorderWidget( QWidget *parent )
36 mItemModel =
new QStandardItemModel( 0, 1,
this );
37 mOutputsList->setModel( mItemModel );
39 mOutputsList->setDropIndicatorShown(
true );
40 mOutputsList->setDragDropOverwriteMode(
false );
41 mOutputsList->setDragEnabled(
true );
42 mOutputsList->setDragDropMode( QAbstractItemView::InternalMove );
44 connect( mButtonUp, &QPushButton::clicked,
this, [
this] {
45 int currentRow = mOutputsList->currentIndex().row();
46 if ( currentRow == 0 )
49 mItemModel->insertRow( currentRow - 1, mItemModel->takeRow( currentRow ) );
50 mOutputsList->setCurrentIndex( mItemModel->index( currentRow - 1, 0 ) );
53 connect( mButtonDown, &QPushButton::clicked,
this, [
this] {
54 int currentRow = mOutputsList->currentIndex().row();
55 if ( currentRow == mItemModel->rowCount() - 1 )
58 mItemModel->insertRow( currentRow + 1, mItemModel->takeRow( currentRow ) );
59 mOutputsList->setCurrentIndex( mItemModel->index( currentRow + 1, 0 ) );
63void QgsModelOutputReorderWidget::setModel( QgsProcessingModelAlgorithm *model )
66 mOutputs = mModel->orderedOutputs();
68 for (
const QgsProcessingModelOutput &output : std::as_const( mOutputs ) )
70 QStandardItem *item =
new QStandardItem( output.name() );
71 item->setData( u
"%1:%2"_s.arg( output.childId(), output.childOutputName() ), Qt::UserRole + 1 );
72 item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled );
74 mItemModel->insertRow( 0, item );
77 mPlaceInGroupCheck->setChecked( !model->outputGroup().isEmpty() );
78 mGroupNameEdit->setText( model->outputGroup() );
81QStringList QgsModelOutputReorderWidget::outputOrder()
const
84 order.reserve( mItemModel->rowCount() );
86 for (
int row = mItemModel->rowCount() - 1; row >= 0; --row )
88 order << mItemModel->data( mItemModel->index( row, 0 ), Qt::UserRole + 1 ).toString();
93QString QgsModelOutputReorderWidget::outputGroup()
const
95 return mPlaceInGroupCheck->isChecked() ? mGroupNameEdit->text() : QString();
99QgsModelOutputReorderDialog::QgsModelOutputReorderDialog( QWidget *parent )
102 setWindowTitle( tr(
"Reorder Output Layers" ) );
103 mWidget =
new QgsModelOutputReorderWidget();
104 QVBoxLayout *vl =
new QVBoxLayout();
105 vl->addWidget( mWidget, 1 );
106 QDialogButtonBox *buttonBox =
new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
107 connect( buttonBox, &QDialogButtonBox::accepted,
this, &QDialog::accept );
108 connect( buttonBox, &QDialogButtonBox::rejected,
this, &QDialog::reject );
109 vl->addWidget( buttonBox );
113void QgsModelOutputReorderDialog::setModel( QgsProcessingModelAlgorithm *model )
115 mWidget->setModel( model );
118QStringList QgsModelOutputReorderDialog::outputOrder()
const
120 return mWidget->outputOrder();
123QString QgsModelOutputReorderDialog::outputGroup()
const
125 return mWidget->outputGroup();