moodbar.h
来自「Amarok是一款在LINUX或其他类UNIX操作系统中运行的音频播放器软件。 」· C头文件 代码 · 共 182 行
H
182 行
/*************************************************************************** -*- c++ -*- moodbar.h - description ------------------- begin : 6th Nov 2005 copyright : (C) 2006 by Joseph Rabinoff copyright : (C) 2005 by Gav Wood email : bobqwatson@yahoo.com***************************************************************************//*************************************************************************** * * * 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. * * * ***************************************************************************/// Aug 5 2006 (Joe Rabinoff): Rewrote everything. This file bears // no resemblance to Gav's original code.// See moodbar.cpp for usage and implementation notes.#ifndef MOODBAR_H#define MOODBAR_H#include <qobject.h>#include <qvaluevector.h>#include <qcolor.h>#include <qpixmap.h>#include <qmutex.h>#include <qvaluelist.h>#include <kurl.h>class MetaBundle;class Moodbar : public QObject{ Q_OBJECT public: typedef QValueVector<QColor> ColorList; typedef enum { Unloaded, // Haven't tried to load yet CantLoad, // For some reason we'll never be able to load JobQueued, // An analysis job is pending JobRunning, // An analysis job is running JobFailed, // Our job has returned and failed Loaded // Can draw() } State; // These are the state changes we emit in jobEvent enum { JobStateRunning, JobStateSucceeded, JobStateFailed }; // Construct an empty, small-footprint instance Moodbar( MetaBundle *mb ); // This is for de-queueing jobs ~Moodbar( void ); Moodbar& operator=( const Moodbar &mood ); void reset( void ); void detach( void ); bool dataExists( void ); bool canHaveMood( void ); void load( void ); QPixmap draw( int width, int height ); int hueSort( void ) const { return m_hueSort; } State state( void ) const { return m_state; } // Where are we storing the .mood file? static QString moodFilename( const KURL &url ); static QString moodFilename( const KURL &url, bool withMusic ); static bool copyFile( const QString &srcPath, const QString &dstPath ); static bool executableExists( void ); public slots: void slotJobEvent( KURL url, int newState ); signals: void jobEvent( int newState ); private: // Undefined! We can't construct unless we know what // *our* parent bundle is. Moodbar( const Moodbar& ); bool readFile( void ); MetaBundle *m_bundle; // Parent bundle ColorList m_data; // .mood file contents QPixmap m_pixmap; // Cached from the last time draw() was called KURL m_url; // Keep a copy of this, mainly for dtor mutable QMutex m_mutex; // Locks the whole object int m_hueSort; // For PlaylistItem sorting State m_state;};class KProcess;// For internal use only (well, mostly)class MoodServer : public QObject{ Q_OBJECTpublic: static MoodServer *instance( void ); bool queueJob( MetaBundle *bundle ); void deQueueJob( KURL url ); bool moodbarBroken( void ) const { return m_moodbarBroken; }signals: void jobEvent( KURL url, int newState ); private slots: void slotJobCompleted( KProcess *proc ); void slotNewJob( void ); void slotMoodbarPrefs( bool show, bool moodier, int alter, bool withMusic );public slots: // Moodbar file organization slots void slotFileDeleted( const QString &absPath ); void slotFileMoved( const QString &srcPath, const QString &dstPath );private: class ProcData { public: ProcData( KURL url, QString infile, QString outfile ) : m_url( url ), m_infile( infile ), m_outfile( outfile ) , m_refcount( 1 ) {} ProcData( void ) : m_refcount( 0 ) {} KURL m_url; QString m_infile; QString m_outfile; // Keep track of how many Moodbars are waiting on this URL int m_refcount; }; typedef enum { Crash = -1, Success = 0, NoPlugin = 1, NoFile = 2, CommandLine = 3 } ReturnStatus; MoodServer( void ); void setMoodbarBroken( void ); void clearJobs( void ); QValueList<ProcData> m_jobQueue; bool m_moodbarBroken; KProcess *m_currentProcess; ProcData m_currentData; mutable QMutex m_mutex;};#endif // MOODBAR_H
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?