Switch to unified view

a/application.cpp b/application.cpp
...
...
97
    return MRDH();
97
    return MRDH();
98
}
98
}
99
99
100
100
101
Application::Application(QApplication* qapp, QObject *parent)
101
Application::Application(QApplication* qapp, QObject *parent)
102
    : QObject(parent), m_player(0), m_playlist(0), m_cdb(0), m_rdco(0),
102
    : QObject(parent), m_player(0), m_cdb(0), m_rdco(0),
103
      m_avto(0), m_ohtmo(0), m_ohvlo(0), m_ohpro(0),
103
      m_avto(0), m_ohtmo(0), m_ohvlo(0), m_ohpro(0),
104
      m_ui_playlist(0), m_sctool(0), m_settings(0), m_app(qapp),
104
      m_ui_playlist(0), m_sctool(0), m_settings(0), m_app(qapp),
105
      m_initialized(false),
105
      m_initialized(false), m_playlistIsPlaylist(false),
106
      m_ohsourcetype(OHProductQO::OHPR_SourceUnknown)
106
      m_ohsourcetype(OHProductQO::OHPR_SourceUnknown)
107
{
107
{
108
    m_settings = CSettingsStorage::getInstance();
108
    m_settings = CSettingsStorage::getInstance();
109
109
110
    QString version = UPPLAY_VERSION;
110
    QString version = UPPLAY_VERSION;
...
...
271
    dlg.rndsLW->addItem("Radio");
271
    dlg.rndsLW->addItem("Radio");
272
    if (!dlg.exec()) {
272
    if (!dlg.exec()) {
273
        return;
273
        return;
274
    }
274
    }
275
    int row = dlg.rndsLW->currentRow();
275
    int row = dlg.rndsLW->currentRow();
276
    if (m_playlist) {
276
    m_playlist->psl_stop();
277
        m_playlist->psl_stop();
278
    }
277
    m_player->stopped();
279
    m_player->stopped();
278
    deleteZ(m_playlist);
279
    if (row == 1) {
280
    if (row == 1) {
280
        QString fn = QDir(Helper::getSharePath()).filePath("radiolist.xml");
281
        QString fn = QDir(Helper::getSharePath()).filePath("radiolist.xml");
281
        m_playlist = new PlaylistLOCRD(m_avto, fn.toLocal8Bit());
282
        m_playlist = shared_ptr<Playlist>(new PlaylistLOCRD(m_avto,
283
                                                            fn.toLocal8Bit()));
284
        m_playlistIsPlaylist = false;
282
    } else {
285
    } else {
283
        m_playlist = new PlaylistAVT(m_avto, m_rdr->desc()->UDN);
286
        m_playlist = shared_ptr<Playlist>(new PlaylistAVT(m_avto,
287
                                                          m_rdr->desc()->UDN));
288
        m_playlistIsPlaylist = true;
284
    }
289
    }
285
    playlist_connections();
290
    playlist_connections();
286
}
291
}
287
292
288
void Application::openSongcast()
293
void Application::openSongcast()
...
...
315
    }
320
    }
316
}
321
}
317
322
318
bool Application::setupRenderer(const string& uid)
323
bool Application::setupRenderer(const string& uid)
319
{
324
{
320
    deleteZ(m_playlist);
321
    deleteZ(m_rdco);
325
    deleteZ(m_rdco);
322
    deleteZ(m_avto);
326
    deleteZ(m_avto);
323
    deleteZ(m_ohtmo);
327
    deleteZ(m_ohtmo);
324
    deleteZ(m_ohvlo);
328
    deleteZ(m_ohvlo);
325
    deleteZ(m_ohpro);
329
    deleteZ(m_ohpro);
...
...
373
    }
377
    }
374
378
375
    // Keep this after avt object creation !
379
    // Keep this after avt object creation !
376
    if (!m_playlist) {
380
    if (!m_playlist) {
377
        qDebug() <<"Application::setupRenderer: using AVT playlist";
381
        qDebug() <<"Application::setupRenderer: using AVT playlist";
378
        m_playlist = new PlaylistAVT(m_avto, m_rdr->desc()->UDN);
382
        m_playlist = shared_ptr<Playlist>(new PlaylistAVT(m_avto,
383
                                                         m_rdr->desc()->UDN));
384
        m_playlistIsPlaylist = true;
379
    }
385
    }
380
386
381
387
382
    // Use either renderingControl or ohvolume for volume control.
388
    // Use either renderingControl or ohvolume for volume control.
