📄 settingsmanager.cpp
字号:
setDefault(PRIO_HIGHEST_SIZE, 64);
setDefault(PRIO_HIGH_SIZE, 0);
setDefault(PRIO_NORMAL_SIZE, 0);
setDefault(PRIO_LOW_SIZE, 0);
setDefault(PRIO_LOWEST, false);
setDefault(AUTODROP_SPEED, 1024);
setDefault(AUTODROP_INTERVAL, 10);
setDefault(AUTODROP_ELAPSED, 15);
setDefault(AUTODROP_INACTIVITY, 10);
setDefault(AUTODROP_MINSOURCES, 2);
setDefault(AUTODROP_FILESIZE, 0);
setDefault(AUTODROP_ALL, false);
setDefault(AUTODROP_FILELISTS, false);
setDefault(AUTODROP_DISCONNECT, false);
setDefault(OPEN_PUBLIC, false);
setDefault(OPEN_FAVORITE_HUBS, false);
setDefault(OPEN_FAVORITE_USERS, false);
setDefault(OPEN_QUEUE, false);
setDefault(OPEN_FINISHED_DOWNLOADS, false);
setDefault(OPEN_FINISHED_UPLOADS, false);
setDefault(OPEN_SEARCH_SPY, false);
setDefault(OPEN_NETWORK_STATISTICS, false);
setDefault(OPEN_NOTEPAD, false);
setDefault(NO_IP_OVERRIDE, false);
setDefault(SEARCH_ONLY_FREE_SLOTS, false);
setDefault(LAST_SEARCH_TYPE, 0);
setDefault(SOCKET_IN_BUFFER, 64*1024);
setDefault(SOCKET_OUT_BUFFER, 64*1024);
setDefault(ONLY_DL_TTH_FILES, false);
setDefault(OPEN_WAITING_USERS, false);
setDefault(OPEN_SYSTEM_LOG, true);
setDefault(SSL_TRUSTED_CERTIFICATES_PATH, Util::getConfigPath() + "Certificates" PATH_SEPARATOR_STR);
setDefault(BOLD_FINISHED_DOWNLOADS, true);
setDefault(BOLD_FINISHED_UPLOADS, true);
setDefault(BOLD_QUEUE, true);
setDefault(BOLD_HUB, true);
setDefault(BOLD_PM, true);
setDefault(BOLD_SEARCH, true);
setDefault(BOLD_WAITING_USERS, true);
setDefault(BOLD_SYSTEM_LOG, true);
setDefault(AUTO_REFRESH_TIME, 60);
setDefault(USE_SSL, false);
setDefault(AUTO_SEARCH_LIMIT, 5);
setDefault(ALT_SORT_ORDER, false);
setDefault(AUTO_KICK_NO_FAVS, false);
setDefault(PROMPT_PASSWORD, false);
#ifdef _WIN32
setDefault(MAIN_WINDOW_STATE, SW_SHOWNORMAL);
setDefault(MAIN_WINDOW_SIZE_X, CW_USEDEFAULT);
setDefault(MAIN_WINDOW_SIZE_Y, CW_USEDEFAULT);
setDefault(MAIN_WINDOW_POS_X, CW_USEDEFAULT);
setDefault(MAIN_WINDOW_POS_Y, CW_USEDEFAULT);
setDefault(MDI_MAXIMIZED, true);
setDefault(UPLOAD_BAR_COLOR, RGB(205, 60, 55));
setDefault(DOWNLOAD_BAR_COLOR, RGB(55, 170, 85));
#endif
}
void SettingsManager::load(string const& aFileName)
{
try {
SimpleXML xml;
xml.fromXML(File(aFileName, File::READ, File::OPEN).read());
xml.resetCurrentChild();
xml.stepIn();
if(xml.findChild("Settings"))
{
xml.stepIn();
int i;
for(i=STR_FIRST; i<STR_LAST; i++)
{
const string& attr = settingTags[i];
dcassert(attr.find("SENTRY") == string::npos);
if(xml.findChild(attr))
set(StrSetting(i), xml.getChildData());
xml.resetCurrentChild();
}
for(i=INT_FIRST; i<INT_LAST; i++)
{
const string& attr = settingTags[i];
dcassert(attr.find("SENTRY") == string::npos);
if(xml.findChild(attr))
set(IntSetting(i), Util::toInt(xml.getChildData()));
xml.resetCurrentChild();
}
for(i=INT64_FIRST; i<INT64_LAST; i++)
{
const string& attr = settingTags[i];
dcassert(attr.find("SENTRY") == string::npos);
if(xml.findChild(attr))
set(Int64Setting(i), Util::toInt64(xml.getChildData()));
xml.resetCurrentChild();
}
xml.stepOut();
}
double v = Util::toDouble(SETTING(CONFIG_VERSION));
// if(v < 0.x) { // Fix old settings here }
if(v <= 0.674 || SETTING(PRIVATE_ID).length() != 39 || CID(SETTING(PRIVATE_ID)).isZero()) {
set(PRIVATE_ID, CID::generate().toBase32());
// Formats changed, might as well remove these...
set(LOG_FORMAT_POST_DOWNLOAD, Util::emptyString);
set(LOG_FORMAT_POST_UPLOAD, Util::emptyString);
set(LOG_FORMAT_MAIN_CHAT, Util::emptyString);
set(LOG_FORMAT_PRIVATE_CHAT, Util::emptyString);
set(LOG_FORMAT_STATUS, Util::emptyString);
set(LOG_FORMAT_SYSTEM, Util::emptyString);
set(LOG_FILE_MAIN_CHAT, Util::emptyString);
set(LOG_FILE_STATUS, Util::emptyString);
set(LOG_FILE_PRIVATE_CHAT, Util::emptyString);
set(LOG_FILE_UPLOAD, Util::emptyString);
set(LOG_FILE_DOWNLOAD, Util::emptyString);
set(LOG_FILE_SYSTEM, Util::emptyString);
}
if(SETTING(SET_MINISLOT_SIZE) < 64)
set(SET_MINISLOT_SIZE, 64);
if(SETTING(AUTODROP_INTERVAL) < 1)
set(AUTODROP_INTERVAL, 1);
if(SETTING(AUTODROP_ELAPSED) < 1)
set(AUTODROP_ELAPSED, 1);
if(SETTING(AUTO_SEARCH_LIMIT) > 5)
set(AUTO_SEARCH_LIMIT, 5);
else if(SETTING(AUTO_SEARCH_LIMIT) < 1)
set(AUTO_SEARCH_LIMIT, 1);
#ifdef _DEBUG
set(PRIVATE_ID, CID::generate().toBase32());
#endif
setDefault(UDP_PORT, SETTING(TCP_PORT));
fire(SettingsManagerListener::Load(), &xml);
xml.stepOut();
} catch(const Exception&) {
if(CID(SETTING(PRIVATE_ID)).isZero())
set(PRIVATE_ID, CID::generate().toBase32());
}
}
void SettingsManager::save(string const& aFileName) {
SimpleXML xml;
xml.addTag("DCPlusPlus");
xml.stepIn();
xml.addTag("Settings");
xml.stepIn();
int i;
string type("type"), curType("string");
for(i=STR_FIRST; i<STR_LAST; i++)
{
if(i == CONFIG_VERSION) {
xml.addTag(settingTags[i], VERSIONSTRING);
xml.addChildAttrib(type, curType);
} else if(isSet[i]) {
xml.addTag(settingTags[i], get(StrSetting(i), false));
xml.addChildAttrib(type, curType);
}
}
curType = "int";
for(i=INT_FIRST; i<INT_LAST; i++)
{
if(isSet[i]) {
xml.addTag(settingTags[i], get(IntSetting(i), false));
xml.addChildAttrib(type, curType);
}
}
curType = "int64";
for(i=INT64_FIRST; i<INT64_LAST; i++)
{
if(isSet[i])
{
xml.addTag(settingTags[i], get(Int64Setting(i), false));
xml.addChildAttrib(type, curType);
}
}
xml.stepOut();
fire(SettingsManagerListener::Save(), &xml);
try {
File out(aFileName + ".tmp", File::WRITE, File::CREATE | File::TRUNCATE);
BufferedOutputStream<false> f(&out);
f.write(SimpleXML::utf8Header);
xml.toXML(&f);
f.flush();
out.close();
File::deleteFile(aFileName);
File::renameFile(aFileName + ".tmp", aFileName);
} catch(const FileException&) {
// ...
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -