blob: ab047711125eda9e9397c36208ecb436b5d830b7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
// Copyright (C) 2019 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "qmlpreviewplugin.h"
#include "qmlpreviewclient.h"
#include "qmldebugtranslationclient.h"
#include "qmlpreviewfileontargetfinder.h"
#include <qmldebug/qmldebugconnectionmanager.h>
#include <solutions/tasking/tasktree.h>
#include <utils/fileinprojectfinder.h>
#include <utils/filesystemwatcher.h>
namespace ProjectExplorer { class BuildConfiguration; }
namespace QmlPreview {
class QmlPreviewConnectionManager : public QmlDebug::QmlDebugConnectionManager
{
Q_OBJECT
public:
virtual ~QmlPreviewConnectionManager();
explicit QmlPreviewConnectionManager(QObject *parent = nullptr);
void setBuildConfiguration(ProjectExplorer::BuildConfiguration *bc);
void setFileLoader(QmlPreviewFileLoader fileLoader);
void setFileClassifier(QmlPreviewFileClassifier fileClassifier);
void setFpsHandler(QmlPreviewFpsHandler fpsHandler);
void setQmlDebugTranslationClientCreator(QmlDebugTranslationClientFactoryFunction creator);
signals:
void loadFile(const QString &filename, const QString &changedFile, const QByteArray &contents);
void zoom(float zoomFactor);
void language(const QString &locale);
void rerun();
void restart();
protected:
void createClients() override;
void destroyClients() override;
private:
void createPreviewClient();
void createDebugTranslationClient();
void clearClient(QObject *client);
QUrl findValidI18nDirectoryAsUrl(const QString &locale);
Utils::FileInProjectFinder m_projectFileFinder;
QmlPreviewFileOnTargetFinder m_targetFileFinder;
QPointer<QmlPreviewClient> m_qmlPreviewClient;
std::unique_ptr<QmlDebugTranslationClient> m_qmlDebugTranslationClient;
Utils::FileSystemWatcher m_fileSystemWatcher;
QUrl m_lastLoadedUrl;
QString m_lastUsedLanguage;
QmlPreviewFileLoader m_fileLoader = nullptr;
QmlPreviewFileClassifier m_fileClassifier = nullptr;
QmlPreviewFpsHandler m_fpsHandler = nullptr;
QmlDebugTranslationClientFactoryFunction m_createDebugTranslationClientMethod;
};
class QmlPreviewConnectionManagerTaskAdapter : public Tasking::TaskAdapter<QmlPreviewConnectionManager>
{
public:
QmlPreviewConnectionManagerTaskAdapter()
{
connect(task(), &QmlPreviewConnectionManager::connectionClosed, this, [this] {
emit done(Tasking::DoneResult::Success);
});
connect(task(), &QmlPreviewConnectionManager::connectionFailed, this, [this] {
emit done(Tasking::DoneResult::Error);
});
}
~QmlPreviewConnectionManagerTaskAdapter()
{
task()->disconnectFromServer();
}
private:
void start() final { task()->connectToServer(); }
};
using QmlPreviewConnectionManagerTask = Tasking::CustomTask<QmlPreviewConnectionManagerTaskAdapter>;
} // namespace QmlPreview
|