Prevent invalid characters to be used in save file names
This commit is contained in:
		
					parent
					
						
							
								ea84089687
							
						
					
				
			
			
				commit
				
					
						341c51365f
					
				
			
		
					 1 changed files with 20 additions and 17 deletions
				
			
		| 
						 | 
					@ -482,31 +482,34 @@ void DanbooruMainWindow::slotHandleDownload(const QUrl &url, const QVariant tags
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    QStringList tagList = tags.toStringList();
 | 
					    QStringList tagList = tags.toStringList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    QFileDialog saveDialog(this);
 | 
					 | 
				
			||||||
    saveDialog.setFileMode(QFileDialog::AnyFile);
 | 
					 | 
				
			||||||
    saveDialog.setWindowTitle(i18n("Save file"));
 | 
					 | 
				
			||||||
    saveDialog.setAcceptMode(QFileDialog::AcceptSave);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    KIO::MimetypeJob* mimeJob = KIO::mimetype(url, KIO::HideProgressInfo);
 | 
					    KIO::MimetypeJob* mimeJob = KIO::mimetype(url, KIO::HideProgressInfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    QString filters;
 | 
				
			||||||
 | 
					    QString remoteFile = url.fileName();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (mimeJob->exec()) {
 | 
					    if (mimeJob->exec()) {
 | 
				
			||||||
        saveDialog.setMimeTypeFilters(QStringList(mimeJob->mimetype()));
 | 
					        filters = mimeJob->mimetype();
 | 
				
			||||||
    }  else {
 | 
					    }  else {
 | 
				
			||||||
        saveDialog.setNameFilter(i18n("Images (*.png *.gif *.jpg);;All files (*.*)"));
 | 
					        filters = "Images (*.png *.gif *.jpg);;All files (*.*)";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Prevent invalid characters (":" can be a tag in Danbooru)
 | 
				
			||||||
 | 
					    if (remoteFile.contains(":")) {
 | 
				
			||||||
 | 
					        remoteFile.replace(":", "_");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   QUrl localFile = QFileDialog::getSaveFileUrl(
 | 
				
			||||||
 | 
					        this,
 | 
				
			||||||
 | 
					        i18n("Save file"),
 | 
				
			||||||
 | 
					        QDir::homePath() + QLatin1Char('/') + remoteFile,
 | 
				
			||||||
 | 
					        filters
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO: Remember last user directory - settings?
 | 
					    // TODO: Remember last user directory - settings?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    saveDialog.setConfirmOverwrite(true);
 | 
					    if (!localFile.isEmpty()) {
 | 
				
			||||||
    saveDialog.setDirectory(QDir::homePath());
 | 
					 | 
				
			||||||
    saveDialog.selectFile(url.fileName());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (saveDialog.exec()) {
 | 
					 | 
				
			||||||
        QUrl localFile = saveDialog.selectedUrls().at(0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (localFile.isEmpty()) {
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        KIO::FileCopyJob *job = KIO::file_copy(url, localFile, -1, KIO::DefaultFlags);
 | 
					        KIO::FileCopyJob *job = KIO::file_copy(url, localFile, -1, KIO::DefaultFlags);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue