/usr/include/kactivities/resourceinstance.h is in libkactivities-dev 4:4.13.3-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 | /*
* Copyright (C) 2011, 2012 Ivan Cukic <ivan.cukic(at)kde.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 2,
* or (at your option) any later version, as published by the Free
* Software Foundation
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef ACTIVITIES_RESOURCEINSTANCE_H
#define ACTIVITIES_RESOURCEINSTANCE_H
#include <QObject>
#include <QWidget>
#include <QUrl>
#include "kactivities_export.h"
namespace KActivities {
class ResourceInstancePrivate;
/**
* This class is used to notify the system that a file, web page
* or some other resource has been accessed.
*
* It provides methods to notify the system when the resource was
* opened, modified and closed, along with in what window the
* resource is shown.
*
* You should create an instance of this class for every resource
* you open.
*
* "The system" in this case can be the backend for tracking
* and automatically scoring files that are being accessed, the
* system to show the open files per window in the taskbar,
* the share-like-connect, etc.
*
* The user of this class shouldn't care about the backend
* systems - everything is done under-the-hood automatically.
*
*/
class KACTIVITIES_EXPORT ResourceInstance: public QObject
{
Q_OBJECT
Q_PROPERTY(QUrl uri READ uri WRITE setUri)
Q_PROPERTY(QString mimetype READ mimetype WRITE setMimetype)
Q_PROPERTY(QString title READ title WRITE setTitle)
Q_PROPERTY(WId winId READ winId)
Q_PROPERTY(AccessReason accessReason READ accessReason)
public:
/***
* The reason for opening the resource
*/
enum AccessReason {
User = 0, ///< Due to an explicit user request
Scheduled = 1, ///< As a result of a user-scheduled action
Heuristic = 2, ///< Deduced from user's activity, or indirectly requested
System = 3, ///< Due to a system event
World = 4 ///< Due to an action performed by an external entity
};
Q_ENUMS(AccessReason)
/**
* Creates a new resource instance
* @param wid id of the window that will show the resource
* @param parent pointer to the parent object
* @since 4.10
*/
explicit ResourceInstance(WId wid, QObject *parent = 0 /*nullptr*/);
/**
* Creates a new resource instance
* @param wid id of the window that will show the resource
* @param reason reason for opening the resource
* @param application application's name (the name used for the .desktop file).
* If not specified, QCoreApplication::applicationName is used
* @param parent pointer to the parent object
*/
explicit ResourceInstance(WId wid, AccessReason reason = User, const QString &application = QString(), QObject * parent = 0 /*nullptr*/);
/**
* Creates a new resource instance and automatically
* notifies the system that it was opened.
*
* In some special cases, where the URI of the resource is
* being constantly changed (for example, in the world globe,
* street map applications) you have two options:
* - to pass an empty resourceUri while passing the mimetype
* - to update the uri from time to time (in the example of
* the world map - to send URIs for major objects - cities
* or main streets.
* and in both cases reimplementing the currentUri() method
* which will return the exact URI shown at that specific moment.
*
* @param wid window id in which the resource is shown
* @param resourceUri URI of the resource that is shown
* @param mimetype the mime type of the resource
* @param title the title of the resource
* @param reason reason for opening the resource
* @param application application's name (the name used for the .desktop file).
* If not specified, QCoreApplication::applicationName is used
* @param parent pointer to the parent object
*/
ResourceInstance(WId wid, QUrl resourceUri, const QString &mimetype = QString(), const QString &title = QString(), AccessReason reason = User, const QString &application = QString(), QObject *parent = 0 /*nullptr*/);
/**
* Destroys the ResourceInstance and notifies the system
* that the resource has been closed
*/
~ResourceInstance();
public Q_SLOTS:
/**
* Call this method to notify the system that you modified
* (the contents of) the resource
*/
void notifyModified();
/**
* Call this method to notify the system that the resource
* has the focus in your application
* @note You only need to call this in MDI applications
*/
void notifyFocusedIn();
/**
* Call this method to notify the system that the resource
* lost the focus in your application
* @note You only need to call this in MDI applications
*/
void notifyFocusedOut();
/**
* This is a convenience method that sets the new URI.
* This is usually handled by sending the close event for
* the previous URI, and an open event for the new one.
*/
void setUri(const QUrl &newUri);
/**
* Sets the mimetype for this resource
*/
void setMimetype(const QString &mimetype);
/**
* Sets the title for this resource
*/
void setTitle(const QString &title);
Q_SIGNALS:
/**
* Emitted when the system wants to show the resource
* represented by this ResourceInstance.
*
* You should listen to this signal if you have multiple
* resources shown in one window (MDI). On catching it, show
* the resource and give it focus.
*/
void requestsFocus();
public:
/**
* @returns the current uri
* The default implementation returns the URI that was passed
* to the constructor.
* You need to reimplement it only for the applications with
* frequently updated URIs.
*/
virtual QUrl uri() const;
/**
* @returns mimetype of the resource
*/
QString mimetype() const;
/**
* @returns title of the resource
*/
QString title() const;
/**
* @returns the window id
*/
WId winId() const;
/**
* @returns the reason for accessing the resource
*/
AccessReason accessReason() const;
/**
* If there's no way to tell for how long an application is keeping
* the resource open, you can just call this static method - it
* will notify the system that the application has accessed the
* resource
* @param uri URI of the resource
* @param application application's name (the name used for the .desktop file).
* If not specified, QCoreApplication::applicationName is used
*
*/
static void notifyAccessed(const QUrl &uri, const QString &application = QString());
private:
ResourceInstancePrivate * const d;
};
}
#endif // ACTIVITIES_RESOURCEINSTANCE_H
|