summaryrefslogtreecommitdiff
path: root/ui/qt/filter_expression_frame.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ui/qt/filter_expression_frame.cpp')
-rw-r--r--ui/qt/filter_expression_frame.cpp67
1 files changed, 60 insertions, 7 deletions
diff --git a/ui/qt/filter_expression_frame.cpp b/ui/qt/filter_expression_frame.cpp
index 72e2ecf282..e1c22a6eb0 100644
--- a/ui/qt/filter_expression_frame.cpp
+++ b/ui/qt/filter_expression_frame.cpp
@@ -26,6 +26,8 @@
#include <epan/uat-int.h>
#include <ui/preference_utils.h>
+#include <ui/qt/uat_model.h>
+
#include <QPushButton>
// To do:
@@ -42,6 +44,8 @@ FilterExpressionFrame::FilterExpressionFrame(QWidget *parent) :
w->setAttribute(Qt::WA_MacSmallSize, true);
}
#endif
+
+ editExpression_ = -1;
}
FilterExpressionFrame::~FilterExpressionFrame()
@@ -56,9 +60,36 @@ void FilterExpressionFrame::addExpression(const QString filter_text)
return;
}
+ editExpression_ = -1;
ui->displayFilterLineEdit->setText(filter_text);
}
+void FilterExpressionFrame::editExpression(int exprIdx)
+{
+ if (isVisible())
+ {
+ ui->labelLineEdit->clear();
+ ui->displayFilterLineEdit->clear();
+ ui->commentLineEdit->clear();
+ editExpression_ = -1;
+ }
+
+ UatModel * uatModel = new UatModel(this, "Display expressions");
+ if ( ! uatModel->index(exprIdx, 1).isValid() )
+ return;
+
+ editExpression_ = exprIdx;
+
+ ui->labelLineEdit->setText(uatModel->data(uatModel->index(exprIdx, 1), Qt::DisplayRole).toString());
+ ui->displayFilterLineEdit->setText(uatModel->data(uatModel->index(exprIdx, 2), Qt::DisplayRole).toString());
+ ui->commentLineEdit->setText(uatModel->data(uatModel->index(exprIdx, 3), Qt::DisplayRole).toString());
+
+ delete(uatModel);
+
+ if (! isVisible())
+ animatedShow();
+}
+
void FilterExpressionFrame::showEvent(QShowEvent *event)
{
ui->labelLineEdit->setFocus();
@@ -69,11 +100,10 @@ void FilterExpressionFrame::showEvent(QShowEvent *event)
void FilterExpressionFrame::updateWidgets()
{
- bool ok_enable = false;
+ bool ok_enable = true;
- if (!ui->labelLineEdit->text().isEmpty()) {
- ok_enable = true;
- }
+ if (ui->labelLineEdit->text().isEmpty() || ui->displayFilterLineEdit->text().isEmpty())
+ ok_enable = false;
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(ok_enable);
}
@@ -89,6 +119,11 @@ void FilterExpressionFrame::on_labelLineEdit_textChanged(const QString)
updateWidgets();
}
+void FilterExpressionFrame::on_displayFilterLineEdit_textChanged(const QString)
+{
+ updateWidgets();
+}
+
void FilterExpressionFrame::on_buttonBox_accepted()
{
gchar* err = NULL;
@@ -96,15 +131,31 @@ void FilterExpressionFrame::on_buttonBox_accepted()
QByteArray expr_ba = ui->displayFilterLineEdit->text().toUtf8();
QByteArray comment_ba = ui->commentLineEdit->text().toUtf8();
- if ( ui->labelLineEdit->text().length() == 0 )
+ if ( ui->labelLineEdit->text().length() == 0 || ui->displayFilterLineEdit->text().length() == 0 )
+ return;
+
+ if ( ! ui->displayFilterLineEdit->checkFilter() )
return;
- filter_expression_new(label_ba.constData(), expr_ba.constData(), comment_ba.constData(), TRUE);
+ if ( editExpression_ >= 0 )
+ {
+ UatModel * uatModel = new UatModel(this, "Display expressions");
+ if ( ! uatModel->index(editExpression_, 1).isValid() )
+ return;
+
+ uatModel->setData(uatModel->index(editExpression_, 1), QVariant::fromValue(label_ba));
+ uatModel->setData(uatModel->index(editExpression_, 2), QVariant::fromValue(expr_ba));
+ uatModel->setData(uatModel->index(editExpression_, 3), QVariant::fromValue(comment_ba));
+ }
+ else
+ {
+ filter_expression_new(label_ba.constData(), expr_ba.constData(), comment_ba.constData(), TRUE);
+ }
+ uat_save(uat_get_table_by_name("Display expressions"), &err);
on_buttonBox_rejected();
emit filterExpressionsChanged();
- uat_save(uat_get_table_by_name("Display expressions"), &err);
g_free(err);
}
@@ -112,6 +163,8 @@ void FilterExpressionFrame::on_buttonBox_rejected()
{
ui->labelLineEdit->clear();
ui->displayFilterLineEdit->clear();
+ ui->commentLineEdit->clear();
+ editExpression_ = -1;
animatedHide();
}