# HG changeset patch
# User Chris Cannam
# Date 1526379487 -3600
# Node ID e327bbf4bf574d648255866f2476282f83366de1
# Parent abd52bd8d435c755124723f5e96c0ec21099eb83
Up/down
diff -r abd52bd8d435 -r e327bbf4bf57 widgets/PluginPathConfigurator.cpp
--- a/widgets/PluginPathConfigurator.cpp Fri May 11 16:59:14 2018 +0100
+++ b/widgets/PluginPathConfigurator.cpp Tue May 15 11:18:07 2018 +0100
@@ -21,12 +21,12 @@
#include "WidgetScale.h"
PluginPathConfigurator::PluginPathConfigurator(QWidget *parent) :
- QFrame(parent)
+ QFrame(parent),
+ m_innerFrame(0)
{
setFrameStyle(StyledPanel | Sunken);
m_layout = new QGridLayout;
setLayout(m_layout);
- populate();
}
PluginPathConfigurator::~PluginPathConfigurator()
@@ -44,9 +44,16 @@
void
PluginPathConfigurator::populate()
{
- QLabel *header = new QLabel;
+ delete m_innerFrame;
+ m_innerFrame = new QWidget;
+ m_layout->addWidget(m_innerFrame, 0, 0);
+
+ QGridLayout *innerLayout = new QGridLayout;
+ m_innerFrame->setLayout(innerLayout);
+
+ QLabel *header = new QLabel(m_innerFrame);
header->setText(QString("%1").arg(tr("Location")));
- m_layout->addWidget(header, 0, 3);
+ innerLayout->addWidget(header, 0, 3);
for (int i = 0; i < m_path.size(); ++i) {
@@ -55,52 +62,103 @@
QString dir = m_path[i];
if (i > 0) {
- QPushButton *up = new QPushButton;
+ QPushButton *up = new QPushButton(m_innerFrame);
+ up->setObjectName(QString("%1").arg(i));
up->setIcon(IconLoader().load("up"));
up->setFixedSize(WidgetScale::scaleQSize(QSize(16, 16)));
connect(up, SIGNAL(clicked()), this, SLOT(upClicked()));
- m_layout->addWidget(up, row, col);
+ innerLayout->addWidget(up, row, col);
}
++col;
if (i + 1 < m_path.size()) {
- QPushButton *down = new QPushButton;
+ QPushButton *down = new QPushButton(m_innerFrame);
+ down->setObjectName(QString("%1").arg(i));
down->setIcon(IconLoader().load("down"));
down->setFixedSize(WidgetScale::scaleQSize(QSize(16, 16)));
connect(down, SIGNAL(clicked()), this, SLOT(downClicked()));
- m_layout->addWidget(down, row, col);
+ innerLayout->addWidget(down, row, col);
}
++col;
- QPushButton *del = new QPushButton;
+ QPushButton *del = new QPushButton(m_innerFrame);
+ del->setObjectName(QString("%1").arg(i));
del->setIcon(IconLoader().load("datadelete"));
del->setFixedSize(WidgetScale::scaleQSize(QSize(16, 16)));
connect(del, SIGNAL(clicked()), this, SLOT(deleteClicked()));
- m_layout->addWidget(del, row, col);
+ innerLayout->addWidget(del, row, col);
++col;
- QLabel *dirLabel = new QLabel;
+ QLabel *dirLabel = new QLabel(m_innerFrame);
+ dirLabel->setObjectName(QString("%1").arg(i));
dirLabel->setText(dir);
- m_layout->addWidget(dirLabel, row, col);
- m_layout->setColumnStretch(col, 10);
+ innerLayout->addWidget(dirLabel, row, col);
+ innerLayout->setColumnStretch(col, 10);
++col;
- }
+ }
}
void
PluginPathConfigurator::upClicked()
{
- //!!!
+ bool ok = false;
+ int n = sender()->objectName().toInt(&ok);
+ if (!ok) {
+ SVCERR << "upClicked: unable to find index" << endl;
+ return;
+ }
+ QStringList newPath;
+ for (int i = 0; i < m_path.size(); ++i) {
+ if (i + 1 == n) {
+ newPath.push_back(m_path[i+1]);
+ newPath.push_back(m_path[i]);
+ ++i;
+ } else {
+ newPath.push_back(m_path[i]);
+ }
+ }
+ m_path = newPath;
+ populate();
}
void
PluginPathConfigurator::downClicked()
{
- //!!!!
+ bool ok = false;
+ int n = sender()->objectName().toInt(&ok);
+ if (!ok) {
+ SVCERR << "downClicked: unable to find index" << endl;
+ return;
+ }
+ QStringList newPath;
+ for (int i = 0; i < m_path.size(); ++i) {
+ if (i == n) {
+ newPath.push_back(m_path[i+1]);
+ newPath.push_back(m_path[i]);
+ ++i;
+ } else {
+ newPath.push_back(m_path[i]);
+ }
+ }
+ m_path = newPath;
+ populate();
}
void
PluginPathConfigurator::deleteClicked()
{
- //!!!
+ bool ok = false;
+ int n = sender()->objectName().toInt(&ok);
+ if (!ok) {
+ SVCERR << "deleteClicked: unable to find index" << endl;
+ return;
+ }
+ QStringList newPath;
+ for (int i = 0; i < m_path.size(); ++i) {
+ if (i != n) {
+ newPath.push_back(m_path[i]);
+ }
+ }
+ m_path = newPath;
+ populate();
}
diff -r abd52bd8d435 -r e327bbf4bf57 widgets/PluginPathConfigurator.h
--- a/widgets/PluginPathConfigurator.h Fri May 11 16:59:14 2018 +0100
+++ b/widgets/PluginPathConfigurator.h Tue May 15 11:18:07 2018 +0100
@@ -19,6 +19,9 @@
#include
#include
+class QLabel;
+class QWidget;
+
class PluginPathConfigurator : public QFrame
{
Q_OBJECT
@@ -43,9 +46,11 @@
QStringList m_path;
QString m_var;
+
+ QWidget *m_innerFrame;
+ std::vector m_labels;
void populate();
-
};
#endif