void CHardLimit::LoadSettings(CPartFile* file) { SettingsList daten; CString datafilepath; datafilepath.Format(_T("%s\\%s\\%s.ahl"), thePrefs.GetTempDir(),_T("Extra Lists"),file->GetPartMetFileName()); CString strLine; CStdioFile f; if (!f.Open(datafilepath, CFile::modeReadWrite | CFile::typeText)) return; while(f.ReadString(strLine)) { if (strLine.GetAt(0) == '#') continue; int pos = strLine.Find(_T('\0')); if (pos == -1) continue; CString strData = strLine.Left(pos); CSettingsData* newdata = new CSettingsData(_tstol(strData)); daten.AddTail(newdata); } f.Close(); if(daten.GetCount() < 1){ while (!daten.IsEmpty()) delete daten.RemoveHead(); return; } POSITION pos = daten.GetHeadPosition(); if(!pos) return; file->SetMaxSourcesPerFile(((CSettingsData*)daten.GetAt(pos))->dwData); daten.GetNext(pos); while (!daten.IsEmpty()) delete daten.RemoveHead(); }
void CSettingsSaver::ImportOldSettings(CPartFile* file) { SettingsList daten; CString datafilepath; datafilepath.Format(_T("%s\\%s\\%s.sivka"), file->GetTempPath(), _T("Extra Lists"), file->GetPartMetFileName()); CString strLine; CStdioFile f; if (!f.Open(datafilepath, CFile::modeReadWrite | CFile::typeText)) return; while(f.ReadString(strLine)) { if (strLine.GetAt(0) == _T('#')) continue; int pos = strLine.Find(_T('\n')); if (pos == -1) continue; CString strData = strLine.Left(pos); CSettingsData* newdata = new CSettingsData(_tstol(strData)); daten.AddTail(newdata); } f.Close(); POSITION pos = daten.GetHeadPosition(); if(!pos) return; if( ((CSettingsData*)daten.GetAt(pos))->dwData == 0 || ((CSettingsData*)daten.GetAt(pos))->dwData == 1) { file->SetEnableAutoDropNNS((((CSettingsData*)daten.GetAt(pos))->dwData)!=0); } else file->SetEnableAutoDropNNS(thePrefs.GetEnableAutoDropNNSDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 0 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 60000) file->SetAutoNNS_Timer(((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetAutoNNS_Timer(thePrefs.GetAutoNNS_TimerDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 50 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 100) file->SetMaxRemoveNNSLimit((uint16)((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetMaxRemoveNNSLimit(thePrefs.GetMaxRemoveNNSLimitDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData == 0 || ((CSettingsData*)daten.GetAt(pos))->dwData == 1) { file->SetEnableAutoDropFQS((((CSettingsData*)daten.GetAt(pos))->dwData)!=0); } else file->SetEnableAutoDropFQS(thePrefs.GetEnableAutoDropFQSDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 0 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 60000) file->SetAutoFQS_Timer(((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetAutoFQS_Timer(thePrefs.GetAutoFQS_TimerDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 50 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 100) file->SetMaxRemoveFQSLimit((uint16)((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetMaxRemoveFQSLimit(thePrefs.GetMaxRemoveFQSLimitDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData == 0 || ((CSettingsData*)daten.GetAt(pos))->dwData == 1) { file->SetEnableAutoDropQRS((((CSettingsData*)daten.GetAt(pos))->dwData)!=0); } else file->SetEnableAutoDropQRS(thePrefs.GetEnableAutoDropQRSDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 0 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 60000) file->SetAutoHQRS_Timer(((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetAutoHQRS_Timer(thePrefs.GetAutoHQRS_TimerDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 1000 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 10000) file->SetMaxRemoveQRS((uint16)((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetMaxRemoveQRS(thePrefs.GetMaxRemoveQRSDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 50 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 100) file->SetMaxRemoveQRSLimit((uint16)((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetMaxRemoveQRSLimit(thePrefs.GetMaxRemoveQRSLimitDefault()); if(daten.GetCount() > 10) // emulate StulleMule <= v2.2 files { // ==> Global Source Limit (customize for files) - Stulle daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData == 0 || ((CSettingsData*)daten.GetAt(pos))->dwData == 1) { file->SetGlobalHL((((CSettingsData*)daten.GetAt(pos))->dwData)!=0); } else file->SetGlobalHL(thePrefs.GetGlobalHlDefault()); // <== Global Source Limit (customize for files) - Stulle } else file->SetGlobalHL(thePrefs.GetGlobalHlDefault()); while (!daten.IsEmpty()) delete daten.RemoveHead(); if (_tremove(datafilepath)) if (errno != ENOENT) AddLogLine(true, _T("Failed to delete %s, you will need to do this manually"), datafilepath); }