1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
/*
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().trimmed();
QModelIndex idx = mModel->index(newItem);
if(idx == QModelIndex()){
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);
}
|