summaryrefslogtreecommitdiffstats
path: root/listeditor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'listeditor.cpp')
-rw-r--r--listeditor.cpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/listeditor.cpp b/listeditor.cpp
new file mode 100644
index 0000000..d3d2caf
--- /dev/null
+++ b/listeditor.cpp
@@ -0,0 +1,67 @@
+/*
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version
+ 2 of the License, or (at your option) any later version.
+*/
+
+#include <QComboBox>
+#include <QLineEdit>
+#include <QPushButton>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+
+#include "listeditor.h"
+#include "listmodel.h"
+
+ListEditor::ListEditor(ListModel *model, QWidget *parent) : QWidget(parent), mModel(model){
+ mItems = new QComboBox;
+ mItems->setModel(mModel);
+
+ mEdit = new QLineEdit;
+
+ mAdd = new QPushButton(tr("Add"));
+ connect(mAdd, SIGNAL(clicked()), this, SLOT(addItem()));
+ mRemove = new QPushButton(tr("Remove"));
+ connect(mRemove, SIGNAL(clicked()), this, SLOT(removeItem()));
+ mRename = new QPushButton(tr("Rename"));
+ connect(mRename, SIGNAL(clicked()), this, SLOT(renameItem()));
+
+ QHBoxLayout *buttonLayout = new QHBoxLayout;
+ buttonLayout->addWidget(mAdd);
+ buttonLayout->addWidget(mRemove);
+
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ mainLayout->addWidget(mItems);
+ mainLayout->addWidget(mEdit);
+ mainLayout->addLayout(buttonLayout);
+
+ connect(mItems, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(itemChanged(const QString &)));
+
+ setLayout(mainLayout);
+}
+
+void ListEditor::addItem(){
+ if(mEdit->text().isEmpty()){
+ return;
+ }
+ QString newItem = mEdit->text().toLower();
+ mModel->addItem(newItem);
+}
+
+void ListEditor::removeItem(){
+ mModel->removeItem(mItems->currentText());
+}
+
+void ListEditor::renameItem(){
+ QString oldName = mItems->currentText();
+ QString newName = mEdit->text();
+ if(!newName.isEmpty()){
+ mModel->renameItem(oldName, newName);
+ }
+}
+
+void ListEditor::itemChanged(const QString &name){
+ mEdit->setText(name);
+}
+