Ejemplo n.º 1
0
    Mpris2DBusHandler::Mpris2DBusHandler()
        : QObject( kapp )
    {
        new Mpris2RootAdaptor( this );
        new Mpris2PlayerAdaptor( this );
        // amarok extensions:
        new Mpris2AmarokAppAdaptor( this );
        new Mpris2AmarokPlayerAdaptor( this );
        QDBusConnection::sessionBus().registerObject( MPRIS2_OBJECT_PATH, this );

        connect( The::playlistActions(), SIGNAL( navigatorChanged() ),
            SLOT( updateTrackProgressionProperties() ) );
        // changing the navigator may also affect whether there is a
        // next or previous track
        connect( The::playlistActions(), SIGNAL( navigatorChanged() ),
            SLOT( updatePlaylistProperties() ) );

        connect( The::playlist()->qaim(), SIGNAL( rowsInserted(QModelIndex,int,int) ),
            SLOT( updatePlaylistProperties() ) );
        connect( The::playlist()->qaim(), SIGNAL( rowsMoved(QModelIndex,int,int,QModelIndex,int) ),
            SLOT( updatePlaylistProperties() ) );
        connect( The::playlist()->qaim(), SIGNAL( rowsRemoved(QModelIndex,int,int) ),
            SLOT( updatePlaylistProperties() ) );
        connect( qobject_cast<Playlist::ProxyBase*>(The::playlist()->qaim()), SIGNAL( activeTrackChanged(const quint64) ),
                 this, SLOT( playlistActiveTrackChanged(quint64) ) );

        EngineController *engine = The::engineController();

        connect( engine, SIGNAL( playbackStateChanged() ),
                 this, SLOT( updatePlaybackStatusProperty() ) );

        connect( engine, SIGNAL( trackChanged( Meta::TrackPtr ) ),
                 this, SLOT( updatePlaylistProperties() ) );

        connect( engine, SIGNAL( trackChanged( Meta::TrackPtr ) ),
                 this, SLOT( updateTrackProperties() ) );

        connect( engine, SIGNAL( trackPositionChanged( qint64, bool ) ),
                 this, SLOT( trackPositionChanged( qint64, bool ) ) );
        connect( engine, SIGNAL( seekableChanged( bool ) ),
                 this, SLOT( seekableChanged( bool ) ) );
        connect( engine, SIGNAL( volumeChanged( int ) ),
                 this, SLOT( volumeChanged( int ) ) );

        updateTrackProgressionProperties();
        updatePlaybackStatusProperty();
        updatePlaylistProperties();
        updateTrackProperties();
        setPropertyInternal( "Volume", static_cast<double>(The::engineController()->volume()) / 100.0 );
        setPropertyInternal( "CanSeek", The::engineController()->phononMediaObject()->isSeekable() );
    }
Ejemplo n.º 2
0
void GPXLab::pointEdited(int trackNumber, int trackSegmentNumber, int pointNumber, GPX_wrapper::TrackPointProperty properties)
{
    Q_UNUSED(trackNumber);
    Q_UNUSED(trackSegmentNumber);
    Q_UNUSED(pointNumber);

    const GPX_wptType *trkpt = gpxmw->getSelectedPoint();

    // file properties
    updateFileProperties(false);

    // track properties
    updateTrackProperties(false);

    // map
    if (properties & GPX_wrapper::latitude || properties & GPX_wrapper::longitude)
    {
        ui->mapWidget->editPoint(trackNumber, pointNumber);
        if (trkpt)
            ui->mapWidget->selectedPointSetVisible(true, trkpt->latitude, trkpt->longitude);
    }

    // diagram
    if (properties & ui->diagramWidget->getCurveMain() || properties & ui->diagramWidget->getCurveSecondary())
    {
        ui->diagramWidget->build();
        if (trkpt)
            ui->diagramWidget->select(trkpt->timestamp);
    }

    // point list
    ui->tableWidgetPoints->update();
}
Ejemplo n.º 3
0
void GPXLab::trackSelectionChanged(int trackNumber, int trackSegmentNumber, int pointNumber, const GPX_wptType *trkpt)
{
    // track properties
    updateTrackProperties(false);

    // track tree
    ui->treeTracks->select(trackNumber, trackSegmentNumber);

    // map
    ui->mapWidget->selectTrack(trackNumber);
    if (trkpt)
        ui->mapWidget->selectedPointSetVisible(true, trkpt->latitude, trkpt->longitude);
    else
        ui->mapWidget->selectedPointSetVisible(false);

    // calendar
    ui->calendarWidget->select(trackNumber);

    // diagram
    ui->diagramWidget->build();
    if (trkpt)
        ui->diagramWidget->select(trkpt->timestamp);

    // point list
    ui->tableWidgetPoints->build(pointNumber);
}
Ejemplo n.º 4
0
void GPXLab::modelPropertiesChanged()
{
    QApplication::setOverrideCursor(Qt::WaitCursor);
    QApplication::processEvents();

    // file properties
    lblStatus->setText(tr("Updating file properties..."));
    updateFileProperties(false);

    // track properties
    lblStatus->setText(tr("Updating track properties..."));
    updateTrackProperties(false);

    // track tree
    lblStatus->setText(tr("Generating track tree..."));
    ui->treeTracks->build(gpxmw);
    ui->treeTracks->select(gpxmw->getSelectedTrackNumber(), gpxmw->getSelectedTrackSegmentNumber());

    // calendar
    lblStatus->setText(tr("Generating track calendar..."));
    ui->calendarWidget->build();
    ui->calendarWidget->select(gpxmw->getSelectedTrackNumber());

    // diagram
    lblStatus->setText(tr("Generating diagram..."));
    ui->diagramWidget->build();

    // point list
    lblStatus->setText(tr("Generating point list..."));
    ui->tableWidgetPoints->build(0);

    lblStatus->setText("");
    QApplication::restoreOverrideCursor();
}
Ejemplo n.º 5
0
void GPXLab::trackMetadataChanged(int trackNumber)
{
    // track properties
    updateTrackProperties(false);

    // track tree
    ui->treeTracks->setItemName(gpxmw->getItemName(trackNumber), trackNumber);
}
Ejemplo n.º 6
0
void GPXLab::trackTimeShifted(int trackNumber, long seconds)
{
    Q_UNUSED(trackNumber);
    Q_UNUSED(seconds);

    // track properties
    updateTrackProperties(false);

    // track tree
    ui->treeTracks->build(gpxmw);

    // calendar
    ui->calendarWidget->build();

    // diagram
    ui->diagramWidget->build();

    // point list
    ui->tableWidgetPoints->build(gpxmw->getSelectedPointNumber());
}
Ejemplo n.º 7
0
void GPXLab::modelCleared()
{
    // file properties
    updateFileProperties(true);

    // track properties
    updateTrackProperties(true);

    // track tree
    ui->treeTracks->clear();

    // map
    ui->mapWidget->clear();

    // calendar
    ui->calendarWidget->clear();

    // diagram
    ui->diagramWidget->clear();

    // point list
    ui->tableWidgetPoints->clear();
}