digiKam
Loading...
Searching...
No Matches
dbinaryiface.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2009-12-23
7 * Description : Autodetect binary program and version
8 *
9 * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2012-2016 by Benjamin Girault <benjamin dot girault at gmail dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Qt includes
19
20#include <QString>
21#include <QStringList>
22#include <QPushButton>
23#include <QLabel>
24#include <QLineEdit>
25#include <QSet>
26#include <QGridLayout>
27#include <QUrl>
28
29// Local includes
30
31#include "digikam_export.h"
32
33namespace Digikam
34{
35
36class DIGIKAM_EXPORT DBinaryIface : public QObject
37{
38 Q_OBJECT
39
40public:
41
42 DBinaryIface(const QString& binaryName,
43 const QString& projectName,
44 const QString& url,
45 const QString& pluginName,
46 const QStringList& args = QStringList(),
47 const QString& desc = QString()
48 );
49 DBinaryIface(const QString& binaryName,
50 const QString& minimalVersion,
51 const QString& header,
52 const int headerLine,
53 const QString& projectName,
54 const QString& url,
55 const QString& pluginName,
56 const QStringList& args = QStringList(),
57 const QString& desc = QString()
58 );
59 ~DBinaryIface() override = default;
60
61public:
62
63 bool isFound() const { return m_isFound; }
64 const QString& version() const;
65 bool versionIsRight() const;
66 bool versionIsRight(const float) const;
67 inline bool isValid() const { return (m_isFound && versionIsRight()); }
68 inline bool hasError() const { return m_hasError; }
69 inline bool developmentVersion() const { return m_developmentVersion; }
70 const QString& description() const { return m_description; }
71
72 virtual void setup(const QString& prev = QString());
73 virtual bool checkDir() { return checkDirForPath(m_pathDir); }
74 virtual bool checkDirForPath(const QString& path);
75 virtual bool recheckDirectories();
76
77 virtual QString path(const QString& dir) const;
78 virtual QString path() const { return path(m_pathDir); }
79 virtual QString directory() const { return m_pathDir; }
80 virtual QString baseName() const { return m_binaryBaseName; }
81 virtual QString minimalVersion() const { return m_minimalVersion; }
82
83
84 virtual QUrl url() const { return m_url; }
85 virtual QString projectName() const { return m_projectName; }
86
87 static QString goodBaseName(const QString& b);
88
89public Q_SLOTS:
90
91 virtual void slotNavigateAndCheck();
92 virtual void slotAddPossibleSearchDirectory(const QString& dir);
93 virtual void slotAddSearchDirectory(const QString& dir);
94
95Q_SIGNALS:
96
97 void signalSearchDirectoryAdded(const QString& dir);
99
100protected:
101
102 QString findHeader(const QStringList& output, const QString& header) const;
103 virtual bool parseHeader(const QString& output);
104 void setVersion(QString& version);
105
106 virtual QString readConfig();
107 virtual void writeConfig();
108
109protected:
110
111 const bool m_checkVersion;
112 const QString m_headerStarts;
113 const int m_headerLine;
114 const QString m_minimalVersion;
115 const QString m_configGroup;
116 const QString m_binaryBaseName;
117 const QStringList m_binaryArguments;
118 const QString m_projectName;
119 const QUrl m_url;
120
121 bool m_isFound = false;
122 bool m_hasError = false;
123 bool m_developmentVersion = false;
124
125 QString m_version = QLatin1String("");
126 QString m_pathDir = QLatin1String("");
128
129 QFrame* m_pathWidget = nullptr;
130 QLabel* m_binaryLabel = nullptr;
131 QLabel* m_versionLabel = nullptr;
132 QPushButton* m_pathButton = nullptr;
133 QLabel* m_downloadButton = nullptr;
134 QLineEdit* m_lineEdit = nullptr;
135 QLabel* m_statusIcon = nullptr;
136
137 QSet<QString> m_searchPaths;
138
139private:
140
141 // Disabled
142 explicit DBinaryIface(QObject*);
143};
144
145} // namespace Digikam
Definition dbinaryiface.h:37
virtual QUrl url() const
Definition dbinaryiface.h:84
QSet< QString > m_searchPaths
Definition dbinaryiface.h:137
const bool m_checkVersion
Definition dbinaryiface.h:111
bool isValid() const
Definition dbinaryiface.h:67
bool hasError() const
Definition dbinaryiface.h:68
void signalSearchDirectoryAdded(const QString &dir)
virtual QString baseName() const
Definition dbinaryiface.h:80
virtual bool checkDir()
Definition dbinaryiface.h:73
virtual QString directory() const
Definition dbinaryiface.h:79
const QString m_configGroup
Definition dbinaryiface.h:115
const QString m_projectName
Definition dbinaryiface.h:118
const QString m_minimalVersion
Definition dbinaryiface.h:114
bool isFound() const
Definition dbinaryiface.h:63
virtual QString projectName() const
Definition dbinaryiface.h:85
bool developmentVersion() const
Definition dbinaryiface.h:69
QString m_description
Definition dbinaryiface.h:127
virtual QString path() const
Definition dbinaryiface.h:78
~DBinaryIface() override=default
const QString m_binaryBaseName
Definition dbinaryiface.h:116
const QStringList m_binaryArguments
Definition dbinaryiface.h:117
const QString & description() const
Definition dbinaryiface.h:70
const int m_headerLine
Definition dbinaryiface.h:113
const QString m_headerStarts
Definition dbinaryiface.h:112
const QUrl m_url
Definition dbinaryiface.h:119
virtual QString minimalVersion() const
Definition dbinaryiface.h:81
Definition datefolderview.cpp:34