digiKam
Loading...
Searching...
No Matches
dservicemenu.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 : 2014-05-08
7 * Description : Service menu operation methods
8 *
9 * SPDX-FileCopyrightText: 2014-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QUrl>
20#include <QIcon>
21#include <QString>
22#include <QStringList>
23
24// KDE includes
25
26// Pragma directives to reduce warnings from KDE header files.
27#if defined(Q_CC_GNU)
28# pragma GCC diagnostic push
29# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
30#endif
31
32#if defined(Q_CC_CLANG)
33# pragma clang diagnostic push
34# pragma clang diagnostic ignored "-Wmismatched-tags"
35# pragma clang diagnostic ignored "-Wdeprecated-declarations"
36#endif
37
38#include <kservice.h>
39
40// Restore warnings
41#if defined(Q_CC_GNU)
42# pragma GCC diagnostic pop
43#endif
44
45#if defined(Q_CC_CLANG)
46# pragma clang diagnostic pop
47#endif
48
49// Local includes
50
51#include "digikam_export.h"
52
53namespace Digikam
54{
55
56// ----------------------------------------------------------------------------
57
58class DIGIKAM_EXPORT DServiceInfo
59{
60public:
61
63 DServiceInfo(const QString& _name,
64 const QString& _exec,
65 const QString& _icon,
66 const QString& _topt,
67 bool _term);
68 DServiceInfo(const DServiceInfo& other);
70
71 bool isEmpty() const;
72
73 DServiceInfo& operator=(const DServiceInfo& other);
74
75public:
76
77 QString name;
78 QString exec;
79 QString icon;
80 QString topt;
81 bool term = false;
82};
83
84// ----------------------------------------------------------------------------
85
86class DIGIKAM_EXPORT DServiceMenu
87{
88public:
89
91
92 // Linux Services methods implemented in dservicemenu_linux.cpp
93
97 static bool runFiles(const KService::Ptr& service, const QList<QUrl>& urls);
98
99 static bool runFiles(const DServiceInfo& serviceInfo, const QList<QUrl>& urls);
100
104 static bool runFiles(const QString& appCmd,
105 const QList<QUrl>& urls,
106 const KService::Ptr& service = KService::Ptr(),
107 const DServiceInfo& serviceInfo = DServiceInfo());
108
112 static KService::List servicesForOpenWith(const QList<QUrl>& urls);
113
114 static QList<DServiceInfo> servicesForOpen(const QList<QUrl>& urls);
115
119 static QIcon getIconFromService(const DServiceInfo& sinfo);
120
121private:
122
123 static QStringList splitStringAtSpaces(const QString& string);
124
126
128
129 // MacOS Application Bundles methods implemented in dservicemenu_mac.mm
130
131#ifdef Q_OS_MAC
132
133public:
134
141 static QList<QUrl> MacApplicationForFileExtension(const QString& suffix);
142
147 static bool MacOpenFilesWithApplication(const QList<QUrl>& fileUrls, const QUrl& appUrl);
148
155 static QList<QUrl> MacApplicationsForFiles(const QList<QUrl>& files);
156
160 static QString MacApplicationBundleName(const QUrl& appUrl);
161
165 static QIcon MacApplicationBundleIcon(const QUrl& appUrl, int size = 32);
166
167#endif
168
170
171};
172
173} // namespace Digikam
Definition dservicemenu.h:59
QString topt
Definition dservicemenu.h:80
QString exec
Definition dservicemenu.h:78
QString name
Definition dservicemenu.h:77
QString icon
Definition dservicemenu.h:79
Definition dservicemenu.h:87
QStringView suffix
Definition itemviewutilities.cpp:587
Definition datefolderview.cpp:34