rev 4832 - in trunk/packages/kdepim/debian: . patches

Daniel Schepler schepler at alioth.debian.org
Tue Oct 31 09:15:40 CET 2006


Author: schepler
Date: 2006-10-31 09:15:39 +0100 (Tue, 31 Oct 2006)
New Revision: 4832

Added:
   trunk/packages/kdepim/debian/patches/01_kdepim_branch_20061030.diff
   trunk/packages/kdepim/debian/patches/16_kde_modulename.diff
Removed:
   trunk/packages/kdepim/debian/patches/15_kdepim_debug.diff
Modified:
   trunk/packages/kdepim/debian/
   trunk/packages/kdepim/debian/changelog
   trunk/packages/kdepim/debian/rules
Log:
kdepim 3.5.5.dfsg.1-1 packaging.

Also, add overdue svn:ignore of kdepim-dbg which I just noticed was
missing.



Property changes on: trunk/packages/kdepim/debian
___________________________________________________________________
Name: svn:ignore
   - *.debhelper
*.substvars
stamp-*
cdbs-install-list
cdbs-package-list
files
akregator
kaddressbook
kalarm
kandy
karm
kdepim
kdepim-dev
kdepim-doc
kdepim-doc-html
kdepim-kfile-plugins
kdepim-kio-plugins
kdepim-kresources
kdepim-wizards
kitchensync
kleopatra
kmail
kmailcvt
knode
knotes
kode
konsolekalendar
kontact
korganizer
korn
kpilot
ksync
ktnef
libindex0
libindex0-dev
libkcal2b
libkcal2-dev
libkdepim1a
libkdepim1-dev
libkgantt0
libkgantt0-dev
libkleopatra1
libkleopatra1-dev
libkmime2
libkpimexchange1
libkpimexchange1-dev
libkpimidentities1
libksieve0
libksieve0-dev
libktnef1
libktnef1-dev
libmimelib1c2a
libmimelib1-dev
networkstatus
tmp

   + *.debhelper
*.substvars
stamp-*
cdbs-install-list
cdbs-package-list
files
akregator
kaddressbook
kalarm
kandy
karm
kdepim
kdepim-dbg
kdepim-dev
kdepim-doc
kdepim-doc-html
kdepim-kfile-plugins
kdepim-kio-plugins
kdepim-kresources
kdepim-wizards
kitchensync
kleopatra
kmail
kmailcvt
knode
knotes
kode
konsolekalendar
kontact
korganizer
korn
kpilot
ksync
ktnef
libindex0
libindex0-dev
libkcal2b
libkcal2-dev
libkdepim1a
libkdepim1-dev
libkgantt0
libkgantt0-dev
libkleopatra1
libkleopatra1-dev
libkmime2
libkpimexchange1
libkpimexchange1-dev
libkpimidentities1
libksieve0
libksieve0-dev
libktnef1
libktnef1-dev
libmimelib1c2a
libmimelib1-dev
networkstatus
tmp


