The folder's display name.
The folder's fully qualified name.
A #CamelThreeState persistent option of the folder, which can override global option to mark messages as seen after certain interval.
Timeout in milliseconds for marking messages as seen.
The #CamelStore to which the folder belongs.
The file in which to store persistent property values for this instance.
Appends message
to folder
asynchronously. Only the flag and tag data
from info
are used. If info
is %NULL, no flags or tags will be set.
When the operation is finished, callback
will be called. You can
then call camel_folder_append_message_finish() to get the result of
the operation.
a #CamelMimeMessage
a #CamelMessageInfo with additional flags/etc to set on the new message, or %NULL
the I/O priority of the request
optional #GCancellable object, or %NULL
a #GAsyncReadyCallback to call when the request is satisfied
Finishes the operation started with camel_folder_append_message_finish().
a #GAsyncResult
Appends message
to folder
. Only the flag and tag data from info
are used. If info
is %NULL, no flags or tags will be set.
a #CamelMimeMessage
a #CamelMessageInfo with additional flags/etc to set on the new message, or %NULL
optional #GCancellable object, or %NULL
Creates a binding between source_property
on source
and target_property
on target
.
Whenever the source_property
is changed the target_property
is
updated using the same value. For instance:
g_object_bind_property (action, "active", widget, "sensitive", 0);
Will result in the "sensitive" property of the widget #GObject instance to be updated with the same value of the "active" property of the action #GObject instance.
If flags
contains %G_BINDING_BIDIRECTIONAL then the binding will be mutual:
if target_property
on target
changes then the source_property
on source
will be updated as well.
The binding will automatically be removed when either the source
or the
target
instances are finalized. To remove the binding without affecting the
source
and the target
you can just call g_object_unref() on the returned
#GBinding instance.
Removing the binding by calling g_object_unref() on it must only be done if
the binding, source
and target
are only used from a single thread and it
is clear that both source
and target
outlive the binding. Especially it
is not safe to rely on this if the binding, source
or target
can be
finalized from different threads. Keep another reference to the binding and
use g_binding_unbind() instead to be on the safe side.
A #GObject can have multiple bindings.
the property on source
to bind
the target #GObject
the property on target
to bind
flags to pass to #GBinding
Creates a binding between source_property
on source
and target_property
on target,
allowing you to set the transformation functions to be used by
the binding.
This function is the language bindings friendly version of g_object_bind_property_full(), using #GClosures instead of function pointers.
the property on source
to bind
the target #GObject
the property on target
to bind
flags to pass to #GBinding
a #GClosure wrapping the transformation function from the source
to the target,
or %NULL to use the default
a #GClosure wrapping the transformation function from the target
to the source,
or %NULL to use the default
Emits the #CamelFolder::changed signal from an idle source on the main loop. The idle source's priority is #G_PRIORITY_LOW.
change information for folder
Compares two uids. The return value meaning is the same as in any other compare function.
Note that the default compare function expects a decimal number at the beginning of a uid, thus if provider uses different uid values, then it should subclass this function.
The first uid.
the second uid.
Searches the folder for count of messages matching the given search expression.
a search expression
a #GCancellable
Marks folder
as deleted and performs any required cleanup.
This also emits the #CamelFolder::deleted signal from an idle source on the main loop. The idle source's priority is #G_PRIORITY_HIGH_IDLE.
Thread-safe variation of camel_folder_get_description().
Use this function when accessing folder
from multiple threads.
The returned string should be freed with g_free() when no longer needed.
Thread-safe variation of camel_folder_get_display_name().
Use this function when accessing folder
from multiple threads.
The returned string should be freed with g_free() when no longer needed.
Thread-safe variation of camel_folder_get_full_name().
Use this function when accessing folder
from multiple threads.
The returned string should be freed with g_free() when no longer needed.
Asynchronously deletes messages which have been marked as "DELETED".
When the operation is finished, callback
will be called. You can then
call camel_folder_expunge_finish() to get the result of the operation.
the I/O priority of the request
optional #GCancellable object, or %NULL
a #GAsyncReadyCallback to call when the request is satisfied
Finishes the operation started with camel_folder_expunge().
a #GAsyncResult
Deletes messages which have been marked as "DELETED".
optional #GCancellable object, or %NULL
This function is intended for #GObject implementations to re-enforce a [floating][floating-ref] object reference. Doing this is seldom required: all #GInitiallyUnowneds are created with a floating reference which usually just needs to be sunken by calling g_object_ref_sink().
Frees the provided array and its contents. Used by #CamelFolder subclasses as an implementation for free_uids when the provided information was created explicitly by the corresponding get_ call.
an array of uids
Frees the provided array but not its contents. Used by #CamelFolder subclasses as an implementation for free_uids or free_summary when the returned array needs to be freed but its contents come from "static" information.
an array of uids or #CamelMessageInfo
Frees the summary array returned by camel_folder_get_summary().
the summary array to free
Frees the array of UIDs returned by camel_folder_get_uids().
the array of uids to free
Freezes the folder so that a series of operation can be performed without "folder_changed" signals being emitted. When the folder is later thawed with camel_folder_thaw(), the suppressed signals will be emitted.
Increases the freeze count on object
. If the freeze count is
non-zero, the emission of "notify" signals on object
is
stopped. The signals are queued until the freeze count is decreased
to zero. Duplicate notifications are squashed so that at most one
#GObject::notify signal is emitted for each property modified while the
object is frozen.
This is necessary for accessors that modify multiple properties to prevent premature notification while the object is still being modified.
Gets a named field from the objects table of associations (see g_object_set_data()).
name of the key for that association
Returns a description of the folder suitable for displaying to the user.
Returns the display name for the folder. The fully qualified name can be obtained with camel_folder_get_full_name().
Returns the fully qualified name of the folder.
Asynchronously gets the message corresponding to message_uid
from folder
.
When the operation is finished, callback
will be called. You can then
call camel_folder_get_message_finish() to get the result of the operation.
the message UID
the I/O priority of the request
optional #GCancellable object, or %NULL
a #GAsyncReadyCallback to call when the request is satisfied
Gets the message corresponding to message_uid
from the folder
cache,
if available locally. This should not do any network I/O, only check
if message is already downloaded and return it quickly, not being
blocked by the folder's lock. Returning NULL is not considered as
an error, it just means that the message is still to-be-downloaded.
Note: This function is called automatically within camel_folder_get_message_sync().
the message UID
optional #GCancellable object, or %NULL
Finishes the operation started with camel_folder_get_message().
a #GAsyncResult
Retrieve the #CamelMessageInfo for the specified uid
.
the uid of a message
Gets the message corresponding to message_uid
from folder
.
the message UID
optional #GCancellable object, or %NULL
Gets a property of an object.
The value
can be:
In general, a copy is made of the property contents and the caller is responsible for freeing the memory by calling g_value_unset().
Note that g_object_get_property() is really intended for language bindings, g_object_get() is much more convenient for C programming.
the name of the property to get
return location for the property value
This function gets back user data pointers stored via g_object_set_qdata().
A #GQuark, naming the user data pointer
Asynchronously gets a list of known quotas for folder
.
When the operation is finished, callback
will be called. You can
then call camel_folder_get_quota_info_finish() to get the result of
the operation.
the I/O priority of the request
optional #GCancellable object, or %NULL
a #GAsyncReadyCallback to call when the request is satisfied
Finishes the operation started with camel_folder_get_quota_info(). Free the returned #CamelFolderQuotaInfo struct with camel_folder_quota_info_free().
If quotas are not supported for folder,
the function returns %NULL
and sets error
to #G_IO_ERROR_NOT_SUPPORTED.
a #GAsyncResult
Gets a list of known quotas for folder
. Free the returned
#CamelFolderQuotaInfo struct with camel_folder_quota_info_free().
If quotas are not supported for folder,
the function returns %NULL
and sets error
to #G_IO_ERROR_NOT_SUPPORTED.
optional #GCancellable object, or %NULL
Returns the name of the file in which persistent property values for
object
are stored. The file is used by camel_object_state_write()
and camel_object_state_read() to save and restore object state.
This returns the summary information for the folder. This array should not be modified, and must be freed with camel_folder_free_summary().
Get the list of UIDs available in a folder. This routine is useful for finding what messages are available when the folder does not support summaries. The returned array should not be modified, and must be freed by passing it to camel_folder_free_uids().
Returns the known-uncached uids from a list of uids. It may return uids which are locally cached but should never filter out a uid which is not locally cached. Free the result by called camel_folder_free_uids(). Frees the array of UIDs returned by camel_folder_get_uids().
the array of uids to filter down to uncached ones.
Gets n_properties
properties for an object
.
Obtained properties will be set to values
. All properties must be valid.
Warnings will be emitted and undefined behaviour may result if invalid
properties are passed in.
the names of each property to get
the values of each property to get
Get whether or not the folder has a summary.
Checks whether object
has a [floating][floating-ref] reference.
Locks folder
. Unlock it with camel_folder_unlock().
Emits a "notify" signal for the property property_name
on object
.
When possible, eg. when signaling a property change from within the class that registered the property, you should use g_object_notify_by_pspec() instead.
Note that emission of the notify signal may be blocked with g_object_freeze_notify(). In this case, the signal emissions are queued and will be emitted (in reverse order) when g_object_thaw_notify() is called.
the name of a property installed on the class of object
.
Emits a "notify" signal for the property specified by pspec
on object
.
This function omits the property name lookup, hence it is faster than g_object_notify().
One way to avoid using g_object_notify() from within the class that registered the properties, and using g_object_notify_by_pspec() instead, is to store the GParamSpec used with g_object_class_install_property() inside a static array, e.g.:
enum
{
PROP_0,
PROP_FOO,
PROP_LAST
};
static GParamSpec *properties[PROP_LAST];
static void
my_object_class_init (MyObjectClass *klass)
{
properties[PROP_FOO] = g_param_spec_int ("foo", "Foo", "The foo",
0, 100,
50,
G_PARAM_READWRITE);
g_object_class_install_property (gobject_class,
PROP_FOO,
properties[PROP_FOO]);
}
and then notify a change on the "foo" property with:
g_object_notify_by_pspec (self, properties[PROP_FOO]);
the #GParamSpec of a property installed on the class of object
.
Lets the folder
know that it should refresh its content
the next time from fresh. This is useful for remote accounts,
to fully re-check the folder content against the server.
Delete the local cache of all messages between these uids.
When the operation is finished, callback
will be called. You can then
call camel_folder_purge_message_cache_finish() to get the result of the
operation.
the start message UID
the end message UID
the I/O priority of the request
optional #GCancellable object, or %NULL
a #GAsyncReadyCallback to call when the request is satisfied
Finishes the operation started with camel_folder_purge_message_cache().
a #GAsyncResult
Delete the local cache of all messages between these uids.
the start message UID
the end message UID
optional #GCancellable object, or %NULL
Increase the reference count of object,
and possibly remove the
[floating][floating-ref] reference, if object
has a floating reference.
In other words, if the object is floating, then this call "assumes ownership" of the floating reference, converting it to a normal reference by clearing the floating flag while leaving the reference count unchanged. If the object is not floating, then this call adds a new normal reference increasing the reference count by one.
Since GLib 2.56, the type of object
will be propagated to the return type
under the same conditions as for g_object_ref().
Asynchronously synchronizes a folder's summary with its backing store.
When the operation is finished, callback
will be called. You can then
call camel_folder_refresh_info_finish() to get the result of the operation.
the I/O priority of the request
optional #GCancellable object, or %NULL
a #GAsyncReadyCallback to call when the request is satisfied
Finishes the operation started with camel_folder_refresh_info().
a #GAsyncResult
Synchronizes a folder's summary with its backing store.
optional #GCancellable object, or %NULL
Marks folder
as renamed.
This also emits the #CamelFolder::renamed signal from an idle source on the main loop. The idle source's priority is #G_PRIORITY_HIGH_IDLE.
NOTE: This is an internal function used by camel stores, no locking is performed on the folder.
new name for the folder
Releases all references to other objects. This can be used to break reference cycles.
This function should only be called from object system implementations.
Searches the folder for messages matching the given search expression.
a search expression
a #GCancellable
Search a subset of uid's for an expression match.
search expression
array of uid's to match against.
a #GCancellable
Free the result of a search as gotten by camel_folder_search_by_expression() or camel_folder_search_by_uids().
search results to free
Each object carries around a table of associations from strings to pointers. This function lets you set an association.
If the object already had an association with that name, the old association will be destroyed.
Internally, the key
is converted to a #GQuark using g_quark_from_string().
This means a copy of key
is kept permanently (even after object
has been
finalized) — so it is recommended to only use a small, bounded set of values
for key
in your program, to avoid the #GQuark storage growing unbounded.
name of the key
data to associate with that key
Sets a description of the folder suitable for displaying to the user.
a description of the folder
Sets the display name for the folder.
a display name for the folder
Sets folder flags (bit-or of #CamelFolderFlags) for the folder
.
flags (bit-or of #CamelFolderFlags) to set
Sets the fully qualified name of the folder.
a fully qualified name for the folder
Sets whether folder locking (camel_folder_lock() and camel_folder_unlock()) should be used. When set to %FALSE, the two functions do nothing and simply return.
a value to set
Sets whether the messages in this folder
should be marked
as seen automatically. An inconsistent state means to use
global option.
a #CamelThreeState as the value to set
Sets the timeout
in milliseconds for marking messages
as seen in this folder
. Whether the timeout is used
depends on camel_folder_get_mark_seen().
a timeout in milliseconds
Sets those flags specified by mask
to the values specified by set
on the indicated message. (This may or may not persist after the
folder or store is closed. See camel_folder_get_permanent_flags())
E.g. to set the deleted flag and clear the draft flag, use camel_folder_set_message_flags (folder, uid, CAMEL_MESSAGE_DELETED|CAMEL_MESSAGE_DRAFT, CAMEL_MESSAGE_DELETED);
the UID of a message in folder
a mask of #CamelMessageFlags bit-or values to use
the flags to ser, also bit-or of #CamelMessageFlags
Sets a property on an object.
the name of the property to set
the value
Sets the name of the file in which persistent property values for
object
are stored. The file is used by camel_object_state_write()
and camel_object_state_read() to save and restore object state.
path to a local file
Sorts the array of UIDs.
array of uids
Read persistent object state from #CamelObject:state-filename.
Write persistent object state #CamelObject:state-filename.
Remove a specified datum from the object's data associations, without invoking the association's destroy handler.
name of the key
This function gets back user data pointers stored via
g_object_set_qdata() and removes the data
from object
without invoking its destroy() function (if any was
set).
Usually, calling this function is only required to update
user data pointers with a destroy notifier, for example:
void
object_add_to_user_list (GObject *object,
const gchar *new_string)
{
// the quark, naming the object data
GQuark quark_string_list = g_quark_from_static_string ("my-string-list");
// retrieve the old string list
GList *list = g_object_steal_qdata (object, quark_string_list);
// prepend new string
list = g_list_prepend (list, g_strdup (new_string));
// this changed 'list', so we need to set it again
g_object_set_qdata_full (object, quark_string_list, list, free_string_list);
}
static void
free_string_list (gpointer data)
{
GList *node, *list = data;
for (node = list; node; node = node->next)
g_free (node->data);
g_list_free (list);
}
Using g_object_get_qdata() in the above example, instead of g_object_steal_qdata() would have left the destroy function set, and thus the partial string list would have been freed upon g_object_set_qdata_full().
A #GQuark, naming the user data pointer
Synchronizes any changes that have been made to folder
to its backing
store asynchronously, optionally expunging deleted messages as well.
When the operation is finished, callback
will be called. You can then
call camel_folder_synchronize_finish() to get the result of the operation.
whether to expunge after synchronizing
the I/O priority of the request
optional #GCancellable object, or %NULL
a #GAsyncReadyCallback to call when the request is satisfied
Finishes the operation started with camel_folder_synchronize().
a #GAsyncResult
Asynchronously ensure that a message identified by message_uid
has been
synchronized in folder
so that calling camel_folder_get_message() on it
later will work in offline mode.
When the operation is finished, callback
will be called. You can then
call camel_folder_synchronize_message_finish() to get the result of the
operation.
a message UID
the I/O priority of the request
optional #GCancellable object, or %NULL
a #GAsyncReadyCallback to call when the request is satisfied
Finishes the operation started with camel_folder_synchronize_message().
a #GAsyncResult
Ensure that a message identified by message_uid
has been synchronized in
folder
so that calling camel_folder_get_message() on it later will work
in offline mode.
a message UID
optional #GCancellable object, or %NULL
Synchronizes any changes that have been made to folder
to its
backing store, optionally expunging deleted messages as well.
whether to expunge after synchronizing
optional #GCancellable object, or %NULL
Sets a #CamelFolderSummary of the folder. It consumes the summary
.
This is supposed to be called only by the descendants of the #CamelFolder and only at the construction time. Calling this function twice yeilds to an error.
a #CamelFolderSummary
Thaws the folder and emits any pending folder_changed signals.
Reverts the effect of a previous call to
g_object_freeze_notify(). The freeze count is decreased on object
and when it reaches zero, queued "notify" signals are emitted.
Duplicate notifications for each property are squashed so that at most one #GObject::notify signal is emitted for each property, in the reverse order in which they have been queued.
It is an error to call this function when the freeze count is zero.
Asynchronously copies or moves messages from one folder to another.
If the source
or destination
folders have the same parent store,
this may be more efficient than using camel_folder_append_message().
When the operation is finished, callback
will be called. You can then
call camel_folder_transfer_messages_to_finish() to get the result of the
operation.
message UIDs in source
the destination #CamelFolder
whether or not to delete the original messages
the I/O priority of the request
optional #GCancellable object, or %NULL
a #GAsyncReadyCallback to call when the request is satisfied
Finishes the operation started with camel_folder_transfer_messages_to().
a #GAsyncResult
Copies or moves messages from one folder to another. If the
source
and destination
folders have the same parent_store, this
may be more efficient than using camel_folder_append_message_sync().
message UIDs in source
the destination #CamelFolder
whether or not to delete the original messages
optional #GCancellable object, or %NULL
Unlocks folder,
previously locked with camel_folder_lock().
Decreases the reference count of object
. When its reference count
drops to 0, the object is finalized (i.e. its memory is freed).
If the pointer to the #GObject may be reused in future (for example, if it is an instance variable of another object), it is recommended to clear the pointer to %NULL rather than retain a dangling pointer to a potentially invalid #GObject instance. Use g_clear_object() for this.
This function essentially limits the life time of the closure
to
the life time of the object. That is, when the object is finalized,
the closure
is invalidated by calling g_closure_invalidate() on
it, in order to prevent invocations of the closure with a finalized
(nonexisting) object. Also, g_object_ref() and g_object_unref() are
added as marshal guards to the closure,
to ensure that an extra
reference count is held on object
during invocation of the
closure
. Usually, this function will be called on closures that
use this object
as closure data.
#GClosure to watch
Find the #GParamSpec with the given name for an
interface. Generally, the interface vtable passed in as g_iface
will be the default vtable from g_type_default_interface_ref(), or,
if you know the interface has already been loaded,
g_type_default_interface_peek().
any interface vtable for the interface, or the default vtable for the interface
name of a property to look up.
Add a property to an interface; this is only useful for interfaces that are added to GObject-derived types. Adding a property to an interface forces all objects classes with that interface to have a compatible property. The compatible property could be a newly created #GParamSpec, but normally g_object_class_override_property() will be used so that the object class only needs to provide an implementation and inherits the property description, default value, bounds, and so forth from the interface property.
This function is meant to be called from the interface's default
vtable initialization function (the class_init
member of
#GTypeInfo.) It must not be called after after class_init
has
been called for any object types implementing this interface.
If pspec
is a floating reference, it will be consumed.
any interface vtable for the interface, or the default vtable for the interface.
the #GParamSpec for the new property
Lists the properties of an interface.Generally, the interface
vtable passed in as g_iface
will be the default vtable from
g_type_default_interface_ref(), or, if you know the interface has
already been loaded, g_type_default_interface_peek().
any interface vtable for the interface, or the default vtable for the interface
Creates a new instance of a #GObject subtype and sets its properties.
Construction parameters (see %G_PARAM_CONSTRUCT, %G_PARAM_CONSTRUCT_ONLY) which are not explicitly specified are set to their default values.
the type id of the #GObject subtype to instantiate
an array of #GParameter
The folder's description.