/** Add a new playlist tab. */ Playlist* TabPlaylist::addPlaylist() { QString newPlaylistName = tr("Playlist %1").arg(count() + 1); QByteArray ba; if (playlists().isEmpty()) { ba = SettingsPrivate::instance()->lastActivePlaylistGeometry(); } else { ba = currentPlayList()->horizontalHeader()->saveState(); } // Then append a new empty playlist to the others Playlist *p = new Playlist(_mediaPlayer, this); p->installEventFilter(this); if (!ba.isEmpty()) { p->horizontalHeader()->restoreState(ba); } // Always create an icon in Disabled mode. It will be enabled when one will provide some tracks int i = addTab(p, newPlaylistName); this->setTabIcon(i, this->defaultIcon(QIcon::Disabled)); connect(p->mediaPlaylist(), &QMediaPlaylist::mediaRemoved, this, [=](int start, int) { if (_mediaPlayer.data()->playlist() == p->mediaPlaylist() && p->mediaPlaylist()->currentIndex() == start) { _mediaPlayer.data()->stop(); } }); // Forward from inner class to MainWindow the signals connect(p, &Playlist::aboutToSendToTagEditor, this, &TabPlaylist::aboutToSendToTagEditor); connect(p, &Playlist::selectionChanged, this, &TabPlaylist::selectionChanged); // Check if tab icon should indicate that playlist has changed or not connect(p, &Playlist::contentHasChanged, this, [=]() { int playlistTabIndex = -1; for (int i = 0; i < playlists().count(); i++) { if (p == playlist(i)) { playlistTabIndex = i; break; } } if (playlistTabIndex != -1) { if (p->hash() != p->generateNewHash()) { this->setTabIcon(playlistTabIndex, this->defaultIcon(QIcon::Normal)); } } }); // Select the new empty playlist setCurrentIndex(i); uint hash = qHash(p); this->tabBar()->setTabData(i, hash); emit playlistCreated(); return p; }
MainStarterWidget::MainStarterWidget() { QVBoxLayout* layout = new QVBoxLayout(this); QWidget* w; w = new QuickStartWidget(); connect(w, SIGNAL(startRadio(RadioStation)), SIGNAL(startRadio(RadioStation))); layout->addWidget(w); w = m_recentStationsWidget = new RecentStationsWidget(); connect(w, SIGNAL(startRadio(RadioStation)), SIGNAL(startRadio(RadioStation))); connect(w, SIGNAL(showMoreRecentStations()), SIGNAL(showMoreRecentStations())); layout->addWidget(w); w = new YourStationsWidget(); connect(w, SIGNAL(startRadio(RadioStation)), SIGNAL(startRadio(RadioStation))); layout->addWidget(w); w = new MoreStationsWidget(); connect(w, SIGNAL(combo()), SIGNAL(combo())); connect(w, SIGNAL(tags()), SIGNAL(yourTags())); connect(w, SIGNAL(friends()), SIGNAL(yourFriends())); connect(w, SIGNAL(playlists()), SIGNAL(yourPlaylists())); layout->addWidget(w); }
/** Retranslate tabs' name and all playlists in this widget. */ void TabPlaylist::changeEvent(QEvent *event) { if (event->type() == QEvent::LanguageChange) { // No translation for the (+) tab button for (int i = 0; i < playlists().count(); i ++) { foreach (QLabel *label, widget(i)->findChildren<QLabel*>()) { if (label && !label->text().isEmpty()) { label->setText(QApplication::translate("TabPlaylist", label->text().toStdString().data())); } } } _closePlaylistPopup->retranslateUi(_closePlaylistPopup); } }