fix windows vista problems
authorkonrad <konrad@6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33>
Wed, 7 Jul 2010 16:26:35 +0000 (16:26 +0000)
committerkonrad <konrad@6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33>
Wed, 7 Jul 2010 16:26:35 +0000 (16:26 +0000)
git-svn-id: https://silmor.de/svn/softmagic/tzone/trunk@544 6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33

test/tzt.pro
tzdata.cpp
tzdata.pro
tzsys_win.cpp

index 2af6d8f..60e1eff 100644 (file)
@@ -2,6 +2,7 @@ TEMPLATE=app
 TARGET=tztest
 SOURCES+=tzt.cpp
 HEADERS+=tzt.h
+DESTDIR=../test
 
 LIBS += -L.. -ltzdata
 INCLUDEPATH += ..
index 9e5da85..2652ee5 100644 (file)
 //
 //
 
+#include <QSettings>
+static inline void initResource(){Q_INIT_RESOURCE(zonefiles);}
+
 #include "tzdata.h"
 #include "tzfile.h"
 #include "tzhelp.h"
 #include "tzsys.h"
 
-#include <QSettings>
-
 using namespace TimeZoneLib;
 
 
@@ -31,8 +32,10 @@ static QString defaultzone;
 
 static inline void initDefault()
 {
-       if(defaultzone=="")
+       if(defaultzone==""){
+               initResource();
                TimeStamp::setDefaultZone("");
+       }
 }
 
 static inline TZFile& getRegistryZone(QString zn)
index 3c7f35a..60914e4 100644 (file)
@@ -1,6 +1,6 @@
 TEMPLATE = lib
 TARGET = tzdata
-DESTDIR = .
+DESTDIR = test/..
 CONFIG += staticlib create_prl
 QT -= gui
 OBJECTS_DIR = .ctmp
@@ -14,9 +14,9 @@ HEADERS += \
        tzsys.h
 
 SOURCES += \
+       zonefiles.cpp \
        tzfile.cpp \
-       tzdata.cpp \
-       zonefiles.cpp
+       tzdata.cpp 
 
 #discovery routines
 win32-* {
index 5d15325..c4ef1b3 100644 (file)
 #include <QSettings>
 #include <QStringList>
 
+#include <QDebug>
+
 #include "tzsys.h"
 
 using namespace TimeZoneLib;
 
-static QString systemDefaultDiscover_win();
+static QString systemDefaultDiscover_win()
 {
        //assign myself to the registry
        QSettings set("HKEY_LOCAL_MACHINE",QSettings::NativeFormat);
@@ -26,6 +28,7 @@ static QString systemDefaultDiscover_win();
        set.beginGroup("SYSTEM/CurrentControlSet/Control/TimeZoneInformation/");
        if(set.contains("TimeZoneKeyName")){
                QString r=set.value("TimeZoneKeyName").toString();
+//             qDebug()<<"vista thinks"<<r;
                if(r!="")return r;
        }
        //ok, its not Vista, so we search on
@@ -34,12 +37,15 @@ static QString systemDefaultDiscover_win();
        set.endGroup();
        //did we actually get something?
        if(tzl.size()==0)return "";
+//     qDebug()<<"localized"<<tzl;
        //now go through all time zones and compare
        set.beginGroup("SOFTWARE/Microsoft/Windows NT/CurrentVersion/Time Zones/");
        QStringList keys=set.childGroups();
        for(int i=0;i<keys.size();i++){
-               if(set.value(keys[i]+"/Std")==tzl)
+               if(set.value(keys[i]+"/Std")==tzl){
+//                     qDebug()<<"XP thinks"<<keys[i];
                        return keys[i];
+               }
        }
        //nothing found
        return "";
@@ -206,20 +212,24 @@ West Pacific|Pacific/Guam\n\
 West Pacific Standard Time|Pacific/Guam\n\
 Western Brazilian Standard Time|America/Rio_Branco\n\
 Yakutsk|Asia/Yakutsk\n\
-Yakutsk Standard Time|Asia/Yakutsk"
+Yakutsk Standard Time|Asia/Yakutsk";
 
 QString TimeZoneLib::systemDefaultDiscover()
 {
        QString win=systemDefaultDiscover_win().trimmed();
+//     qDebug()<<"system"<<win;
        //if none found, assume UTC+offset
        if(win=="")return "";
        //go through mapping
        QStringList sl=tzmap.split("\n");
+//     qDebug()<<"having"<<sl.size()<<"options";
        for(int i=0;i<sl.size();i++){
                QStringList tz=sl[i].trimmed().split("|");
                if(tz.size()!=2)continue;
-               if(win==tz[0].trimmed())
+               if(win==tz[0].trimmed()){
+//                     qDebug()<<"found one"<<tz[1];
                        return tz[1].trimmed();
+               }
        }
        //none found again
        return "";