feat: single app with local socket

This commit is contained in:
Gary Wang
2020-04-11 19:54:51 +08:00
parent 099284d5d4
commit 14d20fd925
6 changed files with 147 additions and 20 deletions

View File

@ -40,13 +40,15 @@ MainWindow::~MainWindow()
delete ui;
}
void MainWindow::commandlinePlayAudioFiles(QList<QUrl> audioFiles)
void MainWindow::commandlinePlayAudioFiles(QStringList audioFiles)
{
if (!audioFiles.isEmpty()) {
if (audioFiles.count() == 1) {
loadPlaylistBySingleLocalFile(audioFiles.first().toLocalFile());
QList<QUrl> audioFileUrls = strlst2urllst(audioFiles);
if (!audioFileUrls.isEmpty()) {
if (audioFileUrls.count() == 1) {
loadPlaylistBySingleLocalFile(audioFileUrls.first().toLocalFile());
} else {
createPlaylist(audioFiles);
createPlaylist(audioFileUrls);
}
m_mediaPlayer->play();
}
@ -79,6 +81,17 @@ void MainWindow::loadPlaylistBySingleLocalFile(const QString &path)
playlist->setCurrentIndex(currentFileIndex);
}
void MainWindow::localSocketPlayAudioFiles(QVariant audioFilesVariant)
{
QStringList urlStrList = audioFilesVariant.toStringList();
qDebug() << urlStrList << "MainWindow::localSocketPlayAudioFiles";
commandlinePlayAudioFiles(urlStrList);
showNormal();
activateWindow();
raise();
}
void MainWindow::closeEvent(QCloseEvent *)
{
qApp->exit();
@ -172,12 +185,14 @@ void MainWindow::loadFile()
*/
QMediaPlaylist *MainWindow::createPlaylist(QList<QUrl> urlList)
{
if (m_mediaPlayer->playlist()) {
m_mediaPlayer->playlist()->disconnect();
}
QMediaPlaylist * oldPlaylist = m_mediaPlayer->playlist();
QMediaPlaylist * playlist = new QMediaPlaylist(m_mediaPlayer);
if (oldPlaylist) {
oldPlaylist->disconnect();
oldPlaylist->deleteLater();
}
for (const QUrl & url : urlList) {
bool succ = playlist->addMedia(QMediaContent(url));
if (!succ) {
@ -253,6 +268,19 @@ QString MainWindow::ms2str(qint64 ms)
}
}
QList<QUrl> MainWindow::strlst2urllst(QStringList strlst)
{
QList<QUrl> urlList;
for (const QString & str : strlst) {
QUrl url = QUrl::fromLocalFile(str);
if (url.isValid()) {
urlList.append(url);
}
}
return urlList;
}
void MainWindow::on_volumeSlider_valueChanged(int value)
{
if (m_mediaPlayer->isMuted()) {