QTfrontend/main.cpp
changeset 3333 560e2766c445
parent 3236 4ab3917d7d44
child 3350 5cd02aafc612
equal deleted inserted replaced
3332:3c90a923f156 3333:560e2766c445
    26 #include <QSettings>
    26 #include <QSettings>
    27 
    27 
    28 #include "hwform.h"
    28 #include "hwform.h"
    29 #include "hwconsts.h"
    29 #include "hwconsts.h"
    30 
    30 
       
    31 #ifdef _WIN32
       
    32 #include <Shlobj.h>
       
    33 #endif
       
    34 
    31 bool checkForDir(const QString & dir)
    35 bool checkForDir(const QString & dir)
    32 {
    36 {
    33     QDir tmpdir;
    37     QDir tmpdir;
    34     if (!tmpdir.exists(dir))
    38     if (!tmpdir.exists(dir))
    35         if (!tmpdir.mkdir(dir))
    39         if (!tmpdir.mkdir(dir))
   305 #ifdef __APPLE__
   309 #ifdef __APPLE__
   306         if (checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars"))
   310         if (checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars"))
   307         {
   311         {
   308             checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars/Demos");
   312             checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars/Demos");
   309             checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars/Saves");
   313             checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars/Saves");
       
   314             checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars/Teams");
   310         }
   315         }
   311         cfgdir->cd("Library/Application Support/Hedgewars");
   316         cfgdir->cd("Library/Application Support/Hedgewars");
       
   317 #elif defined _WIN32
       
   318         char path[1024];
       
   319         if(!SHGetFolderPathA(0, CSIDL_PERSONAL, NULL, 0, path))
       
   320         {
       
   321             cfgdir->cd(path);
       
   322             if (checkForDir(cfgdir->absolutePath() + "/Hedgewars"))
       
   323             {
       
   324                 checkForDir(cfgdir->absolutePath() + "/Hedgewars/Demos");
       
   325                 checkForDir(cfgdir->absolutePath() + "/Hedgewars/Saves");
       
   326                 checkForDir(cfgdir->absolutePath() + "/Hedgewars/Teams");
       
   327             }
       
   328             cfgdir->cd("Hedgewars");
       
   329         }
       
   330         else
       
   331         {
       
   332             if (checkForDir(cfgdir->absolutePath() + "/.hedgewars"))
       
   333             {
       
   334                 checkForDir(cfgdir->absolutePath() + "/.hedgewars/Demos");
       
   335                 checkForDir(cfgdir->absolutePath() + "/.hedgewars/Saves");
       
   336                 checkForDir(cfgdir->absolutePath() + "/.hedgewars/Teams");
       
   337             }
       
   338             cfgdir->cd(".hedgewars");
       
   339         }
   312 #else
   340 #else
   313         if (checkForDir(cfgdir->absolutePath() + "/.hedgewars"))
   341         if (checkForDir(cfgdir->absolutePath() + "/.hedgewars"))
   314         {
   342         {
   315             checkForDir(cfgdir->absolutePath() + "/.hedgewars/Demos");
   343             checkForDir(cfgdir->absolutePath() + "/.hedgewars/Demos");
   316             checkForDir(cfgdir->absolutePath() + "/.hedgewars/Saves");
   344             checkForDir(cfgdir->absolutePath() + "/.hedgewars/Saves");
       
   345             checkForDir(cfgdir->absolutePath() + "/.hedgewars/Teams");
   317         }
   346         }
   318         cfgdir->cd(".hedgewars");
   347         cfgdir->cd(".hedgewars");
   319 #endif
   348 #endif
   320     }
   349     }
   321     else
   350     else
   322     {
   351     {
   323         if (checkForDir(cfgdir->absolutePath()))
   352         if (checkForDir(cfgdir->absolutePath()))
   324         {
   353         {
   325             checkForDir(cfgdir->absolutePath() + "/Demos");
   354             checkForDir(cfgdir->absolutePath() + "/Demos");
   326             checkForDir(cfgdir->absolutePath() + "/Saves");
   355             checkForDir(cfgdir->absolutePath() + "/Saves");
       
   356             checkForDir(cfgdir->absolutePath() + "/Teams");
   327         }
   357         }
   328     }
   358     }
   329 
   359 
   330 
   360 
   331     datadir->cd(bindir->absolutePath());
   361     datadir->cd(bindir->absolutePath());