void KCookiesManagement::save()
{
  // If delete all cookies was requested!
  if(mDeleteAllFlag)
  {
    QDBusInterface kded("org.kde.kded", "/modules/kcookiejar", "org.kde.KCookieServer", QDBusConnection::sessionBus());
    QDBusReply<void> reply = kded.call( "deleteAllCookies" );
    if (!reply.isValid())
    {
      QString caption = i18n ("D-Bus Communication Error");
      QString message = i18n ("Unable to delete all the cookies as requested.");
      KMessageBox::sorry (this, message, caption);
      return;
    }
    mDeleteAllFlag = false; // deleted[Cookies|Domains] have been cleared yet
  }

  // Certain groups of cookies were deleted...
  QMutableStringListIterator it (mDeletedDomains);
  while (it.hasNext())
  {    
    QDBusInterface kded("org.kde.kded", "/modules/kcookiejar", "org.kde.KCookieServer", QDBusConnection::sessionBus());
    QDBusReply<void> reply = kded.call( "deleteCookiesFromDomain",( it.next() ) );
    if (!reply.isValid())
    {
      QString caption = i18n ("D-Bus Communication Error");
      QString message = i18n ("Unable to delete cookies as requested.");
      KMessageBox::sorry (this, message, caption);
      return;
    }
    it.remove();
  }

  // Individual cookies were deleted...
  bool success = true; // Maybe we can go on...
  QMutableHashIterator<QString, CookiePropList> cookiesDom(mDeletedCookies);
  while(cookiesDom.hasNext())
  {
    cookiesDom.next();
    CookiePropList list = cookiesDom.value();
    foreach(CookieProp *cookie, list)
    {
      QDBusInterface kded("org.kde.kded", "/modules/kcookiejar", "org.kde.KCookieServer", QDBusConnection::sessionBus());
      QDBusReply<void> reply = kded.call( "deleteCookie", cookie->domain,
                                          cookie->host, cookie->path,
                                          cookie->name );
      if (!reply.isValid())
      {
        success = false;
        break;
      }

      list.removeOne(cookie);
    }

    if (!success)
      break;

    mDeletedCookies.remove(cookiesDom.key());
  }
void KCookiesManagement::save()
{
    // If delete all cookies was requested!
    if(m_bDeleteAll)
    {
        if(!DCOPRef("kded", "kcookiejar").send("deleteAllCookies"))
        {
            QString caption = i18n("DCOP Communication Error");
            QString message = i18n("Unable to delete all the cookies as requested.");
            KMessageBox::sorry(this, message, caption);
            return;
        }
        m_bDeleteAll = false; // deleted[Cookies|Domains] have been cleared yet
    }

    // Certain groups of cookies were deleted...
    QStringList::Iterator dIt = deletedDomains.begin();
    while(dIt != deletedDomains.end())
    {
        QByteArray call;
        QByteArray reply;
        QCString replyType;
        QDataStream callStream(call, IO_WriteOnly);
        callStream << *dIt;

        if(!DCOPRef("kded", "kcookiejar").send("deleteCookiesFromDomain", (*dIt)))
        {
            QString caption = i18n("DCOP Communication Error");
            QString message = i18n("Unable to delete cookies as requested.");
            KMessageBox::sorry(this, message, caption);
            return;
        }

        dIt = deletedDomains.remove(dIt);
    }

    // Individual cookies were deleted...
    bool success = true; // Maybe we can go on...
    QDictIterator< CookiePropList > cookiesDom(deletedCookies);

    while(cookiesDom.current())
    {
        CookiePropList *list = cookiesDom.current();
        QPtrListIterator< CookieProp > cookie(*list);

        while(*cookie)
        {
            if(!DCOPRef("kded", "kcookiejar").send("deleteCookie", (*cookie)->domain, (*cookie)->host, (*cookie)->path, (*cookie)->name))
            {
                success = false;
                break;
            }

            list->removeRef(*cookie);
        }

        if(!success)
            break;

        deletedCookies.remove(cookiesDom.currentKey());
    }

    emit changed(false);
}