#include "Configuration.h" #include #include #include "path.h" #define APP_NAME L"m8msg" #define DEFAULT_PATH L"\\Disk\\Received Files\\" #define DEFAULT_MUSIC_PATH L"\\Disk\\Music\\" #define DEFAULT_VIDEO_PATH L"\\Disk\\Video\\" #define DEFAULT_PHOTO_PATH L"\\Disk\\Photo\\" #define DEFAULT_BOOK_PATH L"\\Disk\\Ebook\\" #define DEFAULT_MUSIC_EXT L"mp3;lrc;wma;ape;cue;flac;ogg" #define DEFAULT_VIDEO_EXT L"avi;flv;rm;rmvb;mkv;mp4" #define DEFAULT_PHOTO_EXT L"jpg;png;gif;bmp" #define DEFAULT_BOOK_EXT L"txt" #define DEFAULT_NICKNAME L"m8" Configuration* Configuration::config; Configuration::AutoGC Configuration::autoGC; Configuration::Configuration(void) { wstring curDir; GetCurrentDirectory(curDir); wsprintf(configFile, L"%sconfig.ini", curDir.c_str()); ::IniCreateFile(configFile); DWORD isPlay = 0; if(::IniReadInt(APP_NAME,L"IsPlaySound", & isPlay, configFile)) { this->isPlaySound = (bool) isPlay; } else { this->isPlaySound = true; ::IniWriteInt(APP_NAME, L"IsPlaySound", 1, configFile); } DWORD isFix = 0; if(::IniReadInt(APP_NAME,L"IsFixedPath", &isFix, configFile)) { this->isFixedPath = (bool) isFix; } else { this->isFixedPath = false; ::IniWriteInt(APP_NAME, L"IsFixedPath", 0, configFile); } if(isFixedPath) { TCHAR * path; if(::IniReadString(APP_NAME, L"DefaultPath", &path, configFile)) { dir = path; delete path; } else { ::IniWriteString(APP_NAME, L"DefaultPath", DEFAULT_PATH, configFile); } } else { TCHAR * path; if(::IniReadString(APP_NAME, L"DefaultPath", &path, configFile)) { dir = path; delete path; } else { ::IniWriteString(APP_NAME, L"DefaultPath", DEFAULT_PATH, configFile); dir = DEFAULT_PATH; } if(::IniReadString(APP_NAME, L"MusicPath", &path, configFile)) { musicDir = path; delete path; } else { ::IniWriteString(APP_NAME, L"MusicPath", DEFAULT_MUSIC_PATH , configFile); musicDir = DEFAULT_MUSIC_PATH; } if(::IniReadString(APP_NAME, L"VideoPath", &path, configFile)) { videoDir = path; delete path; } else { ::IniWriteString(APP_NAME, L"VideoPath", DEFAULT_VIDEO_PATH , configFile); videoDir = DEFAULT_VIDEO_PATH; } if(::IniReadString(APP_NAME, L"BookPath", &path, configFile)) { bookDir = path; delete path; } else { ::IniWriteString(APP_NAME, L"BookPath", DEFAULT_BOOK_PATH , configFile); bookDir = DEFAULT_BOOK_PATH; } if(::IniReadString(APP_NAME, L"PhotoPath", &path, configFile)) { photoDir = path; delete path; } else { ::IniWriteString(APP_NAME, L"PhotoPath", DEFAULT_PHOTO_PATH , configFile); photoDir = DEFAULT_PHOTO_PATH; } } TCHAR *extName; if(::IniReadString(APP_NAME, L"MusicExt", &extName, configFile)) { musicExt = extName; delete extName; } else { musicExt = DEFAULT_MUSIC_EXT; } if(::IniReadString(APP_NAME, L"VideoExt", &extName, configFile)) { videoExt = extName; delete extName; } else { videoExt = DEFAULT_VIDEO_EXT; } if(::IniReadString(APP_NAME, L"PhotoExt", &extName, configFile)) { photoExt = extName; delete extName; } else { photoExt = DEFAULT_PHOTO_EXT; } if(::IniReadString(APP_NAME, L"BookExt", &extName, configFile)) { bookExt = extName; delete extName; } else { bookExt = DEFAULT_BOOK_EXT; } TCHAR * NickName; if(::IniReadString(APP_NAME, L"NickName", &NickName, configFile)) { this->nickName = NickName; delete NickName; } else { nickName = DEFAULT_NICKNAME; } TCHAR* BroadcastAddress; if(::IniReadString(APP_NAME, L"BroadcastAddress", &BroadcastAddress, configFile)) { broadcastAddress = BroadcastAddress; delete BroadcastAddress; } else { broadcastAddress = L""; } if(!::IniReadInt(APP_NAME, L"IsShowLocal", &showLocal,configFile)) { showLocal = SHOW_LOCAL_SHOW; } } Configuration::~Configuration(void) { } BOOL Configuration::Save() { BOOL success = TRUE; success = success && ::IniWriteInt(APP_NAME, L"IsPlaySound", (int)isPlaySound, configFile); if(this->isFixedPath) { success = success && ::IniWriteInt(APP_NAME,L"IsFixedPath",(int)this->isFixedPath,configFile); success = success && ::IniWriteString(APP_NAME, L"DefaultPath", (TCHAR *) dir.c_str(), configFile); } else { success = success && ::IniWriteInt(APP_NAME,L"IsFixedPath",(int)this->isFixedPath,configFile); success = success && ::IniWriteString(APP_NAME, L"DefaultPath", (TCHAR *)dir.c_str(), configFile); success = success && ::IniWriteString(APP_NAME, L"MusicPath", (TCHAR *)musicDir.c_str() , configFile); success = success && ::IniWriteString(APP_NAME, L"BookPath", (TCHAR *)bookDir.c_str() , configFile); success = success && ::IniWriteString(APP_NAME, L"PhotoPath", (TCHAR *)photoDir.c_str() , configFile); } success = success && ::IniWriteString(APP_NAME, L"NickName", (TCHAR *)nickName.c_str(), configFile); success = success && ::IniWriteString(APP_NAME, L"BroadcastAddress", (TCHAR *)broadcastAddress.c_str(), configFile); success = success && ::IniWriteString(APP_NAME, L"MusicExt", (TCHAR *)musicExt.c_str(), configFile); success = success && ::IniWriteString(APP_NAME, L"VideoExt", (TCHAR *)videoExt.c_str(), configFile); success = success && ::IniWriteString(APP_NAME, L"PhotoExt", (TCHAR *)photoExt.c_str(), configFile); success = success && ::IniWriteString(APP_NAME, L"BookExt", (TCHAR *)bookExt.c_str(), configFile); success = success && ::IniWriteInt(APP_NAME, L"IsShowLocal", this->showLocal, configFile); return success; } void Configuration::GetSmartPath(wstring& fileName, wstring& path) { if(isFixedPath) path = dir; else { int extIndex = fileName.find_last_of(L"."); wstring extName = fileName.substr(extIndex + 1); WCHAR * ori = (WCHAR *) extName.c_str(); wstring newExt; while( *ori != 0) { WCHAR temp = *ori; if(temp >= 'A' && temp <= 'Z') { *ori += 'a' - 'A'; } ori++; } // ori = (WCHAR *) extName.c_str(); if(IsMatch(extName, musicExt)) { path = musicDir; } else if(IsMatch(extName, photoExt)) { path = photoDir; } else if(IsMatch(extName, videoExt)) { path = videoDir; } else if(IsMatch(extName, bookExt)) { path = bookDir; } else { path = dir; } } } bool Configuration::IsMatch(wstring& extName, wstring& extList) { wstring ext = L";" + extName + L";" ; wstring test = L";" + extList + L";"; return test.find(extName) != wstring::npos; } void Configuration::GetBroadcastList(vector& broadcastList) { WCHAR buf[300]; wcscpy(buf,broadcastAddress.c_str()); WCHAR* p = (WCHAR*) buf; WCHAR* begin = wcstok(p, L";"); while(begin ) { string addr; W2A(begin, addr); broadcastList.push_back( addr); begin = wcstok(NULL, L";"); } }