#include "editgroup.h"
#include "editaddress.h"
#include "editbook.h"
-#include "ldif.h"
#include "importldif.h"
-#include "mutt.h"
#include "importmutt.h"
+#include "importpine.h"
#ifdef USE_JPILOT
#include "jpilot.h"
#include "addrselect.h"
#include "addrclip.h"
#include "addrgather.h"
+#include "adbookbase.h"
+#include "exphtmldlg.h"
typedef enum
{
GtkCTreeNode *node);
static GtkCTreeNode *addressbook_find_group_node (GtkCTreeNode *parent,
ItemGroup *group);
-static GtkCTreeNode *addressbook_find_folder_node( GtkCTreeNode *parent,
- ItemFolder *folder );
-
-static void addressbook_delete_object (AddressObject *obj);
-
static void key_pressed (GtkWidget *widget,
GdkEventKey *event,
gpointer data);
static void addressbook_import_ldif_cb ( void );
static void addressbook_import_mutt_cb ( void );
+static void addressbook_import_pine_cb ( void );
+static void addressbook_export_html_cb ( void );
static void addressbook_clip_cut_cb ( void );
static void addressbook_clip_copy_cb ( void );
static void addressbook_clip_paste_cb ( void );
{N_("/_Address/_Edit"), "<alt>Return", addressbook_edit_address_cb, 0, NULL},
{N_("/_Address/_Delete"), NULL, addressbook_delete_address_cb, 0, NULL},
{N_("/_Tools/---"), NULL, NULL, 0, "<Separator>"},
- {N_("/_Tools/Import _LDIF file"), NULL, addressbook_import_ldif_cb, 0, NULL},
- {N_("/_Tools/Import M_utt file"), NULL, addressbook_import_mutt_cb, 0, NULL},
+ {N_("/_Tools/Import _LDIF file..."), NULL, addressbook_import_ldif_cb, 0, NULL},
+ {N_("/_Tools/Import M_utt file..."), NULL, addressbook_import_mutt_cb, 0, NULL},
+ {N_("/_Tools/Import _Pine file..."), NULL, addressbook_import_pine_cb, 0, NULL},
+ {N_("/_Tools/---"), NULL, NULL, 0, "<Separator>"},
+ {N_("/_Tools/Export _HTML..."), NULL, addressbook_export_html_cb, 0, NULL},
{N_("/_Help"), NULL, NULL, 0, "<LastBranch>"},
{N_("/_Help/_About"), NULL, about_show, 0, NULL}
};
-/* New options to be added. */
-/*
- {N_("/_Tools"), NULL, NULL, 0, "<Branch>"},
- {N_("/_Tools/Import _Mozilla"), NULL, NULL, 0, NULL},
- {N_("/_Tools/Import _vCard"), NULL, NULL, 0, NULL},
- {N_("/_Tools/---"), NULL, NULL, 0, "<Separator>"},
- {N_("/_Tools/Export _LDIF file"), NULL, NULL, 0, NULL},
- {N_("/_Tools/Export v_Card"), NULL, NULL, 0, NULL},
-*/
-
static GtkItemFactoryEntry addressbook_tree_popup_entries[] =
{
{N_("/New _Address"), NULL, addressbook_new_address_cb, 0, NULL},
addressbook_load_tree();
gtk_ctree_select(GTK_CTREE(addrbook.ctree),
GTK_CTREE_NODE(GTK_CLIST(addrbook.ctree)->row_list));
- } else
+ }
+ else {
gtk_widget_hide(addrbook.window);
+ }
gtk_widget_show_all(addrbook.window);
-
addressbook_set_target_compose(target);
}
void addressbook_set_target_compose(Compose *target)
{
addrbook.target_compose = target;
-
addressbook_button_set_sensitive();
}
}
-static gint addressbook_close(void)
-{
+static gint addressbook_close( void ) {
gtk_widget_hide(addrbook.window);
addressbook_export_to_file();
return TRUE;
/* Test for read only */
iface = ds->interface;
if( iface->readOnly ) {
- aval = alertpanel( _("Delete address(es)"),
+ alertpanel( _("Delete address(es)"),
_("This address data is readonly and cannot be deleted."),
_("Close"), NULL, NULL );
return;
compose = addrbook.target_compose;
if( ! compose ) return;
+ /* Nothing selected, but maybe there is something in text entry */
+ addr = gtk_entry_get_text( GTK_ENTRY( addrbook.entry) );
+ if ( addr ) {
+ compose_entry_append(
+ compose, addr, (ComposeEntryType)data );
+ }
+
+ /* Select from address list */
list = addrselect_get_list( _addressSelect_ );
node = list;
while( node ) {
gboolean canAdd = FALSE;
gboolean canEditTr = TRUE;
gboolean editAddress = FALSE;
+ gboolean canExport = TRUE;
AddressTypeControlItem *atci = NULL;
AddressDataSource *ds = NULL;
AddressInterface *iface = NULL;
menu_set_sensitive( addrbook.menu_factory, atci->menuCommand, TRUE );
}
}
- canEditTr = FALSE;
+ canEditTr = canExport = FALSE;
}
else if( obj->type == ADDR_DATASOURCE ) {
AdapterDSource *ads = ADAPTER_DSOURCE(obj);
canAdd = canEdit = editAddress = TRUE;
}
if( ! iface->haveLibrary ) {
- canAdd = canEdit = editAddress = FALSE;
+ canAdd = canEdit = editAddress = canExport = FALSE;
}
}
else if( obj->type == ADDR_ITEM_FOLDER ) {
menu_set_sensitive( addrbook.menu_factory, "/File/Edit", canEditTr );
menu_set_sensitive( addrbook.menu_factory, "/File/Delete", canEditTr );
+
+ /* Export data */
+ menu_set_sensitive( addrbook.menu_factory, "/Tools/Export HTML...", canExport );
}
static void addressbook_tree_selected(GtkCTree *ctree, GtkCTreeNode *node,
if( name && parentNode ) {
/* Update node in tree view */
addressbook_change_node_name( node, name );
- gtk_ctree_sort_node(ctree, parentNode);
+ gtk_sctree_sort_node(ctree, parentNode);
gtk_ctree_expand( ctree, node );
gtk_ctree_select( ctree, node );
}
return NULL;
}
-/*
-* Search for specified child folder node in address index tree.
-* Enter: parent Parent node.
-* folder Folder to find.
-*/
-static GtkCTreeNode *addressbook_find_folder_node( GtkCTreeNode *parent, ItemFolder *folder ) {
- GtkCTreeNode *node = NULL;
- GtkCTreeRow *currRow;
-
- currRow = GTK_CTREE_ROW( parent );
- if( currRow ) {
- node = currRow->children;
- while( node ) {
- AddressObject *obj;
-
- obj = gtk_ctree_node_get_row_data( GTK_CTREE(addrbook.ctree), node );
- if( obj->type == ADDR_ITEM_FOLDER ) {
- ItemFolder *f = ADAPTER_FOLDER(obj)->itemFolder;
- if( f == folder ) return node;
- }
- currRow = GTK_CTREE_ROW(node);
- node = currRow->sibling;
- }
- }
- return NULL;
-}
-
static AddressBookFile *addressbook_get_book_file() {
AddressBookFile *abf = NULL;
AddressDataSource *ds = NULL;
while( (child = currRow->children) ) {
gtk_ctree_move( ctree, child, parent, node );
}
- gtk_ctree_sort_node( ctree, parent );
+ gtk_sctree_sort_node( ctree, parent );
}
}
/* Update tree node with node name */
if( node == NULL ) return;
addressbook_change_node_name( node, name );
- gtk_ctree_sort_node( ctree, parentNode );
+ gtk_sctree_sort_node( ctree, parentNode );
gtk_ctree_select( ctree, addrbook.opened );
}
FALSE, person->isOpened );
gtk_ctree_node_set_row_data(clist, nodePerson, person );
}
- gtk_ctree_sort_node(GTK_CTREE(clist), NULL);
+ gtk_sctree_sort_node(GTK_CTREE(clist), NULL);
}
/* Free up the list */
mgu_clear_list( items );
atci->iconXpmOpen, atci->maskXpmOpen,
FALSE, FALSE);
gtk_ctree_node_set_row_data(clist, nodeGroup, group );
- gtk_ctree_sort_node(clist, NULL);
+ gtk_sctree_sort_node(clist, NULL);
}
/* Free up the list */
mgu_clear_list( items );
g_list_free( items );
}
-/*
- * Load data sources into list.
- */
-static void addressbook_node_load_datasource( GtkCTree *clist, AddressObject *obj ) {
- AdapterInterface *adapter;
- AddressInterface *iface;
- AddressTypeControlItem *atci = NULL;
- GtkCTreeNode *newNode, *node;
- GtkCTreeRow *row;
- GtkCell *cell = NULL;
- gchar *text[N_COLS];
-
- adapter = ADAPTER_INTERFACE(obj);
- if( adapter == NULL ) return;
- iface = adapter->interface;
- atci = adapter->atci;
- if( atci == NULL ) return;
-
- /* Create nodes in list copying values for data sources in tree */
- row = GTK_CTREE_ROW( adapter->treeNode );
- if( row ) {
- node = row->children;
- while( node ) {
- gpointer data;
-
- data = gtk_ctree_node_get_row_data( clist, node );
- row = GTK_CTREE_ROW( node );
- cell = ( ( GtkCListRow * )row )->cell;
- text[COL_NAME] = cell->u.text;
- text[COL_ADDRESS] = NULL;
- text[COL_REMARKS] = NULL;
- newNode = gtk_ctree_insert_node( clist, NULL, NULL,
- text, FOLDER_SPACING,
- atci->iconXpm, atci->maskXpm,
- atci->iconXpmOpen, atci->maskXpmOpen,
- FALSE, FALSE);
- /*
- gtk_ctree_node_set_row_data( clist, newNode, data );
- gtk_ctree_node_set_row_data_full( clist, newNode, NULL, NULL );
- */
- node = row->sibling;
- }
- }
- gtk_ctree_sort_node( clist, NULL );
-}
-
/*
* Search ctree widget callback function.
* Enter: pA Pointer to node.
}
}
- gtk_ctree_sort_node(ctree, node);
+ gtk_sctree_sort_node(ctree, node);
return added;
}
atci->treeLeaf, atci->treeExpand );
gtk_ctree_node_set_row_data_full( ctree, newNode, adapter,
addressbook_free_treenode );
- gtk_ctree_sort_node( ctree, node );
+ gtk_sctree_sort_node( ctree, node );
return newNode;
}
addressbook_node_add_group( newNode, ds, item );
listItems = g_list_next( listItems );
}
- gtk_ctree_sort_node( ctree, node );
+ gtk_sctree_sort_node( ctree, node );
return newNode;
}
-static void addressbook_delete_object(AddressObject *obj) {
- AdapterDSource *ads = NULL;
- AddressDataSource *ds = NULL;
- if (!obj) return;
-
- /* Remove data source. */
- /* printf( "Delete obj type : %d\n", obj->type ); */
-
- ads = ADAPTER_DSOURCE(obj);
- if( ads == NULL ) return;
- ds = ads->dataSource;
- if( ds == NULL ) return;
-
- /* Remove data source */
- if( addrindex_index_remove_datasource( _addressIndex_, ds ) ) {
- addrindex_free_datasource( ds );
- }
- /* Free up Adapter object */
- g_free( ads );
-}
-
void addressbook_export_to_file( void ) {
if( _addressIndex_ ) {
/* Save all new address book data */
}
/*
-* Gather addresses.
-* Enter: folderItem Folder to import.
+* Import Pine file.
*/
-void addressbook_gather( FolderItem *folderItem ) {
+static void addressbook_import_pine_cb() {
+ AddressDataSource *ds = NULL;
+ AdapterDSource *ads = NULL;
+ AddressBookFile *abf = NULL;
+ AdapterInterface *adapter;
+ GtkCTreeNode *newNode;
+
+ adapter = addrbookctl_find_interface( ADDR_IF_BOOK );
+ if( adapter ) {
+ if( adapter->treeNode ) {
+ abf = addressbook_imp_pine( _addressIndex_ );
+ if( abf ) {
+ ds = addrindex_index_add_datasource(
+ _addressIndex_, ADDR_IF_BOOK, abf );
+ ads = addressbook_create_ds_adapter(
+ ds, ADDR_BOOK, NULL );
+ addressbook_ads_set_name(
+ ads, addrbook_get_name( abf ) );
+ newNode = addressbook_add_object(
+ adapter->treeNode,
+ ADDRESS_OBJECT(ads) );
+ if( newNode ) {
+ gtk_ctree_select(
+ GTK_CTREE(addrbook.ctree),
+ newNode );
+ addrbook.treeSelected = newNode;
+ }
+
+ /* Notify address completion */
+ invalidate_address_completion();
+ }
+ }
+ }
+}
+
+/*
+ * Harvest addresses.
+ * Enter: folderItem Folder to import.
+ * sourceInd Source indicator: FALSE - Folder, TRUE - Messages.
+ * msgList List of message numbers, or NULL to process folder.
+ */
+void addressbook_harvest(
+ FolderItem *folderItem, gboolean sourceInd, GList *msgList )
+{
AddressDataSource *ds = NULL;
AdapterDSource *ads = NULL;
AddressBookFile *abf = NULL;
AdapterInterface *adapter;
GtkCTreeNode *newNode;
- abf = addrgather_dlg_execute( folderItem, _addressIndex_ );
+ abf = addrgather_dlg_execute(
+ folderItem, _addressIndex_, sourceInd, msgList );
if( abf ) {
ds = addrindex_index_add_datasource(
_addressIndex_, ADDR_IF_BOOK, abf );
}
}
+/*
+* Export HTML file.
+*/
+static void addressbook_export_html_cb( void ) {
+ GtkCTree *ctree = GTK_CTREE(addrbook.ctree);
+ AddressObject *obj;
+ AddressDataSource *ds = NULL;
+ AddrBookBase *adbase;
+ AddressCache *cache;
+ GtkCTreeNode *node = NULL;
+
+ if( ! addrbook.treeSelected ) return;
+ node = addrbook.treeSelected;
+ if( GTK_CTREE_ROW(node)->level == 1 ) return;
+ obj = gtk_ctree_node_get_row_data( ctree, node );
+ if( obj == NULL ) return;
+
+ ds = addressbook_find_datasource( node );
+ if( ds == NULL ) return;
+ adbase = ( AddrBookBase * ) ds->rawDataSource;
+ cache = adbase->addressCache;
+ addressbook_exp_html( cache );
+}
+
/*
* End of Source.
*/