diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-10-08 14:48:37 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-10-08 14:48:37 +0000 |
commit | 2666ffa57e07af60aea441257d1bb0f78368e231 (patch) | |
tree | 3b1c0a65f5c3ca82095d5a44b44e03f6772c143f | |
parent | 7383e38379586e4d2f85a8f2906b14e19501860b (diff) |
add profiles to menu. disable downloading metadata stuff until I find a better way to detect/handle magnet torrents.
-rw-r--r-- | src/torrent.c | 16 | ||||
-rw-r--r-- | src/trg-main-window.c | 11 | ||||
-rw-r--r-- | src/trg-menu-bar.c | 62 | ||||
-rw-r--r-- | src/trg-menu-bar.h | 2 | ||||
-rw-r--r-- | src/trg-torrent-tree-view.c | 1 |
5 files changed, 63 insertions, 29 deletions
diff --git a/src/torrent.c b/src/torrent.c index 33e7a41..4510f64 100644 --- a/src/torrent.c +++ b/src/torrent.c @@ -226,8 +226,8 @@ guint32 torrent_get_flags(JsonObject * t, gint64 rpcv, gint64 status, gint64 dow if (!(flags & TORRENT_FLAG_COMPLETE)) flags |= TORRENT_FLAG_DOWNLOADING; - if (torrent_get_metadata_percent_complete(t) < 100) - flags |= TORRENT_FLAG_DOWNLOADING_METADATA; + //if (torrent_get_metadata_percent_complete(t) < 100) + // flags |= TORRENT_FLAG_DOWNLOADING_METADATA; flags |= TORRENT_FLAG_ACTIVE; break; @@ -273,8 +273,8 @@ gchar *torrent_get_status_icon(gint64 rpcv, guint flags) { if (flags & TORRENT_FLAG_ERROR) return g_strdup(GTK_STOCK_DIALOG_WARNING); - else if (flags & TORRENT_FLAG_DOWNLOADING_METADATA) - return g_strdup(GTK_STOCK_FIND); + //else if (flags & TORRENT_FLAG_DOWNLOADING_METADATA) + // return g_strdup(GTK_STOCK_FIND); else if (flags & TORRENT_FLAG_DOWNLOADING) return g_strdup(GTK_STOCK_GO_DOWN); else if (flags & TORRENT_FLAG_PAUSED) @@ -303,9 +303,9 @@ gchar *torrent_get_status_string(gint64 rpcv, gint64 value, guint flags) { switch (value) { case TR_STATUS_DOWNLOAD: - if (flags & TORRENT_FLAG_DOWNLOADING_METADATA) + /*if (flags & TORRENT_FLAG_DOWNLOADING_METADATA) return g_strdup(_("Metadata Downloading")); - else + else*/ return g_strdup(_("Downloading")); case TR_STATUS_DOWNLOAD_WAIT: return g_strdup(_("Queued download")); @@ -325,9 +325,9 @@ gchar *torrent_get_status_string(gint64 rpcv, gint64 value, guint flags) { switch (value) { case OLD_STATUS_DOWNLOADING: - if (flags & TORRENT_FLAG_DOWNLOADING_METADATA) + /*if (flags & TORRENT_FLAG_DOWNLOADING_METADATA) return g_strdup(_("Metadata Downloading")); - else + else*/ return g_strdup(_("Downloading")); case OLD_STATUS_PAUSED: return g_strdup(_("Paused")); diff --git a/src/trg-main-window.c b/src/trg-main-window.c index a031d4b..02c811c 100644 --- a/src/trg-main-window.c +++ b/src/trg-main-window.c @@ -451,10 +451,8 @@ static void disconnect_cb(GtkWidget * w G_GNUC_UNUSED, gpointer data) { void connect_cb(GtkWidget * w, gpointer data) { TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(data); TrgPrefs *prefs = trg_client_get_prefs(priv->client); - JsonObject *profile = NULL; - JsonObject *currentProfile = trg_prefs_get_profile(prefs); - + JsonObject *profile = NULL; GtkWidget *dialog; int populate_result; @@ -1238,7 +1236,7 @@ static void quit_cb(GtkWidget * w G_GNUC_UNUSED, gpointer data) { static TrgMenuBar *trg_main_window_menu_bar_new(TrgMainWindow * win) { TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win); - GObject *b_connect, *b_disconnect, *b_add, *b_resume, *b_pause, *b_verify, + GObject *b_disconnect, *b_add, *b_resume, *b_pause, *b_verify, *b_remove, *b_delete, *b_props, *b_local_prefs, *b_remote_prefs, *b_about, *b_view_states, *b_view_notebook, *b_view_stats, *b_add_url, *b_quit, *b_move, *b_reannounce, *b_pause_all, @@ -1248,8 +1246,8 @@ static TrgMenuBar *trg_main_window_menu_bar_new(TrgMainWindow * win) { TrgMenuBar *menuBar; - menuBar = trg_menu_bar_new(trg_client_get_prefs(priv->client)); - g_object_get(menuBar, "connect-button", &b_connect, "disconnect-button", + menuBar = trg_menu_bar_new(win, trg_client_get_prefs(priv->client)); + g_object_get(menuBar, "disconnect-button", &b_disconnect, "add-button", &b_add, "add-url-button", &b_add_url, "resume-button", &b_resume, "resume-all-button", &b_resume_all, "pause-button", &b_pause, "pause-all-button", &b_pause_all, @@ -1266,7 +1264,6 @@ static TrgMenuBar *trg_main_window_menu_bar_new(TrgMainWindow * win) { &b_top_queue, "bottom-queue", &b_bottom_queue, "start-now", &b_start_now, NULL); - g_signal_connect(b_connect, "activate", G_CALLBACK(connect_cb), win); g_signal_connect(b_disconnect, "activate", G_CALLBACK(disconnect_cb), win); g_signal_connect(b_add, "activate", G_CALLBACK(add_cb), win); diff --git a/src/trg-menu-bar.c b/src/trg-menu-bar.c index db7dff1..d5f8950 100644 --- a/src/trg-menu-bar.c +++ b/src/trg-menu-bar.c @@ -47,6 +47,7 @@ enum { PROP_VIEW_NOTEBOOK_BUTTON, PROP_QUIT, PROP_PREFS, + PROP_MAIN_WINDOW, PROP_DIR_FILTERS, PROP_TRACKER_FILTERS, PROP_VIEW_SHOW_GRAPH, @@ -96,6 +97,7 @@ struct _TrgMenuBarPrivate { GtkWidget *mb_start_now; GtkWidget *mb_queues_seperator; TrgPrefs *prefs; + TrgMainWindow *main_window; }; void trg_menu_bar_set_supports_queues(TrgMenuBar *mb, gboolean supportsQueues) @@ -152,6 +154,9 @@ static void trg_menu_bar_set_property(GObject * object, case PROP_PREFS: priv->prefs = g_value_get_object(value); break; + case PROP_MAIN_WINDOW: + priv->main_window = g_value_get_object(value); + break; } } @@ -242,9 +247,6 @@ trg_menu_bar_get_property(GObject * object, guint property_id, case PROP_QUIT: g_value_set_object(value, priv->mb_quit); break; - case PROP_PREFS: - g_value_set_object(value, priv->prefs); - break; case PROP_DIR_FILTERS: g_value_set_object(value, priv->mb_directory_filters); break; @@ -389,11 +391,13 @@ GtkWidget *trg_menu_bar_options_menu_new(TrgMenuBarPrivate * priv) return opts; } -static void trg_menu_bar_file_connect_item_new(TrgMainWindow *win, GtkMenuShell *shell, const gchar *text, const gchar *stock, JsonObject *profile) +static void trg_menu_bar_file_connect_item_new(TrgMainWindow *win, GtkMenuShell *shell, const gchar *text, gboolean checked, JsonObject *profile) { - GtkWidget *item = trg_menu_bar_item_new(shell, text, stock, TRUE); + GtkWidget *item = gtk_check_menu_item_new_with_label(text); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), checked); g_object_set_data(G_OBJECT(item), "profile", profile); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(connect_cb), win); + gtk_menu_shell_append(shell, item); } GtkWidget *trg_menu_bar_file_connect_menu_new(TrgMainWindow *win, TrgPrefs *p) @@ -414,9 +418,8 @@ GtkWidget *trg_menu_bar_file_connect_menu_new(TrgMainWindow *win, TrgPrefs *p) name_value = _(TRG_PROFILE_NAME_DEFAULT); } - if (profile != currentProfile) - trg_menu_bar_file_connect_item_new(win, GTK_MENU_SHELL(menu), name_value, - GTK_STOCK_CONNECT, profile); + trg_menu_bar_file_connect_item_new(win, GTK_MENU_SHELL(menu), name_value, + profile == currentProfile, profile); } g_list_free(profiles); @@ -429,11 +432,14 @@ GtkWidget *trg_menu_bar_file_file_menu_new(TrgMenuBarPrivate * priv) { GtkWidget *file = gtk_menu_item_new_with_mnemonic(_("_File")); GtkWidget *fileMenu = gtk_menu_new(); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), fileMenu); + + GtkWidget *connectMenu = trg_menu_bar_file_connect_menu_new(priv->main_window, priv->prefs); priv->mb_connect = - trg_menu_bar_item_new(GTK_MENU_SHELL(fileMenu), _("_Connect"), + trg_menu_bar_item_new(GTK_MENU_SHELL(fileMenu), _("Connect"), GTK_STOCK_CONNECT, TRUE); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(priv->mb_connect), connectMenu); + priv->mb_disconnect = trg_menu_bar_item_new(GTK_MENU_SHELL(fileMenu), _("_Disconnect"), GTK_STOCK_DISCONNECT, FALSE); @@ -448,6 +454,8 @@ GtkWidget *trg_menu_bar_file_file_menu_new(TrgMenuBarPrivate * priv) trg_menu_bar_item_new(GTK_MENU_SHELL(fileMenu), _("_Quit"), GTK_STOCK_QUIT, TRUE); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), fileMenu); + return file; } @@ -540,6 +548,17 @@ GtkWidget *trg_menu_bar_help_menu_new(TrgMenuBar * menuBar) return helpMenu; } +static void menu_bar_refresh_menu(GtkWidget *w, gpointer data) +{ + TrgMenuBarPrivate *priv = TRG_MENU_BAR_GET_PRIVATE(data); + GtkWidget *old = gtk_menu_item_get_submenu(GTK_MENU_ITEM(priv->mb_connect)); + GtkWidget *new = trg_menu_bar_file_connect_menu_new(priv->main_window, priv->prefs); + + gtk_widget_destroy(old); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(priv->mb_connect), new); + gtk_widget_show_all(new); +} + static GObject *trg_menu_bar_constructor(GType type, guint n_construct_properties, GObjectConstructParam * construct_params) { GObject *object; @@ -560,6 +579,8 @@ static GObject *trg_menu_bar_constructor(GType type, trg_menu_bar_view_menu_new(TRG_MENU_BAR(object))); trg_menu_bar_help_menu_new(TRG_MENU_BAR(object)); + g_signal_connect(G_OBJECT(priv->prefs), "pref-profile-changed", G_CALLBACK(menu_bar_refresh_menu), object); + return object; } @@ -656,15 +677,30 @@ static void trg_menu_bar_class_init(TrgMenuBarClass * klass) G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)); + + g_object_class_install_property(object_class, + PROP_MAIN_WINDOW, + g_param_spec_object("mainwin", + "mainwin", + "mainwin", + TRG_TYPE_MAIN_WINDOW, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY + | + G_PARAM_STATIC_NAME + | + G_PARAM_STATIC_NICK + | + G_PARAM_STATIC_BLURB)); + } static void trg_menu_bar_init(TrgMenuBar * self) { } -TrgMenuBar *trg_menu_bar_new(TrgPrefs *prefs) +TrgMenuBar *trg_menu_bar_new(TrgMainWindow *win, TrgPrefs *prefs) { return g_object_new(TRG_TYPE_MENU_BAR, - - "prefs", prefs, NULL); + "prefs", prefs, + "mainwin", win, NULL); } diff --git a/src/trg-menu-bar.h b/src/trg-menu-bar.h index 4a2eb2c..720aa35 100644 --- a/src/trg-menu-bar.h +++ b/src/trg-menu-bar.h @@ -48,7 +48,7 @@ typedef struct { GType trg_menu_bar_get_type(void); -TrgMenuBar *trg_menu_bar_new(TrgPrefs * prefs); +TrgMenuBar *trg_menu_bar_new(TrgMainWindow *win, TrgPrefs *prefs); GtkWidget *trg_menu_bar_item_new(GtkMenuShell * shell, const gchar *text, const gchar *stock_id, gboolean sensitive); diff --git a/src/trg-torrent-tree-view.c b/src/trg-torrent-tree-view.c index 6dd65d5..895b386 100644 --- a/src/trg-torrent-tree-view.c +++ b/src/trg-torrent-tree-view.c @@ -156,6 +156,7 @@ JsonArray *build_json_id_array(TrgTorrentTreeView * tv) (GtkTreeSelectionForeachFunc) trg_torrent_model_get_json_id_array_foreach, ids); + return ids; } |