This file is indexed.

/usr/include/plasma/widgets/videowidget.h is in kdelibs5-dev 4:4.13.0-0ubuntu1.

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