void SharedFilesDialog::collView() { std::list<DirDetails> files_info ; model->getFileInfoFromIndexList(getSelected(),files_info); if(files_info.size() != 1) return ; /* make path for downloaded files */ std::list<DirDetails>::iterator it = files_info.begin(); DirDetails details = (*it); FileInfo info; if (!rsFiles->FileDetails(details.hash, RS_FILE_HINTS_EXTRA | RS_FILE_HINTS_LOCAL | RS_FILE_HINTS_BROWSABLE | RS_FILE_HINTS_NETWORK_WIDE | RS_FILE_HINTS_SPEC_ONLY, info)) return; std::string path; path = info.path; /* open file with a suitable application */ QFileInfo qinfo; qinfo.setFile(QString::fromUtf8(path.c_str())); if (qinfo.exists()) { if (qinfo.absoluteFilePath().endsWith(RsCollectionFile::ExtensionString)) { RsCollectionFile collection; collection.openColl(qinfo.absoluteFilePath(), true); }//if (qinfo.absoluteFilePath().endsWith(RsCollectionFile::ExtensionString)) }//if (qinfo.exists()) }
/** * @brief RsCollectionDialog::changeFileName: Change the name of saved file */ void RsCollectionDialog::changeFileName() { QString fileName; if(!misc::getSaveFileName(this, RshareSettings::LASTDIR_EXTRAFILE , QApplication::translate("RsCollectionFile", "Create collection file") , QApplication::translate("RsCollectionFile", "Collection files") + " (*." + RsCollectionFile::ExtensionString + ")" , fileName,0, QFileDialog::DontConfirmOverwrite)) return; if (!fileName.endsWith("." + RsCollectionFile::ExtensionString)) fileName += "." + RsCollectionFile::ExtensionString ; std::cerr << "Got file name: " << fileName.toStdString() << std::endl; QFile file(fileName) ; if(file.exists()) { RsCollectionFile collFile; if (!collFile.checkFile(fileName,true)) return; QMessageBox mb; mb.setText(tr("Save Collection File.")); mb.setInformativeText(tr("File already exists.")+"\n"+tr("What do you want to do?")); QAbstractButton *btnOwerWrite = mb.addButton(tr("Overwrite"), QMessageBox::YesRole); QAbstractButton *btnMerge = mb.addButton(tr("Merge"), QMessageBox::NoRole); QAbstractButton *btnCancel = mb.addButton(tr("Cancel"), QMessageBox::ResetRole); mb.setIcon(QMessageBox::Question); mb.exec(); if (mb.clickedButton()==btnOwerWrite) { //Nothing to do } else if (mb.clickedButton()==btnMerge) { //Open old file to merge it with RsCollection QDomDocument qddOldFile("RsCollection"); if (qddOldFile.setContent(&file)) { QDomElement docOldElem = qddOldFile.elementsByTagName("RsCollection").at(0).toElement(); collFile.recursCollectColFileInfos(docOldElem,_newColFileInfos,QString(),false); }//(qddOldFile.setContent(&file)) } else if (mb.clickedButton()==btnCancel) { return; } else { return; } } else {//if(file.exists()) //create a new empty file to check if name if good. if (!file.open(QFile::WriteOnly)) return; file.remove(); }//if(file.exists()) _fileName = fileName; updateList(); }
bool RsUrlHandler::openUrl(const QUrl& url) { if(url.scheme() == QString("file") && url.toLocalFile().endsWith("."+RsCollectionFile::ExtensionString)) { RsCollectionFile collection ; if(collection.load(url.toLocalFile())) { collection.downloadFiles() ; return true; } } return QDesktopServices::openUrl(url) ; }
QString RetroShareLink::toHtmlSize() const { QString size = QString("(%1)").arg(misc::friendlyUnit(_size)); if (type() == TYPE_FILE && RsCollectionFile::isCollectionFile(name())) { FileInfo finfo; if (rsFiles->FileDetails(hash().toStdString(), RS_FILE_HINTS_EXTRA | RS_FILE_HINTS_LOCAL, finfo)) { RsCollectionFile collection; if (collection.load(QString::fromUtf8(finfo.path.c_str()), false)) { size += QString(" [%1]").arg(misc::friendlyUnit(collection.size())); } } } QString link = QString("<a href=\"%1\">%2</a> <font color=\"blue\">%3</font>").arg(toString()).arg(name()).arg(size); return link; }