bool ProjectFile::SaveFile() { FileModified(); QString projectText = toString(5); QTextStream fileOut(&projectFile); fileOut << projectText; projectFile.close(); return true; }
bool ProjectFile::ReadFile() { if (!setContent(&projectFile)) { WarnFileError("Error setting project data"); projectFile.close(); return false; } FileModified(); return true; }
BOOL CCheckFileNotificationsThread::RunningProcNew() { FnDebugMessage("FN: RunningProcNew started"); // Delete this when this functions ends CAutoPtr<CCheckFileNotificationsThread> thisPtr=this; // Creating handles if (!CreateHandlesNew()) return FALSE; DWORD dwOut; for (;;) { FnDebugMessage("FN goes to sleep"); InterlockedExchange(&m_lState,sWaiting); DWORD nRet=WaitForMultipleObjects(m_nHandles,m_pEventHandles,FALSE,INFINITE); InterlockedExchange(&m_lState,sProcessing); FnDebugMessage1("FN waked nRet=%X",nRet); if (nRet==WAIT_OBJECT_0) { // First event signalled, this event is for stopping // So do nothing here and exit FnDebugMessage("FN stopping event signalled, exiting"); break; } else if (nRet>WAIT_OBJECT_0 && nRet<WAIT_OBJECT_0+m_nHandles) { CLocateDlg* pLocateDlg=GetLocateDlg(); // Locate dialog is also closed, stopping this process if (pLocateDlg==NULL) break; DIRCHANGEDATA* pChangeData=m_pDirDatas[nRet-WAIT_OBJECT_0]; // Asking changes if (!pLocateDlg->IsLocating()) // if locating in process, do nothing { if (GetOverlappedResult(pChangeData->hDirHandle,&pChangeData->ol,&dwOut,FALSE)) { // If GetOverlappedResults took so long that Stop() has given during this time // stop right now if (m_lFlags&fwStopWhenPossible) break; while (pLocateDlg->m_pBackgroundUpdater!=NULL && !pLocateDlg->m_pBackgroundUpdater->m_lIsWaiting) Sleep(200); if (dwOut==0) UpdateItemsInRoot(pChangeData->pRoot,pLocateDlg); else { FILE_NOTIFY_INFORMATION* pStruct=(FILE_NOTIFY_INFORMATION*)pChangeData->pBuffer; while (1) { // Check stop state again if (m_lFlags&fwStopWhenPossible) break; DWORD dwLength=pStruct->FileNameLength/2; // Skip log files BOOL bSkipThisFile=FALSE; int nFilePart; for (nFilePart=dwLength-1;nFilePart>=0 && pStruct->FileName[nFilePart]!=L'\\';nFilePart--); nFilePart++; // Skipping ntuser.dat.log file if (dwLength-nFilePart==14) { if (_wcsnicmp(pStruct->FileName+nFilePart,L"ntuser.dat.log",14)==0) bSkipThisFile=TRUE; } #ifdef _DEBUG // Skipping HFCDebug.log if (dwLength-nFilePart==12) { if (_wcsnicmp(pStruct->FileName+nFilePart,L"HFCDebug.log",12)==0) bSkipThisFile=TRUE; } #endif if (!bSkipThisFile) { m_pFile=new WCHAR[pChangeData->dwRootLength+dwLength+2]; MemCopyW(m_pFile,pChangeData->pRoot,pChangeData->dwRootLength); MemCopyW(m_pFile+pChangeData->dwRootLength,pStruct->FileName,dwLength); dwLength+=pChangeData->dwRootLength; m_pFile[dwLength]='\0'; MakeLower(m_pFile); //DebugFormatMessage("BN: file=%S action=%d",m_pFile,pStruct->Action); switch(pStruct->Action) { case FILE_ACTION_ADDED: case FILE_ACTION_RENAMED_NEW_NAME: FileCreated(m_pFile,dwLength,pLocateDlg); break; case FILE_ACTION_REMOVED: case FILE_ACTION_RENAMED_OLD_NAME: FileDeleted(m_pFile,dwLength,pLocateDlg); break; case FILE_ACTION_MODIFIED: FileModified(m_pFile,dwLength,pLocateDlg); break; } delete[] m_pFile; m_pFile=NULL; } if (pStruct->NextEntryOffset==0) break; *((char**)&pStruct)+=pStruct->NextEntryOffset; } } } } // Check this again if (m_lFlags&fwStopWhenPossible) break; // Coing to listen changes FnDebugMessage("FN: going to listen changes"); BOOL bRet=m_pReadDirectoryChangesW(pChangeData->hDirHandle,pChangeData->pBuffer,CHANGE_BUFFER_LEN,TRUE, FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_DIR_NAME| FILE_NOTIFY_CHANGE_ATTRIBUTES|FILE_NOTIFY_CHANGE_SIZE|FILE_NOTIFY_CHANGE_LAST_WRITE| FILE_NOTIFY_CHANGE_CREATION|FILE_NOTIFY_CHANGE_SECURITY, &dwOut,&pChangeData->ol,NULL); FnDebugMessage("FN: m_pReadDirectoryChangesW returned"); if (!bRet) { // ReadDirectoryChangesW failed, reset event manually FnDebugMessage("FN: ReadDirectoryChangesW failed"); ResetEvent(pChangeData->ol.hEvent); } // Finally, before going to sleep, check that shell we continue if (m_lFlags&fwStopWhenPossible) break; } } InterlockedExchange(&m_lState,sStopping); FnDebugMessage("FN RunningProcNew ends"); return FALSE; }
ProjectFile::ProjectFile() { FileModified(); }