Skip to content

Commit 2fb2e0e

Browse files
committed
Add converter classes
1 parent f353aec commit 2fb2e0e

File tree

8 files changed

+350
-0
lines changed

8 files changed

+350
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#include "ClipboardConverter.h"
2+
#include "ClipboardConverter_p.h"
3+
4+
#include <QMimeData>
5+
6+
namespace ImportExportManager {
7+
8+
ClipboardConverter::ClipboardConverter(QObject *parent) : QObject(parent), d_ptr(new ClipboardConverterPrivate) {
9+
Q_D(ClipboardConverter);
10+
d->q_ptr = this;
11+
}
12+
13+
ClipboardConverter::~ClipboardConverter() = default;
14+
15+
QString ClipboardConverter::name() const {
16+
Q_D(const ClipboardConverter);
17+
return d->name;
18+
}
19+
20+
QString ClipboardConverter::description() const {
21+
Q_D(const ClipboardConverter);
22+
return d->description;
23+
}
24+
25+
QStringList ClipboardConverter::mimeTypes() const {
26+
Q_D(const ClipboardConverter);
27+
return d->mimeTypes;
28+
}
29+
30+
ClipboardConverter::Modes ClipboardConverter::modes() const {
31+
Q_D(const ClipboardConverter);
32+
return d->modes;
33+
}
34+
35+
bool ClipboardConverter::paste(const QMimeData *mimeData, QDspx::Model &model) {
36+
Q_UNUSED(mimeData)
37+
Q_UNUSED(model)
38+
return false;
39+
}
40+
41+
bool ClipboardConverter::copy(QMimeData *mimeData, const QDspx::Model &model) {
42+
Q_UNUSED(mimeData)
43+
Q_UNUSED(model)
44+
return false;
45+
}
46+
47+
void ClipboardConverter::setName(const QString &name) {
48+
Q_D(ClipboardConverter);
49+
d->name = name;
50+
}
51+
52+
void ClipboardConverter::setDescription(const QString &description) {
53+
Q_D(ClipboardConverter);
54+
d->description = description;
55+
}
56+
57+
void ClipboardConverter::setMimeTypes(const QStringList &mimeTypes) {
58+
Q_D(ClipboardConverter);
59+
d->mimeTypes = mimeTypes;
60+
}
61+
62+
void ClipboardConverter::setModes(Modes modes) {
63+
Q_D(ClipboardConverter);
64+
d->modes = modes;
65+
}
66+
67+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#ifndef DIFFSCOPE_IMPORT_EXPORT_MANAGER_CLIPBOARDCONVERTER_H
2+
#define DIFFSCOPE_IMPORT_EXPORT_MANAGER_CLIPBOARDCONVERTER_H
3+
4+
#include <QObject>
5+
6+
class QMimeData;
7+
8+
namespace QDspx {
9+
struct Model;
10+
}
11+
12+
namespace ImportExportManager {
13+
14+
class ClipboardConverterPrivate;
15+
16+
class ClipboardConverter : public QObject {
17+
Q_OBJECT
18+
Q_DECLARE_PRIVATE(ClipboardConverter)
19+
public:
20+
explicit ClipboardConverter(QObject *parent = nullptr);
21+
~ClipboardConverter() override;
22+
23+
QString name() const;
24+
QString description() const;
25+
QStringList mimeTypes() const;
26+
27+
enum Mode {
28+
Paste = 0x1,
29+
Copy = 0x2,
30+
};
31+
Q_ENUM(Mode)
32+
Q_DECLARE_FLAGS(Modes, Mode)
33+
34+
Modes modes() const;
35+
36+
virtual bool paste(const QMimeData *mimeData, QDspx::Model &model);
37+
virtual bool copy(QMimeData *mimeData, const QDspx::Model &model);
38+
39+
protected:
40+
void setName(const QString &name);
41+
void setDescription(const QString &description);
42+
void setMimeTypes(const QStringList &mimeTypes);
43+
void setModes(Modes modes);
44+
45+
private:
46+
QScopedPointer<ClipboardConverterPrivate> d_ptr;
47+
};
48+
49+
Q_DECLARE_OPERATORS_FOR_FLAGS(ClipboardConverter::Modes)
50+
51+
}
52+
53+
#endif //DIFFSCOPE_IMPORT_EXPORT_MANAGER_CLIPBOARDCONVERTER_H
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#ifndef DIFFSCOPE_IMPORT_EXPORT_MANAGER_CLIPBOARDCONVERTER_P_H
2+
#define DIFFSCOPE_IMPORT_EXPORT_MANAGER_CLIPBOARDCONVERTER_P_H
3+
4+
#include <importexportmanager/ClipboardConverter.h>
5+
6+
namespace ImportExportManager {
7+
8+
class ClipboardConverterPrivate {
9+
Q_DECLARE_PUBLIC(ClipboardConverter)
10+
public:
11+
ClipboardConverter *q_ptr;
12+
13+
QString name;
14+
QString description;
15+
QStringList mimeTypes;
16+
ClipboardConverter::Modes modes{};
17+
};
18+
19+
}
20+
21+
#endif //DIFFSCOPE_IMPORT_EXPORT_MANAGER_CLIPBOARDCONVERTER_P_H
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#include "ConverterCollection.h"
2+
3+
#include <importexportmanager/FileConverter.h>
4+
#include <importexportmanager/ClipboardConverter.h>
5+
6+
namespace ImportExportManager {
7+
8+
ConverterCollection *m_instance = nullptr;
9+
10+
ConverterCollection::ConverterCollection(QObject *parent) : Core::ObjectPool(parent) {
11+
Q_ASSERT(!m_instance);
12+
m_instance = this;
13+
}
14+
15+
ConverterCollection::~ConverterCollection() {
16+
m_instance = nullptr;
17+
}
18+
19+
ConverterCollection * ConverterCollection::instance() {
20+
return m_instance;
21+
}
22+
23+
QList<FileConverter *> ConverterCollection::fileConverters() const {
24+
return getObjects<FileConverter>();
25+
}
26+
27+
QList<ClipboardConverter *> ConverterCollection::clipboardConverters() const {
28+
return getObjects<ClipboardConverter>();
29+
}
30+
31+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#ifndef CONVERTERCOLLECTION_H
2+
#define CONVERTERCOLLECTION_H
3+
4+
#include <qqmlintegration.h>
5+
6+
#include <CoreApi/objectpool.h>
7+
8+
class QQmlEngine;
9+
class QJSEngine;
10+
11+
namespace ImportExportManager {
12+
13+
class FileConverter;
14+
class ClipboardConverter;
15+
16+
class ConverterCollection : public Core::ObjectPool {
17+
Q_OBJECT
18+
QML_ELEMENT
19+
QML_SINGLETON
20+
Q_PROPERTY(QList<FileConverter *> fileConverters READ fileConverters CONSTANT)
21+
Q_PROPERTY(QList<ClipboardConverter *> clipboardConverters READ clipboardConverters CONSTANT)
22+
public:
23+
~ConverterCollection() override;
24+
25+
static ConverterCollection *instance();
26+
27+
static inline ConverterCollection *create(QQmlEngine *, QJSEngine *engine) {
28+
return instance();
29+
}
30+
31+
QList<FileConverter *> fileConverters() const;
32+
QList<ClipboardConverter *> clipboardConverters() const;
33+
34+
private:
35+
explicit ConverterCollection(QObject *parent);
36+
37+
};
38+
39+
}
40+
41+
#endif //CONVERTERCOLLECTION_H
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#include "FileConverter.h"
2+
#include "FileConverter_p.h"
3+
4+
namespace ImportExportManager {
5+
6+
FileConverter::FileConverter(QObject *parent) : QObject(parent), d_ptr(new FileConverterPrivate) {
7+
Q_D(FileConverter);
8+
d->q_ptr = this;
9+
}
10+
11+
FileConverter::~FileConverter() = default;
12+
13+
QString FileConverter::name() const {
14+
Q_D(const FileConverter);
15+
return d->name;
16+
}
17+
18+
QString FileConverter::description() const {
19+
Q_D(const FileConverter);
20+
return d->description;
21+
}
22+
23+
QStringList FileConverter::filters() const {
24+
Q_D(const FileConverter);
25+
return d->filters;
26+
}
27+
28+
FileConverter::Modes FileConverter::modes() const {
29+
Q_D(const FileConverter);
30+
return d->modes;
31+
}
32+
33+
bool FileConverter::execImport(const QString &filename, QDspx::Model &model) {
34+
Q_UNUSED(filename)
35+
Q_UNUSED(model)
36+
return false;
37+
}
38+
39+
bool FileConverter::execExport(const QString &filename, const QDspx::Model &model) {
40+
Q_UNUSED(filename)
41+
Q_UNUSED(model)
42+
return false;
43+
}
44+
45+
void FileConverter::setName(const QString &name) {
46+
Q_D(FileConverter);
47+
d->name = name;
48+
}
49+
50+
void FileConverter::setDescription(const QString &description) {
51+
Q_D(FileConverter);
52+
d->description = description;
53+
}
54+
55+
void FileConverter::setFilters(const QStringList &filters) {
56+
Q_D(FileConverter);
57+
d->filters = filters;
58+
}
59+
60+
void FileConverter::setModes(Modes modes) {
61+
Q_D(FileConverter);
62+
d->modes = modes;
63+
}
64+
65+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#ifndef DIFFSCOPE_IMPORT_EXPORT_MANAGER_FILECONVERTER_H
2+
#define DIFFSCOPE_IMPORT_EXPORT_MANAGER_FILECONVERTER_H
3+
4+
#include <QObject>
5+
6+
namespace QDspx {
7+
struct Model;
8+
}
9+
10+
namespace ImportExportManager {
11+
12+
class FileConverterPrivate;
13+
14+
class FileConverter : public QObject {
15+
Q_OBJECT
16+
Q_DECLARE_PRIVATE(FileConverter)
17+
public:
18+
explicit FileConverter(QObject *parent = nullptr);
19+
~FileConverter() override;
20+
21+
QString name() const;
22+
QString description() const;
23+
QStringList filters() const;
24+
25+
enum Mode {
26+
Import = 0x1,
27+
Export = 0x2,
28+
};
29+
Q_ENUM(Mode)
30+
Q_DECLARE_FLAGS(Modes, Mode)
31+
32+
Modes modes() const;
33+
34+
virtual bool execImport(const QString &filename, QDspx::Model &model);
35+
virtual bool execExport(const QString &filename, const QDspx::Model &model);
36+
37+
protected:
38+
void setName(const QString &name);
39+
void setDescription(const QString &description);
40+
void setFilters(const QStringList &filters);
41+
void setModes(Modes modes);
42+
43+
private:
44+
QScopedPointer<FileConverterPrivate> d_ptr;
45+
};
46+
47+
Q_DECLARE_OPERATORS_FOR_FLAGS(FileConverter::Modes)
48+
49+
}
50+
51+
#endif //DIFFSCOPE_IMPORT_EXPORT_MANAGER_FILECONVERTER_H
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#ifndef DIFFSCOPE_IMPORT_EXPORT_MANAGER_FILECONVERTER_P_H
2+
#define DIFFSCOPE_IMPORT_EXPORT_MANAGER_FILECONVERTER_P_H
3+
4+
#include <importexportmanager/FileConverter.h>
5+
6+
namespace ImportExportManager {
7+
8+
class FileConverterPrivate {
9+
Q_DECLARE_PUBLIC(FileConverter)
10+
public:
11+
FileConverter *q_ptr;
12+
13+
QString name;
14+
QString description;
15+
QStringList filters;
16+
FileConverter::Modes modes{};
17+
};
18+
19+
}
20+
21+
#endif //DIFFSCOPE_IMPORT_EXPORT_MANAGER_FILECONVERTER_P_H

0 commit comments

Comments
 (0)