1/* This file is part of the KDE project
2 Copyright (C) 2006 Matthias Kretz <kretz@kde.org>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) version 3, or any
8 later version accepted by the membership of KDE e.V. (or its
9 successor approved by the membership of KDE e.V.), Nokia Corporation
10 (or its successors, if any) and the KDE Free Qt Foundation, which shall
11 act as a proxy defined in Section 6 of version 3 of the license.
12
13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public
19 License along with this library. If not, see <http://www.gnu.org/licenses/>.
20
21*/
22
23#ifndef SEEKSLIDER_P_H
24#define SEEKSLIDER_P_H
25
26#include <QPointer>
27#include <QBoxLayout>
28#include <QIcon>
29#include <QLabel>
30#include <QPixmap>
31#include <QStyle>
32
33#include "factory_p.h"
34#include "phonondefs_p.h"
35#include "platform_p.h"
36#include "seekslider.h"
37#include "swiftslider_p.h"
38
39#ifndef QT_NO_PHONON_SEEKSLIDER
40
41namespace Phonon
42{
43class MediaObject;
44class SeekSliderPrivate
45{
46 P_DECLARE_PUBLIC(SeekSlider)
47 protected:
48 SeekSliderPrivate(SeekSlider *parent)
49 : layout(QBoxLayout::LeftToRight, parent),
50 slider(Qt::Horizontal, parent),
51 iconLabel(parent),
52 ticking(false)
53#ifndef QT_NO_PHONON_PLATFORMPLUGIN
54 ,icon(Platform::icon(name: QLatin1String("player-time"), style: parent->style()))
55#endif //QT_NO_PHONON_PLATFORMPLUGIN
56 {
57 const int e = parent->style()->pixelMetric(metric: QStyle::PM_ButtonIconSize);
58 iconSize = QSize(e, e);
59
60 slider.setPageStep(5000); // 5 sec
61 slider.setSingleStep(500); // 0.5 sec
62
63 layout.setContentsMargins(QMargins());
64 layout.setSpacing(2);
65 layout.addWidget(&iconLabel, stretch: 0, alignment: Qt::AlignVCenter);
66 layout.addWidget(&slider, stretch: 0, alignment: Qt::AlignVCenter);
67
68 setEnabled(false);
69
70 if (icon.isNull()) {
71 iconLabel.setVisible(false);
72 }
73 }
74
75 SeekSlider *q_ptr;
76
77 private:
78 void setEnabled(bool);
79 void _k_stateChanged(Phonon::State);
80 void _k_seek(int);
81 void _k_tick(qint64);
82 void _k_length(qint64);
83 void _k_seekableChanged(bool);
84 void _k_currentSourceChanged();
85
86 QBoxLayout layout;
87 SwiftSlider slider;
88 QLabel iconLabel;
89 QPointer<MediaObject> media;
90 bool ticking;
91 QIcon icon;
92 QSize iconSize;
93};
94} // namespace Phonon
95
96#endif //QT_NO_PHONON_SEEKSLIDER
97
98#endif // SEEKSLIDER_P_H
99// vim: sw=4 ts=4 tw=80
100

source code of phonon/phonon/seekslider_p.h