File indexing completed on 2024-04-21 04:57:32

0001 /*  This file is part of the KDE project
0002     SPDX-FileCopyrightText: 2007 Matthias Kretz <kretz@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-only
0005 
0006 */
0007 
0008 #ifndef PHONON_MEDIACONTROLS_P_H
0009 #define PHONON_MEDIACONTROLS_P_H
0010 
0011 #include "mediacontrols.h"
0012 #define TRANSLATION_DOMAIN "kfileaudiopreview6"
0013 #include <KLocalizedString>
0014 #include <QBoxLayout>
0015 #include <QStyle>
0016 #include <QToolButton>
0017 #include <phonon/seekslider.h>
0018 #include <phonon/volumeslider.h>
0019 
0020 namespace Phonon
0021 {
0022 class MediaControlsPrivate
0023 {
0024     Q_DECLARE_PUBLIC(MediaControls)
0025 protected:
0026     MediaControlsPrivate(MediaControls *parent)
0027         : q_ptr(parent)
0028         , layout(parent)
0029         , playButton(parent)
0030         , pauseButton(parent)
0031         , seekSlider(parent)
0032         , volumeSlider(parent)
0033         , media(nullptr)
0034     {
0035         int size = parent->style()->pixelMetric(QStyle::PM_ToolBarIconSize);
0036         QSize iconSize(size, size);
0037         playButton.setIconSize(iconSize);
0038         playButton.setIcon(QIcon::fromTheme(QStringLiteral("media-playback-start")));
0039         playButton.setToolTip(i18n("start playback"));
0040         playButton.setAutoRaise(true);
0041 
0042         pauseButton.setIconSize(iconSize);
0043         pauseButton.setIcon(QIcon::fromTheme(QStringLiteral("media-playback-pause")));
0044         pauseButton.setToolTip(i18n("pause playback"));
0045         pauseButton.hide();
0046         pauseButton.setAutoRaise(true);
0047 
0048         seekSlider.setIconVisible(false);
0049 
0050         volumeSlider.setOrientation(Qt::Horizontal);
0051         volumeSlider.setMaximumWidth(80);
0052         volumeSlider.hide();
0053 
0054         layout.setContentsMargins(0, 0, 0, 0);
0055         layout.setSpacing(0);
0056         layout.addWidget(&playButton);
0057         layout.addWidget(&pauseButton);
0058         layout.addWidget(&seekSlider, 1);
0059         layout.addWidget(&volumeSlider);
0060     }
0061 
0062     MediaControls *q_ptr;
0063     QHBoxLayout layout;
0064     QToolButton playButton;
0065     QToolButton pauseButton;
0066     SeekSlider seekSlider;
0067     VolumeSlider volumeSlider;
0068     MediaObject *media;
0069 
0070 private:
0071     void _k_stateChanged(Phonon::State, Phonon::State);
0072     void _k_mediaDestroyed();
0073     void updateVolumeSliderVisibility();
0074 };
0075 } // namespace Phonon
0076 
0077 #endif // PHONON_MEDIACONTROLS_P_H