/usr/include/plasma/widgets/videowidget.h is in kdelibs5-dev 4:4.14.2-5+deb8u2.
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 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 | /*
* Copyright 2009 Marco Martin <notmart@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2, or
* (at your option) any later version.
*
* 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 General Public License for more details
*
* You should have received a copy of the GNU Library 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 PLASMA_VIDEOWIDGET_H
#define PLASMA_VIDEOWIDGET_H
#include <QtGui/QGraphicsProxyWidget>
#include <plasma/plasma_export.h>
namespace Phonon {
class VideoWidget;
class MediaObject;
class AudioOutput;
}
class KUrl;
namespace Plasma
{
class VideoWidgetPrivate;
/**
* @class VideoWidget plasma/widgets/videowidget.h <Plasma/Widgets/VideoWidget>
* a Video playing widget via Phonon, it encloses the
* Phonon::MediaObject and Phonon::AudioOutput too
*
* @short Provides a video player widget
* @since KDE4.3
*/
class PLASMA_EXPORT VideoWidget : public QGraphicsProxyWidget
{
Q_OBJECT
Q_PROPERTY(QString url READ url WRITE setUrl)
Q_PROPERTY(qint64 currentTime READ currentTime)
Q_PROPERTY(qint64 totalTime READ totalTime)
Q_PROPERTY(qint64 remainingTime READ remainingTime)
Q_PROPERTY(Controls usedControls READ usedControls WRITE setUsedControls)
Q_PROPERTY(bool controlsVisible READ controlsVisible WRITE setControlsVisible)
Q_PROPERTY(qint32 tickInterval READ tickInterval WRITE setTickInterval)
Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet)
Q_ENUMS(Control)
public:
enum Control {
NoControls = 0,
Play = 1,
Pause = 2,
Stop = 4,
PlayPause = 8,
Previous = 16,
Next = 32,
Progress = 64,
Volume = 128,
OpenFile = 128,
DefaultControls = PlayPause|Progress|Volume|OpenFile
};
Q_DECLARE_FLAGS(Controls, Control)
explicit VideoWidget(QGraphicsWidget *parent = 0);
~VideoWidget();
/**
* Load a certain url that can be a local file or a remote one
* @param path resource to play
*/
void setUrl(const QString &url);
/**
* @return the url (local or remote) we are playing
*/
QString url() const;
/**
* @return the Phonon::MediaObject being used
* @see Phonon::MediaObject
*/
Q_INVOKABLE Phonon::MediaObject *mediaObject() const;
/**
* @return the Phonon::AudioOutput being used
* @see Phonon::AudioOutput
*/
Q_INVOKABLE Phonon::AudioOutput *audioOutput() const;
/**
* @return the current time of the current media file
*/
qint64 currentTime() const;
/**
* @return the total playing time of the current media file
*/
qint64 totalTime() const;
/**
* @return the time remaining to the current media file
*/
qint64 remainingTime() const;
/**
* Set what control widgets to use
*
* @param controls bitwise OR combination of Controls flags
* @see Controls
*/
void setUsedControls(const Controls controls);
/**
* @return the video controls that are used and shown
* @see Controls
*/
Controls usedControls() const;
/**
* Show/hide the main controls widget, if any of them is used
*
* @param visible if we want to show or hide the main controls
* @see setUsedControls()
*/
void setControlsVisible(bool visible);
/**
* @return true if the controls widget is being shown right now
*/
bool controlsVisible() const;
/**
* @param interval milliseconds the tick signal will be emitted
* @since 4.7.1
*/
void setTickInterval(qint64 interval);
/**
* @return milliseconds the tick signal will be emitted
* @see tickInterval()
* @since 4.7.1
*/
qint64 tickInterval() const;
/**
* Sets the stylesheet used to control the visual display of this VideoWidget
*
* @param stylesheet a CSS string
*/
void setStyleSheet(const QString &stylesheet);
/**
* @return the stylesheet currently used with this widget
*/
QString styleSheet();
/**
* @return the native widget wrapped by this VideoWidget
*/
Phonon::VideoWidget *nativeWidget() const;
public Q_SLOTS:
/**
* Play the current file
*/
void play();
/**
* Pause the current file
*/
void pause();
/**
* Stop the current file
*/
void stop();
/**
* Jump at a given millisecond in the current file
* @param time where we want to jump
*/
void seek(qint64 time);
Q_SIGNALS:
/**
* Emitted regularly when the playing is progressing
* @param time where we are
*/
void tick(qint64 time);
/**
* Emitted an instant before the playback is finished
*/
void aboutToFinish();
/**
* The user pressed the "next" button
* @since 4.3
*/
void nextRequested();
/**
* The user pressed the "previous" button
* @since 4.3
*/
void previousRequested();
protected:
void resizeEvent(QGraphicsSceneResizeEvent *event);
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
private:
VideoWidgetPrivate * const d;
Q_PRIVATE_SLOT(d, void playPause())
Q_PRIVATE_SLOT(d, void ticked(qint64 progress))
Q_PRIVATE_SLOT(d, void totalTimeChanged(qint64 time))
Q_PRIVATE_SLOT(d, void setPosition(int progress))
Q_PRIVATE_SLOT(d, void setVolume(int value))
Q_PRIVATE_SLOT(d, void volumeChanged(qreal value))
Q_PRIVATE_SLOT(d, void showOpenFileDialog())
Q_PRIVATE_SLOT(d, void stateChanged(Phonon::State newState, Phonon::State oldState))
Q_PRIVATE_SLOT(d, void hideControlWidget())
Q_PRIVATE_SLOT(d, void slidingCompleted())
};
} // namespace Plasma
#endif // multiple inclusion guard
|