aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStig Bjørlykke <stig@bjorlykke.org>2015-11-22 15:25:27 +0100
committerAnders Broman <a.broman58@gmail.com>2015-11-23 05:45:34 +0000
commit35e5523dd2d90b6a964961b2eaea1457495b4a78 (patch)
tree7efe62cd9efd566e7089839ea62f829cc5111c7a
parentc5fb402222be88e95e26793ffca9aa1c15c70732 (diff)
Qt: Improved profiles popup menu
* Don’t add a global profile if having a personal copy. * Fetch profiles from _current_ profiles list. * Separate personal and global profiles. * Use bold and checked for the the current profile. * Fixed selection of the current profile in the manage profiles dialog. * Aligned GTK version with Qt version, removed the “New from Global” sub menu. Change-Id: I2326b39f7d04411000b3c014e3775284392c48c7 Ping-Bug: 11704 Reviewed-on: https://code.wireshark.org/review/12034 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--ui/gtk/profile_dlg.c31
-rw-r--r--ui/qt/main_status_bar.cpp22
-rw-r--r--ui/qt/profile_dialog.cpp8
3 files changed, 31 insertions, 30 deletions
diff --git a/ui/gtk/profile_dlg.c b/ui/gtk/profile_dlg.c
index 7e03ddd8eb..a96658c6de 100644
--- a/ui/gtk/profile_dlg.c
+++ b/ui/gtk/profile_dlg.c
@@ -644,11 +644,11 @@ profile_show_popup_cb(GtkWidget *w _U_, GdkEvent *event, gpointer user_data _U_)
{
GdkEventButton *bevent = (GdkEventButton *)event;
const gchar *profile_name = get_profile_name();
+ gboolean separator_added = FALSE;
GList *fl_entry;
profile_def *profile;
GtkWidget *menu;
GtkWidget *menu_item;
- GtkWidget *sub_menu = NULL;
menu = gtk_menu_new();
@@ -679,7 +679,13 @@ profile_show_popup_cb(GtkWidget *w _U_, GdkEvent *event, gpointer user_data _U_)
while (fl_entry && fl_entry->data) {
profile = (profile_def *)fl_entry->data;
- if (!profile->is_global) {
+ if (!profile->is_global || !profile_exists(profile->name, FALSE)) {
+ if (profile->is_global && !separator_added) {
+ menu_item = gtk_separator_menu_item_new();
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ gtk_widget_show(menu_item);
+ separator_added = TRUE;
+ }
menu_item = gtk_check_menu_item_new_with_label(profile->name);
if (strcmp(profile->name, profile_name)==0) {
/* Check current profile */
@@ -689,27 +695,6 @@ profile_show_popup_cb(GtkWidget *w _U_, GdkEvent *event, gpointer user_data _U_)
g_signal_connect(menu_item, "activate", G_CALLBACK(select_profile_cb), g_strdup(profile->name));
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
gtk_widget_show(menu_item);
- } else {
- if (!sub_menu) {
- menu_item = gtk_separator_menu_item_new();
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
- gtk_widget_show(menu_item);
-
- menu_item = gtk_menu_item_new_with_label("New from Global");
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
- gtk_widget_show(menu_item);
-
- sub_menu = gtk_menu_new();
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), sub_menu);
- }
-
- menu_item = gtk_menu_item_new_with_label(profile->name);
- g_signal_connect(menu_item, "activate", G_CALLBACK(select_profile_cb), g_strdup(profile->name));
- if (profile_exists(profile->name, FALSE)) {
- gtk_widget_set_sensitive(menu_item, FALSE);
- }
- gtk_menu_shell_append(GTK_MENU_SHELL(sub_menu), menu_item);
- gtk_widget_show(menu_item);
}
fl_entry = g_list_next(fl_entry);
}
diff --git a/ui/qt/main_status_bar.cpp b/ui/qt/main_status_bar.cpp
index da12e71905..b3baa09710 100644
--- a/ui/qt/main_status_bar.cpp
+++ b/ui/qt/main_status_bar.cpp
@@ -468,18 +468,34 @@ void MainStatusBar::updateCaptureFixedStatistics(capture_session *cap_session)
void MainStatusBar::showProfileMenu(const QPoint &global_pos, Qt::MouseButton button)
{
+ const gchar *profile_name = get_profile_name();
+ bool separator_added = false;
GList *fl_entry;
profile_def *profile;
QAction *pa;
init_profile_list();
- fl_entry = edited_profile_list();
+ fl_entry = current_profile_list();
profile_menu_.clear();
while (fl_entry && fl_entry->data) {
profile = (profile_def *) fl_entry->data;
- pa = profile_menu_.addAction(profile->name);
- connect(pa, SIGNAL(triggered()), this, SLOT(switchToProfile()));
+ if (!profile->is_global || !profile_exists(profile->name, false)) {
+ if (profile->is_global && !separator_added) {
+ profile_menu_.addSeparator();
+ separator_added = true;
+ }
+ pa = profile_menu_.addAction(profile->name);
+ if (strcmp(profile->name, profile_name) == 0) {
+ /* Bold current profile */
+ QFont pa_font = pa->font();
+ pa_font.setBold(true);
+ pa->setFont(pa_font);
+ pa->setCheckable(true);
+ pa->setChecked(true);
+ }
+ connect(pa, SIGNAL(triggered()), this, SLOT(switchToProfile()));
+ }
fl_entry = g_list_next(fl_entry);
}
diff --git a/ui/qt/profile_dialog.cpp b/ui/qt/profile_dialog.cpp
index 13715fc371..3a33d5fbb5 100644
--- a/ui/qt/profile_dialog.cpp
+++ b/ui/qt/profile_dialog.cpp
@@ -81,19 +81,19 @@ ProfileDialog::ProfileDialog(QWidget *parent) :
ti_font.setItalic(true);
item->setFont(0, ti_font);
} else {
- if (profile->name && strcmp(profile_name, profile->name) == 0) {
- pd_ui_->profileTreeWidget->setCurrentItem(item);
- }
item->setFlags(item->flags() | Qt::ItemIsEditable);
}
+ if (!profile->is_global && strcmp(profile_name, profile->name) == 0) {
+ pd_ui_->profileTreeWidget->setCurrentItem(item);
+ }
+
fl_entry = g_list_next(fl_entry);
}
pd_ui_->profileTreeWidget->blockSignals(false);
connect(pd_ui_->profileTreeWidget->itemDelegate(), SIGNAL(closeEditor(QWidget*, QAbstractItemDelegate::EndEditHint)),
this, SLOT(editingFinished()));
- pd_ui_->profileTreeWidget->setCurrentItem(pd_ui_->profileTreeWidget->topLevelItem(0));
updateWidgets();
}