/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* Copyright (C) 2016 Red Hat, Inc. (www.redhat.com)
*
* This library is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library. If not, see .
*/
#if !defined (__CAMEL_H_INSIDE__) && !defined (CAMEL_COMPILATION)
#error "Only can be included directly."
#endif
#ifndef CAMEL_MESSAGE_INFO_H
#define CAMEL_MESSAGE_INFO_H
#include
#include
#include
/* Standard GObject macros */
#define CAMEL_TYPE_MESSAGE_INFO \
(camel_message_info_get_type ())
#define CAMEL_MESSAGE_INFO(obj) \
(G_TYPE_CHECK_INSTANCE_CAST \
((obj), CAMEL_TYPE_MESSAGE_INFO, CamelMessageInfo))
#define CAMEL_MESSAGE_INFO_CLASS(cls) \
(G_TYPE_CHECK_CLASS_CAST \
((cls), CAMEL_TYPE_MESSAGE_INFO, CamelMessageInfoClass))
#define CAMEL_IS_MESSAGE_INFO(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE \
((obj), CAMEL_TYPE_MESSAGE_INFO))
#define CAMEL_IS_MESSAGE_INFO_CLASS(cls) \
(G_TYPE_CHECK_CLASS_TYPE \
((cls), CAMEL_TYPE_MESSAGE_INFO))
#define CAMEL_MESSAGE_INFO_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS \
((obj), CAMEL_TYPE_MESSAGE_INFO, CamelMessageInfoClass))
G_BEGIN_DECLS
/* Forward declarations */
struct _CamelFolderSummary;
struct _CamelMIRecord;
/* A summary messageid is a 64 bit identifier (partial md5 hash) */
typedef struct _CamelSummaryMessageID {
union {
guint64 id;
guchar hash[8];
struct {
guint32 hi;
guint32 lo;
} part;
} id;
} CamelSummaryMessageID;
/* system flag bits */
typedef enum _CamelMessageFlags {
CAMEL_MESSAGE_ANSWERED = 1 << 0,
CAMEL_MESSAGE_DELETED = 1 << 1,
CAMEL_MESSAGE_DRAFT = 1 << 2,
CAMEL_MESSAGE_FLAGGED = 1 << 3,
CAMEL_MESSAGE_SEEN = 1 << 4,
/* these aren't really system flag bits, but are convenience flags */
CAMEL_MESSAGE_ATTACHMENTS = 1 << 5,
CAMEL_MESSAGE_ANSWERED_ALL = 1 << 6,
CAMEL_MESSAGE_JUNK = 1 << 7,
CAMEL_MESSAGE_SECURE = 1 << 8,
CAMEL_MESSAGE_NOTJUNK = 1 << 9,
CAMEL_MESSAGE_FORWARDED = 1 << 10,
/* following flags are for the folder, and are not really permanent flags */
CAMEL_MESSAGE_FOLDER_FLAGGED = 1 << 16, /* for use by the folder implementation */
/* flags after 1 << 16 are used by camel providers,
* if adding non permanent flags, add them to the end */
CAMEL_MESSAGE_JUNK_LEARN = 1 << 30, /* used when setting CAMEL_MESSAGE_JUNK flag
* to say that we request junk plugin
* to learn that message as junk/non junk */
CAMEL_MESSAGE_USER = 1u << 31 /* supports user flags */
} CamelMessageFlags;
/* Changes to system flags will NOT trigger a folder changed event */
#define CAMEL_MESSAGE_SYSTEM_MASK (0xffff << 16)
typedef struct _CamelMessageInfo CamelMessageInfo;
typedef struct _CamelMessageInfoClass CamelMessageInfoClass;
typedef struct _CamelMessageInfoPrivate CamelMessageInfoPrivate;
struct _CamelMessageInfo {
GObject parent;
CamelMessageInfoPrivate *priv;
};
struct _CamelMessageInfoClass {
GObjectClass parent_class;
CamelMessageInfo * (* clone) (const CamelMessageInfo *mi,
struct _CamelFolderSummary *assign_summary);
gboolean (* load) (CamelMessageInfo *mi,
const struct _CamelMIRecord *record,
/* const */ gchar **bdata_ptr);
gboolean (* save) (const CamelMessageInfo *mi,
struct _CamelMIRecord *record,
GString *bdata_str);
guint32 (* get_flags) (const CamelMessageInfo *mi);
gboolean (* set_flags) (CamelMessageInfo *mi,
guint32 mask,
guint32 set);
gboolean (* get_user_flag)
(const CamelMessageInfo *mi,
const gchar *name);
gboolean (* set_user_flag)
(CamelMessageInfo *mi,
const gchar *name,
gboolean state);
const CamelNamedFlags * (* get_user_flags)
(const CamelMessageInfo *mi);
CamelNamedFlags * (* dup_user_flags)
(const CamelMessageInfo *mi);
gboolean (* take_user_flags)
(CamelMessageInfo *mi,
CamelNamedFlags *user_flags);
const gchar * (* get_user_tag)(const CamelMessageInfo *mi,
const gchar *name);
gboolean (* set_user_tag)(CamelMessageInfo *mi,
const gchar *name,
const gchar *value);
const CamelNameValueArray *
(* get_user_tags)
(const CamelMessageInfo *mi);
CamelNameValueArray * (* dup_user_tags)
(const CamelMessageInfo *mi);
gboolean (* take_user_tags)
(CamelMessageInfo *mi,
CamelNameValueArray *user_tags);
const gchar * (* get_subject) (const CamelMessageInfo *mi);
gboolean (* set_subject) (CamelMessageInfo *mi,
const gchar *subject);
const gchar * (* get_from) (const CamelMessageInfo *mi);
gboolean (* set_from) (CamelMessageInfo *mi,
const gchar *from);
const gchar * (* get_to) (const CamelMessageInfo *mi);
gboolean (* set_to) (CamelMessageInfo *mi,
const gchar *to);
const gchar * (* get_cc) (const CamelMessageInfo *mi);
gboolean (* set_cc) (CamelMessageInfo *mi,
const gchar *cc);
const gchar * (* get_mlist) (const CamelMessageInfo *mi);
gboolean (* set_mlist) (CamelMessageInfo *mi,
const gchar *mlist);
guint32 (* get_size) (const CamelMessageInfo *mi);
gboolean (* set_size) (CamelMessageInfo *mi,
guint32 size);
gint64 (* get_date_sent)
(const CamelMessageInfo *mi);
gboolean (* set_date_sent)
(CamelMessageInfo *mi,
gint64 date_sent);
gint64 (* get_date_received)
(const CamelMessageInfo *mi);
gboolean (* set_date_received)
(CamelMessageInfo *mi,
gint64 date_received);
guint64 (* get_message_id)
(const CamelMessageInfo *mi);
gboolean (* set_message_id)
(CamelMessageInfo *mi,
guint64 message_id);
const GArray * (* get_references)
(const CamelMessageInfo *mi);
gboolean (* take_references)
(CamelMessageInfo *mi,
GArray *references);
const CamelNameValueArray *
(* get_headers) (const CamelMessageInfo *mi);
gboolean (* take_headers)(CamelMessageInfo *mi,
CamelNameValueArray *headers);
const gchar * (* get_user_header)
(const CamelMessageInfo *mi,
const gchar *name);
gboolean (* set_user_header)
(CamelMessageInfo *mi,
const gchar *name,
const gchar *value);
const CamelNameValueArray *
(* get_user_headers)
(const CamelMessageInfo *mi);
gboolean (* take_user_headers)
(CamelMessageInfo *mi,
CamelNameValueArray *headers);
const gchar * (* get_preview) (const CamelMessageInfo *mi);
gboolean (* set_preview) (CamelMessageInfo *mi,
const gchar *preview);
/* Padding for future expansion */
gpointer reserved[14];
};
GType camel_message_info_get_type (void);
CamelMessageInfo *
camel_message_info_new (struct _CamelFolderSummary *summary);
CamelMessageInfo *
camel_message_info_clone (const CamelMessageInfo *mi,
struct _CamelFolderSummary *assign_summary);
gboolean camel_message_info_load (CamelMessageInfo *mi,
const struct _CamelMIRecord *record,
/* const */ gchar **bdata_ptr);
gboolean camel_message_info_save (const CamelMessageInfo *mi,
struct _CamelMIRecord *record,
GString *bdata_str);
struct _CamelFolderSummary *
camel_message_info_ref_summary (const CamelMessageInfo *mi);
void camel_message_info_property_lock
(const CamelMessageInfo *mi);
void camel_message_info_property_unlock
(const CamelMessageInfo *mi);
gboolean camel_message_info_get_dirty (const CamelMessageInfo *mi);
void camel_message_info_set_dirty (CamelMessageInfo *mi,
gboolean dirty);
gboolean camel_message_info_get_folder_flagged
(const CamelMessageInfo *mi);
gboolean camel_message_info_set_folder_flagged
(CamelMessageInfo *mi,
gboolean folder_flagged);
guint camel_message_info_get_folder_flagged_stamp
(const CamelMessageInfo *mi);
gboolean camel_message_info_get_abort_notifications
(const CamelMessageInfo *mi);
void camel_message_info_set_abort_notifications
(CamelMessageInfo *mi,
gboolean abort_notifications);
void camel_message_info_freeze_notifications
(CamelMessageInfo *mi);
void camel_message_info_thaw_notifications
(CamelMessageInfo *mi);
gboolean camel_message_info_get_notifications_frozen
(const CamelMessageInfo *mi);
const gchar * camel_message_info_get_uid (const CamelMessageInfo *mi);
const gchar * camel_message_info_pooldup_uid (const CamelMessageInfo *mi);
gboolean camel_message_info_set_uid (CamelMessageInfo *mi,
const gchar *uid);
guint32 camel_message_info_get_flags (const CamelMessageInfo *mi);
gboolean camel_message_info_set_flags (CamelMessageInfo *mi,
guint32 mask,
guint32 set);
gboolean camel_message_info_get_user_flag
(const CamelMessageInfo *mi,
const gchar *name);
gboolean camel_message_info_set_user_flag
(CamelMessageInfo *mi,
const gchar *name,
gboolean state);
const CamelNamedFlags *
camel_message_info_get_user_flags
(const CamelMessageInfo *mi);
CamelNamedFlags *
camel_message_info_dup_user_flags
(const CamelMessageInfo *mi);
gboolean
camel_message_info_take_user_flags
(CamelMessageInfo *mi,
CamelNamedFlags *user_flags);
const gchar * camel_message_info_get_user_tag (const CamelMessageInfo *mi,
const gchar *name);
gchar * camel_message_info_dup_user_tag (const CamelMessageInfo *mi,
const gchar *name);
gboolean camel_message_info_set_user_tag (CamelMessageInfo *mi,
const gchar *name,
const gchar *value);
const CamelNameValueArray *
camel_message_info_get_user_tags
(const CamelMessageInfo *mi);
CamelNameValueArray *
camel_message_info_dup_user_tags
(const CamelMessageInfo *mi);
gboolean camel_message_info_take_user_tags
(CamelMessageInfo *mi,
CamelNameValueArray *user_tags);
const gchar * camel_message_info_get_subject (const CamelMessageInfo *mi);
gboolean camel_message_info_set_subject (CamelMessageInfo *mi,
const gchar *subject);
const gchar * camel_message_info_get_from (const CamelMessageInfo *mi);
gboolean camel_message_info_set_from (CamelMessageInfo *mi,
const gchar *from);
const gchar * camel_message_info_get_to (const CamelMessageInfo *mi);
gboolean camel_message_info_set_to (CamelMessageInfo *mi,
const gchar *to);
const gchar * camel_message_info_get_cc (const CamelMessageInfo *mi);
gboolean camel_message_info_set_cc (CamelMessageInfo *mi,
const gchar *cc);
const gchar * camel_message_info_get_mlist (const CamelMessageInfo *mi);
gboolean camel_message_info_set_mlist (CamelMessageInfo *mi,
const gchar *mlist);
guint32 camel_message_info_get_size (const CamelMessageInfo *mi);
gboolean camel_message_info_set_size (CamelMessageInfo *mi,
guint32 size);
gint64 camel_message_info_get_date_sent
(const CamelMessageInfo *mi);
gboolean camel_message_info_set_date_sent
(CamelMessageInfo *mi,
gint64 date_sent);
gint64 camel_message_info_get_date_received
(const CamelMessageInfo *mi);
gboolean camel_message_info_set_date_received
(CamelMessageInfo *mi,
gint64 date_received);
guint64 camel_message_info_get_message_id
(const CamelMessageInfo *mi);
gboolean camel_message_info_set_message_id
(CamelMessageInfo *mi,
guint64 message_id);
const GArray * camel_message_info_get_references
(const CamelMessageInfo *mi);
GArray * camel_message_info_dup_references
(const CamelMessageInfo *mi);
gboolean camel_message_info_take_references
(CamelMessageInfo *mi,
GArray *references);
const CamelNameValueArray *
camel_message_info_get_headers (const CamelMessageInfo *mi);
CamelNameValueArray *
camel_message_info_dup_headers (const CamelMessageInfo *mi);
gboolean camel_message_info_take_headers (CamelMessageInfo *mi,
CamelNameValueArray *headers);
const gchar * camel_message_info_get_user_header
(const CamelMessageInfo *mi,
const gchar *name);
gchar * camel_message_info_dup_user_header
(const CamelMessageInfo *mi,
const gchar *name);
gboolean camel_message_info_set_user_header
(CamelMessageInfo *mi,
const gchar *name,
const gchar *value);
const CamelNameValueArray *
camel_message_info_get_user_headers
(const CamelMessageInfo *mi);
CamelNameValueArray *
camel_message_info_dup_user_headers
(const CamelMessageInfo *mi);
gboolean camel_message_info_take_user_headers
(CamelMessageInfo *mi,
CamelNameValueArray *headers);
const gchar * camel_message_info_get_preview (const CamelMessageInfo *mi);
gchar * camel_message_info_dup_preview (const CamelMessageInfo *mi);
gboolean camel_message_info_set_preview (CamelMessageInfo *mi,
const gchar *preview);
/* Debugging functions */
void camel_message_info_dump (CamelMessageInfo *mi);
G_END_DECLS
#endif /* CAMEL_MESSAGE_INFO_H */