aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ui/qt/column_preferences_frame.cpp51
-rw-r--r--ui/qt/column_preferences_frame.h1
2 files changed, 36 insertions, 16 deletions
diff --git a/ui/qt/column_preferences_frame.cpp b/ui/qt/column_preferences_frame.cpp
index 87627124aa..f2c159ea88 100644
--- a/ui/qt/column_preferences_frame.cpp
+++ b/ui/qt/column_preferences_frame.cpp
@@ -51,7 +51,8 @@ ColumnPreferencesFrame::ColumnPreferencesFrame(QWidget *parent) :
QFrame(parent),
ui(new Ui::ColumnPreferencesFrame),
cur_line_edit_(NULL),
- cur_combo_box_(NULL)
+ cur_combo_box_(NULL),
+ saved_custom_combo_idx_(-1)
{
ui->setupUi(this);
@@ -219,20 +220,32 @@ void ColumnPreferencesFrame::updateWidgets()
void ColumnPreferencesFrame::on_columnTreeWidget_currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *previous)
{
- if (previous && ui->columnTreeWidget->itemWidget(previous, title_col_)) {
- ui->columnTreeWidget->removeItemWidget(previous, title_col_);
- }
- if (previous && ui->columnTreeWidget->itemWidget(previous, type_col_)) {
- ui->columnTreeWidget->removeItemWidget(previous, type_col_);
- previous->setText(type_col_, col_format_desc(previous->data(type_col_, Qt::UserRole).toInt()));
- }
- if (previous && ui->columnTreeWidget->itemWidget(previous, custom_fields_col_)) {
- ui->columnTreeWidget->removeItemWidget(previous, custom_fields_col_);
- }
- if (previous && ui->columnTreeWidget->itemWidget(previous, custom_occurrence_col_)) {
- ui->columnTreeWidget->removeItemWidget(previous, custom_occurrence_col_);
- }
+ if (previous) {
+ if (ui->columnTreeWidget->itemWidget(previous, title_col_)) {
+ ui->columnTreeWidget->removeItemWidget(previous, title_col_);
+ }
+ if (ui->columnTreeWidget->itemWidget(previous, type_col_)) {
+ ui->columnTreeWidget->removeItemWidget(previous, type_col_);
+ previous->setText(type_col_, col_format_desc(previous->data(type_col_, Qt::UserRole).toInt()));
+ }
+ if (ui->columnTreeWidget->itemWidget(previous, custom_fields_col_)) {
+ ui->columnTreeWidget->removeItemWidget(previous, custom_fields_col_);
+ }
+ if (ui->columnTreeWidget->itemWidget(previous, custom_occurrence_col_)) {
+ ui->columnTreeWidget->removeItemWidget(previous, custom_occurrence_col_);
+ }
+ // If the custom column auto-changed the Column type, change it back if
+ // there isn't any text in the field columns
+ if ((previous->text(custom_fields_col_) == "") &&
+ (previous->text(custom_occurrence_col_) == "") &&
+ (saved_custom_combo_idx_ >= 0))
+ {
+ previous->setText(type_col_, col_format_desc(saved_custom_combo_idx_));
+ previous->setData(type_col_, Qt::UserRole, QVariant(saved_custom_combo_idx_));
+ saved_custom_combo_idx_ = -1;
+ }
+ }
updateWidgets();
}
@@ -276,7 +289,10 @@ void ColumnPreferencesFrame::on_columnTreeWidget_itemActivated(QTreeWidgetItem *
connect(syntax_edit, SIGNAL(editingFinished()), this, SLOT(customFieldsEditingFinished()));
editor = cur_line_edit_ = syntax_edit;
- saved_combo_idx_ = item->data(type_col_, Qt::UserRole).toInt();
+ //Save off the current column type in case it needs to be restored
+ if ((item->text(custom_fields_col_) == "") && (item->text(custom_occurrence_col_) == "")) {
+ saved_custom_combo_idx_ = item->data(type_col_, Qt::UserRole).toInt();
+ }
item->setText(type_col_, col_format_desc(COL_CUSTOM));
item->setData(type_col_, Qt::UserRole, QVariant(COL_CUSTOM));
break;
@@ -290,7 +306,10 @@ void ColumnPreferencesFrame::on_columnTreeWidget_itemActivated(QTreeWidgetItem *
connect(syntax_edit, SIGNAL(editingFinished()), this, SLOT(customOccurrenceEditingFinished()));
editor = cur_line_edit_ = syntax_edit;
- saved_combo_idx_ = item->data(type_col_, Qt::UserRole).toInt();
+ //Save off the current column type in case it needs to be restored
+ if ((item->text(custom_fields_col_) == "") && (item->text(custom_occurrence_col_) == "")) {
+ saved_custom_combo_idx_ = item->data(type_col_, Qt::UserRole).toInt();
+ }
item->setText(type_col_, col_format_desc(COL_CUSTOM));
item->setData(type_col_, Qt::UserRole, QVariant(COL_CUSTOM));
break;
diff --git a/ui/qt/column_preferences_frame.h b/ui/qt/column_preferences_frame.h
index 0a7ae664b6..0fcefc2a4a 100644
--- a/ui/qt/column_preferences_frame.h
+++ b/ui/qt/column_preferences_frame.h
@@ -53,6 +53,7 @@ private:
QString saved_col_string_;
QComboBox *cur_combo_box_;
int saved_combo_idx_;
+ int saved_custom_combo_idx_;
void addColumn(bool visible, const char *title, int fmt, const char *custom_fields, int custom_occurrence);