rework Display/Summaries
[claws.git] / src / prefs_common.h
index e9686ae12fdf50d331589f4089f5b0a3246e9e7d..f2ad1416259908ed4617dbb7f107fb212ff959e6 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2013 Hiroyuki Yamamoto and the Claws Mail team
+ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 1999-2016 Hiroyuki Yamamoto and the Claws Mail team
  *
  * 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
  *
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * 
  */
 
 #ifndef __PREFS_COMMON_H__
 #define __PREFS_COMMON_H__
 
 #ifdef HAVE_CONFIG_H
+#include "config.h"
 #include "claws-features.h"
 #endif
 
@@ -35,6 +35,8 @@
 #include "prefs_msg_colors.h"
 #include "prefs_summary_open.h"
 
+#define CLAWS_CONFIG_VERSION 3
+
 typedef struct _PrefsCommon    PrefsCommon;
 
 typedef enum {
@@ -72,13 +74,16 @@ typedef enum
 typedef enum
 {
        ACTION_UNSET = 0, /* for backward compatibility */
-       ACTION_MARKED,
-       ACTION_NEW,
-       ACTION_UNREAD,
+       ACTION_OLDEST_MARKED,
+       ACTION_OLDEST_NEW,
+       ACTION_OLDEST_UNREAD,
        ACTION_LAST_OPENED,
-       ACTION_LAST_LIST,
+       ACTION_NEWEST_LIST,
        ACTION_NOTHING,
-       ACTION_FIRST_LIST
+       ACTION_OLDEST_LIST,
+       ACTION_NEWEST_MARKED,
+       ACTION_NEWEST_NEW,
+       ACTION_NEWEST_UNREAD
 } EntryAction;
 
 typedef enum
@@ -88,13 +93,6 @@ typedef enum
        NEXTUNREADMSGDIALOG_ASSUME_NO
 } NextUnreadMsgDialogShow;
 
-typedef enum
-{
-       OPENMSG_REQUEST_ONLY = 0,
-       OPENMSG_ALWAYS = 1,
-       OPENMSG_WHEN_VIEW_VISIBLE
-} ShowMsgPolicy;
-
 typedef enum
 {
        SHOW_NAME,
@@ -110,8 +108,46 @@ typedef enum
        AVATARS_ENABLE_BOTH = 3
 } EnableAvatars;
 