Modified: trunk/packages/kdepim/debian/changelog
===================================================================
--- trunk/packages/kdepim/debian/changelog	2006-10-31 06:57:06 UTC (rev 4831)
+++ trunk/packages/kdepim/debian/changelog	2006-10-31 08:15:39 UTC (rev 4832)
@@ -1,9 +1,24 @@
-kdepim (4:3.5.5-2) UNRELEASED; urgency=low
+kdepim (4:3.5.5.dfsg.1-1) unstable; urgency=medium
 
   * Improve KOrganizer's description, from Filipus Klutiero.
     (Closes: #392468)
+  * Remove non-free IETF docs from the source tarball.
+    Closes: #395082.
+    + Urgency medium for the RC bug fix.
+    + Stop using tarball.mk, since the only reason for that in the first
+      place was to get the source package to consist of a file verifiable
+      using upstream md5sums.  But since we have to repackage now anyway,
+      there's no point to doing this any more.
+    + New patch 16_kde_modulename.diff so that admin/cvs.sh finds the
+      right package name.
+  * Update from SVN branch, revision 600288, except for the changes to
+    libkmime, which break binary compatibility, and the changes to kalarm,
+    which I deem to be too invasive this close to a release.
+    + Absorbs 15_kdepim_debug.diff.
+    + Fixes a problem with korganizer.desktop causing it not to start.
+      Closes: #395940, #395286, #394309.
 
- -- Debian Qt/KDE Maintainers <debian-qt-kde at lists.debian.org>  Wed, 11 Oct 2006 19:33:58 -0400
+ -- Daniel Schepler <schepler at debian.org>  Mon, 30 Oct 2006 20:46:01 +0100
 
 kdepim (4:3.5.5-1) unstable; urgency=medium
 

Added: trunk/packages/kdepim/debian/patches/01_kdepim_branch_20061030.diff
===================================================================
--- trunk/packages/kdepim/debian/patches/01_kdepim_branch_20061030.diff	2006-10-31 06:57:06 UTC (rev 4831)
+++ trunk/packages/kdepim/debian/patches/01_kdepim_branch_20061030.diff	2006-10-31 08:15:39 UTC (rev 4832)
@@ -0,0 +1,1966 @@
+Index: akregator/src/librss/loader.h
+===================================================================
+--- akregator/src/librss/loader.h	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ akregator/src/librss/loader.h	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -227,7 +227,7 @@
+ 	 * 'OutputRetriever' will make it execute the script
+ 	 * '/home/myself/some-script.py' and assume whatever that script prints to
+ 	 * stdout is RSS markup. This is e.g. handy for conversion scripts, which
+-	 * download a HTML file and convert it's contents into RSS markup.
++	 * download an HTML file and convert it's contents into RSS markup.
+ 	 *
+ 	 * No matter what kind of retrieval algorithm you employ, your
+ 	 * 'slotLoadingComplete' method might look like this:
+Index: akregator/src/akregator.desktop
+===================================================================
+--- akregator/src/akregator.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ akregator/src/akregator.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -23,7 +23,7 @@
+ GenericName[hu]=RSS hírolvasó
+ GenericName[is]=RSS fréttaforrit
+ GenericName[it]=Lettore Fonti RSS
+-GenericName[ja]=RSS ニュースリーダ
++GenericName[ja]=RSS ニュースリーダー
+ GenericName[km]=កម្មវិធី​អាន​មតិព័ត៌មាន RSS
+ GenericName[lt]=RSS kanalų skaityklė
+ GenericName[ms]= Pembaca Suapan RSS 
+Index: akregator/src/eventsrc
+===================================================================
+--- akregator/src/eventsrc	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ akregator/src/eventsrc	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -15,7 +15,7 @@
+ Name[es]=Origen añadido
+ Name[et]=Kanal lisatud
+ Name[eu]=Iturria gehituta
+-Name[fa]=خوراندن اضافه شده‌
++Name[fa]=خوراندن اضافه‌شده
+ Name[fi]=Syöte lisätty
+ Name[fr]=Flux ajouté
+ Name[ga]=Cuireadh fotha leis
+Index: kmobile/devices/gammu/libkmobile_gammu.desktop
+===================================================================
+--- kmobile/devices/gammu/libkmobile_gammu.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmobile/devices/gammu/libkmobile_gammu.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -14,7 +14,7 @@
+ Name[es]=Teléfono móvil u organizador (gammu)
+ Name[et]=Mobiiltelefon või Organizer (gammu)
+ Name[eu]=Mugikorra edo antolatzailea (gammu)
+-Name[fa]=تلفن همراه یا سازمان دهنده (gammu)
++Name[fa]=تلفن همراه یا سازمان‌دهنده (gammu)
+ Name[fi]=Matkapuhelin tai organisaattori (gammu)
+ Name[fr]=Téléphone portable ou organiseur (gammu)
+ Name[ga]=Fón Póca nó Eagraí (gammu)
+Index: certmanager/lib/libkleopatrarc.desktop
+===================================================================
+--- certmanager/lib/libkleopatrarc.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ certmanager/lib/libkleopatrarc.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -99,7 +99,7 @@
+ Name[es]=Clave revocada
+ Name[et]=Tühistatud võti
+ Name[eu]=Errebokatutako gakoa
+-Name[fa]=کلید لغو شده‌
++Name[fa]=کلید لغو‌شده‌
+ Name[fi]=Peruutettu avain
+ Name[fr]=Clé révoquée
+ Name[he]=מפתח לא קביל
+Index: kmail/kmfilterdlg.cpp
+===================================================================
+--- kmail/kmfilterdlg.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/kmfilterdlg.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -226,6 +226,7 @@
+       gl->addMultiCellWidget( keyButtonLabel, 7, 7, 2, 2 );
+       mKeyButton = new KKeyButton( adv_w, "FilterShortcutSelector" );
+       gl->addMultiCellWidget( mKeyButton, 7, 7, 3, 3 );
++      mKeyButton->setEnabled( false );
+       mConfigureToolbar = new QCheckBox( i18n("Additionally add this filter to the toolbar"), adv_w );
+       gl->addMultiCellWidget( mConfigureToolbar, 8, 8, 0, 3 );
+       mConfigureToolbar->setEnabled( false );
+@@ -497,6 +498,7 @@
+ {
+   if ( mFilter ) {
+     mFilter->setConfigureShortcut( aChecked );
++    mKeyButton->setEnabled( aChecked );
+     mConfigureToolbar->setEnabled( aChecked );
+     mFilterActionIconButton->setEnabled( aChecked );
+     mFilterActionLabel->setEnabled( aChecked );
+Index: kmail/expirejob.cpp
+===================================================================
+--- kmail/expirejob.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/expirejob.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -125,7 +125,7 @@
+     const KMMsgBase *mb = storage->getMsgBase( mCurrentIndex );
+     if (mb == 0)
+       continue;
+-    if ( mb->isImportant()
++    if ( ( mb->isImportant() || mb->isTodo() )
+       && GlobalSettings::self()->excludeImportantMailFromExpiry() )
+        continue;
+ 
+Index: kmail/application_octetstream.desktop
+===================================================================
+--- kmail/application_octetstream.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/application_octetstream.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -39,7 +39,7 @@
+ Comment[es]=Un accesorio de formato para el cuerpo de application/octet-stream
+ Comment[et]=Põhiosa vormindamisplugin (MIME tüübile application/octet-stream)
+ Comment[eu]=Gorputz-zati formateatzaile plugin bat aplikazio/zortikote-jarioentzat
+-Comment[fa]=یک وصلۀ قالب دهندۀ بخش بدنه برای کاربرد/octet-stream
++Comment[fa]=یک وصلۀ قالب‌دهندۀ بخش بدنه برای کاربرد/octet-stream
+ Comment[fi]=Muokkainliitännäinen application/octet-stream-muodolle
+ Comment[fr]=Un module formateur de corps pour application (flux d'octets)
+ Comment[hu]=Formázómodul application/octet-stream típusú adatfolyamokhoz
+Index: kmail/kmail_config_composer.desktop
+===================================================================
+--- kmail/kmail_config_composer.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/kmail_config_composer.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -13,6 +13,7 @@
+ X-KDE-CfgDlgHierarchy=KMail
+ 
+ Name=Composer
++Name[ar]=المحرر
+ Name[bg]=Редактор
+ Name[br]=Skridaozer
+ Name[bs]=Sastavljač
+@@ -70,7 +71,7 @@
+ Comment[es]=Frases y comportamiento general
+ Comment[et]=Väljendid ja üldine käitumine
+ Comment[eu]=Esaldiak eta portamolde orokorra
+-Comment[fa]=عبارات و رفتار کلی
++Comment[fa]=عبارات و رفتار عمومی
+ Comment[fi]=Ilmaukset ja yleiset asetukset
+ Comment[fr]=Phrases et comportement général
+ Comment[gl]=Frases e comportamento xeral
+Index: kmail/kmail_config_identity.desktop
+===================================================================
+--- kmail/kmail_config_identity.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/kmail_config_identity.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -13,6 +13,7 @@
+ X-KDE-CfgDlgHierarchy=KMail
+ 
+ Name=Identities
++Name[ar]=الهويات
+ Name[be]=Увасабленьні
+ Name[bg]=Самоличност
+ Name[br]=Anvelezhioù
+@@ -60,6 +61,7 @@
+ Name[zh_CN]=身份
+ Name[zh_TW]=身份
+ Comment=Manage Identities
++Comment[ar]=تدبير الهويات
+ Comment[be]=Кіраваньне увасабленьнямі
+ Comment[bg]=Настройки на самоличността
+ Comment[br]=Merañ an anvelezhioù
+Index: kmail/kmcommands.cpp
+===================================================================
+--- kmail/kmcommands.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/kmcommands.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -811,22 +811,28 @@
+     assert( idx >= 0 );
+     msg = p->getMsg(idx);
+ 
+-    if (msg->transferInProgress()) {
+-      QByteArray data = QByteArray();
+-      mJob->sendAsyncData( data );
+-    }
+-    msg->setTransferInProgress( true );
+-    if (msg->isComplete() ) {
+-      slotMessageRetrievedForSaving(msg);
+-    } else {
++    if ( msg ) {
++      if ( msg->transferInProgress() ) {
++        QByteArray data = QByteArray();
++        mJob->sendAsyncData( data );
++      }
++      msg->setTransferInProgress( true );
++      if (msg->isComplete() ) {
++        slotMessageRetrievedForSaving( msg );
++      } else {
+       // retrieve Message first
+-      if (msg->parent()  && !msg->isComplete() ) {
+-        FolderJob *job = msg->parent()->createJob(msg);
+-        job->setCancellable( false );
+-        connect(job, SIGNAL(messageRetrieved(KMMessage*)),
+-            this, SLOT(slotMessageRetrievedForSaving(KMMessage*)));
+-        job->start();
++        if ( msg->parent()  && !msg->isComplete() ) {
++          FolderJob *job = msg->parent()->createJob( msg );
++          job->setCancellable( false );
++          connect(job, SIGNAL( messageRetrieved( KMMessage* ) ),
++                  this, SLOT( slotMessageRetrievedForSaving( KMMessage* ) ) );
++          job->start();
++        }
+       }
++    } else {
++      mJob->slotError( KIO::ERR_ABORTED,
++                       i18n("The message was removed while saving it. "
++                            "It has not been saved.") );
+     }
+   } else {
+     if ( mStandAloneMessage ) {
+Index: kmail/kmfoldercachedimap.cpp
+===================================================================
+--- kmail/kmfoldercachedimap.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/kmfoldercachedimap.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -75,6 +75,7 @@
+ #include <globalsettings.h>
+ 
+ #define UIDCACHE_VERSION 1
++#define MAIL_LOSS_DEBUGGING 0
+ 
+ static QString incidencesForToString( KMFolderCachedImap::IncidencesFor r ) {
+   switch (r) {
+@@ -150,10 +151,22 @@
+     mFolderRemoved( false ),
+     /*mHoldSyncs( false ),*/ mRecurse( true ),
+     mStatusChangedLocally( false ), mAnnotationFolderTypeChanged( false ),
+-    mIncidencesForChanged( false ), mPersonalNamespacesCheckDone( true )
++    mIncidencesForChanged( false ), mPersonalNamespacesCheckDone( true ),
++    mFoundAnIMAPDigest( false )
+ {
+   setUidValidity("");
+-  readUidCache();
++  // if we fail to read a uid file but there is one, nuke it
++  if ( readUidCache() == -1 ) {
++    if ( QFile::exists( uidCacheLocation() ) ) {
++        KMessageBox::error( 0,
++        i18n( "The UID cache file for folder %1 could not be read. There "
++              "could be a problem with file system permission, or it is corrupted."
++              ).arg( folder->prettyURL() ) );
++        // try to unlink it, in case it was corruped. If it couldn't be read 
++        // because of permissions, this will fail, which is fine
++        unlink( QFile::encodeName( uidCacheLocation() ) );
++    }
++  }
+ 
+   mProgress = 0;
+ }
+@@ -306,7 +319,7 @@
+   if( uidValidity().isEmpty() || uidValidity() == "INVALID" ) {
+     // No info from the server yet, remove the file.
+     if( QFile::exists( uidCacheLocation() ) )
+-      unlink( QFile::encodeName( uidCacheLocation() ) );
++      return unlink( QFile::encodeName( uidCacheLocation() ) );
+     return 0;
+   }
+ 
+@@ -317,17 +330,23 @@
+     str << uidValidity() << endl;
+     str << lastUid() << endl;
+     uidcache.flush();
+-    fsync( uidcache.handle() ); /* this is probably overkill */
+-    uidcache.close();
+-    return 0;
+-  } else {
+-    return errno; /* does QFile set errno? */
++    if ( uidcache.status() == IO_Ok ) {
++      fsync( uidcache.handle() ); /* this is probably overkill */
++      uidcache.close();
++      if ( uidcache.status() == IO_Ok )
++        return 0;
++    }
+   }
++  KMessageBox::error( 0,
++        i18n( "The UID cache file for folder %1 could not be written. There "
++              "could be a problem with file system permission." ).arg( folder()->prettyURL() ) );
++
++  return -1;
+ }
+ 
+ void KMFolderCachedImap::reloadUidMap()
+ {
+-  kdDebug(5006) << "Reloading Uid Map " << endl;
++  //kdDebug(5006) << "Reloading Uid Map " << endl;
+   uidMap.clear();
+   open();
+   for( int i = 0; i < count(); ++i ) {
+@@ -448,7 +467,8 @@
+ {
+   killTimer( uidWriteTimer );
+   uidWriteTimer = -1;
+-  writeUidCache();
++  if ( writeUidCache() == -1 )
++    unlink( QFile::encodeName( uidCacheLocation() ) );
+ }
+ 
+ ulong KMFolderCachedImap::lastUid()
+@@ -467,10 +487,22 @@
+   QMap<ulong,int>::Iterator it = uidMap.find( uid );
+   if( it != uidMap.end() ) {
+     KMMsgBase *msg = getMsgBase( *it );
++#if MAIL_LOSS_DEBUGGING
++    kdDebug(5006) << "UID " << uid << " is supposed to be in the map" << endl;
++    kdDebug(5006) << "UID's index is to be " << *it << endl;
++    kdDebug(5006) << "There is a message there? " << (msg != 0) << endl;
++    if ( msg ) {
++      kdDebug(5006) << "Its UID is: " << msg->UID() << endl;
++    }
++#endif
++
+     if( msg && msg->UID() == uid )
+       return msg;
++    kdDebug(5006) << "########## Didn't find uid: " << uid << "in cache athough it's supposed to be there!" << endl;
+   } else {
++#if MAIL_LOSS_DEBUGGING
+     kdDebug(5006) << "Didn't find uid: " << uid << "in cache!" << endl;
++#endif
+   }
+   // Not found by now
+  // if( mapReloaded )
+@@ -482,8 +514,10 @@
+   if( it != uidMap.end() )
+     // Since the uid map is just rebuilt, no need for the sanity check
+     return getMsgBase( *it );
++#if MAIL_LOSS_DEBUGGING
+   else
+     kdDebug(5006) << "Reloaded, but stil didn't find uid: " << uid << endl;
++#endif
+   // Then it's not here
+   return 0;
+ }
+@@ -841,9 +875,14 @@
+            to be deleted on the server has been deleted, adjust our local notion of the
+            highes uid seen thus far. */
+         slotUpdateLastUid();
+-        if( mLastUid == 0 && uidWriteTimer == -1 )
++        if( mLastUid == 0 && uidWriteTimer == -1 ) {
+           // This is probably a new and empty folder. Write the UID cache
+-          writeUidCache();
++          if ( writeUidCache() == -1 ) {
++            resetSyncState();
++            emit folderComplete( this, false );
++            return;
++          }
++        }
+       }
+     }
+ 
+@@ -1209,9 +1248,10 @@
+ void KMFolderCachedImap::slotImapStatusChanged(KMFolder* folder, const QString&, bool cont)
+ {
+   if ( mSyncState == SYNC_STATE_INITIAL ){
+-      kdDebug(5006) << "IMAP status changed but reset " << endl;
++      //kdDebug(5006) << "IMAP status changed but reset " << endl;
+       return; // we were reset
+   }
++  //kdDebug(5006) << "IMAP status changed for folder: " << folder->prettyURL() << endl;
+   if ( folder->storage() == this ) {
+     --mStatusFlagsJobs;
+     if ( mStatusFlagsJobs == 0 || !cont ) // done or aborting
+@@ -1220,6 +1260,7 @@
+     if ( mStatusFlagsJobs == 0 && cont ) {
+       mProgress += 5;
+       serverSyncInternal();
++      //kdDebug(5006) << "Proceeding with mailcheck." << endl;
+     }
+   }
+ }
+@@ -1288,15 +1329,24 @@
+   // them one by one because the index list can get resized under
+   // us. So use msg pointers instead
+ 
++  QStringList uids;
+   QMap<ulong,int>::const_iterator it = uidMap.constBegin();
+   for( ; it != uidMap.end(); it++ ) {
+     ulong uid ( it.key() );
+-    if( uid!=0 && !uidsOnServer.find( uid ) )
++    if( uid!=0 && !uidsOnServer.find( uid ) ) {
++      uids << QString::number( uid );
+       msgsForDeletion.append( getMsg( *it ) );
++    }
+   }
+ 
+   if( !msgsForDeletion.isEmpty() ) {
+-    removeMsg( msgsForDeletion );
++#if MAIL_LOSS_DEBUGGING
++      if ( KMessageBox::warningYesNo(
++             0, i18n( "<qt><p>Mails on the server in folder <b>%1</b> were deleted. "
++                 "Do you want to delete them locally?<br>UIDs: %2</p></qt>" )
++             .arg( folder()->prettyURL() ).arg( uids.join(",") ) ) == KMessageBox::Yes )
++#endif
++        removeMsg( msgsForDeletion );
+   }
+ 
+   /* Delete messages from the server that we dont have anymore */
+@@ -1370,6 +1420,8 @@
+   uidsForDeletionOnServer.clear();
+   mMsgsForDownload.clear();
+   mUidsForDownload.clear();
++  // listing is only considered successful if saw a syntactically correct imapdigest
++  mFoundAnIMAPDigest = false;
+ 
+   CachedImapJob* job = new CachedImapJob( FolderJob::tListMessages, this );
+   connect( job, SIGNAL( result(KMail::FolderJob *) ),
+@@ -1415,6 +1467,7 @@
+       setReadOnly( access == "Read only" );
+     }
+     (*it).cdata.remove(0, pos);
++    mFoundAnIMAPDigest = true;
+   }
+   pos = (*it).cdata.find("\r\n--IMAPDIGEST", 1);
+   // Start with something largish when rebuilding the cache
+@@ -1432,7 +1485,7 @@
+       if( uid != 0 ) {
+         if ( uidsOnServer.count() == uidsOnServer.size() ) {
+           uidsOnServer.resize( KMail::nextPrime( uidsOnServer.size() * 2 ) );
+-          kdDebug( 5006 ) << "Resizing to: " << uidsOnServer.size() << endl;
++          //kdDebug( 5006 ) << "Resizing to: " << uidsOnServer.size() << endl;
+         }
+         uidsOnServer.insert( uid, &v );
+       }
+@@ -1451,7 +1504,9 @@
+         KMMsgBase *existingMessage = findByUID(uid);
+         if( !existingMessage ) {
+           if ( mUserRights <= 0 || ( mUserRights & KMail::ACLJobs::Delete ) ) {
+-            // kdDebug(5006) << "message with uid " << uid << " is gone from local cache. Must be deleted on server!!!" << endl;
++#if MAIL_LOSS_DEBUGGING
++            kdDebug(5006) << "message with uid " << uid << " is gone from local cache. Must be deleted on server!!!" << endl;
++#endif
+             uidsForDeletionOnServer << uid;
+           } else {
+             redownload = true;
+@@ -1490,6 +1545,13 @@
+ void KMFolderCachedImap::getMessagesResult( KMail::FolderJob *job, bool lastSet )
+ {
+   mProgress += 10;
++  if ( !job->error() && !mFoundAnIMAPDigest ) {
++      kdWarning(5006) << "######## Folderlisting did not complete, but there was no error! "
++          "Aborting sync of folder: " << folder()->prettyURL() << endl;
++#if MAIL_LOSS_DEBUGGING
++      kmkernel->emergencyExit( i18n("Folder listing failed in interesting ways." ) );
++#endif
++  }
+   if( job->error() ) { // error listing messages but the user chose to continue
+     mContentState = imapNoInformation;
+     mSyncState = SYNC_STATE_HANDLE_INBOX; // be sure not to continue in this folder
+@@ -1741,7 +1803,7 @@
+   KMFolderNode *node;
+   bool root = ( this == mAccount->rootFolder() );
+   if ( root && !mAccount->hasInbox() ) {
+-    kdDebug(5006) << "check INBOX" << endl;
++    //kdDebug(5006) << "check INBOX" << endl;
+     // create the INBOX
+     for (node = folder()->child()->first(); node; node = folder()->child()->next())
+       if (!node->isDir() && node->name() == "INBOX") break;
+@@ -2216,7 +2278,7 @@
+ void
+ KMFolderCachedImap::slotAnnotationChanged( const QString& entry, const QString& attribute, const QString& value )
+ {
+-  kdDebug(5006) << k_funcinfo << entry << " " << attribute << " " << value << endl;
++  //kdDebug(5006) << k_funcinfo << entry << " " << attribute << " " << value << endl;
+   if ( entry == KOLAB_FOLDERTYPE )
+     mAnnotationFolderTypeChanged = false;
+   else if ( entry == KOLAB_INCIDENCESFOR ) {
+Index: kmail/eventsrc
+===================================================================
+--- kmail/eventsrc	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/eventsrc	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -9,6 +9,7 @@
+ 
+ [new-mail-arrived]
+ Name=New Mail Arrived
++Name[ar]=وصل بريد جديد
+ Name[bg]=Имате ново писмо
+ Name[br]=Deuet eo ur postel nevez
+ Name[bs]=Stigla vam je nova pošta
+@@ -55,6 +56,7 @@
+ Name[zh_CN]=新邮件到达
+ Name[zh_TW]=您有新郵件
+ Comment=New mail arrived
++Comment[ar]=وصل بريد جديد
+ Comment[bg]=Имате ново писмо
+ Comment[br]=Deuet eo ur postel nevez
+ Comment[bs]=Stigla vam je nova pošta
+Index: kmail/kmkernel.cpp
+===================================================================
+--- kmail/kmkernel.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/kmkernel.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -192,6 +192,7 @@
+ bool KMKernel::handleCommandLine( bool noArgsOpensReader )
+ {
+   QString to, cc, bcc, subj, body;
++  QCStringList customHeaders;
+   KURL messageFile;
+   KURL::List attachURLs;
+   bool mailto = false;
+@@ -252,6 +253,8 @@
+          attachURLs += KURL( QString::fromLocal8Bit( *it ) );
+   }
+ 
++  customHeaders = args->getOptionList("header");
++
+   if (args->isSet("composer"))
+     mailto = true;
+ 
+@@ -302,7 +305,7 @@
+     viewMessage( messageFile );
+   else
+     action( mailto, checkMail, to, cc, bcc, subj, body, messageFile,
+-            attachURLs );
++            attachURLs, customHeaders );
+   return true;
+ }
+ 
+@@ -366,7 +369,8 @@
+                             const QString &bcc, const QString &subject,
+                             const QString &body, int hidden,
+                             const KURL &messageFile,
+-                            const KURL::List &attachURLs)
++                            const KURL::List &attachURLs,
++                            const QCStringList &customHeaders)
+ {
+   kdDebug(5006) << "KMKernel::openComposer called" << endl;
+   KMMessage *msg = new KMMessage;
+@@ -389,6 +393,23 @@
+   else if (!body.isEmpty())
+     msg->setBody(body.utf8());
+ 
++  if (!customHeaders.isEmpty())
++  {
++    for ( QCStringList::ConstIterator it = customHeaders.begin() ; it != customHeaders.end() ; ++it )
++      if ( !(*it).isEmpty() )
++      {
++        const int pos = (*it).find( ':' );
++        if ( pos > 0 )
++        {
++          QCString header, value;
++          header = (*it).left( pos ).stripWhiteSpace();
++          value = (*it).mid( pos+1 ).stripWhiteSpace();
++          if ( !header.isEmpty() && !value.isEmpty() )
++            msg->setHeaderField( header, value );
++        }
++      }
++  }
++
+   KMail::Composer * cWin = KMail::makeComposer( msg );
+   cWin->setCharset("", TRUE);
+   for ( KURL::List::ConstIterator it = attachURLs.begin() ; it != attachURLs.end() ; ++it )
+@@ -1802,14 +1823,15 @@
+                       const QString &cc, const QString &bcc,
+                       const QString &subj, const QString &body,
+                       const KURL &messageFile,
+-                      const KURL::List &attachURLs)
++                      const KURL::List &attachURLs,
++                      const QCStringList &customHeaders)
+ {
+-  if (mailto)
+-    openComposer (to, cc, bcc, subj, body, 0, messageFile, attachURLs);
++  if ( mailto )
++    openComposer( to, cc, bcc, subj, body, 0, messageFile, attachURLs, customHeaders );
+   else
+     openReader( check );
+ 
+-  if (check)
++  if ( check )
+     checkMail();
+   //Anything else?
+ }
+@@ -2247,9 +2269,15 @@
+   if ( !Wallet::isEnabled() || walletOpenFailed )
+     return 0;
+ 
++  // find an appropriate parent window for the wallet dialog
++  WId window = 0;
++  if ( qApp->activeWindow() )
++    window = qApp->activeWindow()->winId();
++  else if ( getKMMainWidget() )
++    window = getKMMainWidget()->topLevelWidget()->winId();
++
+   delete mWallet;
+-  mWallet = Wallet::openWallet( Wallet::NetworkWallet(),
+-        getKMMainWidget() ? getKMMainWidget()->topLevelWidget()->winId() : 0 );
++  mWallet = Wallet::openWallet( Wallet::NetworkWallet(), window );
+ 
+   if ( !mWallet ) {
+     walletOpenFailed = true;
+Index: kmail/headerstyle.cpp
+===================================================================
+--- kmail/headerstyle.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/headerstyle.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -527,6 +527,40 @@
+       userHTML = "&nbsp;";
+     }
+ 
++    if( photoURL.isEmpty() ) {
++      // no photo, look for a Face header
++      QString faceheader = message->headerField( "Face" );
++      if ( !faceheader.isEmpty() ) {
++        QImage faceimage;
++
++        kdDebug( 5006 ) << "Found Face: header" << endl;
++
++        QCString facestring = faceheader.utf8();
++        // Spec says header should be less than 998 bytes
++        // Face: is 5 characters
++        if ( facestring.length() < 993 ) {
++          QByteArray facearray;
++          KCodecs::base64Decode(facestring, facearray);
++    
++          QImage faceimage;
++          if ( faceimage.loadFromData( facearray, "png" ) ) {
++            // Spec says image must be 48x48 pixels
++            if ( (48 == faceimage.width()) && (48 == faceimage.height()) ) {
++              photoURL = imgToDataUrl( faceimage );
++              photoWidth = 48;
++              photoHeight = 48;
++            } else {
++              kdDebug( 5006 ) << "Face: header image is" << faceimage.width() << "by" << faceimage.height() <<"not 48x48 Pixels" << endl;
++            }
++          } else {
++            kdDebug( 5006 ) << "Failed to load decoded png from Face: header" << endl;
++          }
++        } else {
++          kdDebug( 5006 ) << "Face: header too long at " << facestring.length() << endl;
++        }
++      }
++    }
++
+     if( photoURL.isEmpty() )
+     {
+       // no photo, look for a X-Face header
+Index: kmail/kmfoldercachedimap.h
+===================================================================
+--- kmail/kmfoldercachedimap.h	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/kmfoldercachedimap.h	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -445,6 +445,11 @@
+       mLastUid. See above for details. */
+   ulong mTentativeHighestUid;
+ 
++  /** Used to determine whether listing messages yielded a sensible result.
++   * Only then is the deletion o messages (which relies on succesful
++   * listing) attempted, during the sync.  */
++  bool mFoundAnIMAPDigest;
++
+   int mUserRights;
+   ACLList mACLList;
+ 
+Index: kmail/kmmainwidget.cpp
+===================================================================
+--- kmail/kmmainwidget.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/kmmainwidget.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -846,6 +846,10 @@
+     }
+   }
+ 
++  // update folder menus in case some mail got filtered to trash/current folder
++  // and we can enable "empty trash/move all to trash" action etc.
++  updateFolderMenu();
++
+   if ( !showNotification )
+     return;
+ 
+@@ -1013,6 +1017,10 @@
+     BroadcastStatus::instance()->setStatusMsg(i18n("Moved all messages to the trash"));
+ 
+   updateMessageActions();
++
++  // Disable empty trash/move all to trash action - we've just deleted/moved all folder
++  // contents.
++  mEmptyFolderAction->setEnabled( false );
+ }
+ 
+ 
+Index: kmail/kmcomposewin.h
+===================================================================
+--- kmail/kmcomposewin.h	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/kmcomposewin.h	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -398,8 +398,8 @@
+   void slotAttachRemove();
+   void slotAttachSave();
+   void slotAttachProperties();
++  void slotAttachOpenWith();
+ 
+-
+   /**
+    * Select an email from the addressbook and add it to the line
+    * the pressed button belongs to.
+@@ -546,9 +546,9 @@
+   virtual bool queryExit ();
+ 
+   /**
+-   * Open the attachment with the given index.
++   * Open the attachment with the given index and with ("Open with")
+    */
+-  void openAttach( int index );
++  void openAttach( int index, bool with );
+ 
+   /**
+    * View the attachment with the given index.
+@@ -649,6 +649,14 @@
+    */
+   static bool validateAddresses( QWidget * parent, const QString & addresses );
+ 
++  /**
++   * Sets the transport combobox to @p transport. If @p transport is empty
++   * then the combobox remains unchanged. If @p transport is neither a known transport
++   * nor a custom transport then the combobox is set to the default transport.
++   * @param transport the transport the combobox should be set to
++   */
++  void setTransport( const QString & transport );
++
+ private slots:
+    /**
+     * Compress an attachemnt with the given index
+@@ -688,7 +696,7 @@
+   QPtrList<QListViewItem> mAtmItemList;
+   QPtrList<KMMessagePart> mAtmList;
+   QPopupMenu *mAttachMenu;
+-  int mOpenId, mViewId, mRemoveId, mSaveAsId, mPropertiesId;
++  int mOpenId, mOpenWithId, mViewId, mRemoveId, mSaveAsId, mPropertiesId;
+   bool mAutoDeleteMsg;
+   bool mSigningAndEncryptionExplicitlyDisabled;
+   bool mLastSignActionState, mLastEncryptActionState;
+Index: kmail/kmcomposewin.cpp
+===================================================================
+--- kmail/kmcomposewin.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/kmcomposewin.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -333,7 +333,7 @@
+ 
+   connect( mAtmListView,
+            SIGNAL( doubleClicked( QListViewItem* ) ),
+-           SLOT( slotAttachProperties() ) );
++           SLOT( slotAttachOpen() ) );
+   connect( mAtmListView,
+            SIGNAL( rightButtonPressed( QListViewItem*, const QPoint&, int ) ),
+            SLOT( slotAttachPopupMenu( QListViewItem*, const QPoint&, int ) ) );
+@@ -620,18 +620,11 @@
+   while ( transportHistory.count() > (uint)GlobalSettings::self()->maxTransportEntries() )
+     transportHistory.remove( transportHistory.last() );
+   mTransport->insertStringList( transportHistory );
+-  if (mBtnTransport->isChecked() && !currentTransport.isEmpty())
+-  {
+-    for (int i = 0; i < mTransport->count(); i++)
+-      if (mTransport->text(i) == currentTransport)
+-        mTransport->setCurrentItem(i);
+-    mTransport->setEditText( currentTransport );
++  mTransport->setCurrentText( GlobalSettings::self()->defaultTransport() );
++  if ( mBtnTransport->isChecked() ) {
++    setTransport( currentTransport );
+   }
+ 
+-  if ( !mBtnTransport->isChecked() ) {
+-    mTransport->setCurrentText( GlobalSettings::self()->defaultTransport() );
+-  }
+-
+   QString fccName = "";
+   if ( mBtnFcc->isChecked() ) {
+     fccName = GlobalSettings::self()->previousFcc();
+@@ -1659,6 +1652,37 @@
+ }
+ 
+ //-----------------------------------------------------------------------------
++void KMComposeWin::setTransport( const QString & transport )
++{
++  kdDebug(5006) << "KMComposeWin::setTransport( \"" << transport << "\" )" << endl;
++  // Don't change the transport combobox if transport is empty
++  if ( transport.isEmpty() )
++    return;
++
++  bool transportFound = false;
++  for ( int i = 0; i < mTransport->count(); ++i ) {
++    if ( mTransport->text(i) == transport ) {
++      transportFound = true;
++      mTransport->setCurrentItem(i);
++      kdDebug(5006) << "transport found, it's no. " << i << " in the list" << endl;
++      break;
++    }
++  }
++  if ( !transportFound ) { // unknown transport
++    kdDebug(5006) << "unknown transport \"" << transport << "\"" << endl;
++    if ( transport.startsWith("smtp://") || transport.startsWith("smtps://") ||
++         transport.startsWith("file://") ) {
++      // set custom transport
++      mTransport->setEditText( transport );
++    }
++    else {
++      // neither known nor custom transport -> use default transport
++      mTransport->setCurrentText( GlobalSettings::self()->defaultTransport() );
++    }
++  }
++}
++
++//-----------------------------------------------------------------------------
+ void KMComposeWin::setMsg(KMMessage* newMsg, bool mayAutoSign,
+                           bool allowDecryption, bool isModified)
+ {
+@@ -1778,12 +1802,7 @@
+ 
+   QString transport = newMsg->headerField("X-KMail-Transport");
+   if (!mBtnTransport->isChecked() && !transport.isEmpty())
+-  {
+-    for (int i = 0; i < mTransport->count(); i++)
+-      if (mTransport->text(i) == transport)
+-        mTransport->setCurrentItem(i);
+-    mTransport->setEditText( transport );
+-  }
++    setTransport( transport );
+ 
+   if (!mBtnFcc->isChecked())
+   {
+@@ -2898,6 +2917,8 @@
+ 
+      mOpenId = mAttachMenu->insertItem(i18n("to open", "Open"), this,
+                              SLOT(slotAttachOpen()));
++     mOpenWithId = mAttachMenu->insertItem(i18n("Open with..."), this,
++                             SLOT(slotAttachOpenWith()));
+      mViewId = mAttachMenu->insertItem(i18n("to view", "View"), this,
+                              SLOT(slotAttachView()));
+      mRemoveId = mAttachMenu->insertItem(i18n("Remove"), this, SLOT(slotAttachRemove()));
+@@ -3142,12 +3163,23 @@
+   int i = 0;
+   for ( QPtrListIterator<QListViewItem> it(mAtmItemList); *it; ++it, ++i ) {
+     if ( (*it)->isSelected() ) {
+-      openAttach( i );
++      openAttach( i, false );
+     }
+   }
+ }
+ 
+ //-----------------------------------------------------------------------------
++void KMComposeWin::slotAttachOpenWith()
++{
++  int i = 0;
++  for ( QPtrListIterator<QListViewItem> it(mAtmItemList); *it; ++it, ++i ) {
++    if ( (*it)->isSelected() ) {
++      openAttach( i, true );
++    }
++  }
++}
++
++//-----------------------------------------------------------------------------
+ bool KMComposeWin::inlineSigningEncryptionSelected() {
+   if ( !mSignAction->isChecked() && !mEncryptAction->isChecked() )
+     return false;
+@@ -3175,7 +3207,7 @@
+ }
+ 
+ //-----------------------------------------------------------------------------
+-void KMComposeWin::openAttach( int index )
++void KMComposeWin::openAttach( int index, bool with )
+ {
+   KMMessagePart* msgPart = mAtmList.at(index);
+   const QString contentTypeStr =
+@@ -3202,7 +3234,7 @@
+   KService::Ptr offer =
+     KServiceTypeProfile::preferredService( mimetype->name(), "Application" );
+ 
+-  if ( !offer || mimetype->name() == "application/octet-stream" ) {
++  if ( with || !offer || mimetype->name() == "application/octet-stream" ) {
+     if ( ( !KRun::displayOpenWithDialog( url, autoDelete ) ) && autoDelete ) {
+       QFile::remove(url.path());
+     }
+@@ -4280,24 +4312,11 @@
+     if ( transp.isEmpty() )
+     {
+       mMsg->removeHeaderField("X-KMail-Transport");
+-      transp = mTransport->text(0);
++      transp = GlobalSettings::self()->defaultTransport();
+     }
+     else
+       mMsg->setHeaderField("X-KMail-Transport", transp);
+-    bool found = false;
+-    int i;
+-    for (i = 0; i < mTransport->count(); i++) {
+-      if (mTransport->text(i) == transp) {
+-        found = true;
+-        mTransport->setCurrentItem(i);
+-        break;
+-      }
+-    }
+-    if (found == false) {
+-      if (i == mTransport->maxCount()) mTransport->setMaxCount(i + 1);
+-      mTransport->insertItem(transp,i);
+-      mTransport->setCurrentItem(i);
+-    }
++    setTransport( transp );
+   }
+ 
+   mDictionaryCombo->setCurrentByDictionary( ident.dictionary() );
+Index: kmail/popaccount.cpp
+===================================================================
+--- kmail/popaccount.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/popaccount.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -489,12 +489,12 @@
+     mUidlFinished = TRUE;
+ 
+     if ( mLeaveOnServer && mUidForIdMap.isEmpty() &&
+-         mUidsOfNextSeenMsgsDict.isEmpty() && !idsOfMsgs.isEmpty() ) {
+-      KMessageBox::sorry(0, i18n("Your POP3 server does not support the UIDL "
+-      "command: this command is required to determine, in a reliable way, "
+-      "which of the mails on the server KMail has already seen before;\n"
+-      "the feature to leave the mails on the server will therefore not "
+-      "work properly."));
++        mUidsOfNextSeenMsgsDict.isEmpty() && !idsOfMsgs.isEmpty() ) {
++      KMessageBox::sorry(0, i18n("Your POP3 server (Account: %1) does not support "
++      "the UIDL command: this command is required to determine, in a reliable way, " 
++      "which of the mails on the server KMail has already seen before;\n" 
++      "the feature to leave the mails on the server will therefore not " 
++      "work properly.").arg(NetworkAccount::name()) );
+       // An attempt to work around buggy pop servers, these seem to be popular.
+       mUidsOfNextSeenMsgsDict = mUidsOfSeenMsgsDict;
+     }
+Index: kmail/kmfolder.cpp
+===================================================================
+--- kmail/kmfolder.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/kmfolder.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -700,6 +700,7 @@
+ {
+   if (units >= expireNever && units < expireMaxUnits)
+     mUnreadExpireUnits = units;
++    mStorage->writeConfig();
+ }
+ 
+ void KMFolder::setReadExpireAge( int age )
+@@ -714,6 +715,7 @@
+ {
+   if (units >= expireNever && units <= expireMaxUnits)
+     mReadExpireUnits = units;
++    mStorage->writeConfig();
+ }
+ 
+ 
+Index: kmail/kmkernel.h
+===================================================================
+--- kmail/kmkernel.h	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/kmkernel.h	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -96,10 +96,19 @@
+   /** returns id of composer if more are opened */
+   int openComposer (const QString &to, const QString &cc, const QString &bcc,
+                     const QString &subject, const QString &body, int hidden,
+-                    const KURL &messageFile, const KURL::List &attachURLs);
++                    const KURL &messageFile, const KURL::List &attachURLs,
++                    const QCStringList &customHeaders);
+   /** For backward compatibility */
+   int openComposer (const QString &to, const QString &cc, const QString &bcc,
+                     const QString &subject, const QString &body, int hidden,
++                    const KURL &messageFile, const KURL::List &attachURLs)
++  {
++    QCStringList noCustomHeaders;
++    return openComposer(to, cc, bcc, subject, body, hidden, messageFile, attachURLs, noCustomHeaders);
++  }
++  /** For backward compatibility */
++  int openComposer (const QString &to, const QString &cc, const QString &bcc,
++                    const QString &subject, const QString &body, int hidden,
+                     const KURL &messageFile, const KURL& attachURL)
+   {
+     return openComposer(to, cc, bcc, subject, body, hidden, messageFile, KURL::List(attachURL));
+@@ -245,7 +254,8 @@
+   void setFirstInstance(bool value) { the_firstInstance = value; }
+   void action (bool mailto, bool check, const QString &to, const QString &cc,
+                const QString &bcc, const QString &subj, const QString &body,
+-	       const KURL &messageFile, const KURL::List &attach);
++               const KURL &messageFile, const KURL::List &attach,
++               const QCStringList &customHeaders);
+   void byteArrayToRemoteFile(const QByteArray&, const KURL&,
+ 			     bool overwrite = FALSE);
+   bool folderIsDraftOrOutbox(const KMFolder *);
+Index: kmail/Mainpage.dox
+===================================================================
+--- kmail/Mainpage.dox	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/Mainpage.dox	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -793,7 +793,7 @@
+ 
+   - @em BodyPartFormatter
+ 	the formatter interface. Contains a single method format()
+-	that takes a BodyPart to process and a HTMLWriter to write the
++	that takes a BodyPart to process and an HTMLWriter to write the
+ 	generated HTML to and returns a result code with which it can
+ 	request more information or delegate the formatting back to
+ 	some default processor. BodyPartFormatters are meant to be
+Index: kmail/kmail_config_accounts.desktop
+===================================================================
+--- kmail/kmail_config_accounts.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kmail/kmail_config_accounts.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -13,6 +13,7 @@
+ X-KDE-CfgDlgHierarchy=KMail
+ 
+ Name=Accounts
++Name[ar]=الحسابات
+ Name[be]=Рахункі
+ Name[bg]=Сметки
+ Name[br]=Kontoù
+@@ -61,6 +62,7 @@
+ Name[zh_CN]=账户
+ Name[zh_TW]=帳號
+ Comment=Setup for Sending and Receiving Messages
++Comment[ar]=تعيينات إرسال و إستقبال الرسائل
+ Comment[bg]=Настройки на мрежата, сървърите и сметките
+ Comment[bs]=Postavke za slanje i prijem poruka
+ Comment[ca]=Configuració per enviar i rebre missatges
+Index: knode/articlewidget.h
+===================================================================
+--- knode/articlewidget.h	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ knode/articlewidget.h	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -145,7 +145,7 @@
+       FancyFormatting = 2,
+       AllowROT13 = 4
+     };
+-    /// convert the given string into a HTML string
++    /// convert the given string into an HTML string
+     QString toHtmlString( const QString &line, int flags = ParseURL );
+     /// convert the given image into a data:/ URL
+     static QString imgToDataUrl( const QImage &image, const char* fmt );
+Index: knode/knode_config_accounts.desktop
+===================================================================
+--- knode/knode_config_accounts.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ knode/knode_config_accounts.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -13,6 +13,7 @@
+ X-KDE-CfgDlgHierarchy=KNode
+ 
+ Name=Accounts
++Name[ar]=الحسابات
+ Name[be]=Рахункі
+ Name[bg]=Сметки
+ Name[br]=Kontoù
+Index: knode/KNode.desktop
+===================================================================
+--- knode/KNode.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ knode/KNode.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -42,7 +42,7 @@
+ GenericName[id]=Pembaca Berita
+ GenericName[is]=Fréttaforrit
+ GenericName[it]=Lettore newsgroup
+-GenericName[ja]=ニュースリーダ
++GenericName[ja]=ニュースリーダー
+ GenericName[km]=កម្មវិធី​អាន​ព័ត៌មាន
+ GenericName[lt]=Naujienų skaityklė
+ GenericName[lv]=Ziņu Lasītājs
+Index: kaddressbook/features/distributionlistwidget.cpp
+===================================================================
+--- kaddressbook/features/distributionlistwidget.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kaddressbook/features/distributionlistwidget.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -327,6 +327,7 @@
+ #else
+   KABC::DistributionList *list = mManager->list( oldName );
+   list->setName( newName );
++  mManager->save();
+   updateNameCombo();
+ #endif
+ 
+Index: libkholidays/holidays/holiday_gr
+===================================================================
+--- libkholidays/holidays/holiday_gr	(.../tags/KDE/3.5.5/kdepim)	(revision 0)
++++ libkholidays/holidays/holiday_gr	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -0,0 +1,309 @@
++:
++: Greek holiday file.
++:
++: Author: capthookb (praktoreio2002 at yahoo.gr)
++:
++: "weekend" or "red" indicate a "proper" holiday (i.e. you do not work)
++:  Other colours (black, green, yellow, blue, magenta, cyan, white)
++: can be used to distinguish between minor anniversaries or not-so-real
++: holidays, when you go working anyway.
++: "small" holidays are not as "invasive" in the month view in KOrganizer,
++: and do not take as much space.
++
++: Ονομαστικές εορτές
++
++small black "Βασίλης, Βασιλική, Βασιλεία, Βίβιαν" on 1.1
++small black "Συλβέστρος" on 2.1
++small black "Θεώνη" on 5.1
++small black "Άγια Θεοφάνεια (Αργία)" on 6.1
++small black "Φώτης, Φωτεινή, Θεοφάνης, Θεοφανία, Φανή, Ιορδάνης, Θεανώ, Ουρανία, Θεοπούλα" on 6.1
++small black "Ιωάννης, Ιωάννα, Πρόδρομος" on 7.1
++small black "Αγάθων, Δομινίκη, Παρθένα, Κύρος" on 8.1
++small black "Θεοδόσης, Θεοδοσία" on 11.1
++small black "Τατιάνα, Τατιανή" on 12.1
++small black "Αντώνης, Αντωνία" on 17.1
++small black "Αθανάσιος, Αθανασία, Κύριλλος" on 18.1
++small black "Μακάριος" on 19.1
++small black "Ευθύμης, Ευθυμία, Φαβιανός" on 20.1
++small black "Αγνή, Μάξιμος, Νεόφυτος, Πάτροκλος" on 21.1
++small black "Τιμόθεος, Αναστάσιος, Αναστασία" on 22.1
++small black "Αγαθάγγελος" on 23.1
++small black "Ξένη, Φίλωνας, Ζωσιμάς" on 24.1
++small black "Γρηγόρης, Γρηγορία, Μαργαρίτα" on 25.1
++small black "Ξενοφών" on 26.1
++small black "Χάρις, Παλλάδιος" on 28.1
++small black "Μαύρος, Χρυσή, Τριών Ιεραρχών (Σχολική Αργία)" on 30.1
++small black "Ευδοξία, Κύρος" on 31.1
++small black "Τρύφωνας" on 1.2
++small black "Υπαπαντή" on 2.2
++small black "Σταμάτ-ης/ία, Συμεώ-ν/νή, Σιμώνη, Ασημάκης, Ασημίνα, Μαλαματή" on 3.2
++small black "Ισίδωρος, Ιάσιμος, Ιασίμη" on 4.2
++small black "Αγαθή" on 5.2
++small black "Φώτης" on 6.2
++small black "Παρθένιος, Παρθενία" on 7.2
++small black "Ζαχαρίας, Ζαχαρούλα" on 8.2
++small black "Μάρκελος, Νικηφόρος, Νίκη" on 9.2
++small black "Χαράλαμπος, Χαραλαμπία, Χαρίκλεια, Χαρίλαος, Χαρούλα" on 10.2
++small black "Βλάσης, Βλασία, Θοδωρής, Θοδώρα, Αυγή " on 11.2
++small black "Μελέτης, Πλωτίνος" on 12.2
++small black "Πρίσκιλλα" on 13.2
++small black "Βαλεντίνος, Βαλεντίνη, Παγκόσμια Ημέρα Ερωτευμένων" on 14.2
++small black "Ευσέβιος, Ευσεβία" on 15.2
++small black "Πάμφιλος, Παμφίλη, Σέλευκος, Σελεύκη" on 16.2
++small black "Λέων, Αγαπητός" on 18.2
++small black "Φιλοθέη, Χλόη" on 19.2
++small black "Ανθούσα" on 22.2
++small black "Πολύκαρπος" on 23.2
++small black "Πορφύρης, Φωτεινή" on 26.2
++small black "Μαριάννα, Ασκληπιός" on 28.2
++small black "Ευδοκία, Χαρίσιος" on 1.3
++small black "Ευθαλία" on 2.3
++small black "Κλεόνικος, Κλεονίκη" on 3.3
++small black "Αρχέλαος, Eυλόγιος" on 5.3
++small black "Ησύχιος" on 6.3
++small black "Ευγένιος, Ευγενία" on 7.3
++small black "Ερμής, Θεοφύλακτος, Παγκόσμια Ημέρα της Γυναίκας" on 8.3
++small black "Σμάραγδος, Σμαράγδα, Ηλιάνα, Λεόντιος, Λεοντία, Λυσίμαχος Λυσιμαχη" on 9.3
++small black "Ξάνθος, Ξανθούλα, Σαράντης Σαραντούλα, Φιλοκτήμων" on 9.3
++small black "Θεόδωρος Θεοδώρα, Θώδος, Θώδη, Θαλλής, Θάλεια, Σωφρόνιος, Σωφρονία" on 11.3
++small black "Λωξάντρα, Ρωξάνη, Oρθοδόξης," on 12.3
++small black "Λέανδρος" on 13.3
++small black "Βενέδικτος, Βενεδίκτη" on 14.3
++small black "Αγάπιος" on 15.3
++small black "Χριστόδουλος, Ιουλιανός" on 16.3
++small black "Αλέξιος, Αλεξία" on 17.3
++small black "Χρύσανθος, Χρυσάνθη" on 19.3
++small black "Δρόσος, Δροσούλα" on 22.3
++small black "Ευαγγελισμός της Θεοτόκου " on 25.3
++small black "Ευάγγελος, Ευαγγελία" on 25.3
++small black "Πούλιος, Σύλας, Σύλια" on 26.3
++small black "Λυδία, Μακεδόνιος, Μακεδονούλα" on 27.3
++small black "Ευτύχιος, Ευτυχία" on 6.4
++small black "Ιωσήφ, Ιωσηφίνα" on 9.4
++small black "Δημοσθένης, Ηρακλής, Μιλτιάδης, Περικλής, Σοφοκλής, Επαμεινώνδας" on 10.4
++small black "Όμηρος, Πελοπίδας, Παρμενίων, Πολύβιος, Αναξιμένης, Φοιλοποίμην, Φίλης" on 10.4
++small black "Αρίσταρχος, Θωμαΐς" on 14.4
++small black "Λεωνίδας, Λάζαρος" on 15.4
++small black "Βάϊος, Βάϊα, Δάφνη, Γαλήνη, Χιονία" on 16.4
++small black "Ναθαναήλ, Νέαρχος, Νιάρχος" on 22.4
++small black "Αναστάσιος, Αναστασία, Λάμπρος, Λαμπρινή, Πασχάλης " on 23.4
++small black "Γεώργιος, Γεωργία, Ελισάβετ, Αχιλλέας" on 24.4
++small black "Μάρκος, Νίκη, Ραφαήλ" on 25.4
++small black "Ζωή, Πηγή" on 28.4
++small black "Ιάσωνας" on 29.4
++small black "Ιάκωβος, Θωμάς, Θωμαή, Ασημίνα" on 30.4
++weekend "Ιερεμίας" on 1.5
++small black "Έσπερος, Εσπέρια" on 2.5
++small black "Ροδόπη" on 3.5
++small black "Ειρήνη, Eιρηναίος, Ευφραίμ" on 5.5
++small black "Μυροφόρα" on 7.5
++small black "Θεολόγος" on 8.5
++small black "Χριστόφορος, Ησαΐας" on 9.5
++small black "Σίμων" on 10.5
++small black "Aρμόδιος,Μεθόδιος, Ολυμπία" on 11.5
++small black "Επιφάνειος" on 12.5
++small black "Γλυκερία" on 13.5
++small black "Γιορτή της Μητέρας, Αριστοτέλης" on 14.5
++small black "Καλή" on 15.5
++small black "Ανδρόνικος, Ανδρονίκη, Ιουνία" on 17.5
++small black "Ιουλία, Γαλάτεια" on 18.5
++small black "Θεόκτιστος, Μαγδαληνή, Πατρίκιος" on 19.5
++small black "Λυδία" on 20.5
++small black "Κωνσταντίνος, Κωνσταντίνα, Ελένη" on 21.5
++small black "Αιμίλιος, Αιμιλία, Έμυ" on 22.5
++small black "Μαρκιανή" on 24.5
++small black "Θεοδοσία" on 29.5
++small black "Πύρρος, Νεφέλη, Ιουστίνος, Ανάληψη" on 1.6
++small black "Νικηφόρος, Μαρίνος" on 2.6
++small black "Υπάτιος, Υπατία" on 3.6
++small black "Μάρθα" on 4.6
++small black "Aπόλλων, Δωρόθεος, Δωροθέα, Σελήνη, Νίκανδρος" on 5.6
++small black "Καλλιόπη" on 8.6
++small black "Ροδάνθη" on 9.6
++small black "Βαρθολομαίος, Βαρνάβας" on 11.6
++small black "Ονούφριος, Ζήνων,Κορίνα, Αγίου Πνεύματος" on 12.6
++small black "Ελισαίος" on 14.6
++small black "Αυγουστίνος, Αυγούστα, Ιερώνυμος, Μόνικα, Ορτανσία" on 15.6
++small black "Γιορτή του πατέρα" on 16.6
++small black "Έρασμος, Ερασμία, Aγίων Πάντων" on 18.6
++small black "Παΐσιος, Ζωσιμάς, Ζήσης" on 19.6
++small black "Ευσέβιος, Ευσεβία" on 22.6
++small black "Αριστοκλής" on 23.6
++small black "Φεβρωνία, Έρωτας" on 25.6
++small black "Γερμανός" on 28.6
++small black "Πέτρος, Πέτρα, Παύλος, Παυλίνα" on 29.6
++small black "Απόστολος, Αποστολία, Μελίτων" on 30.6
++small black "Αργύρης, Αργυρώ, Κοσμάς, Δαμιανός, Ανάργυρος" on 1.7
++small black "Υάκινθος, Ζουμπουλία" on 3.7
++small black "Λουκία" on 4.7
++small black "Λυκίας, Λύκιος, Λυκία, " on 6.7
++small black "Κυριακή" on 7.7
++small black "Θεόφιλος, Προκόπιος" on 8.7
++small black "Ευφημία, Όλγα" on 11.7
++small black "Βερονίκη, Βερενίκη " on 12.7
++small black "Σάρα" on 13.7
++small black "Ακύλας, Νικόδημος" on 14.7
++small black "Βλαδίμηρος, Ιουλίττα, Κήρυκος" on 15.7
++small black "Μαρίνα" on 17.7
++small black "Αιμίλιος, Αιμιλία" on 18.7
++small black "Ηλίας, Ηλιάνα" on 20.7
++small black "Μαγδαληνή, Μαρκέλλα, Μαριλένα" on 22.7
++small black "Φωκάς" on 23.7
++small black "Αθηναγόρας" on 24.7
++small black "Άννα, Ολυμπία" on 25.7
++small black "Παρασκευή, Παρασκευάς, Έρση" on 26.7
++small black "Παντελής" on 27.7
++small black "Ειρήνη, Χρυσοβαλάντης, Βαλάντης, Χρυσοβαλάντου, Ακάκιος" on 28.7
++small black "Καλλίνικος" on 29.7
++small black "Ανδρόνικος, Ανδρονίκη" on 30.7
++small black "Ιωσήφ, Ιωσηφίνα" on 31.7
++small black "Μάρκελος" on 1.8
++small black "Σωτήρης, Σωτηρία, Ευμορφία, Έμμυ, Μορφούλα" on 6.8
++small black "Αστέριος, Αστερία" on 7.8
++small black "Τριαντάφυλλος, Τριανταφυλλιά" on 8.8
++small black "Ρωμανός" on 9.8
++small black "Λαυρέντης, Λαυρεντία, Ευλαμπία, Ιππόλυτος, Ηρώ " on 10.8
++weekend "Κοίμηση της Θεοτόκου (Αργία)" on 15.8
++weekend "Μαρία, Μάριος, Παναγιώτης, Παναγιώτα, Δέσποινα, Θεοτόκης" on 15.8
++small black "Γεράσιμος, Αλκιβιάδης, Διομήδης, Σαράντης" on 16.8
++small black "Λευκοθέα, Μύρων, Μίρκα" on 17.8
++small black "Φλώρα" on 18.8
++small black "Σαμουήλ, Θεοχάρης" on 20.8
++small black "Aγαθόνικος" on 22.8
++small black "Κοσμάς" on 24.8
++small black "Βαρθολομαίος, Τίτος" on 25.8
++small black "Ναταλία, Ανδριανός, Ανδριανή" on 26.8
++small black "Φανούριος, Φανουρία, Αρκαδία" on 27.8
++small black "Θεοπίστη" on 29.8
++small black "Αλέξανδρος" on 30.8
++small black "Αδαμάντιος, Αδαμαντία, Αθηνά, Αντιγόνη, Ασπασία, Αφροδίτη, Δωδώνη" on 1.9
++small black "Ελπινίκη, Ερασμία, Ερατώ, Ευτέρπη, Θάλεια, Θεανώ, Καλλίστη, Κλειώ, Κλεονίκη" on 1.9
++small black "Κλεοπάτρα, Κοραλία, Μαργαρίτα, Μαριάνθη, Μελέτιος, Μελπομένη, Ουρανία" on 1.9
++small black "Πανδώρα, Πηνελόπη, Πολυμνία, Πολυνίκη, Σαπφώ, Συμεών, Τερψιχόρη, Χάιδω" on 1.9
++small black "Άνθιμος, Πολύδωρος, Φοίβη" on 3.9
++small black "Ερμιόνη, Μωυσής" on 4.9
++small black "Ζαχαρίας" on 5.9
++small black "Κασσιανή, Σώζων" on 7.9
++small black "Ιωακείμ" on 9.9
++small black "Εράστη, Εράστος, Μητροδώρα, Πουλχερία" on 10.9
++small black "Ευανθία" on 11.9
++small black "Αριστείδης, Κορνήλιος" on 13.9
++small black "Σταύρος, Σταυρούλα" on 14.9
++small black "Νικήτας, Βησσαρίων" on 15.9
++small black "Ευφημία" on 16.9
++small black "Σοφία, Ελπίδα, Αγάπη, Πίστη, Σόνια" on 17.9
++small black "Αριάδνη" on 18.9
++small black "Ευστάθιος, Ευσταθία" on 20.9
++small black "Ίωνας" on 21.9
++small black "Φωκάς, Ζωγραφιά" on 22.9
++small black "Πολυξένη, Ξανθίππη, Ξάνθιππος" on 23.9
++small black "Θέκλα, Μυρσίνη, Μυρτώ" on 24.9
++small black "Ευφροσύνη" on 25.9
++small black "Ζήνων" on 27.9
++small black "Κυριάκος, Κυριακή" on 29.9
++small black "Θηρεσία" on 1.10
++small black "Κυπριανός" on 2.10
++small black "Διονύσης, Διονυσία" on 3.10
++small black "Ιερόθεος, Φραγκίσκος" on 4.10
++small black "Χαριτινή" on 5.10
++small black "Σέργιος, Πολυχρόνης, Χρόνης" on 7.10
++small black "Πελαγία" on 8.10
++small black "Ευλάμπιος, Ευλαμπία" on 10.10
++small black "Ανδρομάχη, Ανδρόμαχος" on 12.10
++small black "Αγαθονίκη, Φλωρέντιος, Φλωρεντία" on 13.10
++small black "Λουκιανός" on 15.10
++small black "Λουκάς" on 18.10
++small black "Γεράσιμος, Αρτέμιος" on 20.10
++small black "Σωκράτης, Χριστόδουλος, Όυρσουλα" on 21.10
++small black "Αβέρκιος" on 22.10
++small black "Ιάκωβος" on 23.10
++small black "Χρυσάφης" on 25.10
++small black "Δημήτριος, Δήμητρα, Δανάη" on 26.10
++small black "Νέστορας" on 27.10
++small black "Ζηνοβία, Κλεόπας, Μαρκιανός" on 30.10
++small black "Αριστόβουλος" on 31.10
++small black "Αργύρης, Αργυρώ, Κοσμάς, Δαμιανός, Ανάργυρος" on 1.11
++small black "Αφθόνιος, Αφθονία" on 2.11
++small black "Ιωαννίκη" on 4.11
++small black "Λίνος" on 5.11
++small black "Λεονάρδος" on 6.11
++small black "Αθηνόδωρος" on 7.11
++small black "Σταμάτιος, Σταματία, Μιχάλης, Γαβριήλ, Γαβριέλα" on 8.11
++small black "Ταξιάρχης, Άγγελος, Αγγελική, Ματίνα, Σεραφείμ" on 8.11
++small black "Νεκτάριος, Νεκταρία" on 9.11
++small black "Ορέστης" on 10.11
++small black "Μηνάς, Mήνα, Βίκτωρ, Βικτωρία" on 11.11
++small black "Χρυσόστομος" on 13.11
++small black "Φίλιππος" on 14.11
++small black "Ματθαίος, Ιφιγένεια" on 16.11
++small black "Πλάτωνας" on 18.11
++small black "Μαρία, Μάριος" on 21.11
++small black "Φιλήμων" on 22.11
++small black "Μερώπη" on 23.11
++small black "Κατερίνα, Μερκούριος" on 25.11
++small black "Στέλιος, Στέλλα, Στέργιος" on 26.11
++small black "Φαίδρα" on 29.11
++small black "Ανδρέας, Ανδριάνα" on 30.11
++small black "Θεόκλητος, Ιακώβ" on 1.12
++small black "Βαρβάρα, Δαμασκηνός" on 4.12
++small black "Σάββας, Σαββούλα, Διογένης" on 5.12
++small black "Νίκος, Νικολέττα" on 6.12
++small black "Αμβρόσιος" on 7.12
++small black "Άννα" on 9.12
++small black "Ααρών, Αδάμ, Δαυίδ, Δανάη, Εύα, Ισαάκ, Ιώβ, Ραχήλ, Ρουμπίνη" on 11.12
++small black "Σπύρος, Σπυριδούλα" on 12.12
++small black "Ευστράτιος, Λουκάς, Λουκία, Άρης" on 13.12
++small black "Ελευθέριος, Ελευθερία, Ανθή, Σύλβια" on 15.12
++small black "Διονύσης, Διονυσία, Δανιήλ, Ρεβέκα, Σεβαστιανός, Σεβαστή" on 17.12
++small black "Ααρών, Αδάμ, Ισαάκ, Ραχήλ, Σάρα" on 17.12
++small black "Αγλαΐα" on 19.12
++small black "Ιγνάτιος" on 20.12
++small black "Θεμιστοκλής, Ιουλία" on 21.12
++small black "Αναστασία" on 22.12
++small black "Ευγένιος, Ευγενία" on 24.12
++small black "Χρήστος, Χριστίνα, Χρύσα" on 25.12
++weekend "Σύναξις Θεοτόκου (Αργία)" on 26.12
++weekend "Μανώλης, Εμμανουέλα, Δαβίδ" on 26.12
++small black "Στέφανος, Στεφανία" on 27.12
++small black "Δόμνα" on 28.12
++small black "Ιωσήφ" on 30.12
++weekend "Χριστούγεννα (Αργία)" on 25.12
++
++
++: Αργίες - Επέτειοι
++weekend "Πρωτοχρονιά (Αργία)" on 1.1
++weekend "Πρωτομαγιά (Αργία)" on 1.5
++weekend "Επέτειος του ΟΧΙ (Αργία)" 28.10
++weekend "Επέτειος της επανάστασης του 1821 (Αργία)" on 25.3
++small black "Εξέγερση του Πολυτεχνείου (Σχολική Αργία)" on 17.11
++
++: Κινητές εορτές
++
++small black "Τελώνου και Φαρισαίου - Αρχή Τριωδίου" on easter minus 70 days
++small black "Του Ασώτου" on easter minus 63 days
++small black "Τσικνοπέμπτη" on easter minus 59 days
++small black "Κυριακή των Απόκρεω" on easter minus 56 days
++small black "Τυροφάγου" on easter minus 49 days
++small black "Καθαρή Δευτέρα (Αργία)" on easter minus 48 days
++small black "Θεόδωρος, Θεοδώρα, Δώρα, Θώδης, Θώδος, Δώρης" on easter minus 43 days
++small black "Κυριακή της Ορθοδοξίας" on easter minus 42 days
++small black "Σάββατο του Λαζάρου" on easter minus 8 days
++small black "Κυριακή των Βαΐων" on easter minus 7 days
++small black "Μεγάλη Δευτέρα" on easter minus 6 days
++small black "Μεγάλη Τρίτη" on easter minus 5 days
++small black "Μεγάλη Τετάρτη" on easter minus 4 days
++small black "Μεγάλη Πέμπτη" on easter minus 3 days
++weekend "Μεγάλη Παρασκευή (Αργία)" on easter minus 2 days
++weekend "Μεγάλο Σάββατο" on easter minus 1 days
++weekend "Το Άγιον Πάσχα" on easter
++weekend "Δευτέρα του Πάσχα (Αργία)" on easter plus 1 days
++small black "Πηγή, Ζήσης, Ζησούλα, Ζήσιμος, Ζωή, Ζώης" on easter plus 5 days
++small black "Του Θωμά" on easter plus 7 days
++small black "Ανάληψη του Χριστού" on easter plus 39 days
++small black "Πεντηκοστή" on easter plus 49 days
++small black "Αγ. Πνεύματος" on easter plus 50 days
++small black "Αγ. Πάντων" on easter plus 56 days
++
++: Αλλαγή ώρας
++small black "Αλλαγή ώρας (1 ώρα πίσω)" on last sunday in october
++small black "Αλλαγή ώρας (1 ώρα μπροστά) " on last sunday in march
+Index: libkholidays/holidays/Makefile.am
+===================================================================
+--- libkholidays/holidays/Makefile.am	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ libkholidays/holidays/Makefile.am	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -5,13 +5,13 @@
+                 holiday_ca holiday_catalan holiday_co \
+                 holiday_ch holiday_cz holiday_de holiday_dk holiday_ee \
+                 holiday_es holiday_fi holiday_fr holiday_frswiss holiday_gb \
+-                holiday_gt \
++                holiday_gr holiday_gt \
+                 holiday_hu holiday_is holiday_il holiday_it holiday_ja \
+                 holiday_lt holiday_mx \
+                 holiday_nl \
+                 holiday_no holiday_nz holiday_pl holiday_pt holiday_py \
+                 holiday_quebec \
+-                holiday_ro holiday_ru \ 
++                holiday_ro holiday_ru \
+ 		holiday_se holiday_si holiday_th holiday_us \
+                 holiday_uy holiday_ie \
+                 holiday_Suedtirol
+Index: libkdepim/categoryeditdialog.cpp
+===================================================================
+--- libkdepim/categoryeditdialog.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ libkdepim/categoryeditdialog.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -76,6 +76,7 @@
+   }
+   mWidget->mButtonRemove->setEnabled( categoriesExist );
+   mWidget->mCategories->setSelected( mWidget->mCategories->firstChild(), true );
++  mWidget->mEdit->setText( mWidget->mCategories->currentItem()->text( 0 ) );
+ }
+ 
+ void CategoryEditDialog::slotTextChanged(const QString &text)
+Index: libkdepim/addresseelineedit.cpp
+===================================================================
+--- libkdepim/addresseelineedit.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ libkdepim/addresseelineedit.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -660,6 +660,8 @@
+             completionBox->setCurrentItem( item );
+             completionBox->setSelected( item, wasSelected );
+             completionBox->blockSignals( false );
++          } else {
++            completionBox->clearSelection();
+           }
+         }
+         else // completion box not visible yet -> show it
+@@ -821,7 +823,7 @@
+       // to ignore. If so, go one further
+       QListBoxItem *itemAbove = completionBox()->item( currentIndex - 1 );
+       if ( itemAbove && !itemAbove->text().startsWith( s_completionItemIndentString ) ) {
+-        // there is a header above is, check if there is even further up
++        // there is a header above us, check if there is even further up
+         // and if so go one up, so it'll be selected
+         if ( currentIndex > 1 && completionBox()->item( currentIndex - 2 ) ) {
+           //kdDebug() << "EVENTFILTER: Key_Up -> skipping " << currentIndex - 1 << endl;
+@@ -831,6 +833,7 @@
+             // nothing to skip to, let's stay where we are, but make sure the
+             // first header becomes visible, if we are the first real entry
+             completionBox()->ensureVisible( 0, 0 );
++            completionBox()->setSelected( currentIndex, true );
+         }
+         return true;
+       }
+@@ -845,9 +848,14 @@
+           completionBox()->setSelected( currentIndex + 2, true );
+         } else {
+           // nothing to skip to, let's stay where we are
++          completionBox()->setSelected( currentIndex, true );
+         }
+         return true;
+       }
++      // special case of the last and only item in the list needing selection
++      if ( !itemBelow && currentIndex == 1 ) {
++        completionBox()->setSelected( currentIndex, true );
++      }
+       // special case of the initial selection, which is unfortunately a header.
+       // Setting it to selected tricks KCompletionBox into not treating is special
+       // and selecting making it current, instead of the one below.
+Index: libkcal/localdir.desktop
+===================================================================
+--- libkcal/localdir.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ libkcal/localdir.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -34,7 +34,7 @@
+ Name[pt]=Calendário numa Directoria Local
+ Name[pt_BR]=Calendário em Diretório Local
+ Name[ro]=Calendar în director local
+-Name[ru]=Календарь в локальном каталоге
++Name[ru]=Календарь в локальной папке
+ Name[sk]=Kalendár v lokálnom priečinku
+ Name[sl]=Koledar v krajevnem imeniku
+ Name[sr]=Календар у локалном директоријуму
+Index: libkcal/calendarresources.cpp
+===================================================================
+--- libkcal/calendarresources.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ libkcal/calendarresources.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -106,6 +106,8 @@
+ {
+   close();
+   delete mManager;
++  delete mStandardPolicy;
++  delete mAskPolicy;
+ }
+ 
+ void CalendarResources::readConfig( KConfig *config )
+Index: libkcal/libical/src/libical/sspm.c
+===================================================================
+--- libkcal/libical/src/libical/sspm.c	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ libkcal/libical/src/libical/sspm.c	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -1171,7 +1171,7 @@
+ 			     char *src,
+ 			     size_t *size)
+ {
+-    int cc;
++    int cc = 0;
+     char buf[4] = {0,0,0,0};  
+     int p = 0;
+     int valid_data = 0;
+Index: libkcal/icalformatimpl.cpp
+===================================================================
+--- libkcal/icalformatimpl.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ libkcal/icalformatimpl.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -195,14 +195,15 @@
+ //      if (event->dtEnd().date() != event->dtStart().date()) {
+         // +1 day because end date is non-inclusive.
+         end = writeICalDate( event->dtEnd().date().addDays( 1 ) );
++        icalcomponent_add_property(vevent,icalproperty_new_dtend(end));
+ //      }
+     } else {
+ //      kdDebug(5800) << " Event " << event->summary() << " has time." << endl;
+       if (event->dtEnd() != event->dtStart()) {
+         end = writeICalDateTime(event->dtEnd());
++        icalcomponent_add_property(vevent,icalproperty_new_dtend(end));
+       }
+     }
+-    icalcomponent_add_property(vevent,icalproperty_new_dtend(end));
+   }
+ 
+ // TODO: resources
+@@ -950,6 +951,8 @@
+   QStringList categories;
+   icalproperty_transp transparency;
+ 
++  bool dtEndProcessed = false;
++
+   while (p) {
+     icalproperty_kind kind = icalproperty_isa(p);
+     switch (kind) {
+@@ -968,6 +971,7 @@
+           event->setDtEnd(readICalDateTime(icaltime, tz));
+           event->setFloats( false );
+         }
++        dtEndProcessed = true;
+         break;
+ 
+       case ICAL_RELATEDTO_PROPERTY:  // related event (parent)
+@@ -993,6 +997,12 @@
+     p = icalcomponent_get_next_property(vevent,ICAL_ANY_PROPERTY);
+   }
+ 
++  // according to rfc2445 the dtend shouldn't be written when it equals
++  // start date. so assign one equal to start date.
++  if ( !dtEndProcessed ) {
++    event->setDtEnd( event->dtStart() );
++  }
++
+   QString msade = event->nonKDECustomProperty("X-MICROSOFT-CDO-ALLDAYEVENT");
+   if (!msade.isNull()) {
+     bool floats = (msade == QString::fromLatin1("TRUE"));
+Index: libkcal/todo.cpp
+===================================================================
+--- libkcal/todo.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ libkcal/todo.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -275,11 +275,17 @@
+ 
+     if ( ( r->duration() == -1 || ( nextDate.isValid() && endDateTime.isValid()
+            && nextDate <= endDateTime ) ) ) {
+-      setDtDue( nextDate );
+-      while ( !recursAt( dtDue() ) || dtDue() <= QDateTime::currentDateTime() ) {
+-        setDtDue( r->getNextDateTime( dtDue() ) );
++
++      while ( !recursAt( nextDate ) || nextDate <= QDateTime::currentDateTime() ) {
++
++        if ( !nextDate.isValid() || nextDate > endDateTime ) {
++          return false;
++        }
++
++        nextDate = r->getNextDateTime( nextDate );
+       }
+ 
++      setDtDue( nextDate );
+       setCompleted( false );
+       setRevision( revision() + 1 );
+ 
+Index: libkcal/htmlexport.h
+===================================================================
+--- libkcal/htmlexport.h	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ libkcal/htmlexport.h	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -37,7 +37,7 @@
+ namespace KCal {
+ 
+ /**
+-  This class provides the functions to export a calendar as a HTML page.
++  This class provides the functions to export a calendar as an HTML page.
+ */
+ class KDE_EXPORT HtmlExport
+ {
+Index: kpilot/conduits/sysinfoconduit/sysinfo-setup_dialog.ui
+===================================================================
+--- kpilot/conduits/sysinfoconduit/sysinfo-setup_dialog.ui	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kpilot/conduits/sysinfoconduit/sysinfo-setup_dialog.ui	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -99,7 +99,7 @@
+                                     <bool>true</bool>
+                                 </property>
+                                 <property name="whatsThis" stdset="0">
+-                                    <string>&lt;qt&gt;Select this option to output the system information data as a HTML document.&lt;/qt&gt;</string>
++                                    <string>&lt;qt&gt;Select this option to output the system information data as an HTML document.&lt;/qt&gt;</string>
+                                 </property>
+                             </widget>
+                             <widget class="QRadioButton" row="1" column="0" rowspan="1" colspan="2">
+Index: kpilot/conduits/memofileconduit/memofile-conduit.desktop
+===================================================================
+--- kpilot/conduits/memofileconduit/memofile-conduit.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kpilot/conduits/memofileconduit/memofile-conduit.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -47,7 +47,7 @@
+ Comment[es]=Este conducto sincroniza las notas de su agenda electrónica con el directorio local.
+ Comment[et]=See kanal sünkroniseerib pihuarvutis ja arvutis olevad memod.
+ Comment[eu]=Kanal honek zure agendako oharrak direktorio lokal batekin sinkronizatzen ditu.
+-Comment[fa]=این لوله، memo‌های دستی خود را با یک فهرست راهنمای محلی همگام‌سازی کنید.
++Comment[fa]=این لوله، memo‌های دستی خود را با یک فهرست راهنمای محلی همگام‌سازی می‌کند.
+ Comment[fi]=Tämä yhdyskäytävä synkronoi taskutietokoneen muistiot paikalliseen kansioon.
+ Comment[fr]=Ce canal synchronise les mémos du Palm avec ceux de KDE.
+ Comment[hu]=Ezzel a csatolóval egy kézi számítógép memóit lehet szinkronizálni a helyi címjegyzékkel.
+Index: kpilot/conduits/docconduit/doc_conduit.desktop
+===================================================================
+--- kpilot/conduits/docconduit/doc_conduit.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kpilot/conduits/docconduit/doc_conduit.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -17,7 +17,7 @@
+ Comment[hu]=Szöveges fájlok hozzáadása a kézi számítógéphez, DOC-olvasók számára.
+ Comment[is]=Bætir textaskrám, sem hægt er að lesa í DOC lesara, við lófatölvuna þína.
+ Comment[it]=Aggiunge file di testo al tuo Pilot, adatti per lettori DOC.
+-Comment[ja]=テキストファイルを DOC リーダに適した形式でハンドヘルドに追加します。
++Comment[ja]=テキストファイルを DOC リーダーに適した形式でハンドヘルドに追加します。
+ Comment[km]=បន្ថែម​ឯកសារ​អត្ថបទ​ទៅ​ឧបករណ៍​យួរ​ដៃ​របស់​អ្នក (សមស្រប​សម្រាប់​កម្មវិធី​អាន DOC) ។
+ Comment[lt]=Prideda teksto bylas prie Jūsų nešiojamos knygelės, tinka DOC skaityklėms.
+ Comment[ms]=Menambah fail teks ke komputer telapak, sesuai dengan pembaca DOC.
+Index: kontact/plugins/akregator/akregatorplugin.desktop
+===================================================================
+--- kontact/plugins/akregator/akregatorplugin.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kontact/plugins/akregator/akregatorplugin.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -65,7 +65,7 @@
+ Name[es]=Orígenes
+ Name[et]=Kanalid
+ Name[eu]=Iturriak
+-Name[fa]=خوراندن
++Name[fa]=خوراندنها
+ Name[fi]=Syötteet
+ Name[fr]=Flux
+ Name[ga]=Fothaí
+Index: kontact/plugins/akregator/akregatorplugin3.2.desktop
+===================================================================
+--- kontact/plugins/akregator/akregatorplugin3.2.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kontact/plugins/akregator/akregatorplugin3.2.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -64,7 +64,7 @@
+ Name[es]=Orígenes
+ Name[et]=Kanalid
+ Name[eu]=Iturriak
+-Name[fa]=خوراندن
++Name[fa]=خوراندنها
+ Name[fi]=Syötteet
+ Name[fr]=Flux
+ Name[ga]=Fothaí
+Index: kontact/interfaces/kontactplugin.desktop
+===================================================================
+--- kontact/interfaces/kontactplugin.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kontact/interfaces/kontactplugin.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -15,7 +15,7 @@
+ Name[es]=Plugin Kontact
+ Name[et]=Kontacti plugin
+ Name[eu]=Kontact plugin-a
+-Name[fa]=وصلۀ 
++Name[fa]=وصلۀ Kontact
+ Name[fi]=Kontact-liitännäinen
+ Name[fr]=Module Kontact
+ Name[ga]=Breiseán Kontact
+Index: kontact/src/kcmkontact.cpp
+===================================================================
+--- kontact/src/kcmkontact.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kontact/src/kcmkontact.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -104,6 +104,7 @@
+ {
+   mItem = item;
+   mPluginCombo = new QComboBox( parent );
++  connect( mPluginCombo, SIGNAL( activated( int ) ), SIGNAL( changed() ) );
+ }
+ 
+ PluginSelection::~PluginSelection()
+@@ -140,12 +141,6 @@
+   mItem->setValue( ptr->property("X-KDE-PluginInfo-Name").toString() );
+ }
+ 
+-void PluginSelection::itemClicked( QListViewItem *item )
+-{
+-  if ( item )
+-    emit changed();
+-}
+-
+ QValueList<QWidget *> PluginSelection::widgets() const
+ {
+   QValueList<QWidget *> widgets;
+Index: kontact/src/kcmkontact.h
+===================================================================
+--- kontact/src/kcmkontact.h	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ kontact/src/kcmkontact.h	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -60,9 +60,6 @@
+     QValueList<QWidget *> widgets() const;
+     QComboBox *comboBox() const { return mPluginCombo; }
+ 
+-  private slots:
+-    void itemClicked( QListViewItem* );
+-
+   private:
+     QComboBox *mPluginCombo;
+     QValueList<KService::Ptr> mPluginList;
+Index: ktnef/gui/ktnef.desktop
+===================================================================
+--- ktnef/gui/ktnef.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ ktnef/gui/ktnef.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -57,7 +57,7 @@
+ Comment[es]=A visor/extractor para archivos TNEF
+ Comment[et]=TNEF-failide näitaja/ekstraktija
+ Comment[eu]=TNEF fitxategien ikustaile/erauzlea
+-Comment[fa]=یک مشاهده‌گر/استخراجگر برای پرونده‌های TNEF
++Comment[fa]=یک مشاهده‌گر/استخراج‌گر برای پرونده‌های TNEF
+ Comment[fi]=Näytin/purkaja TNEF-tiedostoille
+ Comment[fr]=Pour afficher / extraire des fichiers TNEF
+ Comment[hi]=टीएनईएफ फ़ाइलों के लिए एक प्रदर्शक/एक्सट्रेक्टर
+Index: korganizer/Makefile.am
+===================================================================
+--- korganizer/Makefile.am	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ korganizer/Makefile.am	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -171,7 +171,7 @@
+ 	$(XGETTEXT) `find . -name "*.cpp" -o -name "*.h"` -o $(podir)/korganizer.pot
+ 	rm -f tips.cpp
+ 
+-xdg_apps_DATA = korganizer.desktop
++xdg_apps_DATA = korganizer.desktop korganizer-import.desktop
+ 
+ kde_kcfg_DATA = korganizer.kcfg
+ 
+Index: korganizer/kotodoview.cpp
+===================================================================
+--- korganizer/kotodoview.cpp	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ korganizer/kotodoview.cpp	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -925,8 +925,7 @@
+ 
+ void KOTodoView::copyTodoToDate( QDate date )
+ {
+-  QDateTime dt;
+-  dt.setDate( date );
++  QDateTime dt( date );
+ 
+   if ( mActiveItem && mChanger ) {
+     Todo *newTodo = mActiveItem->todo()->clone();
+@@ -934,6 +933,8 @@
+ 
+    if ( date.isNull() )
+      newTodo->setHasDueDate( false );
++
++   newTodo->setHasDueDate( true );
+    newTodo->setDtDue( dt );
+    newTodo->setPercentComplete( 0 );
+ 
+Index: korganizer/korganizer.kcfg
+===================================================================
+--- korganizer/korganizer.kcfg	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ korganizer/korganizer.kcfg	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -74,7 +74,7 @@
+ 
+     <entry type="Bool" key="Html With Save">
+       <label>Export to HTML with every save</label>
+-      <whatsthis>Check this box to export the calendar to a HTML-file every time you save it. By default, this file will be called calendar.html and placed in the user home folder.</whatsthis>
++      <whatsthis>Check this box to export the calendar to an HTML-file every time you save it. By default, this file will be called calendar.html and placed in the user home folder.</whatsthis>
+       <default>false</default>
+     </entry>
+     <entry type="Enum" key="Destination" name="Destination">
+@@ -158,7 +158,7 @@
+   <group name="Views">
+     <entry type="Int" key="Hour Size">
+       <label>Hour size</label>
+-      <whatsthis>Select on this spin box the the height of the hour rows in the schedule view.</whatsthis>
++      <whatsthis>Select on this spin box the height of the hour rows in the schedule view.</whatsthis>
+       <default>10</default>
+       <min>4</min>
+       <max>30</max>
+@@ -272,7 +272,7 @@
+ 
+     <entry type="Int" key="Next X Days">
+       <label>Next x days</label>
+-      <whatsthis>Select on this spin box the number of &quot;x&quot; days to be displayed in the next days view. To access the  the next &quot;x&quot; days view, choose the the &quot;Next X Days&quot; menu item from the &quot;View&quot; menu.</whatsthis>
++      <whatsthis>Select on this spin box the number of &quot;x&quot; days to be displayed in the next days view. To access the  the next &quot;x&quot; days view, choose the &quot;Next X Days&quot; menu item from the &quot;View&quot; menu.</whatsthis>
+       <default>3</default>
+     </entry>
+ 
+@@ -315,7 +315,7 @@
+     </entry>
+     <entry type="Bool" key="Use Groupware Communication">
+       <label>Use Groupware communication</label>
+-      <whatsthis>Check this box to enable automatic generation of mails when creating, updating or deleting events (or to-dos) involving other attendees. You should check this box if you you want to use the groupware functionality (e.g. Configuring Kontact as a KDE Kolab client).</whatsthis>
++      <whatsthis>Check this box to enable automatic generation of mails when creating, updating or deleting events (or to-dos) involving other attendees. You should check this box if you want to use the groupware functionality (e.g. Configuring Kontact as a KDE Kolab client).</whatsthis>
+       <default>true</default>
+     </entry>
+ 
+Index: korganizer/kotodoeditor.h
+===================================================================
+--- korganizer/kotodoeditor.h	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ korganizer/kotodoeditor.h	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -95,7 +95,7 @@
+   protected:
+     void loadTemplate( /*const*/ CalendarLocal& );
+     QStringList& templates() const;
+-    QString type() { return "ToDo"; }
++    QString type() { return "Todo"; }
+     void setupGeneral();
+     void setupRecurrence();
+     int msgItemDelete();
+
+Property changes on: korganizer/pixmaps
+___________________________________________________________________
+Name: svn:ignore
+   + Makefile
+Makefile.in
+
+
+Index: korganizer/korganizer.desktop
+===================================================================
+--- korganizer/korganizer.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ korganizer/korganizer.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -1,6 +1,5 @@
+ [Desktop Entry]
+ Encoding=UTF-8
+-MimeType=text/calendar;text/x-vcalendar;
+ Comment=Calendar and Scheduling Program
+ Comment[af]=Kalender en Skedulering Program
+ Comment[ar]=برنامج الجدولة والتقويم
+@@ -61,7 +60,7 @@
+ Comment[zh_CN]=日历和日程安排程序
+ Comment[zh_TW]=行事曆與排程軟體
+ Comment[zu]=Ikhalenda kanye Neprogramu Yokugcina isikhathi
+-Exec=korganizer --import %u
++Exec=korganizer
+ Icon=korganizer
+ Path=
+ DocPath=korganizer/index.html
+Index: korganizer/korganizer_configgroupautomation.desktop
+===================================================================
+--- korganizer/korganizer_configgroupautomation.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 600288)
++++ korganizer/korganizer_configgroupautomation.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -25,7 +25,7 @@
+ Name[es]=Automatización del grupo
+ Name[et]=Grupitöö
+ Name[eu]=Talde automatizazioa
+-Name[fa]=خودکار سازی گروه
++Name[fa]=خودکارسازی گروه
+ Name[fi]=Ryhmän automatisointi
+ Name[fr]=Automatisation des groupes
+ Name[gl]=Automatización de Grupo
+Index: korganizer/korganizer-import.desktop
+===================================================================
+--- korganizer/korganizer-import.desktop	(.../tags/KDE/3.5.5/kdepim)	(revision 0)
++++ korganizer/korganizer-import.desktop	(.../branches/KDE/3.5/kdepim)	(revision 600288)
+@@ -0,0 +1,137 @@
++[Desktop Entry]
++Encoding=UTF-8
++MimeType=text/calendar;text/x-vcalendar;
++Comment=Calendar and Scheduling Program
++Comment[af]=Kalender en Skedulering Program
++Comment[ar]=برنامج الجدولة والتقويم
++Comment[bg]=Програма за календар и разписание
++Comment[bs]=Kalendar i rokovnik
++Comment[ca]=Un programa de calendari i planificació
++Comment[cs]=Kalendářový a plánovací program
++Comment[cy]=Rhaglen Galendr a Drefnlennu
++Comment[da]=Kalender- og planlægningsprogram
++Comment[de]=Ein Kalender und Zeitplaner
++Comment[el]=Πρόγραμμα ημερολογίου και προγραμματισμού
++Comment[eo]=Kalendara kaj plana programo
++Comment[es]=Calendario y planificador
++Comment[et]=Kalendri ja ajakava haldamise rakendus
++Comment[eu]=Egutegi eta antolaketa progrmaa
++Comment[fa]=تقویم و برنامۀ زمان‌بندی
++Comment[fi]=Kalenteri ja ajanhallintaohjelma
++Comment[fr]=Calendrier et agenda personnel
++Comment[gl]=Programa de Calendario e Axenda
++Comment[he]=תוכניות לוח שנה ותזמון משימות
++Comment[hi]=कैलेन्डर तथा समय-सारणी प्रोग्राम
++Comment[hr]=Kalendar i rokovnik
++Comment[hu]=Határidőnapló és eseményszervező
++Comment[is]=Dagbók og skipulag
++Comment[it]=Programma di calendario e di agenda
++Comment[ja]=カレンダーとスケジュール管理プログラム
++Comment[km]=កម្មវិធី​ប្រតិទិន និង កាលវិភាគ
++Comment[lt]=Kalendoriaus ir planavimo programa
++Comment[lv]=Kalendāra un Plānošanas Programma
++Comment[mk]=Календар и роковник
++Comment[ms]=Kalendar dan Program Penjadualan 
++Comment[mt]=Programm b' kalendarju w skeda
++Comment[nb]=Et kalender- og tidsplanleggingsprogram
++Comment[nds]=Kalenner un Tietplaner
++Comment[nl]=Agenda- en afsprakenprogramma
++Comment[nn]=Kalender- og planleggingsprogram
++Comment[nso]=Lenaneo la Peakanyo ya Tshupamabaka
++Comment[pl]=Kalendarz i terminarz
++Comment[pt]=Calendário e Programa de Escalonamento
++Comment[pt_BR]=Programa de Calendário e Agenda
++Comment[ro]=Program de planificare şi calendar
++Comment[ru]=Календарь и личное расписание
++Comment[se]=Kaleandar- ja plánenprográmma
++Comment[sk]=Kalendár a plánovací program
++Comment[sl]=Program za koledar in razporejanje
++Comment[sr]=Календарски и планерски програм
++Comment[sr at Latn]=Kalendarski i planerski program
++Comment[sv]=Kalender- och schemaläggningsprogram
++Comment[ta]=நாள்காட்டி மற்றும் திட்ட நிரல்
++Comment[tg]=Тақвимот ва ҷадвали шахсӣ
++Comment[th]=โปรแกรมจัดการปฏิทินและตารางการนัดหมาย
++Comment[tr]=Takvim ve Zamanlama Programı
++Comment[uk]=Програма календаря та розкладу
++Comment[uz]=Календар ва режалаштириш дастури
++Comment[ven]=Khalenda na mbekanyamushumo ya u shedula
++Comment[vi]=Chương trình lịch và kế hoạch
++Comment[xh]=Ikhalenda no Dweliso lwenkqubo Yokucwangcisa
++Comment[zh_CN]=日历和日程安排程序
++Comment[zh_TW]=行事曆與排程軟體
++Comment[zu]=Ikhalenda kanye Neprogramu Yokugcina isikhathi
++Exec=korganizer --import %u
++Icon=korganizer
++Path=
++DocPath=korganizer/index.html
++Type=Application
++Terminal=false
++Name=KOrganizer
++Name[af]=Korganizer
++Name[ar]=منظم كيدي
++Name[be]=K Арганізатар
++Name[cy]=KTrefnydd
++Name[eo]=Organizilo
++Name[hi]=के-आर्गेनाइज़र
++Name[lv]=KOrganaizers
++Name[mk]=Организатор
++Name[nso]=KMokopanyi
++Name[pl]=Organizator
++Name[sv]=Korganizer
++Name[ta]=கேஅமைப்பாளர்
++Name[ven]=Mulugisi wa K
++Name[zh_TW]=KOrganizer 行事曆
++GenericName=Personal Organizer
++GenericName[be]=Пэрсанальны арганізатар
++GenericName[bg]=Организатор
++GenericName[bs]=Lični organizer
++GenericName[ca]=Organitzador personal
++GenericName[cs]=Osobní organizér
++GenericName[cy]=Trefnydd Personol
++GenericName[da]=Personlig organisering
++GenericName[de]=Persönliche Daten organisieren
++GenericName[el]=Προσωπικός οργανωτής
++GenericName[en_GB]=Personal Organiser
++GenericName[es]=Organizador personal
++GenericName[et]=Personaalne ajaarvestus
++GenericName[eu]=Antolatzaile pertsonala
++GenericName[fa]=سازمان‌دهندۀ شخصی‌
++GenericName[fi]=Henkilökohtainen ajanhallintaohjelma
++GenericName[fr]=Organiseur personnel
++GenericName[gl]=Organizador Persoal
++GenericName[he]=מנהל זמן אישי
++GenericName[hi]=निजी प्रबंधक
++GenericName[hu]=Határidőnapló
++GenericName[is]=Persónuleg skipulagsbók
++GenericName[it]=Organizzatore personale
++GenericName[ja]=個人向けスケジュール管理
++GenericName[km]=កម្មវិធី​រៀបចំ​ផ្ទាល់​ខ្លួន
++GenericName[lt]=Asmeninės informacijos tvarkyklė
++GenericName[ms]=Penyusun Peribadi
++GenericName[nb]=Personlig planlegger
++GenericName[nds]=Persöönlich Mötenkalenner
++GenericName[nl]=Persoonlijke organizer
++GenericName[nn]=Personleg organiserar
++GenericName[pl]=Osobisty organizator
++GenericName[pt]=Organizador Pessoal
++GenericName[pt_BR]=Organizador Pessoal
++GenericName[ro]=Organizator personal
++GenericName[ru]=Персональный органайзер
++GenericName[sk]=Osobný plánovač
++GenericName[sl]=Osebni organizator
++GenericName[sr]=Лични планер
++GenericName[sr at Latn]=Lični planer
++GenericName[sv]=Filofax
++GenericName[ta]=தனிப்பயன் அமைப்பாளர்
++GenericName[tg]=Органайзери инфиродӣ
++GenericName[tr]=Kişisel Bilgi Yöneticisi
++GenericName[uk]=Персональний тижневик
++GenericName[uz]=Шахсий органайзер
++GenericName[zh_CN]=个人日程安排
++GenericName[zh_TW]=個人行程組織軟體
++ServiceTypes=Browser/View,DCOP/Organizer
++X-KDE-Library=libkorganizerpart
++X-KDE-StartupNotify=true
++X-DCOP-ServiceType=Unique
++X-DCOP-ServiceName=korganizer
+
+Property changes on: 
+___________________________________________________________________
+Name: svn:externals
+   + admin https://svn.kde.org/home/kde/branches/KDE/3.5/kde-common/admin
+
+

Deleted: trunk/packages/kdepim/debian/patches/15_kdepim_debug.diff

Added: trunk/packages/kdepim/debian/patches/16_kde_modulename.diff
===================================================================
--- trunk/packages/kdepim/debian/patches/16_kde_modulename.diff	2006-10-31 06:57:06 UTC (rev 4831)
+++ trunk/packages/kdepim/debian/patches/16_kde_modulename.diff	2006-10-31 08:15:39 UTC (rev 4832)
@@ -0,0 +1,10 @@
+--- admin/cvs.sh~	2006-10-02 16:56:51.000000000 +0200
++++ admin/cvs.sh	2006-10-30 20:39:43.000000000 +0100
+@@ -323,6 +323,7 @@
+    modulename=`basename $modulename`
+    esc_VERSION=`echo $VERSION | sed -e "s#[^.0-9a-zA-Z]##g"`
+    modulename=`echo $modulename | sed -e "s#-$esc_VERSION##"`   
++   modulename=`echo $modulename | sed -e 's#\.dfsg\.[0-9]\+$##'`
+ 
+ fi
+ if test -n "$kde_use_qt_param"; then

Modified: trunk/packages/kdepim/debian/rules
===================================================================
--- trunk/packages/kdepim/debian/rules	2006-10-31 06:57:06 UTC (rev 4831)
+++ trunk/packages/kdepim/debian/rules	2006-10-31 08:15:39 UTC (rev 4832)
@@ -1,8 +1,8 @@
 #! /usr/bin/make -f
 
-DEB_TAR_SRCDIR := $(shell basename $(wildcard *.tar.bz2) .tar.bz2)
+# DEB_TAR_SRCDIR := $(shell basename $(wildcard *.tar.bz2) .tar.bz2)
 
-include /usr/share/cdbs/1/rules/tarball.mk
+# include /usr/share/cdbs/1/rules/tarball.mk
 include /usr/share/cdbs/1/rules/debhelper.mk
 include debian/cdbs/debian-qt-kde.mk
 include /usr/share/cdbs/1/rules/simple-patchsys.mk
@@ -21,18 +21,24 @@
 	cp -f /usr/share/libtool/libtool.m4 $(DEB_SRCDIR)/admin/libtool.m4.in
 	cp -f /usr/share/libtool/ltmain.sh $(DEB_SRCDIR)/admin/ltmain.sh
 	for f in /usr/share/automake-1.9/*; do \
-		if test -f $$f && ! test -L $$f && \
-			test -f $(DEB_SRCDIR)/admin/`basename $$f`; then \
+		if test -f $$f && ! test -L $$f; then \
 			cp -f $$f $(DEB_SRCDIR)/admin/; \
 		fi; \
 	done
 	touch debian/stamp-libtool-update
 
 clean::
+	for f in /usr/share/automake-1.9/*; do \
+		 if test -f $$f && ! test -L $$f && \
+			test -f $(DEB_SRCDIR)/admin/`basename $$f`; then \
+			rm -f $(DEB_SRCDIR)/admin/`basename $$f`; \
+		fi; \
+	done
+	rm -f admin/libtool.m4.in admin/ltmain.sh
 	rm -f debian/stamp-libtool-update
 	rm -f debian/patches/common/02_autotools_update.diff \
 		debian/patches/common/03_libtool_update.diff
-	rm -f $(DEB_TAR_SRCDIR).tar.bz2.cdbs-config_list
+#	rm -f $(DEB_TAR_SRCDIR).tar.bz2.cdbs-config_list
 
 DEB_INSTALL_DOCS_ALL :=
 
@@ -87,3 +93,39 @@
 
 test-shlibdeps:
 	@echo $(DEB_DH_SHLIBDEPS_ARGS_kontact)
+
+KDE_UPSTREAM_VERSION := $(shell echo $(DEB_UPSTREAM_VERSION) | sed -e 's/\.dfsg.*//')
+KDE_TARBALL := ../$(DEB_SOURCE_PACKAGE)-$(KDE_UPSTREAM_VERSION).tar.bz2
+KDE_SOURCEDIR := dfsg-tmp/$(DEB_SOURCE_PACKAGE)-$(KDE_UPSTREAM_VERSION)
+NEWDEB_SOURCEDIR := $(DEB_SOURCE_PACKAGE)-$(DEB_UPSTREAM_VERSION)
+
+# Expects kdepim-#.#.#.tar.bz2 to reside in .., and produces
+# ../kdepim_#.#.#.dfsg.#.orig.tar.gz file.
+make-orig-source:
+	test -f $(KDE_TARBALL)
+	mkdir -p dfsg-tmp
+	tar -C dfsg-tmp -xjf $(KDE_TARBALL)
+	rm $(KDE_SOURCEDIR)/kioslaves/sieve/rfc3431.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/rfc3028.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/draft-daboo-sieve-include.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/draft-daboo-sieve-spamtest.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/draft-degener-sieve-body-00.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/draft-degener-sieve-copy.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/draft-degener-sieve-editheader.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/draft-degener-sieve-multiscript.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/draft-homme-sieve-variables.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/draft-martin-managesieve-04.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/draft-martin-sieve-notify-01.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/draft-melnikov-sieve-imapflags.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/draft-murchison-sieve-regex-06.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/draft-murchison-sieve-subaddress-05.txt \
+		$(KDE_SOURCEDIR)/kioslaves/sieve/draft-showalter-sieve-vacation-04.txt \
+		$(KDE_SOURCEDIR)/kaddressbook/xxport/samples/rfc2849.txt \
+		$(KDE_SOURCEDIR)/kaddressbook/xxport/samples/rfc2849.ldif || \
+		(echo "Update the list of IETF docs in debian/rules"; false)
+	if grep -r "Copyright (C) The Internet Society" $(KDE_SOURCEDIR); then \
+		echo "Found new IETF docs, update debian/rules"; false; \
+	fi
+	mv $(KDE_SOURCEDIR) dfsg-tmp/$(NEWDEB_SOURCEDIR)
+	(cd dfsg-tmp; tar -cf - $(NEWDEB_SOURCEDIR)/ | gzip -c9) > ../$(DEB_SOURCE_PACKAGE)_$(DEB_UPSTREAM_VERSION).orig.tar.gz
+	rm -rf dfsg-tmp




More information about the pkg-kde-commits mailing list