📄 preferences.cpp
字号:
}
delete[] appdir;
delete prefs;
delete prefsExt;
}
int CPreferences::GetRecommendedMaxConnections() {
int iRealMax = ::GetMaxConnections();
if(iRealMax == -1 || iRealMax > 520)
return 500;
if(iRealMax < 20)
return iRealMax;
if(iRealMax <= 256)
return iRealMax - 10;
return iRealMax - 20;
}
void CPreferences::SavePreferences(){
CString buffer;
char* fullpath = new char[strlen(appdir)+MAX_PATH]; // i_a
sprintf(fullpath,"%spreferences.ini",appdir);
CIni ini( fullpath, "eMule" );
delete[] fullpath;
fullpath=NULL;
//---
ini.WriteString("AppVersion", CURRENT_VERSION_LONG);
//---
buffer.Format("%s",prefs->nick);
ini.WriteString("Nick",buffer);
buffer.Format("%s",prefs->incomingdir);
ini.WriteString("IncomingDir",buffer );
buffer.Format("%s",prefs->tempdir);
ini.WriteString("TempDir",buffer );
ini.WriteInt("MaxUpload",prefs->maxupload);
ini.WriteInt("MaxDownload",prefs->maxdownload);
ini.WriteInt("MaxConnections",prefs->maxconnections);
ini.WriteInt("RemoveDeadServer",prefs->deadserver);
ini.WriteInt("Port",prefs->port);
ini.WriteInt("UDPPort",prefs->udpport);
ini.WriteInt("MaxSourcesPerFile",prefs->maxsourceperfile );
ini.WriteWORD("Language",prefs->languageID);
ini.WriteInt("SeeShare",prefs->m_iSeeShares);
ini.WriteInt("ToolTipDelay",prefs->m_iToolDelayTime);
ini.WriteInt("StatGraphsInterval",prefs->trafficOMeterInterval);
ini.WriteInt("StatsInterval",prefs->statsInterval);
ini.WriteInt("DownloadCapacity",prefs->maxGraphDownloadRate);
ini.WriteInt("UploadCapacity",prefs->maxGraphUploadRate);
ini.WriteInt("DeadServerRetry",prefs->deadserverretries);
ini.WriteInt("SplitterbarPosition",prefs->splitterbarPosition+2);
ini.WriteInt("VariousStatisticsMaxValue",prefs->statsMax);
ini.WriteInt("StatsAverageMinutes",prefs->statsAverageMinutes);
ini.WriteInt("MaxConnectionsPerFiveSeconds",prefs->MaxConperFive);
ini.WriteInt("Check4NewVersionDelay",prefs->versioncheckdays);
ini.WriteBool("Reconnect",prefs->reconnect);
ini.WriteBool("Scoresystem",prefs->scorsystem);
ini.WriteBool("ICH",prefs->ICH);
ini.WriteBool("Serverlist",prefs->autoserverlist);
ini.WriteBool("UpdateNotify",prefs->updatenotify);
ini.WriteBool("MinToTray",prefs->mintotray);
ini.WriteBool("AddServersFromServer",prefs->addserversfromserver);
ini.WriteBool("AddServersFromClient",prefs->addserversfromclient);
ini.WriteBool("Splashscreen",prefs->splashscreen);
ini.WriteBool("BringToFront",prefs->bringtoforeground);
ini.WriteBool("TransferDoubleClick",prefs->transferDoubleclick);
ini.WriteBool("BeepOnError",prefs->beepOnError);
ini.WriteBool("ConfirmExit",prefs->confirmExit);
ini.WriteBool("FilterBadIPs",prefs->filterBadIP);
ini.WriteBool("Autoconnect",prefs->autoconnect);
ini.WriteBool("OnlineSignature",prefs->onlineSig);
ini.WriteBool("StartupMinimized",prefs->startMinimized);
ini.WriteBool("SafeServerConnect",prefs->safeServerConnect);
ini.WriteBool("ShowRatesOnTitle",prefs->showRatesInTitle);
ini.WriteBool("IndicateRatings",prefs->indicateratings);
ini.WriteBool("WatchClipboard4ED2kFilelinks",prefs->watchclipboard);
// Barry - New properties...
ini.WriteBool("AutoConnectStaticOnly", prefs->autoconnectstaticonly);
ini.WriteBool("AutoTakeED2KLinks", prefs->autotakeed2klinks);
ini.WriteBool("AddNewFilesPaused", prefs->addnewfilespaused);
ini.WriteInt ("3DDepth", prefs->depth3D);
ini.WriteBool("NotifyOnDownload",prefs->useDownloadNotifier); // Added by enkeyDEV
ini.WriteBool("NotifyOnChat",prefs->useChatNotifier);
ini.WriteBool("NotifyOnLog",prefs->useLogNotifier);
ini.WriteBool("NotifierUseSound",prefs->useSoundInNotifier);
ini.WriteBool("NotifierPopEveryChatMessage",prefs->notifierPopsEveryChatMsg);
ini.WriteBool("NotifierPopNewVersion",prefs->notifierNewVersion);
buffer.Format("%s",prefs->notifierSoundFilePath);
ini.WriteString("NotifierSoundPath",buffer);
buffer.Format("%s",prefs->notifierConfiguration); // Added by enkeyDEV
ini.WriteString("NotifierConfiguration",buffer); // Added by enkeyDEV
ini.WriteString("TxtEditor",prefs->TxtEditor);
ini.WriteString("VideoPlayer",prefs->VideoPlayer);
ini.WriteString("MessageFilter",prefs->messageFilter);
ini.WriteString("CommentFilter",prefs->commentFilter);
ini.WriteString("DateTimeFormat",GetDateTimeFormat());
ini.WriteString("DefaultIRCServer",prefs->m_sircserver);
ini.WriteString("IRCNick",prefs->m_sircnick);
ini.WriteBool("IRCAddTimestamp", prefs->m_bircaddtimestamp);
ini.WriteString("IRCFilterName", prefs->m_sircchannamefilter);
ini.WriteInt("IRCFilterUser", prefs->m_iircchanneluserfilter);
ini.WriteBool("IRCUseFilter", prefs->m_bircusechanfilter);
ini.WriteString("IRCPerformString", prefs->m_sircperformstring);
ini.WriteBool("IRCUsePerform", prefs->m_bircuseperform);
ini.WriteBool("IRCListOnConnect", prefs->m_birclistonconnect);
ini.WriteBool("IRCAcceptLinks", prefs->m_bircacceptlinks);
ini.WriteBool("IRCIgnoreInfoMessage", prefs->m_bircignoreinfomessage);
ini.WriteBool("IRCIgnoreEmuleProtoInfoMessage", prefs->m_bircignoreemuleprotoinfomessage);
ini.WriteBool("NotifyOnImportantError", prefs->notifierImportantError);
ini.WriteBool("SmartIdCheck", prefs->smartidcheck);
ini.WriteBool("Verbose", prefs->m_bVerbose);
ini.WriteBool("PreviewPrio", prefs->m_bpreviewprio);
ini.WriteBool("UpdateQueueListPref", prefs->m_bupdatequeuelist);
ini.WriteBool("ManualHighPrio", prefs->m_bmanualhighprio);
ini.WriteBool("FullChunkTransfers", prefs->m_btransferfullchunks);
ini.WriteBool("StartNextFile", prefs->m_bstartnextfile);
ini.WriteBool("ShowOverhead", prefs->m_bshowoverhead);
ini.WriteBool("VideoPreviewBackupped", prefs->moviePreviewBackup);
ini.WriteInt("FileBufferSizePref", prefs->m_iFileBufferSize);
ini.WriteInt("QueueSizePref", prefs->m_iQueueSize);
ini.WriteBool("DAPPref", prefs->m_bDAP);
ini.WriteBool("UAPPref", prefs->m_bUAP);
ini.WriteBool("ShowAllNotCats", prefs->showAllNotCats);
ini.WriteBool("FilterServersByIP",prefs->filterserverbyip);
ini.WriteBool("DisableKnownClientList",prefs->m_bDisableKnownClientList);
ini.WriteBool("DisableQueueList",prefs->m_bDisableQueueList);
ini.WriteBool("UseCreditSystem",prefs->m_bCreditSystem);
ini.WriteBool("SaveLogToDisk",prefs->log2disk);
ini.WriteBool("SaveDebugToDisk",prefs->debug2disk);
ini.WriteBool("EnableScheduler",prefs->scheduler);
ini.WriteBool("MessagesFromFriendsOnly",prefs->msgonlyfriends);
ini.WriteBool("MessageFromValidSourcesOnly",prefs->msgsecure);
ini.WriteInt("VersionCheckLastAutomatic", prefs->versioncheckLastAutomatic);
ini.WriteInt("FilterLevel",prefs->filterlevel);
ini.SerGet(false, prefs->downloadColumnWidths,
ELEMENT_COUNT(prefs->downloadColumnWidths), "DownloadColumnWidths");
ini.SerGet(false, prefs->downloadColumnHidden,
ELEMENT_COUNT(prefs->downloadColumnHidden), "DownloadColumnHidden");
ini.SerGet(false, prefs->downloadColumnOrder,
ELEMENT_COUNT(prefs->downloadColumnOrder), "DownloadColumnOrder");
ini.SerGet(false, prefs->uploadColumnWidths,
ELEMENT_COUNT(prefs->uploadColumnWidths), "UploadColumnWidths");
ini.SerGet(false, prefs->uploadColumnHidden,
ELEMENT_COUNT(prefs->uploadColumnHidden), "UploadColumnHidden");
ini.SerGet(false, prefs->uploadColumnOrder,
ELEMENT_COUNT(prefs->uploadColumnOrder), "UploadColumnOrder");
ini.SerGet(false, prefs->queueColumnWidths,
ELEMENT_COUNT(prefs->queueColumnWidths), "QueueColumnWidths");
ini.SerGet(false, prefs->queueColumnHidden,
ELEMENT_COUNT(prefs->queueColumnHidden), "QueueColumnHidden");
ini.SerGet(false, prefs->queueColumnOrder,
ELEMENT_COUNT(prefs->queueColumnOrder), "QueueColumnOrder");
ini.SerGet(false, prefs->searchColumnWidths,
ELEMENT_COUNT(prefs->searchColumnWidths), "SearchColumnWidths");
ini.SerGet(false, prefs->searchColumnHidden,
ELEMENT_COUNT(prefs->searchColumnHidden), "SearchColumnHidden");
ini.SerGet(false, prefs->searchColumnOrder,
ELEMENT_COUNT(prefs->searchColumnOrder), "SearchColumnOrder");
ini.SerGet(false, prefs->sharedColumnWidths,
ELEMENT_COUNT(prefs->sharedColumnWidths), "SharedColumnWidths");
ini.SerGet(false, prefs->sharedColumnHidden,
ELEMENT_COUNT(prefs->sharedColumnHidden), "SharedColumnHidden");
ini.SerGet(false, prefs->sharedColumnOrder,
ELEMENT_COUNT(prefs->sharedColumnOrder), "SharedColumnOrder");
ini.SerGet(false, prefs->serverColumnWidths,
ELEMENT_COUNT(prefs->serverColumnWidths), "ServerColumnWidths");
ini.SerGet(false, prefs->serverColumnHidden,
ELEMENT_COUNT(prefs->serverColumnHidden), "ServerColumnHidden");
ini.SerGet(false, prefs->serverColumnOrder,
ELEMENT_COUNT(prefs->serverColumnOrder), "ServerColumnOrder");
ini.SerGet(false, prefs->clientListColumnWidths,
ELEMENT_COUNT(prefs->clientListColumnWidths), "ClientListColumnWidths");
ini.SerGet(false, prefs->clientListColumnHidden,
ELEMENT_COUNT(prefs->clientListColumnHidden), "ClientListColumnHidden");
ini.SerGet(false, prefs->clientListColumnOrder,
ELEMENT_COUNT(prefs->clientListColumnOrder), "ClientListColumnOrder");
// Barry - Provide a mechanism for all tables to store/retrieve sort order
ini.WriteInt("TableSortItemDownload", prefs->tableSortItemDownload);
ini.WriteInt("TableSortItemUpload", prefs->tableSortItemUpload);
ini.WriteInt("TableSortItemQueue", prefs->tableSortItemQueue);
ini.WriteInt("TableSortItemSearch", prefs->tableSortItemSearch);
ini.WriteInt("TableSortItemShared", prefs->tableSortItemShared);
ini.WriteInt("TableSortItemServer", prefs->tableSortItemServer);
ini.WriteInt("TableSortItemClientList", prefs->tableSortItemClientList);
ini.WriteBool("TableSortAscendingDownload", prefs->tableSortAscendingDownload);
ini.WriteBool("TableSortAscendingUpload", prefs->tableSortAscendingUpload);
ini.WriteBool("TableSortAscendingQueue", prefs->tableSortAscendingQueue);
ini.WriteBool("TableSortAscendingSearch", prefs->tableSortAscendingSearch);
ini.WriteBool("TableSortAscendingShared", prefs->tableSortAscendingShared);
ini.WriteBool("TableSortAscendingServer", prefs->tableSortAscendingServer);
ini.WriteBool("TableSortAscendingClientList", prefs->tableSortAscendingClientList);
CString buffer2;
for (int i=0;i<15;i++) {
buffer.Format("%I64Lu",GetStatsColor(i));
buffer2.Format("StatColor%i",i);
ini.WriteString(buffer2,buffer);
}
buffer.Format("%I64Lu",prefs->totalDownloadedBytes);
ini.WriteString("TotalDownloadedBytes",buffer ,"Statistics");
buffer.Format("%I64Lu",prefs->totalUploadedBytes);
ini.WriteString("TotalUploadedBytes",buffer ,"Statistics");
// Web Server
ini.WriteString("Password", GetWSPass(), "WebServer");
ini.WriteString("PasswordLow", GetWSLowPass());
ini.WriteInt("Port", prefs->m_nWebPort);
ini.WriteBool("Enabled", prefs->m_bWebEnabled);
ini.WriteBool("UseGzip", prefs->m_bWebUseGzip);
ini.WriteInt("PageRefreshTime", prefs->m_nWebPageRefresh);
ini.WriteBool("UseLowRightsUser", prefs->m_bWebLowEnabled);
ini.WriteString("RessourcesPath", prefs->m_sWebResDir);
// Cats
CString catinif,ixStr;
catinif.Format("%sCategory.ini",appdir);
remove(catinif);
if (GetCatCount()>1) {
CIni catini( catinif, "Category" );
catini.WriteInt("Count",catMap.GetCount()-1,"General");
for (int ix=1;ix<catMap.GetCount();ix++){
ixStr.Format("Cat#%i",ix);
catini.WriteString("Title",catMap.GetAt(ix)->title,ixStr);
catini.WriteString("Incoming",catMap.GetAt(ix)->incomingpath,ixStr);
catini.WriteString("Comment",catMap.GetAt(ix)->comment,ixStr);
buffer.Format("%lu",catMap.GetAt(ix)->color);
catini.WriteString("Color",buffer,ixStr);
}
}
}
void CPreferences::ResetStatsColor(int index){
switch(index) {
case 0 : prefs->statcolors[0]=RGB(0,0,64);break;
case 1 : prefs->statcolors[1]=RGB(192,192,255);break;
case 2 : prefs->statcolors[2]=RGB(128, 255, 128);break;
case 3 : prefs->statcolors[3]=RGB(0, 210, 0);break;
case 4 : prefs->statcolors[4]=RGB(0, 128, 0);break;
case 5 : prefs->statcolors[5]=RGB(255, 128, 128);break;
case 6 : prefs->statcolors[6]=RGB(200, 0, 0);break;
case 7 : prefs->statcolors[7]=RGB(140, 0, 0);break;
case 8 : prefs->statcolors[8]=RGB(150, 150, 255);break;
case 9 : prefs->statcolors[9]=RGB(192, 0, 192);break;
case 10 : prefs->statcolors[10]=RGB(255, 255, 128);break;
case 11 : prefs->statcolors[11]=RGB(0, 0, 0);break;
case 12 : prefs->statcolors[12]=RGB(255, 255, 255);break;
default:break;
}
}
void CPreferences::LoadPreferences(){
char buffer[200];
//--- Quick hack to add version tag to preferences.ini-file and solve the issue with the FlatStatusBar tag...
CString strFileName;
strFileName.Format("%spreferences.ini", appdir);
CIni* pIni = new CIni(strFileName, "eMule");
CString strCurrVersion, strPrefsVersion;
strCurrVersion = CURRENT_VERSION_LONG;
strPrefsVersion = pIni->GetString("AppVersion");
delete pIni;
prefs->m_bFirstStart = false;
CFileFind findFileName;
if (strCurrVersion != strPrefsVersion){
prefs->m_bFirstStart = true;
if(findFileName.FindFile(strFileName)){
CFile file;
CFileFind findNewName;
CString strNewName;
strNewName.Format("%spreferences.ini.old", appdir);
if (findNewName.FindFile(strNewName))
file.Remove(strNewName);
file.Rename(strFileName, strNewName);
strFileName = strNewName;
}
}
CIni ini(strFileName, "eMule");
//--- end Ozon :)
sprintf(prefs->nick,"%s",ini.GetString("Nick","http://emule-project.net"));
sprintf(buffer,"%sIncoming",appdir);
sprintf(prefs->incomingdir,"%s",ini.GetString("IncomingDir",buffer ));
MakeFoldername(prefs->incomingdir);
sprintf(buffer,"%sTemp",appdir);
sprintf(prefs->tempdir,"%s",ini.GetString("TempDir",buffer));
MakeFoldername(prefs->tempdir);
prefs->maxupload=ini.GetInt("MaxUpload",UNLIMITED);
prefs->maxdownload=ini.GetInt("MaxDownload",UNLIMITED);
prefs->maxconnections=ini.GetInt("MaxConnections",GetRecommendedMaxConnections());
prefs->deadserver=ini.GetInt("RemoveDeadServer",2);
prefs->port=ini.GetInt("Port",4662);
prefs->udpport=ini.GetInt("UDPPort",prefs->port+10);
prefs->maxsourceperfile=ini.GetInt("MaxSourcesPerFile",400 );
prefs->languageID=ini.GetWORD("Language",0);
prefs->m_iSeeShares=ini.GetInt("SeeShare",2);
prefs->m_iToolDelayTime=ini.GetInt("ToolTipDelay",1);
prefs->trafficOMeterInterval=ini.GetInt("StatGraphsInterval",3);
prefs->statsInterval=ini.GetInt("statsInterval",5);
prefs->maxGraphDownloadRate=ini.GetInt("DownloadCapacity",96);
prefs->maxGraphUploadRate=ini.GetInt("UploadCapacity",16);
prefs->deadserverretries=ini.GetInt("DeadServerRetry",1);
prefs->splitterbarPosition=ini.GetInt("SplitterbarPosition",75);
prefs->statsMax=ini.GetInt("VariousStatisticsMaxValue",100);
prefs->statsAverageMinutes=ini.GetInt("StatsAverageMinutes",5);
prefs->MaxConperFive=ini.GetInt("MaxConnectionsPerFiveSeconds",GetDefaultMaxConperFive());
prefs->reconnect=ini.GetBool("Reconnect",true);
prefs->scorsystem=ini.GetBool("Scoresystem",true);
prefs->ICH=ini.GetBool("ICH",true);
prefs->autoserverlist=ini.GetBool("Serverlist",false);
prefs->updatenotify=ini.GetBool("UpdateNotify",false);
prefs->mintotray=ini.GetBool("MinToTray",false);
prefs->addserversfromserver=ini.GetBool("AddServersFromServer",true);
prefs->addserversfromclient=ini.GetBool("AddServersFromClient",true);
prefs->splashscreen=ini.GetBool("Splashscreen",true);
prefs->bringtoforeground=ini.GetBool("BringToFront",true);
prefs->transferDoubleclick=ini.GetBool("TransferDoubleClick",true);
prefs->beepOnError=ini.GetBool("BeepOnError",true);
prefs->confirmExit=ini.GetBool("ConfirmExit",false);
prefs->filterBadIP=ini.GetBool("FilterBadIPs",true);
prefs->autoconnect=ini.GetBool("Autoconnect",false);
prefs->showRatesInTitle=ini.GetBool("ShowRatesOnTitle",false);
prefs->onlineSig=ini.GetBool("OnlineSignature",false);
prefs->startMinimized=ini.GetBool("StartupMinimized",false);
prefs->safeServerConnect =ini.GetBool("SafeServerConnect",false);
prefs->filterserverbyip=ini.GetBool("FilterServersByIP",false);
prefs->filterlevel=ini.GetInt("FilterLevel",127);
// Barry - New properties...
prefs->autoconnectstaticonly = ini.GetBool("AutoConnectStaticOnly",false);
prefs->autotakeed2klinks = ini.GetBool("AutoTakeED2KLinks",true);
prefs->addnewfilespaused = ini.GetBool("AddNewFilesPaused",false);
prefs->depth3D = ini.GetInt("3DDepth", 0);
// as temporarial converter for previous versions
if (strPrefsVersion < "0.25a") // before 0.25a
if (ini.GetBool("FlatStatusBar",false))
prefs->depth3D = 0;
else
prefs->depth3D = 5;
prefs->useDownloadNotifier=ini.GetBool("NotifyOnDownload",false); // Added by enkeyDEV
prefs->useChatNotifier=ini.GetBool("NotifyOnChat",false);
prefs->useLogNotifier=ini.GetBool("NotifyOnLog",false);
prefs->useSoundInNotifier=ini.GetBool("NotifierUseSound",false);
prefs->notifierPopsEveryChatMsg=ini.GetBool("NotifierPopEveryChatMessage",false);
prefs->notifierImportantError=ini.GetBool("NotifyOnImportantError",false);
prefs->notifierNewVersion=ini.GetBool("NotifierPopNewVersion",false);
sprintf(prefs->notifierSoundFilePath,"%s",ini.GetString("NotifierSoundPath",""));
sprintf(prefs->notifierConfiguration,"%s",ini.GetString("NotifierConfiguration","")); // Added by enkeyDEV
sprintf(prefs->datetimeformat,"%s",ini.GetString("DateTimeFormat","%A, %x, %X"));
sprintf(prefs->m_sircserver,"%s",ini.GetString("DefaultIRCServer","irc.emule-project.net"));
sprintf(prefs->m_sircnick,"%s",ini.GetString("IRCNick","eMule"));
prefs->m_bircaddtimestamp=ini.GetBool("IRCAddTimestamp",true);
sprintf(prefs->m_sircchannamefilter,"%s",ini.GetString("IRCFilterName", "" ));
prefs->m_bircusechanfilter=ini.GetBool("IRCUseFilter", false);
prefs->m_iircchanneluserfilter=ini.GetInt("IRCFilterUser", 0);
sprintf(prefs->m_sircperformstring,"%s",ini.GetString("IRCPerformString", "/join #emule" ));
prefs->m_bircuseperform=ini.GetBool("IRCUsePerform", false);
prefs->m_birclistonconnect=ini.GetBool("IRCListOnConnect", true);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -