#include <tchar.h>\r
#if defined(PLATFORM_WIN32)\r
#include <stdio.h>\r
+#include <ShlObj.h>\r
#endif\r
#if defined(PLATFORM_BE500)\r
#include <GetDisk.h>\r
bLoad = FALSE;\r
bNeedAsk = TRUE;\r
\r
+ PropListNum *p = propListNum;\r
+ while(p->nPropId != 0xFFFFFFFF) {\r
+ nPropsNum[p->nPropId] = p->nDefault;\r
+ p++;\r
+ }\r
+\r
for (DWORD i = 0; i < NUM_PROPS_STR; i++) {\r
pPropsStr[i] = NULL;\r
}\r
\r
BOOL Property::Load()\r
{\r
- LoadDefaultProperties();\r
BOOL bResult = LoadProperties();\r
\r
// Convert topdir value to repository value\r
nNumRepos = 2;\r
\r
LocalFileRepository *pLocalImpl = new LocalFileRepository();\r
-// if (!pLocalImpl->Init(TEXT("default"), , pTopDir, bKeepTitle, bKeepCaret, bSafeFileName)) {\r
- // XXXX : \r
if (!pLocalImpl->Init(TEXT("default"), MSG_MEMO, pTopDir, FALSE, FALSE, FALSE)) {\r
return FALSE;\r
}\r
return TRUE;\r
}\r
\r
-BOOL Property::LoadProperties()\r
-{\r
+static BOOL GetPropPath(LPTSTR pPath) {\r
TCHAR pathbuf[MAX_PATH + 1];\r
TCHAR pathbuf2[MAX_PATH + 1];\r
GetModuleFileName(NULL, pathbuf, MAX_PATH);\r
GetFilePath(pathbuf2, pathbuf);\r
+ _tcscpy(pPath, pathbuf2);\r
+\r
+ // check can prop file write?\r
+ _tcscat(pathbuf2, PROP_TMP_FILE_NAME);\r
+ File f;\r
+ if (f.Open(pathbuf2, GENERIC_WRITE, FILE_SHARE_WRITE, CREATE_ALWAYS)) {\r
+ f.Close();\r
+ return TRUE;\r
+ }\r
+\r
+ // It seems be win7 and Tombo.exe's place is "Program Files". Use AppData folder.\r
+ TCHAR appDataPath[MAX_PATH + 1];\r
+ SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, appDataPath);\r
+ _tcscpy(pathbuf2, appDataPath);\r
+\r
+ _tcscat(appDataPath, TEXT("\\Tombo"));\r
+ DWORD attr = GetFileAttributes(appDataPath);\r
+ _tcscpy(pPath, appDataPath);\r
+ _tcscat(pPath, TEXT("\\"));\r
+ if (attr != -1 && (attr & FILE_ATTRIBUTE_DIRECTORY) != 0) return TRUE;\r
+\r
+ // create one\r
+ if (!CreateDirectory(appDataPath, NULL)) return FALSE;\r
+ // OK. use AppData/Tombo\r
+ return TRUE;\r
+}\r
+\r
+BOOL Property::LoadProperties()\r
+{\r
+ TCHAR pathbuf2[MAX_PATH + 1];\r
+ GetPropPath(pathbuf2);\r
+\r
TString sPropFile;\r
if (!sPropFile.Join(pathbuf2, PROP_FILE_NAME)) return FALSE;\r
\r
\r
BOOL Property::Save()\r
{\r
-\r
- TCHAR pathbuf[MAX_PATH + 1];\r
TCHAR pathbuf2[MAX_PATH + 1];\r
- GetModuleFileName(NULL, pathbuf, MAX_PATH);\r
- GetFilePath(pathbuf2, pathbuf);\r
+ if (!GetPropPath(pathbuf2)) return FALSE;\r
+\r
TString sPropFile, sPropFileTmp;\r
if (!sPropFile.Join(pathbuf2, PROP_FILE_NAME)) return FALSE;\r
if (!sPropFileTmp.Join(pathbuf2, PROP_TMP_FILE_NAME)) return FALSE;\r