4
0
mirror of https://github.com/QuasarApp/SoundBand.git synced 2025-05-10 14:09:34 +00:00

added source into FileDialog

This commit is contained in:
Andrei Yankovich 2018-02-20 20:08:36 +03:00
parent 7c28f7d0e2
commit 1ba5f1ed2d
4 changed files with 111 additions and 34 deletions

@ -1,6 +1,6 @@
#ifdef Q_OS_ANDROID
#include "androidfiledialog.h"
#ifdef Q_OS_ANDROID
AndroidFileDialog::ResultReceiver::ResultReceiver(AndroidFileDialog *dialog) : _dialog(dialog) {}
AndroidFileDialog::ResultReceiver::~ResultReceiver() {}

@ -1,9 +1,8 @@
#ifndef FILEDIALOG_H
#define FILEDIALOG_H
#include <QObject>
#ifdef Q_OS_ANDROID
#include <QObject>
#include <QAndroidJniObject>
#include <QtAndroid>
#include <QAndroidActivityResultReceiver>
@ -35,6 +34,6 @@ signals:
void existingFileNameReady(QString result);
};
#endif // ANDROIDFILEDIALOG_H
#endif // Q_OS_ANDROID
#endif // ANDROIDFILEDIALOG_H

@ -1,10 +1,76 @@
#include "filedialog.h"
#include <QEventLoop>
#include <QTimer>
FileDialog::FileDialog(QObject *ptr):
QObject(ptr)
{
#ifdef Q_OS_ANDROID
dialog = new AndroidFileDialog(this);
#endif
}
void FileDialog::done(QString s){
_fileUrl = s;
if(!_fileUrl.isEmpty())
emit fileUrlDone();
}
void FileDialog::open(){
#ifdef Q_OS_ANDROID
connect(dialog,SIGNAL(existingFileNameReady(QString)),SLOT(done(QString)));
bool success = dialog->provideExistingFileName();
if (!success) {
qDebug() << "Problem with JNI or sth like that...";
disconnect(dialog, SIGNAL(existingFileNameReady(QString)), this, SLOT(done(QString)));
//or just delete fileDialog instead of disconnect
}
#else
QFileDialog *dialog = new QFileDialog(this, );
_filesUrls = QFileDialog::getOpenFileNames(nullptr, _title, _dir, _filter);
if(!_filesUrls.isEmpty())
emit filesUrlsDone();
#endif
}
QString FileDialog::save(const QString &name){
return QDir::homePath() + "/SoundBandSongs/" +name;
}
QString FileDialog::title() const{
return _title;
}
QString FileDialog::dir() const{
return _dir;
}
QString FileDialog::filter() const{
return _filter;
}
QStringList FileDialog::filesUrls() const{
return _filesUrls;
}
QString FileDialog::fileUrl() const{
return _fileUrl;
}
void FileDialog::setTitle(const QString &title){
_title = title;
}
void FileDialog::setDir(const QString &dir){
_dir = dir;
}
void FileDialog::setFilter(const QString &filter){
_filter = filter;
}
FileDialog::~FileDialog(){
}

@ -1,27 +1,35 @@
#ifndef FILEDIALOG_H
#define FILEDIALOG_H
#include <QFileDialog>
#include "androidfiledialog.h"
#include <QFileDialog>
/**
* @brief The FileDialog class general crossplatform dialog window
*/
class FileDialog: public QObject
{
Q_OBJECT
Q_PROPERTY(QStringList filesUrl READ filesUrl NOTIFY loadComlete)
Q_PROPERTY(QString saveUrl READ saveUrl NOTIFY saveComplete)
Q_PROPERTY(QString title READ title WRITE setTitle)
Q_PROPERTY(QString dir READ dir WRITE setDir)
Q_PROPERTY(QStringList filter READ filter WRITE setfilter)
Q_PROPERTY(QString filter READ filter WRITE setFilter)
Q_PROPERTY(QStringList filesUrls READ filesUrls NOTIFY filesUrlsDone)
Q_PROPERTY(QString fileUrl READ fileUrl NOTIFY fileUrlDone)
private:
#ifdef Q_OS_ANDROID
AndroidFileDialog *dialog;
#else
QFileDialog *dialog;
#endif
QString _fileUrl;
QString _title;
QString _dir;
QString _filter;
QStringList _filesUrls;
private slots:
void done(QString);
public:
FileDialog(QObject *ptr = nullptr);
@ -35,39 +43,40 @@ public slots:
void open();
/**
* @brief save get save file url
* @brief save - get default save file url
* return file url
*/
void save();
/**
* @brief filesUrl
* @return
*/
QStringList filesUrl();
/**
* @brief saveUrl
* @return
*/
QString saveUrl();
QString save(const QString &name);
/**
* @brief title
* @return
*/
QString title();
QString title() const;
/**
* @brief dir
* @return
*/
QString dir();
QString dir() const;
/**
* @brief filter
* @return
*/
QStringList filter();
QString filter() const;
/**
* @brief filesUrls
* @return list of files urls
*/
QStringList filesUrls()const;
/**
* @brief fileUrl
* @return file url
*/
QString fileUrl()const;
/**
* @brief setTitle
@ -82,19 +91,22 @@ public slots:
/**
* @brief setfilter
*/
void setfilter(const QStringList&);
void setFilter(const QString &);
signals:
/**
* @brief loadComlete emited then load is complete
* @brief filesUrlsDone
* Emited when files selected
*/
void loadComlete();
void filesUrlsDone();
/**
* @brief saveComplete emited then load is complete
* @brief filesUrlDone
* Emited when files selected
*/
void saveComplete();
void fileUrlDone();
};