Implement proper saving files (still buggy somehow)
This commit is contained in:
		
					parent
					
						
							
								da1dd64317
							
						
					
				
			
			
				commit
				
					
						64464c15fe
					
				
			
		
					 2 changed files with 45 additions and 0 deletions
				
			
		| 
						 | 
					@ -29,6 +29,7 @@
 | 
				
			||||||
#include <QDebug>
 | 
					#include <QDebug>
 | 
				
			||||||
#include <QDockWidget>
 | 
					#include <QDockWidget>
 | 
				
			||||||
#include <QQuickItem>
 | 
					#include <QQuickItem>
 | 
				
			||||||
 | 
					#include <QFileDialog>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <kactioncollection.h>
 | 
					#include <kactioncollection.h>
 | 
				
			||||||
#include <KStandardAction>
 | 
					#include <KStandardAction>
 | 
				
			||||||
| 
						 | 
					@ -36,6 +37,8 @@
 | 
				
			||||||
#include <KDeclarative/KDeclarative>
 | 
					#include <KDeclarative/KDeclarative>
 | 
				
			||||||
#include <KConfigDialog>
 | 
					#include <KConfigDialog>
 | 
				
			||||||
#include <KToggleAction>
 | 
					#include <KToggleAction>
 | 
				
			||||||
 | 
					#include <KIO/FileCopyJob>
 | 
				
			||||||
 | 
					#include <KIO/MimetypeJob>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "libdanbooru/danbooruservice.h"
 | 
					#include "libdanbooru/danbooruservice.h"
 | 
				
			||||||
#include "libdanbooru/danboorupost.h"
 | 
					#include "libdanbooru/danboorupost.h"
 | 
				
			||||||
| 
						 | 
					@ -170,6 +173,9 @@ DanbooruMainWindow::DanbooruMainWindow(QWidget *parent)
 | 
				
			||||||
        searchDockWidget->hide();
 | 
					        searchDockWidget->hide();
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    connect(m_view->rootObject(), SIGNAL(downloadRequested(const QUrl&)), this,
 | 
				
			||||||
 | 
					            SLOT(slotHandleDownload(const QUrl&)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DanbooruMainWindow::~DanbooruMainWindow()
 | 
					DanbooruMainWindow::~DanbooruMainWindow()
 | 
				
			||||||
| 
						 | 
					@ -365,4 +371,42 @@ void DanbooruMainWindow::optionsPreferences()
 | 
				
			||||||
    dialog->show();
 | 
					    dialog->show();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void DanbooruMainWindow::slotHandleDownload(const QUrl &url) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    QFileDialog saveDialog(this);
 | 
				
			||||||
 | 
					    saveDialog.setFileMode(QFileDialog::AnyFile);
 | 
				
			||||||
 | 
					    saveDialog.setWindowTitle(i18n("Save file"));
 | 
				
			||||||
 | 
					    saveDialog.setAcceptMode(QFileDialog::AcceptSave);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    KIO::MimetypeJob* mimeJob = KIO::mimetype(url, KIO::HideProgressInfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (mimeJob->exec()) {
 | 
				
			||||||
 | 
					        saveDialog.setMimeTypeFilters(QStringList(mimeJob->mimetype()));
 | 
				
			||||||
 | 
					    }  else {
 | 
				
			||||||
 | 
					        saveDialog.setNameFilter(i18n("Images (*.png *.gif *.jpg);;All files (*.*)"));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//     savedialog.setMimeTypeFilters();
 | 
				
			||||||
 | 
					    saveDialog.setConfirmOverwrite(true);
 | 
				
			||||||
 | 
					    saveDialog.setDirectory(QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
 | 
				
			||||||
 | 
					    saveDialog.selectFile(url.fileName());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (saveDialog.exec()) {
 | 
				
			||||||
 | 
					        QString localFileName = saveDialog.selectedFiles().at(0);
 | 
				
			||||||
 | 
					        QUrl localFile = QUrl::fromLocalFile(localFileName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        qDebug() << "URL" << localFile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        KIO::FileCopyJob *job = KIO::file_copy(url, localFile, -1, KIO::DefaultFlags);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        connect(job, &KIO::Job::result, [this](KJob  *job) {
 | 
				
			||||||
 | 
					            if (job->error()) {
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} // namespace Danbooru
 | 
					} // namespace Danbooru
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -89,6 +89,7 @@ private Q_SLOTS:
 | 
				
			||||||
    void downloadPosts();
 | 
					    void downloadPosts();
 | 
				
			||||||
    void optionsPreferences();
 | 
					    void optionsPreferences();
 | 
				
			||||||
    void loadSettings();
 | 
					    void loadSettings();
 | 
				
			||||||
 | 
					    void slotHandleDownload(const QUrl &url);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue