[Commits] [SCM] claws branch, master, updated. 4.1.1-30-gca89ade8e

paul at claws-mail.org paul at claws-mail.org
Mon Jan 2 17:27:23 UTC 2023


The branch, master has been updated
       via  ca89ade8ebc037ded7705ecc7d6cfbca6340430b (commit)
      from  102602650eb7603d1f3e0851ff5788fd9784ff09 (commit)

Summary of changes:
 src/folderview.c      | 20 ++++++++++++-
 src/main.c            |  8 ++++--
 src/prefs_common.c    |  6 +++-
 src/prefs_common.h    |  4 ++-
 src/prefs_summaries.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 5 files changed, 111 insertions(+), 6 deletions(-)


- Log -----------------------------------------------------------------
commit ca89ade8ebc037ded7705ecc7d6cfbca6340430b
Author: Paul <paul at claws-mail.org>
Date:   Mon Jan 2 17:27:07 2023 +0000

    add an easy way to open any folder on start-up

diff --git a/src/folderview.c b/src/folderview.c
index 8c9cb63d7..73425b348 100644
--- a/src/folderview.c
+++ b/src/folderview.c
@@ -1,6 +1,6 @@
 /*
  * Claws Mail -- a GTK based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2022 the Claws Mail team and Hiroyuki Yamamoto
+ * Copyright (C) 1999-2023 the Claws Mail team and Hiroyuki Yamamoto
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -189,6 +189,8 @@ static void folderview_search_cb	(GtkAction 	*action,
 					 gpointer	 data);
 static void folderview_run_processing_cb(GtkAction 	*action,
 					 gpointer	 data);
+static void folderview_startup_folder_cb(GtkAction	*action,
+					 gpointer	 data);
 
 static void folderview_property_cb	(GtkAction 	*action,
 					 gpointer	 data);
@@ -252,6 +254,7 @@ static GtkActionEntry folderview_common_popup_entries[] =
 	{"FolderViewPopup/---",              NULL, "---", NULL, NULL , NULL},
 	{"FolderViewPopup/RunProcessing",    NULL, N_("R_un processing rules"), NULL, NULL, G_CALLBACK(folderview_run_processing_cb) },
 	{"FolderViewPopup/SearchFolder",     NULL, N_("_Search folder..."), NULL, NULL, G_CALLBACK(folderview_search_cb) },
+	{"FolderViewPopup/OpenFolder",       NULL, N_("Open on start-up"), NULL, NULL, G_CALLBACK(folderview_startup_folder_cb) },
 	{"FolderViewPopup/Properties",       NULL, N_("_Properties..."), NULL, NULL, G_CALLBACK(folderview_property_cb) },
 	{"FolderViewPopup/Processing",       NULL, N_("Process_ing..."), NULL, NULL, G_CALLBACK(folderview_processing_cb) },
 	{"FolderViewPopup/EmptyTrash",       NULL, N_("Empty _trash..."), NULL, NULL, G_CALLBACK(folderview_empty_trash_cb) },
@@ -1956,6 +1959,7 @@ static void folderview_set_sens_and_popup_menu(FolderView *folderview, gint row,
 	MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "Separator1", "FolderViewPopup/---", GTK_UI_MANAGER_SEPARATOR)
 	MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "RunProcessing", "FolderViewPopup/RunProcessing", GTK_UI_MANAGER_MENUITEM)
 	MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "SearchFolder", "FolderViewPopup/SearchFolder", GTK_UI_MANAGER_MENUITEM)
+	MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "OpenFolder", "FolderViewPopup/OpenFolder", GTK_UI_MANAGER_MENUITEM)
 	MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "Properties", "FolderViewPopup/Properties", GTK_UI_MANAGER_MENUITEM)
 	MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "Processing", "FolderViewPopup/Processing", GTK_UI_MANAGER_MENUITEM)
 
@@ -2574,6 +2578,20 @@ static void folderview_search_cb(GtkAction *action, gpointer data)
 	summary_search(folderview->summaryview);
 }
 
+static void folderview_startup_folder_cb(GtkAction *action, gpointer data)
+{
+	FolderView *folderview = (FolderView *)data;
+	FolderItem *item;
+
+	if (!folderview->selected) return;
+
+	item = folderview_get_selected_item(folderview);
+
+	prefs_common.goto_last_folder_on_startup = FALSE;
+	prefs_common.goto_folder_on_startup = TRUE;
+	prefs_common.startup_folder = folder_item_get_identifier(item);
+}
+
 static void folderview_run_processing_cb(GtkAction *action, gpointer data)
 {
 	FolderView *folderview = (FolderView *)data;
diff --git a/src/main.c b/src/main.c
index 932da3ae0..e0205c4b5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,6 +1,6 @@
 /*
  * Claws Mail -- a GTK based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2022 the Claws Mail team and Hiroyuki Yamamoto
+ * Copyright (C) 1999-2023 the Claws Mail team and Hiroyuki Yamamoto
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -1605,7 +1605,11 @@ int main(int argc, char *argv[])
 	folderview_thaw(mainwin->folderview);
 	main_window_cursor_normal(mainwin);
 
-	if (!cmd.target && prefs_common.goto_last_folder_on_startup &&
+	if (!cmd.target && prefs_common.goto_folder_on_startup &&
+	    folder_find_item_from_identifier(prefs_common.startup_folder) != NULL &&
+	    !claws_crashed()) {
+		cmd.target = prefs_common.startup_folder;
+	} else if (!cmd.target && prefs_common.goto_last_folder_on_startup &&
 	    folder_find_item_from_identifier(prefs_common.last_opened_folder) != NULL &&
 	    !claws_crashed()) {
 		cmd.target = prefs_common.last_opened_folder;
diff --git a/src/prefs_common.c b/src/prefs_common.c
index 02eb41c0a..4de16db40 100644
--- a/src/prefs_common.c
+++ b/src/prefs_common.c
@@ -1,6 +1,6 @@
 /*
  * Claws Mail -- a GTK based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2022 the Claws Mail team and Hiroyuki Yamamoto
+ * Copyright (C) 1999-2023 the Claws Mail team and Hiroyuki Yamamoto
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -1212,6 +1212,10 @@ static PrefParam param[] = {
 	P_STRING, NULL, NULL, NULL },
 	{"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
 	P_BOOL, NULL, NULL, NULL },
+	{"startup_folder", "", &prefs_common.startup_folder,
+	P_STRING, NULL, NULL, NULL },
+	{"goto_folder_on_startup", "FALSE", &prefs_common.goto_folder_on_startup,
+	P_BOOL, NULL, NULL, NULL },
 	{"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
 	 NULL, NULL, NULL},
 	{"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
diff --git a/src/prefs_common.h b/src/prefs_common.h
index 0d5220f02..30e15c424 100644
--- a/src/prefs_common.h
+++ b/src/prefs_common.h
@@ -1,6 +1,6 @@
 /*
  * Claws Mail -- a GTK based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2022 the Claws Mail team and Hiroyuki Yamamoto
+ * Copyright (C) 1999-2023 the Claws Mail team and Hiroyuki Yamamoto
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -277,6 +277,8 @@ struct _PrefsCommon
 
 	gchar *last_opened_folder;
 	gboolean goto_last_folder_on_startup;
+	gchar *startup_folder;
+	gboolean goto_folder_on_startup;
 
 	ToolbarStyle toolbar_style;
 	gboolean show_statusbar;
diff --git a/src/prefs_summaries.c b/src/prefs_summaries.c
index 4939830a5..eb75163c8 100644
--- a/src/prefs_summaries.c
+++ b/src/prefs_summaries.c
@@ -1,6 +1,6 @@
 /*
  * Claws Mail -- a GTK based, lightweight, and fast e-mail client
- * Copyright (C) 2005-2022 Colin Leroy and The Claws Mail Team
+ * Copyright (C) 2005-2023 the Claws Mail Team and Colin Leroy
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -31,6 +31,7 @@
 #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>
 
+#include "foldersel.h"
 #include "prefs_common.h"
 #include "prefs_gtk.h"
 #include "prefs_summary_open.h"
@@ -59,6 +60,9 @@ typedef struct _SummariesPage
 	GtkWidget *entry_datefmt;
 
 	GtkWidget *checkbtn_reopen_last_folder;
+	GtkWidget *checkbtn_startup_folder;
+	GtkWidget *startup_folder_entry;
+	GtkWidget *startup_folder_select;
 	GtkWidget *checkbtn_always_show_msg;
 	GtkWidget *checkbtn_show_on_folder_open;
 	GtkWidget *checkbtn_show_on_search_results;
@@ -111,6 +115,41 @@ static void mark_as_read_toggled		(GtkToggleButton *button,
 static void always_show_msg_toggled		(GtkToggleButton *button,
 						 gpointer user_data);
 
+static void reopen_last_folder_toggled(GtkToggleButton *toggle_btn, GtkWidget *widget)
+{
+	gboolean is_active;
+
+	is_active = gtk_toggle_button_get_active(toggle_btn);
+	gtk_widget_set_sensitive(widget, !is_active);
+	if (is_active)
+		prefs_common.goto_folder_on_startup = FALSE;
+}
+
+static void startup_folder_toggled(GtkToggleButton *toggle_btn, GtkWidget *widget)
+{
+	gboolean is_active;
+
+	is_active = gtk_toggle_button_get_active(toggle_btn);
+	gtk_widget_set_sensitive(widget, !is_active);
+	if (is_active)
+		prefs_common.goto_last_folder_on_startup = FALSE;
+}
+
+static void foldersel_cb(GtkWidget *widget, gpointer data)
+{
+	GtkWidget *entry = (GtkWidget *) data;
+	FolderItem *item;
+	gchar *item_id;
+	gint newpos = 0;
+	
+	item = foldersel_folder_sel(NULL, FOLDER_SEL_ALL, NULL, FALSE, NULL);
+	if (item && (item_id = folder_item_get_identifier(item)) != NULL) {
+		gtk_editable_delete_text(GTK_EDITABLE(entry), 0, -1);
+		gtk_editable_insert_text(GTK_EDITABLE(entry), item_id, strlen(item_id), &newpos);
+		g_free(item_id);
+	}
+}
+
 static GtkWidget *date_format_create(GtkButton *button, void *data)
 {
 	static GtkWidget *datefmt_win = NULL;
@@ -339,6 +378,9 @@ static void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
 	GtkWidget *entry_datefmt;
 	GtkWidget *button_dispitem;
 	GtkWidget *checkbtn_reopen_last_folder;
+	GtkWidget *checkbtn_startup_folder;
+	GtkWidget *startup_folder_entry;
+	GtkWidget *startup_folder_select;
 	GtkWidget *checkbtn_always_show_msg;
 	GtkWidget *checkbtn_show_on_folder_open;
 	GtkWidget *checkbtn_show_on_search_results;
@@ -414,6 +456,31 @@ static void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
 		(vbox1, checkbtn_reopen_last_folder,
 		 _("Open last opened folder at start-up"));
 
+	hbox0 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8);
+	gtk_widget_show(hbox0);
+	gtk_box_pack_start(GTK_BOX(vbox1), hbox0, FALSE, FALSE, 0);
+
+	PACK_CHECK_BUTTON
+		(hbox0, checkbtn_startup_folder,
+		 _("Open selected folder at start-up"));
+
+	startup_folder_entry = gtk_entry_new();
+	gtk_widget_show(startup_folder_entry);
+	gtk_box_pack_start(GTK_BOX(hbox0), startup_folder_entry, TRUE, TRUE, 0);
+	startup_folder_select = gtkut_get_browse_directory_btn(_("_Browse"));
+	gtk_widget_show(startup_folder_select);
+	gtk_box_pack_start(GTK_BOX(hbox0), startup_folder_select, FALSE, FALSE, 0);
+
+	SET_TOGGLE_SENSITIVITY(checkbtn_startup_folder, startup_folder_entry)
+	SET_TOGGLE_SENSITIVITY(checkbtn_startup_folder, startup_folder_select)
+
+	g_signal_connect(G_OBJECT(checkbtn_reopen_last_folder), "toggled",
+			 G_CALLBACK(reopen_last_folder_toggled), checkbtn_startup_folder);
+	g_signal_connect(G_OBJECT(checkbtn_startup_folder), "toggled",
+			 G_CALLBACK(startup_folder_toggled), checkbtn_reopen_last_folder);
+	g_signal_connect(G_OBJECT(startup_folder_select), "clicked",
+			 G_CALLBACK(foldersel_cb), startup_folder_entry);
+
 	PACK_CHECK_BUTTON
 		(vbox1, checkbtn_run_processingrules_mark_all_read,
 		 _("Run processing rules before marking all messages in a folder as read or unread"));
@@ -681,6 +748,8 @@ static void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
 	prefs_summaries->checkbtn_threadsubj = checkbtn_threadsubj;
 	prefs_summaries->entry_datefmt = entry_datefmt;
 	prefs_summaries->checkbtn_reopen_last_folder = checkbtn_reopen_last_folder;
+	prefs_summaries->checkbtn_startup_folder = checkbtn_startup_folder;
+	prefs_summaries->startup_folder_entry = startup_folder_entry;
 
 	prefs_summaries->checkbtn_always_show_msg = checkbtn_always_show_msg;
 	prefs_summaries->checkbtn_show_on_folder_open = checkbtn_show_on_folder_open;
@@ -731,6 +800,10 @@ static void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
 			prefs_common.date_format?prefs_common.date_format:"");	
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_reopen_last_folder),
 			prefs_common.goto_last_folder_on_startup);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_startup_folder),
+			prefs_common.goto_folder_on_startup);
+	gtk_entry_set_text(GTK_ENTRY(startup_folder_entry),
+			   prefs_common.startup_folder?prefs_common.startup_folder:"");
 
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_always_show_msg),
 			prefs_common.always_show_msg);
@@ -809,6 +882,10 @@ static void prefs_summaries_save(PrefsPage *_page)
 
 	prefs_common.goto_last_folder_on_startup = gtk_toggle_button_get_active(
 		GTK_TOGGLE_BUTTON(page->checkbtn_reopen_last_folder));
+	prefs_common.goto_folder_on_startup = gtk_toggle_button_get_active(
+		GTK_TOGGLE_BUTTON(page->checkbtn_startup_folder));
+	prefs_common.startup_folder = gtk_editable_get_chars(
+			GTK_EDITABLE(page->startup_folder_entry), 0, -1);
 
 	prefs_common.always_show_msg = gtk_toggle_button_get_active(
 		GTK_TOGGLE_BUTTON(page->checkbtn_always_show_msg));

-----------------------------------------------------------------------


hooks/post-receive
-- 
Claws Mail


More information about the Commits mailing list