Noburo Sinohara wrote: > > > It seems that this is really a bug in the KOrganizer > initialisation code. > > > Sinohara san, could you please check the timezone > settings of KOrganizer? Look > > > in KOrganizer/Settings/Configure KOrganizer/Time&Date and > check that the time > > > zone is set correctly? > > > > > > > Yes, But the 'Timezone' Combobox displays '???/Tokyo'. > > (the language is japanese.) > > > > I checked translated message file 'timezones.po', but it > also correctly translated. > > I re-maked timezone.mo and relaced it, but anything did not chahged. > > > > Next, I changed the language setting to 'US English', and > restarted korganizer. > > In KOrganizer/Settings/Configure KOrganizer/Time&Date, > > 'Timezone' combobox displayed 'No selection'!!. > > > > Then I selected 'Asia/Tokyo', and tried to download > Exchange schedule. > > The result was good!!. > > > > I checked korganizer source code, > > and found some flaws. > > > > in void KOPrefsDialog::setupTimeTab(), > > QStrList list; > > > > --- snip -- > > > > f = popen("grep -e ^[^#] /usr/share/zoneinfo/zone.tab | > cut -f 3","r"); > > if (!f) return; > > while(fgets(tempstring, 100, f) != NULL) { > > tempstring[strlen(tempstring)-1] = '\0'; > > list.inSort(i18n(tempstring)); > > tzonenames << tempstring; > > } > > pclose(f); > > > > As you see, the variable 'list' is QStrList. > > But in Qt3 API Document says. > > > > "The QStrList class provides a doubly-linked list of char*. > > If you want a string list of QStrings use QStringList." > > > > this is fatal mistake, cause multibyte strings are not char* !! > > so,this code will break all translated messages. > > > > I wrote a patch. this works fine. --- kdepim-3.1.1.org/korganizer/koprefsdialog.cpp Mon Mar 3 04:11:08 2003 +++ kdepim-3.1.1/korganizer/koprefsdialog.cpp Thu Apr 3 10:45:04 2003 @@ -209,7 +209,7 @@ char tempstring[101] = "Unknown"; QString sCurrentlySet(i18n("Unknown")); int nCurrentlySet = 0; - QStrList list; + QStringList list; // read the currently set time zone #if defined(USE_SOLARIS) // MARCO @@ -251,7 +251,7 @@ while(fgets(buf, MAXPATHLEN - 1, f) != NULL) { buf[strlen(buf) - 1] = '\0'; - list.inSort(buf); + list.append(buf); } pclose(f); } @@ -261,13 +261,14 @@ if (!f) return; while(fgets(tempstring, 100, f) != NULL) { tempstring[strlen(tempstring)-1] = '\0'; - list.inSort(i18n(tempstring)); + list.append(i18n(tempstring)); tzonenames << tempstring; } pclose(f); #endif // !USE_SOLARIS + list.sort(); - mTimeZoneCombo->insertStrList(&list); + mTimeZoneCombo->insertStringList(list); // find the currently set time zone and select it for (int i = 0; i < mTimeZoneCombo->count(); i++) It looks OK to me and compiles fine. Cornelius, OK to apply, also to the 3.1 branch? Jan-Pascal _______________________________________________ kde-pim mailing list kde-pim@mail.kde.org http://mail.kde.org/mailman/listinfo/kde-pim kde-pim home page at http://pim.kde.org/