- /* -*- C++ -*-
- This file implements the application programming interface
- for using kab's addressbook files within other programs.
- Parse it with kdoc to get the API documentation.
-
- the TDE addressbook
-
- $ Author: Mirko Boehm $
- $ Copyright: (C) 1996-2001, Mirko Boehm $
- $ Contact: mirko@kde.org
- http://www.kde.org $
- $ License: GPL with the following explicit clarification:
- This code may be linked against any version of the Qt toolkit
- from Troll Tech, Norway. $
-
- $Id$
- */
-
- #include "kabapi.h"
- #include <tdelistbox.h>
- #include <tdemessagebox.h>
- #include <tdelocale.h>
- #include <kdebug.h>
-
-
- #include "kabapi.moc"
-
- #ifdef KAB_KDEBUG_AREA
- #undef KAB_KDEBUG_AREA
- #endif
-
- #define KAB_KDEBUG_AREA 800
-
- using namespace std;
-
- KabAPI::KabAPI(TQWidget* parent, const char* name)
- : KDialogBase(parent, name),
- book(0),
- listbox(new TDEListBox(this)),
- selection(-1)
- {
- TQ_CHECK_PTR(listbox);
- setMainWidget(listbox);
- showButtonApply(false);
- enableButtonSeparator(true);
- connect(listbox, TQT_SIGNAL(highlighted(int)), TQT_SLOT(entrySelected(int)));
- connect(listbox, TQT_SIGNAL(doubleClicked ( TQListBoxItem * )),TQT_SLOT(slotDoubleClicked ( TQListBoxItem * )));
- }
-
-
- void KabAPI::slotDoubleClicked ( TQListBoxItem * )
- {
- accept();
- }
-
- int KabAPI::exec()
- {
- TQStringList names;
- // -----
- if(book==0)
- {
- kdDebug(KAB_KDEBUG_AREA)
- << "KabAPI::exec: you have to call init before using the API."
- << endl;
- return -1;
- } else {
- if(book->getListOfNames(&names, true, false)==AddressBook::NoError)
- {
- listbox->clear();
- listbox->insertStringList(names);
- if(names.count()>0)
- {
- listbox->setCurrentItem(0);
- }
- listbox->setMinimumSize(listbox->sizeHint());
- adjustSize();
- resize(minimumSize());
- return KDialogBase::exec();
- } else {
- kdDebug(KAB_KDEBUG_AREA) << "KabAPI::exec: error creating interface."
- << endl;
- return -1;
- }
- }
- }
-
- AddressBook::ErrorCode KabAPI::init()
- {
- // ############################################################################
- book=new AddressBook(0, "KABAPI::book", true); //change parent from "this" to "0" //dsweet
- if(book->getState()==AddressBook::NoError)
- {
- connect(book, TQT_SIGNAL(setStatus(const TQString&)),
- TQT_SLOT(setStatusSlot(const TQString&)));
- return AddressBook::NoError;
- } else {
- return AddressBook::InternError;
- }
- // ############################################################################
- }
-
- AddressBook::ErrorCode KabAPI::getEntry(AddressBook::Entry& entry, KabKey& key)
- {
- // ############################################################################
- if(book->noOfEntries()==0)
- {
- return AddressBook::NoEntry;
- }
- if(selection>=0)
- {
- if(book->getKey(selection, key)==AddressBook::NoError)
- {
- if(book->getEntry(key, entry)==AddressBook::NoError)
- {
- return AddressBook::NoError;
- } else {
- return AddressBook::InternError; // this may not happen
- }
- } else {
- return AddressBook::NoEntry;
- }
- } else {
- return AddressBook::InternError;
- }
- // ############################################################################
- }
-
- AddressBook::ErrorCode KabAPI::add(const AddressBook::Entry& entry, KabKey& key,
- bool update)
- {
- // ############################################################################
- if(book->add(entry, key, update)!=AddressBook::NoError)
- {
- KMessageBox::sorry(this, i18n("Your new entry could not be added."));
- return AddressBook::InternError;
- } else {
- return AddressBook::NoError;
- }
- // ############################################################################
- }
-
- AddressBook::ErrorCode KabAPI::remove(const KabKey& key)
- {
- TQ_CHECK_PTR(book);
- // ############################################################################
- if(book->AddressBook::remove(key)==AddressBook::NoError)
- {
- return AddressBook::NoError;
- } else {
- return AddressBook::NoEntry;
- }
- // ############################################################################
- }
-
- AddressBook::ErrorCode KabAPI::getEntryByName(const TQString&,
- list<AddressBook::Entry>&, const int)
- {
- // ############################################################################
- return AddressBook::NotImplemented;
- // ############################################################################
- }
-
- AddressBook::ErrorCode KabAPI::getEntryByName(const AddressBook::Entry&,
- list<AddressBook::Entry>&, const int)
- {
- // ############################################################################
- return AddressBook::NotImplemented;
- // ############################################################################
- }
-
- AddressBook::ErrorCode KabAPI::getEntries(list<AddressBook::Entry>& entries)
- {
- kdDebug(KAB_KDEBUG_AREA) << "KabAPI::getEntries: called." << endl;
- // ############################################################################
- if(book->noOfEntries()==0)
- { // ----- database is valid, but empty:
- kdDebug(KAB_KDEBUG_AREA) << "KabAPI::getEntries: no entries." << endl;
- return AddressBook::NoEntry;
- }
- if(book->getEntries(entries)!=AddressBook::NoError)
- {
- kdDebug(KAB_KDEBUG_AREA) << "KabAPI::getEntries: intern error." << endl;
- return AddressBook::InternError;
- } else {
- kdDebug(KAB_KDEBUG_AREA) << "KabAPI::getEntries: done." << endl;
- return AddressBook::NoError;
- }
- // ############################################################################
- }
-
- AddressBook* KabAPI::addressbook()
- {
- // ############################################################################
- return book;
- // ############################################################################
- }
-
- AddressBook::ErrorCode KabAPI::save(bool force)
- {
- // ############################################################################
- if(book->save("", force)!=AddressBook::NoError)
- {
- return AddressBook::PermDenied;
- } else {
- return AddressBook::NoError;
- }
- // ############################################################################
- }
-
- void KabAPI::entrySelected(int index)
- {
- kdDebug(KAB_KDEBUG_AREA) << "KabAPI::entrySelected: entry " << index
- <<" selected." << endl;
- selection=index;
- }
-
- void KabAPI::setStatusSlot(const TQString& text)
- {
- emit(setStatus(text));
- }
|