Source Code (Use browser search to find items of interest.)

Class Index

krn'KMAddrBook (./kdenetwork/krn/kmaddrbook.h:11)

class KMAddrBook: protected QStrList
{
public:
  KMAddrBook();
  virtual ~KMAddrBook();

  /** Insert given address to the addressbook. Sorted. Duplicate
    addresses are not inserted. */
  virtual void insert(const QString address);

  /** Remove given address from the addressbook. */
  virtual void remove(const QString address);

  /** Returns first address in addressbook or NULL if addressbook is empty. */
  virtual const char* first(void) { return KMAddrBookInherited::first(); }

  /** Returns next address in addressbook or NULL. */
  virtual const char* next(void) { return KMAddrBookInherited::next(); }

  /** Clear addressbook (remove the contents). */
  virtual void clear(void);

  /** Open addressbook file and read contents. The default addressbook
    file is used if no filename is given.
    Returns IO_Ok on success and an IO device status on failure -- see
    QIODevice::status(). */
  virtual int load(const char* fileName=NULL);

  /** Store addressbook in file or in same file of last load() call
    if no filename is given. Returns IO_Ok on success and an IO device
    status on failure -- see QIODevice::status(). */
  virtual int store(const char* fileName=NULL);

  /** Read/write configuration options. Uses the group "Addressbook"
    in the app's config file. */
  virtual void readConfig(void);
  virtual void writeConfig(bool withSync=TRUE);

  /** Test if the addressbook has unsaved changes. */
  virtual bool modified(void) const { return mModified; }

protected:
  virtual int compareItems(Item item1, Item item2);

  /** Displays a detailed message box and returns 'status' */
  virtual int fileError(int status) const;

  QString mDefaultFileName;
  bool mModified;
};

krn'KMAddrBook::KMAddrBook() (./kdenetwork/krn/kmaddrbook.cpp:18)

KMAddrBook::KMAddrBook(): KMAddrBookInherited()
{
  mModified = FALSE;
}


//-----------------------------------------------------------------------------

krn'KMAddrBook::~KMAddrBook() (./kdenetwork/krn/kmaddrbook.cpp:25)

KMAddrBook::~KMAddrBook()
{
  if (mModified) 
    {
      if(store() == IO_FatalError)
	KMsgBox::message(0,i18n("KMail Error"),
			     i18n("Storing the addressbook failed!\n"));
    }
      
  writeConfig(FALSE);
}


//-----------------------------------------------------------------------------

krn'KMAddrBook::insert() (./kdenetwork/krn/kmaddrbook.cpp:39)

void KMAddrBook::insert(const QString aAddress)
{
  if (find(aAddress)<0)
  {
    inSort(aAddress);
    mModified=TRUE;
  }
}


//-----------------------------------------------------------------------------

krn'KMAddrBook::remove() (./kdenetwork/krn/kmaddrbook.cpp:50)

void KMAddrBook::remove(const QString aAddress)
{
  remove(aAddress);
  mModified=TRUE;
}


//-----------------------------------------------------------------------------

krn'KMAddrBook::clear() (./kdenetwork/krn/kmaddrbook.cpp:58)

void KMAddrBook::clear(void)
{
  KMAddrBookInherited::clear();
  mModified=TRUE;
}


//-----------------------------------------------------------------------------

krn'KMAddrBook::writeConfig() (./kdenetwork/krn/kmaddrbook.cpp:66)

void KMAddrBook::writeConfig(bool aWithSync)
{
  KConfig* config = kapp->config();

  config->setGroup("Addressbook");
  config->writeEntry("default", mDefaultFileName);

  if (aWithSync) config->sync();
}


//-----------------------------------------------------------------------------

krn'KMAddrBook::readConfig() (./kdenetwork/krn/kmaddrbook.cpp:78)

void KMAddrBook::readConfig(void)
{
  KConfig* config = kapp->config();
  config->setGroup("Addressbook");

  mDefaultFileName = config->readEntry("default");
  if (mDefaultFileName.isEmpty())
    mDefaultFileName = locateLocal("data", "kmail/addressbook");
}


//-----------------------------------------------------------------------------

krn'KMAddrBook::load() (./kdenetwork/krn/kmaddrbook.cpp:90)

int KMAddrBook::load(const char* aFileName)
{
  char line[256];
  const char* fname = (aFileName ? aFileName : (const char*)mDefaultFileName);
  QFile file(fname);
  int rc;

  //assert(fname != NULL);
  if(!fname)
    return IO_FatalError;

  if (!file.open(IO_ReadOnly)) return file.status();
  clear();

  while (!file.atEnd())
  {
    if (file.readLine(line,255) > 0)
    {
      if (line[strlen(line)-1] < ' ') line[strlen(line)-1] = '\0';
      if (line[0]!='#' && line[0]!='\0') inSort(line);
    }
  }
  rc = file.status();
  file.close();

  mModified = FALSE;
  return rc;
}


//-----------------------------------------------------------------------------

krn'KMAddrBook::store() (./kdenetwork/krn/kmaddrbook.cpp:121)

int KMAddrBook::store(const char* aFileName)
{
  const char* addr;
  const char* fname = (aFileName ? aFileName : (const char*)mDefaultFileName);
  QFile file(fname);


  //assert(fname != NULL);
  if(!fname)
    return IO_FatalError;

  if (!file.open(IO_ReadWrite|IO_Truncate)) return fileError(file.status());

  addr = "# kmail addressbook file\n";
  if (file.writeBlock(addr,strlen(addr)) < 0) return fileError(file.status());

  for (addr=first(); addr; addr=next())
  {
    if (file.writeBlock(addr,strlen(addr)) < 0) return fileError(file.status());
    file.writeBlock("\n",1);
  }
  file.close();

  mModified = FALSE;
  return IO_Ok;
}


//-----------------------------------------------------------------------------

krn'KMAddrBook::fileError() (./kdenetwork/krn/kmaddrbook.cpp:150)

int KMAddrBook::fileError(int status) const
{
  QString msg, str;

  switch(status)
  {
  case IO_ReadError:
    msg = i18n("Could not read file:\n%s");
    break;
  case IO_OpenError:
    msg = i18n("Could not open file:\n%s");
    break;
  default:
    msg = i18n("Error while writing file:\n%s");
  }

  str.sprintf(msg, mDefaultFileName.data());
  KMsgBox::message(NULL, i18n("File I/O Error"), str,
		   KMsgBox::STOP, i18n("OK"));

  return status;
}


//-----------------------------------------------------------------------------

krn'KMAddrBook::compareItems() (./kdenetwork/krn/kmaddrbook.cpp:175)

int KMAddrBook::compareItems(Item aItem1, Item aItem2)
{
  return strcasecmp((const char*)aItem1, (const char*)aItem2);
}