small changes

This commit is contained in:
2023-01-09 15:42:12 +03:00
parent 08f253eb09
commit 10d63e05fe
6 changed files with 114 additions and 3 deletions

View File

@@ -21,6 +21,7 @@ REGISTER_PIVARIANTEDITOR(uint, PIVariantEditors::Int);
REGISTER_PIVARIANTEDITOR(float, PIVariantEditors::Double);
REGISTER_PIVARIANTEDITOR(double, PIVariantEditors::Double);
REGISTER_PIVARIANTEDITOR(PIString, PIVariantEditors::String);
REGISTER_PIVARIANTEDITOR(PIStringList, PIVariantEditors::StringList);
REGISTER_PIVARIANTEDITOR(PITime, PIVariantEditors::Time);
REGISTER_PIVARIANTEDITOR(PIDate, PIVariantEditors::Date);
REGISTER_PIVARIANTEDITOR(PIDateTime, PIVariantEditors::DateTime);
@@ -275,6 +276,92 @@ void PIVariantEditors::String::applyAttributes(const PIVariantMap & a) {
}
// PIVariantEditors::StringList
PIVariantEditors::StringList::StringList() {
combo = new EComboBox(this);
combo->setEditable(true);
combo->setLineEdit(new CLineEdit);
combo->setInsertPolicy(QComboBox::NoInsert);
layout()->setContentsMargins(0, 0, 0, 0);
layout()->addWidget(combo);
auto newButton = [this](QString icon, QString tooltip) {
auto * b = new QToolButton(this);
b->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
b->setIcon(QIcon(icon));
b->setToolTip(tooltip);
layout()->addWidget(b);
return b;
};
butt_apply = newButton(":/icons/list-edit-apply.png", tr("Apply"));
butt_add = newButton(":/icons/list-add.png", tr("Add"));
butt_del = newButton(":/icons/list-remove.png", tr("Remove"));
butt_clear = newButton(":/icons/edit-clear.png", tr("Clear"));
connect(combo->lineEdit(), SIGNAL(returnPressed()), butt_apply, SLOT(click()));
connect(butt_apply, &QToolButton::clicked, [this]() {
int ci = combo->currentIndex();
if (ci < 0) return;
combo->setItemText(ci, combo->currentText());
});
connect(butt_add, &QToolButton::clicked, [this]() { combo->addItem(combo->currentText()); });
connect(butt_del, &QToolButton::clicked, [this]() {
if (combo->currentIndex() < 0) return;
combo->removeItem(combo->currentIndex());
});
connect(butt_clear, &QToolButton::clicked, [this]() {
if (QMessageBox::question(nullptr, tr("Clear All"), tr("Clear All?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
setValue(PIStringList());
});
}
void PIVariantEditors::StringList::setValue(const PIVariant & v) {
int pi = combo->currentIndex();
combo->clear();
combo->addItems(PI2QStringList(v.toStringList()));
if (combo->count() > 0) {
if (pi < combo->count() && pi >= 0) {
combo->setCurrentIndex(pi);
} else {
combo->setCurrentIndex(0);
}
}
}
PIVariant PIVariantEditors::StringList::value() const {
QStringList l;
for (int i = 0; i < combo->count(); ++i)
l << combo->itemText(i);
return Q2PIStringList(l);
}
PIVariantMap PIVariantEditors::StringList::attributes() const {
return {
{Attribute::readOnly, !combo->isEditable()},
};
}
void PIVariantEditors::StringList::applyAttributes(const PIVariantMap & a) {
bool ro = a.value(Attribute::readOnly, !combo->isEditable()).toBool();
combo->setEditable(!ro);
butt_apply->setEnabled(!ro);
butt_add->setEnabled(!ro);
butt_del->setEnabled(!ro);
butt_clear->setEnabled(!ro);
}
void PIVariantEditors::StringList::retranslate() {
butt_apply->setToolTip(tr("Apply"));
butt_add->setToolTip(tr("Add"));
butt_del->setToolTip(tr("Remove"));
butt_clear->setToolTip(tr("Clear"));
}
// PIVariantEditors::Color
PIVariantMap PIVariantEditors::Color::attributes() const {