cf12defd28
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
198 lines
6.2 KiB
C++
198 lines
6.2 KiB
C++
#include "kcompletionuitest.h"
|
|
|
|
#include <QApplication>
|
|
#include <QGroupBox>
|
|
#include <QLabel>
|
|
#include <QLayout>
|
|
#include <QListWidget>
|
|
#include <QPushButton>
|
|
|
|
#include <khistorycombobox.h>
|
|
#include <klineedit.h>
|
|
|
|
Form1::Form1(QWidget *parent)
|
|
: QWidget(parent)
|
|
{
|
|
setAttribute(Qt::WA_DeleteOnClose);
|
|
resize(559, 465);
|
|
setWindowTitle(QStringLiteral("Form1"));
|
|
Form1Layout = new QVBoxLayout(this);
|
|
|
|
GroupBox1 = new QGroupBox(this);
|
|
GroupBox1->setLayout(new QVBoxLayout());
|
|
GroupBox1->setTitle(QStringLiteral("Completion Test"));
|
|
GroupBox1->layout()->setSpacing(0);
|
|
GroupBox1->layout()->setContentsMargins(0, 0, 0, 0);
|
|
GroupBox1Layout = new QVBoxLayout;
|
|
GroupBox1Layout->setAlignment(Qt::AlignTop);
|
|
GroupBox1->layout()->addItem(GroupBox1Layout);
|
|
GroupBox1Layout->setParent(GroupBox1->layout());
|
|
|
|
Layout9 = new QVBoxLayout;
|
|
Layout9->setSpacing(6);
|
|
Layout9->setContentsMargins(0, 0, 0, 0);
|
|
|
|
Layout1 = new QHBoxLayout;
|
|
Layout1->setSpacing(6);
|
|
Layout1->setContentsMargins(0, 0, 0, 0);
|
|
|
|
TextLabel1 = new QLabel(GroupBox1);
|
|
TextLabel1->setObjectName(QStringLiteral("TextLabel1"));
|
|
TextLabel1->setText(QStringLiteral("Completion"));
|
|
Layout1->addWidget(TextLabel1);
|
|
|
|
edit = new KLineEdit(GroupBox1);
|
|
edit->setObjectName(QStringLiteral("edit"));
|
|
Layout1->addWidget(edit);
|
|
Layout9->addLayout(Layout1);
|
|
edit->completionObject()->setItems(defaultItems());
|
|
edit->completionObject()->setIgnoreCase(true);
|
|
edit->setFocus();
|
|
edit->setToolTip(QStringLiteral("right-click to change completion mode"));
|
|
|
|
Layout2 = new QHBoxLayout;
|
|
Layout2->setSpacing(6);
|
|
Layout2->setContentsMargins(0, 0, 0, 0);
|
|
|
|
combo = new KHistoryComboBox(GroupBox1);
|
|
combo->setObjectName(QStringLiteral("history combo"));
|
|
combo->setCompletionObject(edit->completionObject());
|
|
// combo->setMaxCount( 5 );
|
|
combo->setHistoryItems(defaultItems(), true);
|
|
connect(combo, &QComboBox::textActivated, combo, &KHistoryComboBox::addToHistory);
|
|
combo->setToolTip(QStringLiteral("KHistoryComboBox"));
|
|
Layout2->addWidget(combo);
|
|
|
|
LineEdit1 = new KLineEdit(GroupBox1);
|
|
LineEdit1->setObjectName(QStringLiteral("LineEdit1"));
|
|
Layout2->addWidget(LineEdit1);
|
|
|
|
PushButton1 = new QPushButton(GroupBox1);
|
|
PushButton1->setObjectName(QStringLiteral("PushButton1"));
|
|
PushButton1->setText(QStringLiteral("Add"));
|
|
connect(PushButton1, &QAbstractButton::clicked, this, &Form1::slotAdd);
|
|
Layout2->addWidget(PushButton1);
|
|
Layout9->addLayout(Layout2);
|
|
|
|
Layout3 = new QHBoxLayout;
|
|
Layout3->setSpacing(6);
|
|
Layout3->setContentsMargins(0, 0, 0, 0);
|
|
QSpacerItem *spacer = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
|
Layout3->addItem(spacer);
|
|
|
|
PushButton1_4 = new QPushButton(GroupBox1);
|
|
PushButton1_4->setObjectName(QStringLiteral("PushButton1_4"));
|
|
PushButton1_4->setText(QStringLiteral("Remove"));
|
|
connect(PushButton1_4, &QAbstractButton::clicked, this, &Form1::slotRemove);
|
|
Layout3->addWidget(PushButton1_4);
|
|
Layout9->addLayout(Layout3);
|
|
|
|
Layout8 = new QHBoxLayout;
|
|
Layout8->setSpacing(6);
|
|
Layout8->setContentsMargins(0, 0, 0, 0);
|
|
|
|
ListBox1 = new QListWidget(GroupBox1);
|
|
Layout8->addWidget(ListBox1);
|
|
connect(ListBox1, &QListWidget::currentRowChanged, this, &Form1::slotHighlighted);
|
|
ListBox1->setToolTip(QStringLiteral("Contains the contents of the completion object.\n:x is the weighting, i.e. how often an item has been inserted"));
|
|
|
|
Layout7 = new QVBoxLayout;
|
|
Layout7->setSpacing(6);
|
|
Layout7->setContentsMargins(0, 0, 0, 0);
|
|
|
|
PushButton1_3 = new QPushButton(GroupBox1);
|
|
PushButton1_3->setObjectName(QStringLiteral("PushButton1_3"));
|
|
PushButton1_3->setText(QStringLiteral("Completion items"));
|
|
connect(PushButton1_3, &QAbstractButton::clicked, this, &Form1::slotList);
|
|
Layout7->addWidget(PushButton1_3);
|
|
|
|
PushButton1_2 = new QPushButton(GroupBox1);
|
|
PushButton1_2->setObjectName(QStringLiteral("PushButton1_2"));
|
|
PushButton1_2->setText(QStringLiteral("Clear"));
|
|
connect(PushButton1_2, &QAbstractButton::clicked, edit->completionObject(), &KCompletion::clear);
|
|
Layout7->addWidget(PushButton1_2);
|
|
Layout8->addLayout(Layout7);
|
|
Layout9->addLayout(Layout8);
|
|
GroupBox1Layout->addLayout(Layout9);
|
|
Form1Layout->addWidget(GroupBox1);
|
|
|
|
slotList();
|
|
}
|
|
|
|
/*
|
|
* Destroys the object and frees any allocated resources
|
|
*/
|
|
Form1::~Form1()
|
|
{
|
|
// no need to delete child widgets, Qt does it all for us
|
|
}
|
|
|
|
void Form1::slotAdd()
|
|
{
|
|
qDebug("** adding: %s", LineEdit1->text().toLatin1().constData());
|
|
edit->completionObject()->addItem(LineEdit1->text());
|
|
|
|
QStringList matches = edit->completionObject()->allMatches(QStringLiteral("S"));
|
|
QStringList::ConstIterator it = matches.constBegin();
|
|
for (; it != matches.constEnd(); ++it) {
|
|
qDebug("-- %s", (*it).toLatin1().constData());
|
|
}
|
|
}
|
|
|
|
void Form1::slotRemove()
|
|
{
|
|
edit->completionObject()->removeItem(LineEdit1->text());
|
|
}
|
|
|
|
void Form1::slotList()
|
|
{
|
|
ListBox1->clear();
|
|
QStringList items = edit->completionObject()->items();
|
|
ListBox1->addItems(items);
|
|
}
|
|
|
|
void Form1::slotHighlighted(int row)
|
|
{
|
|
if (row == -1) {
|
|
return;
|
|
}
|
|
|
|
QListWidgetItem *i = ListBox1->item(row);
|
|
Q_ASSERT(i != nullptr);
|
|
|
|
QString text = i->text();
|
|
|
|
// remove any "weighting"
|
|
int index = text.lastIndexOf(QLatin1Char(':'));
|
|
if (index > 0) {
|
|
LineEdit1->setText(text.left(index));
|
|
} else {
|
|
LineEdit1->setText(text);
|
|
}
|
|
}
|
|
|
|
QStringList Form1::defaultItems() const
|
|
{
|
|
// clang-format off
|
|
QStringList items;
|
|
items << QStringLiteral("Super") << QStringLiteral("Sushi") << QStringLiteral("Samson") << QStringLiteral("Sucks") << QStringLiteral("Sumo") << QStringLiteral("Schumi");
|
|
items << QStringLiteral("Slashdot") << QStringLiteral("sUpEr") << QStringLiteral("SUshi") << QStringLiteral("sUshi") << QStringLiteral("sUShi");
|
|
items << QStringLiteral("sushI") << QStringLiteral("SushI");
|
|
// clang-format on
|
|
return items;
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
QApplication::setApplicationName(QStringLiteral("kcompletiontest"));
|
|
|
|
QApplication app(argc, argv);
|
|
|
|
Form1 *form = new Form1();
|
|
form->show();
|
|
|
|
return app.exec();
|
|
}
|
|
|
|
#include "moc_kcompletionuitest.cpp"
|