diff -Naur kdepim-enterprise-20071116.orig/kmail/configuredialog.cpp kdepim-enterprise-20071116/kmail/configuredialog.cpp --- kdepim-enterprise-20071116.orig/kmail/configuredialog.cpp 2007-11-23 09:41:36.000000000 +0100 +++ kdepim-enterprise-20071116/kmail/configuredialog.cpp 2007-11-23 15:57:13.000000000 +0100 @@ -2228,6 +2228,9 @@ "Reader", "ShowExpandQuotesMark", I18N_NOOP("Show expand/collapse quote marks"), false }; +static const BoolConfigEntry showCurrentTime = { + "Reader", "ShowCurrentTime", I18N_NOOP("Show current sender time"), true +}; QString AppearancePage::ReaderTab::helpAnchor() const { return QString::fromLatin1("configure-appearance-reader"); @@ -2327,6 +2330,11 @@ hlay2->addWidget( label ); hlay2->addWidget( mOverrideCharsetCombo ); + populateCheckBox( mShowCurrentTimeCheck = new QCheckBox( this ), showCurrentTime ); + vlay->addWidget( mShowCurrentTimeCheck ); + connect( mShowCurrentTimeCheck, SIGNAL ( stateChanged( int ) ), + this, SLOT( slotEmitChanged() ) ); + vlay->addStretch( 100 ); // spacer } @@ -2397,6 +2405,7 @@ mCollapseQuoteLevelSpin->setValue( GlobalSettings::self()->collapseQuoteLevelSpin() ); readCurrentFallbackCodec(); readCurrentOverrideCodec(); + mShowCurrentTimeCheck->setChecked( GlobalSettings::self()->showCurrentTime() ); } void AppearancePage::ReaderTab::doLoadOther() @@ -2422,6 +2431,7 @@ mOverrideCharsetCombo->currentItem() == 0 ? QString() : KGlobal::charsets()->encodingForName( mOverrideCharsetCombo->currentText() ) ); + GlobalSettings::self()->setShowCurrentTime( mShowCurrentTimeCheck->isChecked() ); } @@ -2432,6 +2442,7 @@ loadProfile( mShowEmoticonsCheck, reader, showEmoticons ); loadProfile( mShrinkQuotesCheck, reader, shrinkQuotes ); loadProfile( mShowExpandQuotesMark, reader, showExpandQuotesMark); + loadProfile( mShowCurrentTimeCheck, reader, showCurrentTime ); } diff -Naur kdepim-enterprise-20071116.orig/kmail/configuredialog_p.h kdepim-enterprise-20071116/kmail/configuredialog_p.h --- kdepim-enterprise-20071116.orig/kmail/configuredialog_p.h 2007-11-23 09:41:36.000000000 +0100 +++ kdepim-enterprise-20071116/kmail/configuredialog_p.h 2007-11-23 15:49:10.000000000 +0100 @@ -539,6 +539,7 @@ QCheckBox *mShrinkQuotesCheck; QComboBox *mCharsetCombo; QComboBox *mOverrideCharsetCombo; + QCheckBox *mShowCurrentTimeCheck; }; diff -Naur kdepim-enterprise-20071116.orig/kmail/headerstyle.cpp kdepim-enterprise-20071116/kmail/headerstyle.cpp --- kdepim-enterprise-20071116.orig/kmail/headerstyle.cpp 2007-11-23 09:41:36.000000000 +0100 +++ kdepim-enterprise-20071116/kmail/headerstyle.cpp 2007-11-23 15:53:49.000000000 +0100 @@ -612,6 +612,122 @@ kdDebug( 5006 ) << "final presence: '" << presence << "'" << endl; #endif + QString timeHTML; + if ( GlobalSettings::self()->showCurrentTime() && strategy->showHeader( "date" ) ) { + DwHeaders& header = message->headers(); + if ( header.HasDate() ) { + DwDateTime& origDate = header.Date(); + int zone = origDate.Zone(); + // kdDebug() << "FancyHeaderStyle::format() zone offset (in minutes): " << zone << endl; + + // copyed fro mimelib -- code to determine local timezone + time_t t_now = time((time_t*) 0); +#if defined(HAVE_GMTIME_R) + struct tm utc; + gmtime_r(&t_now, &utc); + struct tm local; + localtime_r(&t_now, &local); +#else + struct tm utc = *gmtime(&t_now); + struct tm local = *localtime(&t_now); +#endif + DwUint32 t_local = 0; + t_local = 24 * t_local + local.tm_hour; + t_local = 60 * t_local + local.tm_min; + t_local = 60 * t_local + local.tm_sec; + DwUint32 t_utc = 0; + t_utc = 24 * t_utc + utc.tm_hour; + t_utc = 60 * t_utc + utc.tm_min; + t_utc = 60 * t_utc + utc.tm_sec; + int lzone = (int) (t_local - t_utc) / 60; + + // kdDebug() << "FancyHeaderStyle::format() local zone offset (in minutes): " << lzone << endl; + + QTime currTime = QTime::currentTime( Qt::UTC ); + + // kdDebug() << "FancyHeaderStyle::format() current time: " << currTime << endl; + + // now currTime contain message sender local time + currTime = currTime.addSecs( zone * 60 ); + + QString timeofday; + QString color; + QString bg_color; + QString bg_image; + if ( currTime > QTime( 0, 0, 0 ) && currTime <= QTime( 6, 0, 0 ) ) { + timeofday = i18n( "Night" ); + color = "white"; + bg_color = "#000B6B"; + bg_image = "url(data:image/png;base64," + "iVBORw0KGgoAAAANSUhEUgAAAAEAAAAyCAIAAAASmSbdAAAAS0lEQVQI11WOsRGAQAzDOG/LHoz9" + "kikIcF+kSBxbPs7LoNGVapAI0Zn+O+8NUwldozn6io7G7kdS/5zi7i+BvUM/5uSXlIfzMHx/bmWR" + "k++yj9rZAAAAAElFTkSuQmCC)"; + } + else if ( currTime > QTime( 6, 0, 0 ) && currTime <= QTime( 12, 0, 0 ) ) { + timeofday = i18n( "Morning" ); + color = "white"; + bg_color = "#00A6FF"; + bg_image = "url(data:image/png;base64," + "iVBORw0KGgoAAAANSUhEUgAAAAEAAAAyCAYAAACd+7GKAAAAWklEQVQI122OQQ7DMAzDaP3/dfuO" + "pWSHJgva7iZIBk3m/Ew5hexCHVCilewzFHKEbFZqgxJQWyzKhWKl9unqddJj8+L9sl0oR2gUim+o" + "zu4uSh7kn67/DNv+C4tsZOtjAWEHAAAAAElFTkSuQmCC)"; + } + else if ( currTime > QTime( 12, 0, 0 ) && currTime <= QTime( 18, 0, 0 ) ) { + timeofday = i18n( "Afternoon" ); + color = "black"; + bg_color = "#00A6FF"; + bg_image = "url(data:image/png;base64," + "iVBORw0KGgoAAAANSUhEUgAAAAEAAAAyCAYAAACd+7GKAAAAPUlEQVQI132OwQ0AIAwCSfcfw91c" + "QsCfRm399HFwoWjdDhMICQhxHSWMQPhkTCoqWRZU2h5i9tr4GZfmV5t3wWUI3h+NugAAAABJRU5E" + "rkJggg==)"; + } + else { + timeofday = i18n( "Evening" ); + color = "white"; + bg_color = "#0014CC"; + bg_image = "url(data:image/png;base64," + "iVBORw0KGgoAAAANSUhEUgAAAAEAAAAyCAYAAACd+7GKAAAAWklEQVQI11WOyRHAMAgDNQuUlBrS" + "fyFpAfKwje0PwyEt0vN+hVsJpzS6QML2ziWcFI6mZBZNSVDXYehyUgI1XsLI9eimHDH6kW0ddVIO" + "xx7JjrtshlbXlLDSD+WhJ+hwqWo8AAAAAElFTkSuQmCC)"; + } + + QString tformat; + if ( KGlobal::locale()->use12Clock() ) { + tformat = "h:mm AP"; + } + else { + tformat = "h:mm"; + } + + // kdDebug() << "FancyHeaderStyle::format() current time: " << currTime << " (" << timeofday << ")" << endl; + + timeHTML.append( QString( + "
%4
%5
%6
" + ) + .arg( bg_color ) + .arg( color ) + .arg( bg_image ) + .arg( i18n( "Now:" ) ) + .arg( currTime.toString( tformat ) ) + .arg( timeofday ) + ); + } + else { + // kdDebug() << "FancyHeaderStyle::format() no date header to display" << endl; + } + } //case HdrFancy: // the subject line and box below for details @@ -716,7 +832,9 @@ */ headerStr.append( QString("
" ) ); headerStr.append( - QString( "%1\n" ).arg(userHTML) ); + QString( "%1%2\n" ) + .arg(timeHTML) + .arg(userHTML) ); if ( !spamHTML.isEmpty() ) headerStr.append( QString( "
%2 %3
\n") diff -Naur kdepim-enterprise-20071116.orig/kmail/kmail.kcfg kdepim-enterprise-20071116/kmail/kmail.kcfg --- kdepim-enterprise-20071116.orig/kmail/kmail.kcfg 2007-11-23 09:41:36.000000000 +0100 +++ kdepim-enterprise-20071116/kmail/kmail.kcfg 2007-11-23 15:54:34.000000000 +0100 @@ -548,6 +548,12 @@ + + true + + Enable this if you like to know what time of day are now in sender location (calculated from sender time zone). + + false