예제 #1
0
void OktetaPart::onDocumentLoaded( Kasten2::AbstractDocument* document )
{
    if( document )
    {
        delete mByteArrayView;
        delete mDocument;

        mDocument = static_cast<Kasten2::ByteArrayDocument*>( document );
        mDocument->setReadOnly( mModus != ReadWriteModus );
        connect( mDocument->synchronizer(), SIGNAL(localSyncStateChanged(Kasten2::LocalSyncState)),
                 SLOT(onModified(Kasten2::LocalSyncState)) );

        mByteArrayView = new Kasten2::ByteArrayView( mDocument );
//     mByteArrayView->setNoOfBytesPerLine( 16 );
        mByteArrayView->setShowsNonprinting( false );
        connect( mByteArrayView, SIGNAL(hasSelectedDataChanged(bool)), SIGNAL(hasSelectedDataChanged(bool)) );

        QWidget* displayWidget = mByteArrayView->widget();
        mLayout->addWidget( displayWidget );
        mLayout->parentWidget()->setFocusProxy( displayWidget );

        foreach( Kasten2::AbstractXmlGuiController* controller, mControllers )
            controller->setTargetModel( mByteArrayView );

        setModified( false );
    }
}
void
ByteArrayViewProfileSynchronizer::setDirtyFlag( int dirtyFlag )
{
    if( mUpdatingView )
        return;

    const bool isCleanBefore = ( mDirtyFlags == 0 );

    mDirtyFlags |= dirtyFlag;

    if( isCleanBefore )
        emit localSyncStateChanged( LocalHasChanges );
}
void
ByteArrayViewProfileSynchronizer::syncFromRemote()
{
    if( (mView == 0) || (mViewProfileId.isEmpty()) )
        return;

    const ByteArrayViewProfile viewProfile = mViewProfileManager->viewProfile( mViewProfileId );
    // TODO: this is a lazy hack, simply sets all of the profile, even if not needed. Improve that.
    mDirtyFlags = 0;
    updateView( viewProfile );

    if( mView )
        emit localSyncStateChanged( LocalInSync );
}
void ByteArrayViewProfileSynchronizer::setViewProfileId( const ByteArrayViewProfile::Id& viewProfileId )
{
    if( mViewProfileId == viewProfileId )
        return;

    const bool isListeningBefore = ( ! mViewProfileId.isEmpty() );

    mViewProfileId = viewProfileId;

    // TODO: drop all changes and set view to profile if set
    mDirtyFlags = 0;
    if( ! viewProfileId.isEmpty() )
    {
        const ByteArrayViewProfile viewProfile = mViewProfileManager->viewProfile( viewProfileId );
        updateView( viewProfile );
    }

    const bool isListeningAfter = ( ! mViewProfileId.isEmpty() );

    if( isListeningAfter)
    {
        if( ! isListeningBefore  )
        {
            connect( mViewProfileManager, SIGNAL(viewProfilesChanged(QList<Kasten2::ByteArrayViewProfile>)),
                     SLOT(onViewProfilesChanged(QList<Kasten2::ByteArrayViewProfile>)) );
            connect( mViewProfileManager, SIGNAL(viewProfilesRemoved(QList<Kasten2::ByteArrayViewProfile::Id>)),
                     SLOT(onViewProfilesRemoved(QList<Kasten2::ByteArrayViewProfile::Id>)) );
            if( mView  )
            {
                connect( mView, SIGNAL(valueCodingChanged(int)), SIGNAL(valueCodingChanged(int)) );
                connect( mView, SIGNAL(charCodecChanged(QString)), SIGNAL(charCodecChanged(QString)) );
            }
        }
    }
    else
    {
        if ( isListeningBefore )
        {
            mViewProfileManager->disconnect( this );
            if( mView ) mView->disconnect( this );
        }
    }

    if( mView )
        emit localSyncStateChanged( LocalInSync );
}
예제 #5
0
void ByteArrayRawFileSynchronizer::onModelModified( bool isModified )
{
    emit localSyncStateChanged( (isModified ? LocalHasChanges : LocalInSync) );
}