qmcontrolbar.cpp

来自「可以播放MP3,wma等文件格式的播放器」· C++ 代码 · 共 1,118 行 · 第 1/3 页

CPP
1,118
字号
	m_pBrowserMenu->setItemEnabled(m_BrowserTopId, menu_flag);	m_pBrowserMenu->setItemEnabled(m_BrowserBottomId, menu_flag);	m_pBrowserMenu->setItemEnabled(m_BrowserFullId, menu_flag);	int full_browser;	QmConfig::instance()->get("main-window", "full-browser", full_browser);	if(full_browser == 0)		m_pBrowserMenu->setItemChecked(m_BrowserFullId, false);	else		m_pBrowserMenu->setItemChecked(m_BrowserFullId, true);	}/*! */QmControlBar::~QmControlBar(){}QAction *QmControlBar::systrayAction( ActionItem i ) const{    QAction * a = 0;    if ( m_pSystrayActionMap.find( i ) != m_pSystrayActionMap.end() )        a = m_pSystrayActionMap[i];    return a;}/*!  Saves whether the browser is visible or not and whether it is in full mode  or not.  It appears that this checking must be done through the menu state and  not by actually checking whether the widgets themselves are visible or  not.  The latter approach would be appropriate to do in QmMainWindow's  destructor or closeEvent(), but it appears that by then, the widgets  are never visible.   */voidQmControlBar::save(){	if(m_pBrowserMenu->isItemChecked(m_BrowserId))		QmConfig::instance()->set("main-window", "show-browser", 1);	else		QmConfig::instance()->set("main-window", "show-browser", 0);	if(m_pBrowserMenu->isItemChecked(m_BrowserFullId))			QmConfig::instance()->set("main-window", "full-browser", 1);	else		QmConfig::instance()->set("main-window", "full-browser", 0);	}/*!  \return A pointer to the (file) dialog. */QmFileDialog*QmControlBar::makeDialog(){	QmFileDialog *dlg = 0;	    if ( m_MainFileDialogAvailable )    {        dlg = m_pMainFileDialog;        m_MainFileDialogAvailable = false;    }    else        dlg = new QmFileDialog( 0, "file-dialog", false );	return dlg;}/*! */voidQmControlBar::destroyDialog(	QFileDialog *dlg){	    if ( dlg != m_pMainFileDialog )        trash( dlg );    else        m_MainFileDialogAvailable = true;}/*! */voidQmControlBar::showDialog(	QFileDialog *dlg){    QRect file_rect = QmConfig::instance()->getRect( "file-dialog", "geometry" );	    if ( file_rect.isValid() )    {        dlg->resize( file_rect.size() );        dlg->move( file_rect.topLeft() );    }	    dlg->show();}/*!  Adds one or more songs to the list.  \sa addDir(), addPlayList() */voidQmControlBar::addFiles(){    if ( m_pMainWindow->state() == QmMainWindow::Busy ) // Do not show dialogs when busy        return;    QmFileDialog *dlg = makeDialog();    connect( dlg, SIGNAL( dialogDone( QFileDialog *, int ) ),             this, SLOT( doAddFiles( QFileDialog *, int ) ) );	    QmConfig *conf = QmConfig::instance();    dlg->setCaption( tr("Apollo - Add MP3 files"));    dlg->setDir( QDir( conf->getString( "path", "music" ) ) );	QStringList tmp;	tmp.append( "MP3 files (*.mp3)" );	tmp.append( "All Files (*)" );    dlg->setFilters( tmp );    dlg->setMode( QFileDialog::ExistingFiles ); 	showDialog(dlg);}/*!  Adds a directory to the play list.  \sa addFiles(), addPlayList() */voidQmControlBar::addDir(){    if ( m_pMainWindow->state() == QmMainWindow::Busy ) // Do not show dialogs when busy        return;    QmFileDialog *dlg = makeDialog();    connect( dlg, SIGNAL( dialogDone( QFileDialog *, int ) ),             this, SLOT( doAddDir( QFileDialog *, int ) ) );	    QmConfig *conf = QmConfig::instance();    dlg->setCaption(tr("Apollo - Add directory"));    dlg->setDir( QDir( conf->getString( "path", "music" ) ) );    dlg->setMode( QFileDialog::Directory );		showDialog(dlg);}/*!  Adds a playlist to the playlist.  \sa addFiles(), addDir()*/voidQmControlBar::addPlayList(){    if ( m_pMainWindow->state() == QmMainWindow::Busy ) // Do not show dialogs when busy        return;    QmFileDialog *dlg = makeDialog();    connect( dlg, SIGNAL( dialogDone( QFileDialog *, int ) ),             this, SLOT( doAddPlayList( QFileDialog *, int ) ) );	    QmConfig *conf = QmConfig::instance();    dlg->setCaption(tr("Apollo - Add playlist"));    dlg->setDir( QDir( conf->getString( "path", "playlist" ) ) );	QStringList tmp;	tmp.append( "Playlists (*.m3u *.xml)" );	tmp.append( "All Files (*)" );    dlg->setFilters( tmp );    dlg->setMode( QFileDialog::ExistingFile );		showDialog(dlg);}/*!  Adds the files selected in the \c dlg object if \c val is Accepted.*/voidQmControlBar::doAddFiles(	QFileDialog *dlg,	int val ){    if ( val == QDialog::Accepted )    {		QmConfig *conf = QmConfig::instance();		conf->set( "path", "music", dlg->dir()->absPath() );		conf->set( "file-dialog", "geometry", QRect( dlg->pos(), dlg->size() ) );		        QStringList strlist = dlg->selectedFiles();		if( ! strlist.isEmpty())		{			m_pMainWindow->setState( QmMainWindow::Busy );					for(QStringList::ConstIterator it = strlist.begin(); it != strlist.end(); ++it)			{				m_pMainWindow->playListAppendFile(*it);			}					int w = m_pMainWindow->playList()->header()->width();			w = w > 400 ? w : 400;			setMaximumSize(w, maximumSize().height());			m_pMainWindow->setState( QmMainWindow::Ready );					updateControls();		}    }	    disconnect( dlg, SIGNAL( dialogDone( QFileDialog *, int ) ),                this, SLOT( doAddFiles( QFileDialog *, int ) ) );	destroyDialog(dlg);}/*!  Adds the directory selected in the \c dlg object if \c val is accepted.*/voidQmControlBar::doAddDir(	QFileDialog *dlg,	int val ){    if ( val == QDialog::Accepted )    {		// We do not want the selected directory to be the directory shown		// next time we open the dialog, so here we use dir()				QmConfig *conf = QmConfig::instance();		conf->set( "path", "music", dlg->dir()->absPath() );		conf->set( "file-dialog", "geometry", QRect( dlg->pos(), dlg->size() ) );		        QString dirname = dlg->selectedFile(); // everything is a file :)        // If no directory is selected, use the parent directory		        if ( dirname.isNull() )            dirname = dlg->dir()->absPath();        if( ! dirname.isEmpty())        {            m_pMainWindow->setState( QmMainWindow::Busy );			m_pMainWindow->playListAppendDir(dirname);            m_pMainWindow->setState( QmMainWindow::Ready );            updateControls();        }    }	    disconnect( dlg, SIGNAL( dialogDone( QFileDialog *, int ) ),                this, SLOT( doAddDir( QFileDialog *, int ) ) );	destroyDialog(dlg);}/*!  Adds the playlist selected in the \c dlg object if \c val is accepted.*/voidQmControlBar::doAddPlayList(	QFileDialog *dlg,	int val ){    if ( val == QDialog::Accepted )    {		QmConfig *conf = QmConfig::instance();		conf->set( "path", "playlist", dlg->dir()->absPath() );				conf->set( "file-dialog", "geometry", QRect( dlg->pos(), dlg->size() ) );        QString s = dlg->selectedFile();        if( ! s.isEmpty() )		{			m_pMainWindow->setState( QmMainWindow::Busy );            m_pMainWindow->playListAppendList(s);			m_pMainWindow->setState( QmMainWindow::Ready );			updateControls();		}    }    disconnect( dlg, SIGNAL( dialogDone( QFileDialog *, int ) ),                this, SLOT( doAddPlayList( QFileDialog *, int ) ) );	destroyDialog(dlg);}/*!  Opens up a file requester asking to save the play list. */voidQmControlBar::savePlayList(){    if ( m_pMainWindow->state() == QmMainWindow::Busy ) // Do not show dialogs when busy        return;    QmFileDialog *dlg = new QmFileDialog( 0, "file-dialog", false );    connect( dlg, SIGNAL( dialogDone( QFileDialog *, int ) ),             this, SLOT( doSavePlayList( QFileDialog *, int ) ) );	    QmConfig *conf = QmConfig::instance();    dlg->setDir( QDir( conf->getString( "path", "playlist" ) ) );    dlg->setMode( QFileDialog::AnyFile );	QStringList tmp;	tmp.append( "Playlists (*.m3u *.xml)" );	tmp.append( "All Files (*)" );    dlg->setFilters( tmp );    dlg->setCaption( "Apollo - Save playlist" );	    QRect file_rect = conf->getRect( "file-dialog", "geometry" );	    if ( file_rect.isValid() )    {        dlg->resize( file_rect.size() );        dlg->move( file_rect.topLeft() );    }	    dlg->show();}/*!  Helper function which saves the selected file in the dialog \c dlg.    \sa savePlayList()*/voidQmControlBar::doSavePlayList(	QFileDialog *dlg,	int val ){    if ( val == QDialog::Accepted )    {		QmConfig *conf = QmConfig::instance();		conf->set( "path", "playlist", dlg->dir()->absPath() );		conf->set( "file-dialog", "geometry", QRect( dlg->pos(), dlg->size() ) );        QString s = dlg->selectedFile();		if ( ! s.isEmpty() )        {			if ( s.findRev(".m3u", -1, false)  != static_cast<int>(s.length()) - 4 &&				 s.findRev(".xml", -1, false)  != static_cast<int>(s.length()) - 4 )            {                s += ".xml";

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?