File indexing completed on 2024-05-12 04:44:40

0001 class MediaPlayer : public QMainWindow
0002 {
0003     Q_OBJECT
0004     public:
0005         MediaPlayer();
0006 
0007     private slots:
0008         void play(const QModelIndex &modelIndex);
0009         void visEffectChanged(int index);
0010 
0011     private:
0012         QColumnView m_fileView;
0013         QDirModel m_model;
0014 
0015         Phonon::MediaObject *m_media;
0016         Phonon::Visualization *m_vis;
0017         QComboBox *m_visComboBox;
0018 };
0019 
0020 MediaPlayer::MediaPlayer()
0021     : m_vis(0), m_visComboBox(0)
0022 {
0023     //setCentralWidget(&m_fileView);
0024     m_fileView.setModel(&m_model);
0025     m_fileView.setFrameStyle(QFrame::NoFrame);
0026 
0027     m_media = new MediaObject(this);
0028     AudioOutput *output = new AudioOutput(Phonon::Music, this);
0029     Phonon::createPath(m_media, output);
0030 
0031     QList<VisualizationDescription> list = BackendCapabilities::availableVisualizationEffects();
0032     if (!list.isEmpty()) {
0033         VideoWidget *visWidget = new VideoWidget(this);
0034         m_vis = new Visualization(this);
0035         Phonon::createPath(m_media, m_vis);
0036         Phonon::createPath(m_vis, visWidget);
0037         m_vis->setVisualization(list.first());
0038 
0039         m_visComboBox = new QComboBox(this);
0040         m_visComboBox->setModel(new VisualizationDescriptionModel(list, m_visComboBox));
0041         connect(m_visComboBox, SIGNAL(activated(int)), SLOT(visEffectChanged(int)));
0042     }
0043 
0044     connect(&m_fileView, SIGNAL(updatePreviewWidget(const QModelIndex &)), SLOT(play(const QModelIndex &)));
0045 }
0046 
0047 void MediaPlayer::play(const QModelIndex &modelIndex)
0048 {
0049     m_media->setCurrentSource(url);
0050     m_media->play();
0051 }
0052 
0053 void MediaPlayer::visEffectChanged(int index)
0054 {
0055     QList<VisualizationDescription> list = BackendCapabilities::availableVisualizationEffects();
0056     Q_ASSERT(index < list.size() && index >= 0);
0057     m_vis->setVisualization(list.at(index));
0058 }
0059 
0060