Skip to content
This repository was archived by the owner on Mar 4, 2023. It is now read-only.

Commit f40f6f5

Browse files
committed
added file dialog wrapper
1 parent 9464e18 commit f40f6f5

File tree

8 files changed

+118
-19
lines changed

8 files changed

+118
-19
lines changed

AndroidFileDialog.qml

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,68 @@
11
import QtQuick 2.8
2+
import QtQuick.Window 2.2
3+
import Qt.labs.platform 1.0
24
import de.skycoder42.androidutils 1.0
35

4-
QtObject {
6+
FileChooser {
57
id: fileDialog
68

9+
property bool linkFileMode: true
10+
11+
default property var data
12+
property int flags: Qt.Dialog
13+
property int modality: Qt.NonModal
14+
property Window parentWindow: null
15+
property int result: Dialog.Rejected
16+
property bool visible: false
17+
property string acceptLabel
18+
property string rejectLabel
19+
property alias currentFile: fileDialog.contentUrl
20+
property var currentFiles: [currentFile]
721
property string defaultSuffix
22+
property alias file: fileDialog.contentUrl
23+
property int fileMode: FileDialog.OpenFile
24+
property var files: [file]
25+
property alias folder: fileDialog.contentUrl
26+
property var nameFilters
27+
property int options
28+
29+
onAccepted: result = Dialog.Accepted
30+
onRejected: result = Dialog.Rejected
31+
32+
function accept() {}
33+
function reject() {}
34+
function close() {}
35+
function done(result) {
36+
fileDialog.result = result;
37+
}
38+
39+
onTypeChanged: {
40+
if(!linkFileMode)
41+
return;
42+
43+
switch(type) {
44+
case FileChooser.GetContent:
45+
case FileChooser.OpenDocument:
46+
fileMode = FileDialog.OpenFile;
47+
break;
48+
case FileChooser.CreateDocument:
49+
fileMode = FileDialog.SaveFile
50+
break;
51+
}
52+
}
53+
54+
onFileModeChanged: {
55+
if(!linkFileMode)
56+
return;
57+
58+
switch(fileMode) {
59+
case FileDialog.OpenFile:
60+
case FileDialog.OpenFiles:
61+
fileMode = FileChooser.OpenDocument;
62+
break;
63+
case FileDialog.SaveFile:
64+
fileMode = FileChooser.CreateDocument;
65+
break;
66+
}
67+
}
868
}

Demo/Demo.pro

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
QT += qml quick
1+
QT += qml quick widgets
22

33
CONFIG += c++11
44

@@ -9,7 +9,7 @@ QPM_ROOT = $$_PRO_FILE_PWD_/../vendor
99
include(../de_skycoder42_androidutils.pri)
1010

1111
SOURCES += main.cpp \
12-
opener.cpp
12+
opener.cpp
1313

1414
RESOURCES += qml.qrc
1515

@@ -43,4 +43,4 @@ DISTFILES += \
4343
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
4444

4545
HEADERS += \
46-
opener.h
46+
opener.h

Demo/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <QFile>
2-
#include <QGuiApplication>
2+
#include <QApplication>
33
#include <QQmlApplicationEngine>
44
#include <QDebug>
55
#include "opener.h"
@@ -10,7 +10,7 @@
1010
int main(int argc, char *argv[])
1111
{
1212
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
13-
QGuiApplication app(argc, argv);
13+
QApplication app(argc, argv);
1414

1515
qmlRegisterType<Opener>("de.skycoder42.androidutils", 1, 0, "Opener");
1616

Demo/main.qml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import QtQuick 2.7
22
import QtQuick.Controls 2.0
33
import QtQuick.Layouts 1.0
44
import de.skycoder42.androidutils 1.0
5+
import Qt.labs.platform 1.0 as Labs//fix because of file tree
56

67
ApplicationWindow {
78
visible: true
@@ -67,7 +68,7 @@ ApplicationWindow {
6768
}
6869

6970
Pane {
70-
FileChooser {
71+
FileDialog {
7172
id: chooser
7273

7374
type: modeBox.model.get(modeBox.currentIndex).value

FileDialog.qml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,43 @@
11
import Qt.labs.platform 1.0
2+
import de.skycoder42.androidutils 1.0
23

34
FileDialog {
45
id: fileDialog
6+
7+
property bool linkFileMode: true
8+
9+
property alias contentUrl: fileDialog.file
10+
property int type: FileChooser.OpenDocument
11+
property string mimeType: "*/*"
12+
property int chooserFlags: FileChooser.OpenableFlag
13+
14+
onTypeChanged: {
15+
if(!linkFileMode)
16+
return;
17+
18+
switch(type) {
19+
case FileChooser.GetContent:
20+
case FileChooser.OpenDocument:
21+
fileMode = FileDialog.OpenFile;
22+
break;
23+
case FileChooser.CreateDocument:
24+
fileMode = FileDialog.SaveFile
25+
break;
26+
}
27+
}
28+
29+
onFileModeChanged: {
30+
if(!linkFileMode)
31+
return;
32+
33+
switch(fileMode) {
34+
case FileDialog.OpenFile:
35+
case FileDialog.OpenFiles:
36+
fileMode = FileChooser.OpenDocument;
37+
break;
38+
case FileDialog.SaveFile:
39+
fileMode = FileChooser.CreateDocument;
40+
break;
41+
}
42+
}
543
}

de_skycoder42_androidutils.pri

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ android: QT *= androidextras
22

33
HEADERS += \
44
$$PWD/androidutils.h \
5-
$$PWD/filechooser.h
5+
$$PWD/filechooser.h
66

77
SOURCES += \
88
$$PWD/androidutils.cpp \
9-
$$PWD/filechooser.cpp
9+
$$PWD/filechooser.cpp
1010
RESOURCES += \
1111
$$PWD/de_skycoder42_androidutils.qrc
1212

@@ -16,7 +16,7 @@ DISTFILES += \
1616
$$PWD/android/androidutils.gradle \
1717
$$PWD/android/src/de/skycoder42/androidutils/AlarmReceiver.java \
1818
$$PWD/android/src/de/skycoder42/androidutils/AndroidUtils.java \
19-
$$PWD/android/src/de/skycoder42/androidutils/FileChooser.java
19+
$$PWD/android/src/de/skycoder42/androidutils/FileChooser.java
2020

2121
android {
2222
HEADERS += $$PWD/contentdevice.h

filechooser.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ QString FileChooser::mimeType() const
3838
return _mimeType;
3939
}
4040

41-
FileChooser::ChooserFlags FileChooser::flags() const
41+
FileChooser::ChooserFlags FileChooser::chooserFlags() const
4242
{
4343
return _flags;
4444
}
@@ -70,13 +70,13 @@ void FileChooser::setMimeType(QString mimeType)
7070
emit mimeTypeChanged(mimeType);
7171
}
7272

73-
void FileChooser::setFlags(ChooserFlags flags)
73+
void FileChooser::setChooserFlags(ChooserFlags chooserFlags)
7474
{
75-
if (_flags == flags)
75+
if (_flags == chooserFlags)
7676
return;
7777

78-
_flags = flags;
79-
emit flagsChanged(flags);
78+
_flags = chooserFlags;
79+
emit chooserFlagsChanged(chooserFlags);
8080
}
8181

8282
void FileChooser::onDispatched(const QString &message, const QVariantMap &data)

filechooser.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class FileChooser : public QObject
1313
Q_PROPERTY(QUrl contentUrl READ contentUrl WRITE setContentUrl NOTIFY contentUrlChanged)
1414
Q_PROPERTY(ChooserType type READ type WRITE setType NOTIFY typeChanged)
1515
Q_PROPERTY(QString mimeType READ mimeType WRITE setMimeType NOTIFY mimeTypeChanged)
16-
Q_PROPERTY(ChooserFlags flags READ flags WRITE setFlags NOTIFY flagsChanged)
16+
Q_PROPERTY(ChooserFlags chooserFlags READ chooserFlags WRITE setChooserFlags NOTIFY chooserFlagsChanged)
1717

1818
public:
1919
enum ChooserType {
@@ -38,7 +38,7 @@ class FileChooser : public QObject
3838
QUrl contentUrl() const;
3939
ChooserType type() const;
4040
QString mimeType() const;
41-
ChooserFlags flags() const;
41+
ChooserFlags chooserFlags() const;
4242

4343
public slots:
4444
void open();
@@ -47,7 +47,7 @@ public slots:
4747
void setContentUrl(QUrl contentUrl);
4848
void setType(ChooserType type);
4949
void setMimeType(QString mimeType);
50-
void setFlags(ChooserFlags flags);
50+
void setChooserFlags(ChooserFlags chooserFlags);
5151

5252
signals:
5353
void accepted();
@@ -57,7 +57,7 @@ public slots:
5757
void contentUrlChanged(QUrl contentUrl);
5858
void typeChanged(ChooserType type);
5959
void mimeTypeChanged(QString mimeType);
60-
void flagsChanged(ChooserFlags flags);
60+
void chooserFlagsChanged(ChooserFlags chooserFlags);
6161

6262
private slots:
6363
void onDispatched(const QString &message, const QVariantMap &data);

0 commit comments

Comments
 (0)