383
    if (m_rdr->rdc()) {
389
    if (m_rdr->rdc()) {
...
...
399
    return true;
405
    return true;
400
}
406
}
401
407
402
void Application::createPlaylistForOpenHomeSource()
408
void Application::createPlaylistForOpenHomeSource()
403
{
409
{
404
    deleteZ(m_playlist);
405
406
    m_ohsourcetype = m_ohpro->getSourceType();
410
    m_ohsourcetype = m_ohpro->getSourceType();
407
411
408
    switch (m_ohsourcetype) {
412
    switch (m_ohsourcetype) {
409
413
410
    case OHProductQO::OHPR_SourceRadio:
414
    case OHProductQO::OHPR_SourceRadio:
...
...
414
            qDebug() << "Application::createPlaylistForOpenHomeSource: "
418
            qDebug() << "Application::createPlaylistForOpenHomeSource: "
415
                "radio mode, but can't connect";
419
                "radio mode, but can't connect";
416
            return;
420
            return;
417
        }
421
        }
418
        OHIFH ohif = m_rdr->ohif();
422
        OHIFH ohif = m_rdr->ohif();
419
        m_playlist = new PlaylistOHRD(new OHRad(ohrd), ohif ?
423
        m_playlist = shared_ptr<Playlist>(
420
                                      new OHInf(ohif) : 0);
424
            new PlaylistOHRD(new OHRad(ohrd), ohif ? new OHInf(ohif) : 0));
425
        m_playlistIsPlaylist = false;
421
    }
426
    }
422
    break;
427
    break;
423
428
424
    case OHProductQO::OHPR_SourceReceiver:
429
    case OHProductQO::OHPR_SourceReceiver:
425
    {
430
    {
...
...
427
        if (!ohrc) {
432
        if (!ohrc) {
428
            qDebug() << "Application::createPlaylistForOpenHomeSource: "
433
            qDebug() << "Application::createPlaylistForOpenHomeSource: "
429
                "receiver mode, but can't connect";
434
                "receiver mode, but can't connect";
430
            return;
435
            return;
431
        }
436
        }
432
        m_playlist = new PlaylistOHRCV(ohrc,
437
        m_playlist = shared_ptr<Playlist>(
433
                                       u8s2qs(m_rdr->desc()->friendlyName));
438
            new PlaylistOHRCV(ohrc, u8s2qs(m_rdr->desc()->friendlyName)));
439
        m_playlistIsPlaylist = false;
434
    }
440
    }
435
    break;
441
    break;
436
442
437
    case OHProductQO::OHPR_SourcePlaylist:
443
    case OHProductQO::OHPR_SourcePlaylist:
438
    {
444
    {
439
        OHPLH ohpl = m_rdr->ohpl();
445
        OHPLH ohpl = m_rdr->ohpl();
440
        if (ohpl) {
446
        if (ohpl) {
447
            m_playlist = shared_ptr<Playlist>(
441
            m_playlist = new PlaylistOHPL(new OHPlayer(ohpl));
448
                new PlaylistOHPL(new OHPlayer(ohpl)));
449
            m_playlistIsPlaylist = true;
442
        }
450
        }
443
    }
451
    }
444
    break;
452
    break;
445
453
446
    default:
454
    default:
447
    {
455
    {
448
        m_playlist = new PlaylistNULL();
456
        m_playlist = shared_ptr<Playlist>(new PlaylistNULL());
457
        m_playlistIsPlaylist = false;
449
    }
458
    }
450
    break;
459
    break;
451
    }
460
    }
