void ColumnPreferencesFrame::unstash() { GList *new_col_list = NULL; bool changed = false; QTreeWidgetItemIterator it(ui->columnTreeWidget); while (*it) { fmt_data *cfmt = g_new0(fmt_data, 1); cfmt->title = qstring_strdup((*it)->text(title_col_)); cfmt->fmt = (*it)->data(type_col_, Qt::UserRole).value<int>(); cfmt->visible = (*it)->checkState(visible_col_) == Qt::Checked ? TRUE : FALSE; cfmt->resolved = TRUE; if (cfmt->fmt == COL_CUSTOM) { bool ok; int occurrence = (*it)->text(custom_occurrence_col_).toInt(&ok); cfmt->custom_field = qstring_strdup((*it)->text(custom_field_col_)); cfmt->custom_occurrence = ok ? occurrence : 0; } if (prefs.col_list == NULL) { changed = true; } else { fmt_data *old_cfmt = (fmt_data *) prefs.col_list->data; if (!old_cfmt || g_strcmp0(old_cfmt->title, cfmt->title) != 0 || old_cfmt->fmt != cfmt->fmt || old_cfmt->visible != cfmt->visible || (old_cfmt->fmt == COL_CUSTOM && ( g_strcmp0(old_cfmt->custom_field, cfmt->custom_field) != 0 || old_cfmt->custom_occurrence != cfmt->custom_occurrence))) { changed = true; } column_prefs_remove_link(prefs.col_list); } new_col_list = g_list_append(new_col_list, cfmt); ++it; } while (prefs.col_list) { changed = true; column_prefs_remove_link(prefs.col_list); } prefs.col_list = new_col_list; if (changed) { wsApp->emitAppSignal(WiresharkApplication::ColumnsChanged); } }
void column_prefs_remove_nth(gint col) { column_prefs_remove_link(g_list_nth(prefs.col_list, col)); }