bool MainWindow::moveFilesToFolder(QStringList files, QString folder){ // NOTE: also can pass in folders to the file-list QFileInfo destFolder(folder); bool ok = true; if(!destFolder.exists()){ QDir().mkpath(folder); // make the folder }else if(destFolder.isFile()) return false; // cant move files into a file :P for(int x=0; x<files.length(); x++){ QFileInfo source(files[x]); ok = ok && renameFileOrFolder(files[x],folder+"/"+source.fileName()); // move the file to the new location - does merge folders } return ok; }
bool VProjectItemFolder::MoveTo(const XBOX::VURL& inSrcURL,const XBOX::VURL& inDestURL) { bool ok = false; VFilePath srcFilePath, destFilePath; inSrcURL.GetFilePath(srcFilePath); inDestURL.GetFilePath(destFilePath); VFolder srcFolder(srcFilePath); VFolder destFolder(destFilePath); if (_MoveTo(srcFolder, destFolder) == VE_OK) ok = true; return ok; }
QString CJobRunner::errorString(int value) const { Misc::TFont font(FC::decode(*itsIt)); QString urlStr; if(CMD_REMOVE_FILE==itsCmd) urlStr=(*itsIt).fileName; else if(font.family.isEmpty()) urlStr=(*itsIt).prettyUrl(); else urlStr=FC::createName(font.family, font.styleInfo); switch(value) { case constDownloadFailed: return i18n("Failed to download <i>%1</i>", urlStr); case FontInst::STATUS_SERVICE_DIED: return i18n("System backend died. Please try again.<br><i>%1</i>", urlStr); case FontInst::STATUS_BITMAPS_DISABLED: return i18n("<i>%1</i> is a bitmap font, and these have been disabled on your system.", urlStr); case FontInst::STATUS_ALREADY_INSTALLED: return i18n("<i>%1</i> contains the font <b>%2</b>, which is already installed on your system.", urlStr, FC::getName(itsCurrentFile)); case FontInst::STATUS_NOT_FONT_FILE: return i18n("<i>%1</i> is not a font.", urlStr); case FontInst::STATUS_PARTIAL_DELETE: return i18n("Could not remove all files associated with <i>%1</i>", urlStr); case FontInst::STATUS_NO_SYS_CONNECTION: return i18n("Failed to start the system daemon.<br><i>%1</i>", urlStr); case KIO::ERR_FILE_ALREADY_EXIST: { QString name(Misc::modifyName(Misc::getFile((*itsIt).fileName))), destFolder(Misc::getDestFolder(folderName(itsDestIsSystem), name)); return i18n("<i>%1</i> already exists.", destFolder+name); } case KIO::ERR_DOES_NOT_EXIST: return i18n("<i>%1</i> does not exist.", urlStr); case KIO::ERR_WRITE_ACCESS_DENIED: return i18n("Permission denied.<br><i>%1</i>", urlStr); case KIO::ERR_UNSUPPORTED_ACTION: return i18n("Unsupported action.<br><i>%1</i>", urlStr); case KIO::ERR_COULD_NOT_AUTHENTICATE: return i18n("Authentication failed.<br><i>%1</i>", urlStr); default: return i18n("Unexpected error while processing: <i>%1</i>", urlStr); } }
nsresult nsImapMoveCoalescer::PlaybackMoves(PRBool doNewMailNotification /* = PR_FALSE */) { PRInt32 numFolders = m_destFolders.Count(); // Nothing to do, so don't change the member variables. if (numFolders == 0) return NS_OK; nsresult rv = NS_OK; m_hasPendingMoves = PR_FALSE; m_doNewMailNotification = doNewMailNotification; m_outstandingMoves = 0; for (PRInt32 i = 0; i < numFolders; ++i) { // XXX TODO // JUNK MAIL RELATED // is this the right place to make sure dest folder exists // (and has proper flags?), before we start copying? nsCOMPtr <nsIMsgFolder> destFolder(m_destFolders[i]); nsTArray<nsMsgKey>& keysToAdd = m_sourceKeyArrays[i]; PRInt32 numNewMessages = 0; PRInt32 numKeysToAdd = keysToAdd.Length(); if (numKeysToAdd == 0) continue; nsCOMPtr<nsIMutableArray> messages(do_CreateInstance(NS_ARRAY_CONTRACTID)); for (PRUint32 keyIndex = 0; keyIndex < keysToAdd.Length(); keyIndex++) { nsCOMPtr<nsIMsgDBHdr> mailHdr = nsnull; rv = m_sourceFolder->GetMessageHeader(keysToAdd.ElementAt(keyIndex), getter_AddRefs(mailHdr)); if (NS_SUCCEEDED(rv) && mailHdr) { messages->AppendElement(mailHdr, PR_FALSE); PRBool isRead = PR_FALSE; mailHdr->GetIsRead(&isRead); if (!isRead) numNewMessages++; } } PRUint32 destFlags; destFolder->GetFlags(&destFlags); if (! (destFlags & nsMsgFolderFlags::Junk)) // don't set has new on junk folder { destFolder->SetNumNewMessages(numNewMessages); if (numNewMessages > 0) destFolder->SetHasNewMessages(PR_TRUE); } // adjust the new message count on the source folder PRInt32 oldNewMessageCount = 0; m_sourceFolder->GetNumNewMessages(PR_FALSE, &oldNewMessageCount); if (oldNewMessageCount >= numKeysToAdd) oldNewMessageCount -= numKeysToAdd; else oldNewMessageCount = 0; m_sourceFolder->SetNumNewMessages(oldNewMessageCount); nsCOMPtr <nsISupports> sourceSupports = do_QueryInterface(m_sourceFolder, &rv); nsCOMPtr <nsIUrlListener> urlListener(do_QueryInterface(sourceSupports)); keysToAdd.Clear(); nsCOMPtr<nsIMsgCopyService> copySvc = do_GetService(NS_MSGCOPYSERVICE_CONTRACTID); if (copySvc) { nsCOMPtr <nsIMsgCopyServiceListener> listener; if (m_doNewMailNotification) { nsMoveCoalescerCopyListener *copyListener = new nsMoveCoalescerCopyListener(this, destFolder); if (copyListener) listener = do_QueryInterface(copyListener); } rv = copySvc->CopyMessages(m_sourceFolder, messages, destFolder, PR_TRUE, listener, m_msgWindow, PR_FALSE /*allowUndo*/); if (NS_SUCCEEDED(rv)) m_outstandingMoves++; } } return rv; }
void nsImapOfflineSync::ProcessAppendMsgOperation(nsIMsgOfflineImapOperation *currentOp, PRInt32 opType) { nsCOMPtr <nsIMsgDBHdr> mailHdr; nsMsgKey msgKey; currentOp->GetMessageKey(&msgKey); nsresult rv = m_currentDB->GetMsgHdrForKey(msgKey, getter_AddRefs(mailHdr)); if (NS_SUCCEEDED(rv) && mailHdr) { nsMsgKey messageOffset; PRUint32 messageSize; mailHdr->GetMessageOffset(&messageOffset); mailHdr->GetOfflineMessageSize(&messageSize); nsCOMPtr<nsIFile> tmpFile; if (NS_FAILED(GetSpecialDirectoryWithFileName(NS_OS_TEMP_DIR, "nscpmsg.txt", getter_AddRefs(tmpFile)))) return; if (NS_FAILED(tmpFile->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 00600))) return; nsCOMPtr <nsIOutputStream> outputStream; rv = MsgNewBufferedFileOutputStream(getter_AddRefs(outputStream), tmpFile, PR_WRONLY | PR_CREATE_FILE, 00600); if (NS_SUCCEEDED(rv) && outputStream) { nsCString moveDestination; currentOp->GetDestinationFolderURI(getter_Copies(moveDestination)); nsCOMPtr<nsIRDFService> rdf(do_GetService(kRDFServiceCID, &rv)); nsCOMPtr<nsIRDFResource> res; if (NS_FAILED(rv)) return ; // ### return error code. rv = rdf->GetResource(moveDestination, getter_AddRefs(res)); if (NS_SUCCEEDED(rv)) { nsCOMPtr<nsIMsgFolder> destFolder(do_QueryInterface(res, &rv)); if (NS_SUCCEEDED(rv) && destFolder) { nsCOMPtr <nsIInputStream> offlineStoreInputStream; rv = destFolder->GetOfflineStoreInputStream(getter_AddRefs(offlineStoreInputStream)); if (NS_SUCCEEDED(rv) && offlineStoreInputStream) { nsCOMPtr<nsISeekableStream> seekStream = do_QueryInterface(offlineStoreInputStream); NS_ASSERTION(seekStream, "non seekable stream - can't read from offline msg"); if (seekStream) { rv = seekStream->Seek(PR_SEEK_SET, messageOffset); if (NS_SUCCEEDED(rv)) { // now, copy the dest folder offline store msg to the temp file PRInt32 inputBufferSize = 10240; char *inputBuffer = nsnull; while (!inputBuffer && (inputBufferSize >= 512)) { inputBuffer = (char *) PR_Malloc(inputBufferSize); if (!inputBuffer) inputBufferSize /= 2; } PRInt32 bytesLeft; PRUint32 bytesRead, bytesWritten; bytesLeft = messageSize; rv = NS_OK; while (bytesLeft > 0 && NS_SUCCEEDED(rv)) { PRInt32 bytesToRead = PR_MIN(inputBufferSize, bytesLeft); rv = offlineStoreInputStream->Read(inputBuffer, bytesToRead, &bytesRead); if (NS_SUCCEEDED(rv) && bytesRead > 0) { rv = outputStream->Write(inputBuffer, bytesRead, &bytesWritten); NS_ASSERTION(bytesWritten == bytesRead, "wrote out correct number of bytes"); } else break; bytesLeft -= bytesRead; } outputStream->Flush(); outputStream->Close(); if (NS_SUCCEEDED(rv)) { m_curTempFile = do_QueryInterface(tmpFile); nsCOMPtr<nsIMsgCopyService> copyService = do_GetService(NS_MSGCOPYSERVICE_CONTRACTID); if (copyService) rv = copyService->CopyFileMessage(tmpFile, destFolder, /* nsIMsgDBHdr* msgToReplace */ nsnull, PR_TRUE /* isDraftOrTemplate */, 0, // new msg flags - are there interesting flags here? EmptyCString(), /* are there keywords we should get? */ this, m_window); } else tmpFile->Remove(PR_FALSE); } currentOp->SetPlayingBack(PR_TRUE); m_currentOpsToClear.AppendObject(currentOp); m_currentDB->DeleteHeader(mailHdr, nsnull, PR_TRUE, PR_TRUE); } } // want to close in failure case too outputStream->Close(); } } } } }