452
461
453
    if (!m_playlist) {
462
    if (!m_playlist) {
...
...
501
510
502
// We may switch the playlist when an openhome renderer switches sources. So
511
// We may switch the playlist when an openhome renderer switches sources. So
503
// set the playlist connections in a separate function
512
// set the playlist connections in a separate function
504
void Application::playlist_connections()
513
void Application::playlist_connections()
505
{
514
{
515
    if (m_playlistIsPlaylist)
506
    m_cdb->setPlaylist(m_playlist);
516
        m_cdb->setPlaylist(m_playlist);
517
    else
518
        m_cdb->setPlaylist(shared_ptr<Playlist>());
507
519
508
    // Use either ohtime or avt for time updates
520
    // Use either ohtime or avt for time updates
509
    if (m_ohtmo) {
521
    if (m_ohtmo) {
510
        CONNECT(m_ohtmo, secsInSongChanged(quint32),
522
        CONNECT(m_ohtmo, secsInSongChanged(quint32),
511
                m_playlist, onRemoteSecsInSong(quint32));
523
                m_playlist.get(), onRemoteSecsInSong(quint32));
512
    } else if (m_avto) {
524
    } else if (m_avto) {
513
        CONNECT(m_avto, secsInSongChanged(quint32),
525
        CONNECT(m_avto, secsInSongChanged(quint32),
514
                m_playlist, onRemoteSecsInSong(quint32));
526
                m_playlist.get(), onRemoteSecsInSong(quint32));
515
    }
527
    }
516
528
517
    CONNECT(m_player, play(), m_playlist, psl_play());
529
    CONNECT(m_player, play(), m_playlist.get(), psl_play());
518
    CONNECT(m_player, pause(), m_playlist, psl_pause());
530
    CONNECT(m_player, pause(), m_playlist.get(), psl_pause());
519
    CONNECT(m_player, stop(), m_playlist, psl_stop());
531
    CONNECT(m_player, stop(), m_playlist.get(), psl_stop());
520
    CONNECT(m_player, forward(), m_playlist, psl_forward());
532
    CONNECT(m_player, forward(), m_playlist.get(), psl_forward());
521
    CONNECT(m_player, backward(), m_playlist, psl_backward());
533
    CONNECT(m_player, backward(), m_playlist.get(), psl_backward());
522
    CONNECT(m_player, sig_load_playlist(), m_playlist, psl_load_playlist());
534
    CONNECT(m_player, sig_load_playlist(), m_playlist.get(), psl_load_playlist());
523
    CONNECT(m_player, sig_save_playlist(), m_playlist, psl_save_playlist());
535
    CONNECT(m_player, sig_save_playlist(), m_playlist.get(), psl_save_playlist());
524
    CONNECT(m_player, sig_seek(int), m_playlist, psl_seek(int));
536
    CONNECT(m_player, sig_seek(int), m_playlist.get(), psl_seek(int));
525
537
526
    CONNECT(m_playlist, connectionLost(), this, reconnectOrChoose());
538
    CONNECT(m_playlist.get(), connectionLost(), this, reconnectOrChoose());
527
    CONNECT(m_playlist, playlistModeChanged(Playlist_Mode),
539
    CONNECT(m_playlist.get(), playlistModeChanged(Playlist_Mode),
528
            m_ui_playlist, setPlayerMode(Playlist_Mode));
540
            m_ui_playlist, setPlayerMode(Playlist_Mode));
529
    CONNECT(m_playlist, sig_track_metadata(const MetaData&),
541
    CONNECT(m_playlist.get(), sig_track_metadata(const MetaData&),
530
            m_player, update_track(const MetaData&));
542
            m_player, update_track(const MetaData&));
531
    CONNECT(m_playlist, sig_stopped(),  m_player, stopped());
543
    CONNECT(m_playlist.get(), sig_stopped(),  m_player, stopped());
532
    CONNECT(m_playlist, sig_paused(),  m_player, paused());
544
    CONNECT(m_playlist.get(), sig_paused(),  m_player, paused());
533
    CONNECT(m_playlist, sig_playing(),  m_player, playing());
545
    CONNECT(m_playlist.get(), sig_playing(),  m_player, playing());
534
    CONNECT(m_playlist, sig_playing_track_changed(int),
546
    CONNECT(m_playlist.get(), sig_playing_track_changed(int),
535
            m_ui_playlist, track_changed(int));
547
            m_ui_playlist, track_changed(int));
536
    CONNECT(m_playlist, sig_playlist_updated(MetaDataList&, int, int),
548
    CONNECT(m_playlist.get(), sig_playlist_updated(MetaDataList&, int, int),
537
            m_ui_playlist, fillPlaylist(MetaDataList&, int, int));
549
            m_ui_playlist, fillPlaylist(MetaDataList&, int, int));
538
    CONNECT(m_ui_playlist, selection_min_row(int),
550
    CONNECT(m_ui_playlist, selection_min_row(int),
539
            m_playlist, psl_selection_min_row(int));
551
            m_playlist.get(), psl_selection_min_row(int));
540
    CONNECT(m_ui_playlist, playlist_mode_changed(const Playlist_Mode&),
552
    CONNECT(m_ui_playlist, playlist_mode_changed(const Playlist_Mode&),
541
            m_playlist, psl_change_mode(const Playlist_Mode&));
553
            m_playlist.get(), psl_change_mode(const Playlist_Mode&));
542
    CONNECT(m_ui_playlist, dropped_tracks(const MetaDataList&, int),
554
    CONNECT(m_ui_playlist, dropped_tracks(const MetaDataList&, int),
543
            m_playlist, psl_insert_tracks(const MetaDataList&, int));
555
            m_playlist.get(), psl_insert_tracks(const MetaDataList&, int));
544
    CONNECT(m_ui_playlist, sig_rows_removed(const QList<int>&, bool),
556
    CONNECT(m_ui_playlist, sig_rows_removed(const QList<int>&, bool),
545
            m_playlist, psl_remove_rows(const QList<int>&, bool));
557
            m_playlist.get(), psl_remove_rows(const QList<int>&, bool));
546
    CONNECT(m_ui_playlist, sig_sort_tno(),
558
    CONNECT(m_ui_playlist, sig_sort_tno(),
547
            m_playlist, psl_sort_by_tno());
559
            m_playlist.get(), psl_sort_by_tno());
548
    CONNECT(m_ui_playlist, row_activated(int),
560
    CONNECT(m_ui_playlist, row_activated(int),
549
            m_playlist, psl_change_track(int));
561
            m_playlist.get(), psl_change_track(int));
550
    CONNECT(m_ui_playlist, clear_playlist(),
562
    CONNECT(m_ui_playlist, clear_playlist(),
551
            m_playlist, psl_clear_playlist());
563
            m_playlist.get(), psl_clear_playlist());
552
564
553
    m_playlist->update_state();
565
    m_playlist->update_state();
554
}
566
}
555
567
556
void Application::renderer_connections()
568
void Application::renderer_connections()