Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAntenore Gatta <antenore@simbiosi.org>2019-12-13 19:00:35 +0300
committerAntenore Gatta <antenore@simbiosi.org>2019-12-13 19:00:35 +0300
commit40de87603555b96051ae38b911676266cd45050e (patch)
treebe162e48396faf707a870d129b0724b8a7fd55dd /src
parentd7585d883a58b7a5638926fb4ac30089734bf614 (diff)
Remmina news modal
Diffstat (limited to 'src')
-rw-r--r--src/remmina_main.c46
-rw-r--r--src/remmina_main.h1
-rw-r--r--src/rmnews.c12
-rw-r--r--src/rmnews.h1
4 files changed, 40 insertions, 20 deletions
diff --git a/src/remmina_main.c b/src/remmina_main.c
index 77ce381b3..df35a0ce6 100644
--- a/src/remmina_main.c
+++ b/src/remmina_main.c
@@ -64,7 +64,7 @@
static RemminaMain *remminamain;
-#define GET_OBJECT(object_name) gtk_builder_get_object(remminamain->builder, object_name)
+#define RM_GET_OBJECT(object_name) gtk_builder_get_object(remminamain->builder, object_name)
enum {
PROTOCOL_COLUMN,
@@ -89,6 +89,7 @@ const gchar *supported_mime_types[] = {
static GActionEntry main_actions[] = {
{ "about", remmina_main_on_action_application_about, NULL, NULL, NULL },
+ { "news", remmina_main_on_action_application_news, NULL, NULL, NULL },
{ "default", remmina_main_on_action_application_default, NULL, NULL, NULL },
{ "mpchange", remmina_main_on_action_application_mpchange, NULL, NULL, NULL },
{ "plugins", remmina_main_on_action_application_plugins, NULL, NULL, NULL },
@@ -1031,6 +1032,14 @@ void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *p
remmina_about_open(remminamain->window);
};
+void remmina_main_on_action_application_news(GSimpleAction *action, GVariant *param, gpointer data)
+{
+ TRACE_CALL(__func__);
+ remmina_pref.periodic_rmnews_last_get = 0;
+ remmina_pref.periodic_rmnews_get_count = 0;
+ remmina_pref_save();
+};
+
static gboolean remmina_main_quickconnect(void)
{
TRACE_CALL(__func__);
@@ -1226,7 +1235,7 @@ static void remmina_main_init(void)
/* Honor global peferences Search Bar visibility */
if (remmina_pref.hide_searchbar)
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(GET_OBJECT("search_toggle")), FALSE);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(RM_GET_OBJECT("search_toggle")), FALSE);
/* Add a GtkMenuItem to the Tools menu for each plugin of type REMMINA_PLUGIN_TYPE_TOOL */
remmina_plugin_manager_for_each_plugin(REMMINA_PLUGIN_TYPE_TOOL, remmina_main_add_tool_plugin, remminamain);
@@ -1295,45 +1304,45 @@ GtkWidget* remmina_main_new(void)
remminamain->priv = g_new0(RemminaMainPriv, 1);
/* Assign UI widgets to the private members */
remminamain->builder = remmina_public_gtk_builder_new_from_file("remmina_main.glade");
- remminamain->window = GTK_WINDOW(GET_OBJECT("RemminaMain"));
+ remminamain->window = GTK_WINDOW(RM_GET_OBJECT("RemminaMain"));
if (kioskmode && kioskmode == TRUE) {
gtk_window_set_position(remminamain->window, GTK_WIN_POS_CENTER_ALWAYS);
gtk_window_set_default_size(remminamain->window, 800, 400);
gtk_window_set_resizable(remminamain->window, FALSE);
}
/* New Button */
- remminamain->button_new = GTK_BUTTON(GET_OBJECT("button_new"));
+ remminamain->button_new = GTK_BUTTON(RM_GET_OBJECT("button_new"));
if (kioskmode && kioskmode == TRUE)
gtk_widget_set_sensitive(GTK_WIDGET(remminamain->button_new), FALSE);
/* Search bar */
- remminamain->search_toggle = GTK_TOGGLE_BUTTON(GET_OBJECT("search_toggle"));
- remminamain->search_bar = GTK_SEARCH_BAR(GET_OBJECT("search_bar"));
+ remminamain->search_toggle = GTK_TOGGLE_BUTTON(RM_GET_OBJECT("search_toggle"));
+ remminamain->search_bar = GTK_SEARCH_BAR(RM_GET_OBJECT("search_bar"));
/* view mode list/tree */
- remminamain->view_toggle_button = GTK_TOGGLE_BUTTON(GET_OBJECT("view_toggle_button"));
+ remminamain->view_toggle_button = GTK_TOGGLE_BUTTON(RM_GET_OBJECT("view_toggle_button"));
if (kioskmode && kioskmode == TRUE)
gtk_widget_set_sensitive(GTK_WIDGET(remminamain->view_toggle_button), FALSE);
/* Menu widgets */
- remminamain->menu_popup = GTK_MENU(GET_OBJECT("menu_popup"));
- remminamain->menu_header_button = GTK_MENU_BUTTON(GET_OBJECT("menu_header_button"));
- remminamain->menu_popup_full = GTK_MENU(GET_OBJECT("menu_popup_full"));
+ remminamain->menu_popup = GTK_MENU(RM_GET_OBJECT("menu_popup"));
+ remminamain->menu_header_button = GTK_MENU_BUTTON(RM_GET_OBJECT("menu_header_button"));
+ remminamain->menu_popup_full = GTK_MENU(RM_GET_OBJECT("menu_popup_full"));
if (kioskmode && kioskmode == TRUE) {
gtk_widget_set_sensitive(GTK_WIDGET(remminamain->menu_popup_full), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(remminamain->menu_header_button), FALSE);
}
/* View mode radios */
- remminamain->menuitem_view_mode_list = GTK_RADIO_MENU_ITEM(GET_OBJECT("menuitem_view_mode_list"));
- remminamain->menuitem_view_mode_tree = GTK_RADIO_MENU_ITEM(GET_OBJECT("menuitem_view_mode_tree"));
+ remminamain->menuitem_view_mode_list = GTK_RADIO_MENU_ITEM(RM_GET_OBJECT("menuitem_view_mode_list"));
+ remminamain->menuitem_view_mode_tree = GTK_RADIO_MENU_ITEM(RM_GET_OBJECT("menuitem_view_mode_tree"));
/* Quick connect objects */
- remminamain->box_quick_connect = GTK_BOX(GET_OBJECT("box_quick_connect"));
- remminamain->combo_quick_connect_protocol = GTK_COMBO_BOX_TEXT(GET_OBJECT("combo_quick_connect_protocol"));
+ remminamain->box_quick_connect = GTK_BOX(RM_GET_OBJECT("box_quick_connect"));
+ remminamain->combo_quick_connect_protocol = GTK_COMBO_BOX_TEXT(RM_GET_OBJECT("combo_quick_connect_protocol"));
if (kioskmode && kioskmode == TRUE)
gtk_widget_set_sensitive(GTK_WIDGET(remminamain->combo_quick_connect_protocol), FALSE);
- remminamain->entry_quick_connect_server = GTK_ENTRY(GET_OBJECT("entry_quick_connect_server"));
+ remminamain->entry_quick_connect_server = GTK_ENTRY(RM_GET_OBJECT("entry_quick_connect_server"));
/* Other widgets */
- remminamain->tree_files_list = GTK_TREE_VIEW(GET_OBJECT("tree_files_list"));
- remminamain->column_files_list_group = GTK_TREE_VIEW_COLUMN(GET_OBJECT("column_files_list_group"));
- remminamain->statusbar_main = GTK_STATUSBAR(GET_OBJECT("statusbar_main"));
+ remminamain->tree_files_list = GTK_TREE_VIEW(RM_GET_OBJECT("tree_files_list"));
+ remminamain->column_files_list_group = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT("column_files_list_group"));
+ remminamain->statusbar_main = GTK_STATUSBAR(RM_GET_OBJECT("statusbar_main"));
/* Non widget objects */
actions = g_simple_action_group_new();
g_action_map_add_action_entries(G_ACTION_MAP(actions), main_actions, G_N_ELEMENTS(main_actions), remminamain->window);
@@ -1362,6 +1371,7 @@ GtkWindow* remmina_main_get_window()
return NULL;
if (!remminamain->priv->initialized)
return NULL;
+ remminamain->window = GTK_WINDOW(RM_GET_OBJECT("RemminaMain"));
return remminamain->window;
}
diff --git a/src/remmina_main.h b/src/remmina_main.h
index 898f9dd0b..4112c2fac 100644
--- a/src/remmina_main.h
+++ b/src/remmina_main.h
@@ -105,6 +105,7 @@ void remmina_main_save_before_destroy(void);
void remmina_main_show_warning_dialog(const gchar *message);
void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data);
+void remmina_main_on_action_application_news(GSimpleAction *action, GVariant *param, gpointer data);
void remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data);
void remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data);
void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data);
diff --git a/src/rmnews.c b/src/rmnews.c
index 825929494..17427b692 100644
--- a/src/rmnews.c
+++ b/src/rmnews.c
@@ -174,7 +174,7 @@ static gboolean rmnews_dialog_deleted(GtkButton *btn, gpointer user_data)
return FALSE;
}
-static void rmnews_show_news(GtkWindow *parent)
+void rmnews_show_news(GtkWindow *parent)
{
TRACE_CALL(__func__);
@@ -216,13 +216,14 @@ static void rmnews_show_news(GtkWindow *parent)
if (parent)
gtk_window_set_transient_for(GTK_WINDOW(rmnews_news_dialog->dialog), parent);
+ gtk_window_set_modal (GTK_WINDOW(rmnews_news_dialog->dialog), TRUE);
+
/* Show the non-modal news dialog */
gtk_widget_show_all(GTK_WIDGET(rmnews_news_dialog->dialog));
gtk_window_present(GTK_WINDOW(rmnews_news_dialog->dialog));
}
-
static void rmnews_get_url_cb(SoupSession *session, SoupMessage *msg, gpointer data)
{
TRACE_CALL(__func__);
@@ -424,6 +425,13 @@ void rmnews_get_news()
g_info("Output file set to %s", output_file_path);
+ if (remmina_pref.periodic_rmnews_last_get == 0 &&
+ remmina_pref.periodic_rmnews_get_count == 0) {
+ g_file_set_contents (output_file_path, "", 0, NULL);
+ /* Just a symolic date */
+ remmina_pref.periodic_rmnews_last_get = 191469343000;
+ }
+
fd = g_open (output_file_path, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR);
g_debug ("Returned %d while creating %s", fd, output_file_path);
/* If we cannot create the remmina_news file, we avoid connections */
diff --git a/src/rmnews.h b/src/rmnews.h
index 4dc1fe384..6f915695c 100644
--- a/src/rmnews.h
+++ b/src/rmnews.h
@@ -51,5 +51,6 @@ typedef struct _RemminaNewsDialog {
G_BEGIN_DECLS
void rmnews_schedule();
+void rmnews_show_news();
void rmnews_get_url(const char *url);
G_END_DECLS