From kde-pim Mon Mar 22 20:57:21 2004 From: Allen Winter Date: Mon, 22 Mar 2004 20:57:21 +0000 To: kde-pim Subject: [Kde-pim] [Bug 77988] konsolekalendar reports wrong time (hour too Message-Id: <20040322205721.19645.qmail () ktown ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-pim&m=107998901304307 ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=77988 winterz verizon net changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED ------- Additional Comments From winterz verizon net 2004-03-22 21:57 ------- CVS commit by winterz: Backport fix for handling timezones. This fix has been in HEAD for several weeks but I finally got around to the backport. CCMAIL: 77988-done bugs kde org M +56 -22 konsolekalendarvariables.cpp 1.20.4.2 M +48 -29 konsolekalendarvariables.h 1.21.4.2 M +33 -33 main.cpp 1.48.4.2 --- kdepim/konsolekalendar/konsolekalendarvariables.cpp #1.20.4.1:1.20.4.2 @ -32,5 +32,6 @ #include #include - +#include +#include @ -43,4 +44,6 @ using namespace std; KonsoleKalendarVariables::KonsoleKalendarVariables() { + m_TimeZoneId = ""; + m_bIsTimeZoneId = false; m_bIsUID = false; m_bIsStartDateTime = false; @ -60,4 +63,35 @ KonsoleKalendarVariables::KonsoleKalenda } +// The following function is taken from korganizer's KOPrefs::setTimeZoneIdDefault() +// Fine with me;) Tuukka +void KonsoleKalendarVariables::setTimeZoneId() +{ + QString zone; + + char zonefilebuf[100]; + int len = readlink("/etc/localtime",zonefilebuf,100); + if (len > 0 && len < 100) { + zonefilebuf[len] = '\0'; + zone = zonefilebuf; + zone = zone.mid(zone.find("zoneinfo/") + 9); + } else { + tzset(); + zone = tzname[0]; + } + + m_bIsTimeZoneId = true; + m_TimeZoneId = zone; +} + +QString KonsoleKalendarVariables::getTimeZoneId() +{ + return m_TimeZoneId; +} + +bool KonsoleKalendarVariables::isTimeZoneId() +{ + return m_bIsTimeZoneId; +} + KonsoleKalendarVariables::~KonsoleKalendarVariables() { --- kdepim/konsolekalendar/main.cpp #1.48.4.1:1.48.4.2 @ -382,5 +382,5 @ int main(int argc, char *argv[]) return(1); } - kdDebug() << "main | parse options | End date after converstion: (" << enddate.toString() << ")" << endl; + kdDebug() << "main | parse options | End date after conversion: (" << enddate.toString() << ")" << endl; } @ -399,5 +399,5 @ int main(int argc, char *argv[]) variables.setDaysCount( option.toInt( &ok, 10 ) ); - if( !ok ){ + if( !ok ) { kdError() << i18n("Invalid Date Count Specified: ").local8Bit() << option << endl; return(1); @ -406,5 +406,5 @ int main(int argc, char *argv[]) enddate = startdate; enddate = enddate.addDays( variables.getDaysCount() ); - kdDebug() << "main | parse options | End date after converstion: (" << enddate.toString() << ")" << endl; + kdDebug() << "main | parse options | End date after conversion: (" << enddate.toString() << ")" << endl; } @ -514,11 +514,11 @ int main(int argc, char *argv[]) * Should we use local calendar or resource? */ - + variables.setTimeZoneId(); if( args->isSet("file") ) { - localCalendar = new CalendarLocal(); + localCalendar = new CalendarLocal( variables.getTimeZoneId() ); localCalendar->load( variables.getCalendarFile() ); variables.setCalendar( localCalendar ); } else { - calendarResource = new CalendarResources(); + calendarResource = new CalendarResources( variables.getTimeZoneId() ); variables.setCalendarResources( calendarResource ); } --- kdepim/konsolekalendar/konsolekalendarvariables.h #1.21.4.1:1.21.4.2 @ -88,4 +88,21 @ class KonsoleKalendarVariables bool isEndDateTime(); + /** + * Sets the timezone from the user or system environment + */ + void setTimeZoneId(); + + /** + * Get timezone id string + * return timezone id string + */ + QString getTimeZoneId(); + + /** + * Is there a timezone set? + * return true if there is false if there isn't + */ + bool isTimeZoneId(); + void setUID( QString uid ); @ -303,4 +320,6 @ class KonsoleKalendarVariables void skipWhiteSpace( const QString &str, int &pos ); + bool m_bIsTimeZoneId; + QString m_TimeZoneId; QDateTime m_startDateTime; QDateTime m_endDateTime; _______________________________________________ kde-pim mailing list kde-pim@mail.kde.org https://mail.kde.org/mailman/listinfo/kde-pim kde-pim home page at http://pim.kde.org/