+typedef enum
+{
+       COL_MISSPELLED,
+       COL_QUOTE_LEVEL1,
+       COL_QUOTE_LEVEL2,
+       COL_QUOTE_LEVEL3,
+       COL_QUOTE_LEVEL1_BG,
+       COL_QUOTE_LEVEL2_BG,
+       COL_QUOTE_LEVEL3_BG,
+       COL_URI,
+       COL_TGT_FOLDER,
+       COL_SIGNATURE,
+       COL_EMPHASIS,
+       COL_DEFAULT_HEADER,
+       COL_DEFAULT_HEADER_BG,
+       COL_TAGS,
+       COL_TAGS_BG,
+       COL_QS_ACTIVE,
+       COL_QS_ACTIVE_BG,
+       COL_QS_ERROR,
+       COL_QS_ERROR_BG,
+       COL_LOG_MSG,
+       COL_LOG_WARN,
+       COL_LOG_ERROR,
+       COL_LOG_IN,
+       COL_LOG_OUT,
+       COL_LOG_STATUS_OK,
+       COL_LOG_STATUS_NOK,
+       COL_LOG_STATUS_SKIP,
+       COL_NEW,
+       COL_DIFF_ADDED,
+       COL_DIFF_DELETED,
+       COL_DIFF_HUNK,
+       COL_LAST_COLOR_INDEX
+} ColorIndex;
+
 struct _PrefsCommon
 {
+       gint config_version;
+
        /* Receive */
        gboolean use_extinc;
        gchar *extinc_cmd;
@@ -138,8 +174,10 @@ struct _PrefsCommon
        gchar *outgoing_charset;
        TransferEncodingMethod encoding_method;
        gboolean outgoing_fallback_to_ascii;
+       gboolean rewrite_first_from;
        gboolean warn_empty_subj;
-
+       gint warn_sending_many_recipients_num;
+       gboolean hide_timezone;
        gboolean allow_jisx0201_kana;
 
        /* Compose */
@@ -182,22 +220,13 @@ struct _PrefsCommon
        gboolean enable_aspell;
        gchar *dictionary;
        gchar *alt_dictionary;
-       gulong misspelled_col;
        gboolean check_while_typing;
        gboolean recheck_when_changing_dict;
        gboolean use_alternate;
        gboolean use_both_dicts;
-        
+
        /* Display */
-       /* obsolete fonts */
-       gchar *widgetfont_gtk1;
-       gchar *textfont_gtk1;
-       gchar *normalfont_gtk1;
-       gchar *boldfont_gtk1;
-       gchar *smallfont_gtk1;
-
-       /* new fonts */
-       gchar *widgetfont;
+       /* fonts */
        gchar *textfont;
        gchar *printfont;
        gchar *boldfont;
@@ -210,6 +239,9 @@ struct _PrefsCommon
        /* custom colors */
        ColorlabelPrefs custom_colorlabel[COLORLABELS];
 
+       /* program colors */
+       gulong color[COL_LAST_COLOR_INDEX];
+
        /* image viewer */
        gboolean display_img;
        gboolean resize_img;
@@ -220,7 +252,6 @@ struct _PrefsCommon
        gint ng_abbrev_len;
 
        gboolean show_searchbar;
-       gboolean expand_thread;
        gboolean swap_from;
        gboolean use_addr_book;
        gchar *date_format;
@@ -231,10 +262,17 @@ struct _PrefsCommon
        gint stripes_color_offset;
        gboolean enable_hscrollbar;
        gboolean bold_unread;
-       gboolean enable_thread;
+       gboolean next_on_delete;
        gboolean thread_by_subject;
        gint thread_by_subject_max_age; /*!< Max. age of a thread which was threaded
                                         *   by subject (days) */
+       FolderSortKey default_sort_key;
+       FolderSortType default_sort_type;
+       gboolean folder_default_thread;
+       gboolean folder_default_thread_collapsed;
+       gboolean folder_default_hide_read_threads;
+       gboolean folder_default_hide_read_msgs;
+       gboolean folder_default_hide_del_msgs;
 
        gchar *last_opened_folder;
        gboolean goto_last_folder_on_startup;
@@ -309,16 +347,6 @@ struct _PrefsCommon
        /* Message */
        gboolean enable_color;
        gboolean enable_bgcolor;
-       gulong quote_level1_col;
-       gulong quote_level2_col;
-       gulong quote_level3_col;
-       gulong quote_level1_bgcol;
-       gulong quote_level2_bgcol;
-       gulong quote_level3_bgcol;
-       gulong uri_col;
-       gulong tgt_folder_col;
-       gulong signature_col;
-       gulong emphasis_col;
        gboolean recycle_quote_colors;
        gboolean display_header_pane;
        gboolean display_header;
@@ -356,11 +384,18 @@ struct _PrefsCommon
        GList *addressbook_custom_attributes;
 
        /* Interface */
-       gboolean layout_mode;
+       LayoutType layout_mode;
 
        gint statusbar_update_step;
        gboolean emulate_emacs;
-       ShowMsgPolicy always_show_msg;
+
+       gboolean open_selected_on_folder_open;
+       gboolean open_selected_on_search_results;
+       gboolean open_selected_on_prevnext;
+       gboolean open_selected_on_deletemove;
+       gboolean open_selected_on_directional;
+       gboolean always_show_msg;
+
        gboolean mark_as_read_on_new_window;
        gboolean mark_as_read_delay;
        gboolean immediate_exec;
@@ -373,8 +408,15 @@ struct _PrefsCommon
        SummaryFromShow summary_from_show;
        gboolean add_address_by_click;
        gchar *pixmap_theme_path;
+#ifdef HAVE_SVG
+       gboolean enable_alpha_svg;
+       gboolean enable_pixmap_scaling;
+       gboolean pixmap_scaling_auto;
+       gint pixmap_scaling_ppi;
+#endif
        int hover_timeout; /* msecs mouse hover timeout */
        gboolean ask_mark_all_read;
+       gboolean ask_override_colorlabel;
        gboolean ask_apply_per_account_filtering_rules;
        gint apply_per_account_filtering_rules;
 
@@ -394,15 +436,6 @@ struct _PrefsCommon
        gboolean enable_log_error;
        gboolean enable_log_status;
 
-       gulong log_msg_color;
-       gulong log_warn_color;
-       gulong log_error_color;
-       gulong log_in_color;
-       gulong log_out_color;
-       gulong log_status_ok_color;
-       gulong log_status_nok_color;
-       gulong log_status_skip_color;
-
        gboolean enable_filtering_debug;
        gint filtering_debug_level;
        gboolean enable_filtering_debug_inc;
@@ -436,8 +469,7 @@ struct _PrefsCommon
        gint summary_quicksearch_recurse;
        gint summary_quicksearch_dynamic;
        gint summary_quicksearch_autorun;
-       gulong color_new;
-       
+
        GList *summary_quicksearch_history;
        GList *summary_search_from_history;
        GList *summary_search_to_history;
@@ -457,6 +489,8 @@ struct _PrefsCommon
        gint templateswin_height;
        gint actionswin_width;
        gint actionswin_height;
+       gint actionsiodialog_width;
+       gint actionsiodialog_height;
        gint tagswin_width;
        gint tagswin_height;
        gint addressbookwin_width;
@@ -526,14 +560,21 @@ struct _PrefsCommon
 
        gint nav_history_length;
 
-       gulong diff_added_color;
-       gulong diff_deleted_color;
-       gulong diff_hunk_color;
-       
        gboolean folder_search_wildcard;
        gboolean address_search_wildcard;
 
        guint enable_avatars;
+
+#ifndef PASSWORD_CRYPTO_OLD
+       gboolean use_master_passphrase;
+       gchar *master_passphrase;
+       gchar *master_passphrase_salt;
+       guint master_passphrase_pbkdf2_rounds;
+#endif
+
+       /* Proxy */
+       gboolean use_proxy;
+       ProxyInfo proxy_info;
 };
 
 extern PrefsCommon prefs_common;
@@ -554,4 +595,13 @@ gchar *pref_get_pref_from_entry(GtkEntry *entry);
 const gchar *prefs_common_translated_header_name(const gchar *header_name);
 const gchar *prefs_common_get_uri_cmd(void);
 const gchar *prefs_common_get_ext_editor_cmd(void);
+
+#define OPEN_SELECTED(when) (prefs_common.always_show_msg || prefs_common.when)
+
+#define OPEN_SELECTED_ON_FOLDER_OPEN OPEN_SELECTED(open_selected_on_folder_open)
+#define OPEN_SELECTED_ON_SEARCH_RESULTS OPEN_SELECTED(open_selected_on_search_results)
+#define OPEN_SELECTED_ON_PREVNEXT OPEN_SELECTED(open_selected_on_prevnext)
+#define OPEN_SELECTED_ON_DELETEMOVE OPEN_SELECTED(open_selected_on_deletemove)
+#define OPEN_SELECTED_ON_DIRECTIONAL OPEN_SELECTED(open_selected_on_directional)
+
 #endif /* __PREFS_COMMON_H__ */