#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "playerwidget.h" PlayerWidget::PlayerWidget(QWidget *parent) : QWidget(parent){ setupGui(); } void PlayerWidget::setupGui(){ //filter QGroupBox *filterGB = new QGroupBox(tr("Filter")); mFilter = new QLineEdit; connect(mFilter, SIGNAL(returnPressed()), this, SLOT(doFilter())); QPushButton *filterB = new QPushButton(tr("Go!")); connect(filterB, SIGNAL(clicked()), this, SLOT(doFilter())); QHBoxLayout *filterLayout = new QHBoxLayout; filterLayout->addWidget(mFilter); filterLayout->addWidget(filterB); filterGB->setLayout(filterLayout); //show by QGroupBox *sortByGB = new QGroupBox(tr("Show by")); mSortBy = new QComboBox; mSortBy->addItems(QStringList() << tr("Artists") << tr("Albums") << tr("Genres")); connect(mSortBy, SIGNAL(currentIndexChanged(QString)), this, SLOT(populateBy(QString))); QPushButton *refreshSortB = new QPushButton(tr("Refresh")); connect(refreshSortB, SIGNAL(clicked()), this, SLOT(refreshSort())); QHBoxLayout *sortByL = new QHBoxLayout; sortByL->addWidget(mSortBy); sortByL->addWidget(refreshSortB); sortByL->setStretchFactor(mSortBy, 3); sortByGB->setLayout(sortByL); //THE view mView = new QTreeView; mViewModel = new QStandardItemModel; mViewProxy = new QSortFilterProxyModel; mViewProxy->setSourceModel(mViewModel); //left widget QWidget *leftWidget = new QWidget; QVBoxLayout *leftWidgetL = new QVBoxLayout; leftWidgetL->addWidget(sortByGB); leftWidgetL->addWidget(filterGB); leftWidgetL->addWidget(mView); leftWidget->setLayout(leftWidgetL); //now playing label mNowPlayingL = new QLabel; mNowPlayingL->setAlignment(Qt::AlignCenter); mNowPlayingL->setFont(QFont("courier new", 20, QFont::Bold)); mNowPlayingL->setText(tr("(none)")); //slider mSlider = new QSlider; mSlider->setOrientation(Qt::Horizontal); //current info QGroupBox *currentInfoGB = new QGroupBox(tr("Current")); mCurrentTE = new QTextEdit; mCurrentTE->setReadOnly(true); QVBoxLayout *currentInfoL = new QVBoxLayout; currentInfoL->addWidget(mCurrentTE); currentInfoGB->setLayout(currentInfoL); //center widget QWidget *centerWidget = new QWidget; QVBoxLayout *centerWidgetL = new QVBoxLayout; centerWidgetL->addWidget(mNowPlayingL); centerWidgetL->addWidget(mSlider); centerWidgetL->addWidget(currentInfoGB); centerWidget->setLayout(centerWidgetL); //playlist mPlayListModel = new QStandardItemModel; mPlayListView = new QTreeView; mPlayListView->setModel(mPlayListModel); QGroupBox *playListGB = new QGroupBox(tr("Playlist")); QVBoxLayout *playListL = new QVBoxLayout; playListL->addWidget(mPlayListView); playListGB->setLayout(playListL); //right widget QWidget *rightWidget = new QWidget; QVBoxLayout *rightWidgetL = new QVBoxLayout; rightWidgetL->addWidget(playListGB); rightWidget->setLayout(rightWidgetL); //put it all together QSplitter *splitter = new QSplitter; splitter->addWidget(leftWidget); splitter->addWidget(centerWidget); splitter->addWidget(rightWidget); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(splitter); setLayout(mainLayout); } void PlayerWidget::populateBy(QString selector){ if(selector == tr("Artist")){ populateByArtist(); } } void PlayerWidget::refreshSort(){ populateBy(mSortBy->currentText()); } void PlayerWidget::populateByArtist(){ }