2000-01-10 Miguel de Icaza <miguel@gnu.org> * widgets/shortcut-bar/e-shortcut-bar.c (e_shortcut_bar_add_item): Use e_bar_set_item_data. Drop item_url; Require image argument; Require user data argument. 2000-01-09 Miguel de Icaza <miguel@gnu.org> * widgets/shortcut-bar/e-icon-bar.c (e_icon_bar_init): Turn on anti-aliasing. svn path=/trunk/; revision=1573
247 lines
5.1 KiB
C
247 lines
5.1 KiB
C
/*
|
|
* e-folder.c: Abstract class for Evolution folders
|
|
*
|
|
* Author:
|
|
* Miguel de Icaza (miguel@helixcode.com)
|
|
*
|
|
* (C) 2000 Helix Code, Inc.
|
|
*/
|
|
#include <config.h>
|
|
#include <gtk/gtksignal.h>
|
|
#include <libgnome/libgnome.h>
|
|
#include "e-util/e-util.h"
|
|
#include "e-folder.h"
|
|
|
|
#define PARENT_TYPE gtk_object_get_type ()
|
|
|
|
static GtkObjectClass *parent_class;
|
|
|
|
#define EFC(o) E_FOLDER_CLASS (GTK_OBJECT (o)->klass)
|
|
|
|
enum {
|
|
CHANGED,
|
|
LAST_SIGNAL
|
|
};
|
|
static guint efolder_signals [LAST_SIGNAL] = { 0, };
|
|
|
|
static void
|
|
e_folder_destroy (GtkObject *object)
|
|
{
|
|
EFolder *efolder = E_FOLDER (object);
|
|
|
|
if (efolder->uri)
|
|
g_free (efolder->uri);
|
|
|
|
if (efolder->desc)
|
|
g_free (efolder->desc);
|
|
|
|
if (efolder->home_page)
|
|
g_free (efolder->home_page);
|
|
|
|
parent_class->destroy (object);
|
|
}
|
|
|
|
static void
|
|
e_folder_class_init (GtkObjectClass *object_class)
|
|
{
|
|
parent_class = gtk_type_class (PARENT_TYPE);
|
|
|
|
object_class->destroy = e_folder_destroy;
|
|
|
|
efolder_signals [CHANGED] =
|
|
gtk_signal_new ("changed",
|
|
GTK_RUN_LAST,
|
|
object_class->type,
|
|
GTK_SIGNAL_OFFSET (EFolderClass, changed),
|
|
gtk_marshal_NONE__NONE,
|
|
GTK_TYPE_NONE,
|
|
0);
|
|
/* Register our signals */
|
|
gtk_object_class_add_signals (
|
|
object_class, efolder_signals, LAST_SIGNAL);
|
|
}
|
|
|
|
static void
|
|
e_folder_init (GtkObject *object)
|
|
{
|
|
}
|
|
|
|
E_MAKE_TYPE (e_folder, "EFolder", EFolder, e_folder_class_init, e_folder_init, PARENT_TYPE)
|
|
|
|
void
|
|
e_folder_set_uri (EFolder *efolder, const char *uri)
|
|
{
|
|
g_return_if_fail (efolder != NULL);
|
|
g_return_if_fail (E_IS_FOLDER (efolder));
|
|
g_return_if_fail (uri != NULL);
|
|
|
|
if (efolder->uri)
|
|
g_free (efolder->uri);
|
|
|
|
efolder->uri = g_strdup (uri);
|
|
}
|
|
|
|
const char *
|
|
e_folder_get_uri (EFolder *efolder)
|
|
{
|
|
g_return_val_if_fail (efolder != NULL, NULL);
|
|
g_return_val_if_fail (E_IS_FOLDER (efolder), NULL);
|
|
|
|
return efolder->uri;
|
|
}
|
|
|
|
void
|
|
e_folder_set_description (EFolder *efolder, const char *desc)
|
|
{
|
|
g_return_if_fail (efolder != NULL);
|
|
g_return_if_fail (E_IS_FOLDER (efolder));
|
|
g_return_if_fail (desc != NULL);
|
|
|
|
if (efolder->desc)
|
|
g_free (efolder->desc);
|
|
|
|
efolder->desc = g_strdup (desc);
|
|
}
|
|
|
|
const char *
|
|
e_folder_get_description (EFolder *efolder)
|
|
{
|
|
g_return_val_if_fail (efolder != NULL, NULL);
|
|
g_return_val_if_fail (E_IS_FOLDER (efolder), NULL);
|
|
|
|
return efolder->desc;
|
|
}
|
|
|
|
void
|
|
e_folder_set_home_page (EFolder *efolder, const char *home_page)
|
|
{
|
|
g_return_if_fail (efolder != NULL);
|
|
g_return_if_fail (E_IS_FOLDER (efolder));
|
|
g_return_if_fail (home_page != NULL);
|
|
|
|
if (efolder->home_page)
|
|
g_free (efolder->home_page);
|
|
|
|
efolder->home_page = g_strdup (home_page);
|
|
}
|
|
|
|
const char *
|
|
e_folder_get_home_page (EFolder *efolder)
|
|
{
|
|
g_return_val_if_fail (efolder != NULL, NULL);
|
|
g_return_val_if_fail (E_IS_FOLDER (efolder), NULL);
|
|
|
|
return efolder->home_page;
|
|
}
|
|
|
|
const char *
|
|
e_folder_get_type_name (EFolder *efolder)
|
|
{
|
|
g_return_val_if_fail (efolder != NULL, NULL);
|
|
g_return_val_if_fail (E_IS_FOLDER (efolder), NULL);
|
|
|
|
switch (efolder->type){
|
|
case E_FOLDER_MAIL:
|
|
return _("A folder containing mail items");
|
|
|
|
case E_FOLDER_CONTACTS:
|
|
return _("A folder containing contacts");
|
|
|
|
case E_FOLDER_CALENDAR:
|
|
return _("A folder containing calendar entries");
|
|
|
|
case E_FOLDER_TASKS:
|
|
return _("A folder containing tasks");
|
|
|
|
default:
|
|
g_assert_not_reached ();
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
void
|
|
e_folder_construct (EFolder *efolder, EFolderType type,
|
|
const char *uri, const char *name,
|
|
const char *desc, const char *home_page,
|
|
const char *view_name)
|
|
{
|
|
g_return_if_fail (efolder != NULL);
|
|
g_return_if_fail (E_IS_FOLDER (efolder));
|
|
|
|
/* EFolders are self-owned */
|
|
GTK_OBJECT_UNSET_FLAGS (GTK_OBJECT (efolder), GTK_FLOATING);
|
|
|
|
if (uri)
|
|
efolder->uri = g_strdup (uri);
|
|
if (name)
|
|
efolder->name = g_strdup (name);
|
|
if (desc)
|
|
efolder->desc = g_strdup (desc);
|
|
if (home_page)
|
|
efolder->home_page = g_strdup (home_page);
|
|
if (view_name)
|
|
efolder->view_name = g_strdup (view_name);
|
|
|
|
efolder->type = type;
|
|
}
|
|
|
|
EFolder *
|
|
e_folder_new (EFolderType type,
|
|
const char *uri, const char *name,
|
|
const char *desc, const char *home_page,
|
|
const char *view_name)
|
|
{
|
|
EFolder *efolder;
|
|
|
|
efolder = gtk_type_new (e_folder_get_type ());
|
|
|
|
e_folder_construct (efolder, type, uri, name, desc, home_page, view_name);
|
|
return efolder;
|
|
}
|
|
|
|
const char *
|
|
e_folder_get_name (EFolder *efolder)
|
|
{
|
|
g_return_val_if_fail (efolder != NULL, NULL);
|
|
g_return_val_if_fail (E_IS_FOLDER (efolder), NULL);
|
|
|
|
return efolder->name;
|
|
}
|
|
|
|
void
|
|
e_folder_set_name (EFolder *efolder, const char *name)
|
|
{
|
|
g_return_if_fail (efolder != NULL);
|
|
g_return_if_fail (E_IS_FOLDER (efolder));
|
|
|
|
if (efolder->name)
|
|
g_free (efolder->name);
|
|
|
|
efolder->name = g_strdup (name);
|
|
}
|
|
|
|
const char *
|
|
e_folder_get_view_name (EFolder *efolder)
|
|
{
|
|
g_return_val_if_fail (efolder != NULL, NULL);
|
|
g_return_val_if_fail (E_IS_FOLDER (efolder), NULL);
|
|
|
|
return efolder->view_name;
|
|
}
|
|
|
|
void
|
|
e_folder_set_view_name (EFolder *efolder, const char *view_name)
|
|
{
|
|
g_return_if_fail (efolder != NULL);
|
|
g_return_if_fail (E_IS_FOLDER (efolder));
|
|
|
|
if (efolder->view_name)
|
|
g_free (efolder->view_name);
|
|
|
|
efolder->view_name = g_strdup (view_name);
|
|
|
|
gtk_signal_emit (GTK_OBJECT (efolder),
|
|
efolder_signals [CHANGED]);
|
|
}
|