diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-03 02:15:56 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-03 02:15:56 +0000 |
commit | 50b48aec6ddd451a6d1709c0942477b503457663 (patch) | |
tree | a9ece53ec06fd0a2819de7a2a6de997193566626 /src/k3baudioplayer.h | |
download | k3b-50b48aec6ddd451a6d1709c0942477b503457663.tar.gz k3b-50b48aec6ddd451a6d1709c0942477b503457663.zip |
Added abandoned KDE3 version of K3B
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/k3b@1084400 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/k3baudioplayer.h')
-rw-r--r-- | src/k3baudioplayer.h | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/src/k3baudioplayer.h b/src/k3baudioplayer.h new file mode 100644 index 0000000..1bc28a9 --- /dev/null +++ b/src/k3baudioplayer.h @@ -0,0 +1,208 @@ +/* + * + * $Id: k3baudioplayer.h 619556 2007-01-03 17:38:12Z trueg $ + * Copyright (C) 2003 Sebastian Trueg <trueg@k3b.org> + * + * This file is part of the K3b project. + * Copyright (C) 1998-2007 Sebastian Trueg <trueg@k3b.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * See the file "COPYING" for the exact licensing terms. + */ + + +#ifndef K3BAUDIOPLAYER_H +#define K3BAUDIOPLAYER_H + +#include <klistview.h> + +#include <config.h> + +#ifdef WITH_ARTS +#include <arts/kmedia2.h> +#include <arts/kartsdispatcher.h> +#endif + +class QTimer; +class QLabel; +class QToolButton; +class QSlider; +class QPainter; +class QColorGroup; +class QDropEvent; +class QDragObject; +class KAction; +class KActionMenu; + + +/** + * Special ListViewItem for the K3bAudioPlayer playlist + * @author Sebastian Trueg + */ +class K3bPlayListViewItem : public KListViewItem +{ + public: + K3bPlayListViewItem( const QString&, QListView* parent ); + K3bPlayListViewItem( const QString&, QListView* parent, QListViewItem* after ); + ~K3bPlayListViewItem(); + + /** @returns the filename for the first column and the + * length in format 00:00.00 for the second column + */ + virtual QString text( int c ) const; + + void setLength( unsigned long l ) { m_length = l; } + unsigned long length() const { return m_length; } + const QString& filename() const { return m_filename; } + + /** + * reimplemented from QListViewItem + * takes the m_bActive flag into account. + */ + virtual void paintCell( QPainter*, const QColorGroup&, int, int, int ); + + void setActive( bool a ) { m_bActive = a; } + + protected: + /** path to the associated file */ + QString m_filename; + + /** length in frames (1/75 second) */ + unsigned long m_length; + + bool m_bActive; +}; + + + +/** + * Playlistview just needed to accept + * url drags + */ +class K3bPlayListView : public KListView +{ +Q_OBJECT + + public: + K3bPlayListView( QWidget* parent = 0, const char* name = 0 ); + ~K3bPlayListView(); + + protected: + bool acceptDrag( QDropEvent* e ) const; + QDragObject* dragObject(); +}; + + + + +/** + * @author Sebastian Trueg + */ +class K3bAudioPlayer : public QWidget +{ +Q_OBJECT + + public: + K3bAudioPlayer( QWidget* parent = 0, const char* name = 0 ); + ~K3bAudioPlayer(); + + bool supportsMimetype( const QString& mimetype ); + + /** + * length of current playing in seconds + */ + long length(); + + /** + * current position in seconds + */ + long position(); + + /** + * EMPTY - no file loaded + */ + enum player_state { PLAYING, PAUSED, STOPPED, EMPTY }; + + int state(); + + signals: + void started( const QString& filename ); + void started(); + void stopped(); + void paused(); + void ended(); + + public slots: + void playFile( const QString& filename ); + void playFiles( const QStringList& files ); + void enqueueFile( const QString& filename ); + void enqueueFiles( const QStringList& files ); + + /** clears the playlist */ + void clear(); + void play(); + void forward(); + void back(); + void stop(); + void pause(); + void seek( long pos ); + void seek( int pos ); + +/* protected: */ +/* void dragEnterEvent( QDragEnterEvent* e ); */ +/* void dropEvent( QDropEvent* e ); */ + + private slots: + void slotCheckEnd(); + void slotUpdateDisplay(); + void slotUpdateCurrentTime( int time ); + void slotUpdateLength( long time ); + void slotUpdateFilename(); + void slotPlayItem( QListViewItem* item ); + void slotDropped( QDropEvent* e, QListViewItem* after ); + + /** + * set the actual item. Will set m_currentItem and + * handle highlighting of the current item + */ + void setCurrentItem( QListViewItem* item ); + void slotRemoveSelected(); + void slotShowContextMenu( KListView*, QListViewItem* item, const QPoint& p ); + + private: +#ifdef WITH_ARTS + Arts::PlayObject m_playObject; + KArtsDispatcher m_dispatcher; +#endif + QString m_filename; + + QLabel* m_labelFilename; + QLabel* m_labelCurrentTime; + QLabel* m_labelOverallTime; + + QToolButton* m_buttonPlay; + QToolButton* m_buttonPause; + QToolButton* m_buttonStop; + QToolButton* m_buttonForward; + QToolButton* m_buttonBack; + + K3bPlayListView* m_viewPlayList; + + QSlider* m_seekSlider; + + QTimer* m_updateTimer; + + K3bPlayListViewItem* m_currentItem; + + bool m_bLengthReady; + + KAction* m_actionRemove; + KAction* m_actionClear; + KActionMenu* m_contextMenu; +}; + + +#endif |