Source Code (Use browser search to find items of interest.)

Class Index

qt'QSessionManager (./qt-2.1.0/src/kernel/qsessionmanager.h:39)

class Q_EXPORT  QSessionManager : public QObject
{
    Q_OBJECT
    QSessionManager( QApplication *app, QString &session );
    ~QSessionManager();
public:
    QString sessionId() const;
#if defined(_WS_X11_)
    void* handle() const;
#endif

    bool allowsInteraction();
    bool allowsErrorInteraction();
    void release();

    void cancel();

    enum RestartHint {
	RestartIfRunning,
	RestartAnyway,
	RestartImmediately,
	RestartNever
    };
    void setRestartHint( RestartHint );
    RestartHint restartHint() const;

    void setRestartCommand( const QStringList& );
    QStringList restartCommand() const;
    void setDiscardCommand( const QStringList& );
    QStringList discardCommand() const;

    void setProperty( const QString& name, const QString& value );
    void setProperty( const QString& name, const QStringList& value );

    bool isPhase2() const;
    void requestPhase2();

private:
    friend class QApplication;
    friend class QBaseApplication;
    QSessionManagerData* d;
};


qt'QSessionManager::QSessionManager() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4255)

QSessionManager::QSessionManager( QApplication * app, QString &session )
    : QObject( app, "session manager" )
{
    d = new QSessionManagerData;
    d->sessionId = session;
    d->restartHint = RestartIfRunning;
}


qt'QSessionManager::~QSessionManager() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4263)

QSessionManager::~QSessionManager()
{
    delete d;
}


qt'QSessionManager::sessionId() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4268)

QString QSessionManager::sessionId() const
{
    return d->sessionId;
}


qt'QSessionManager::handle() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4273)

void* QSessionManager::handle() const
{
    return 0;
}


qt'QSessionManager::allowsInteraction() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4278)

bool QSessionManager::allowsInteraction()
{
    return TRUE;
}


qt'QSessionManager::allowsErrorInteraction() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4283)

bool QSessionManager::allowsErrorInteraction()
{
    return TRUE;
}


qt'QSessionManager::release() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4288)

void QSessionManager::release()
{
}


qt'QSessionManager::cancel() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4292)

void QSessionManager::cancel()
{
}


qt'QSessionManager::setRestartHint() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4296)

void QSessionManager::setRestartHint( QSessionManager::RestartHint hint)
{
    d->restartHint = hint;
}

QSessionManager::RestartHint QSessionManager::restartHint() const
{
    return d->restartHint;
}


qt'QSessionManager::setRestartCommand() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4306)

void QSessionManager::setRestartCommand( const QStringList& command)
{
    d->restartCommand = command;
}


qt'QSessionManager::restartCommand() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4311)

QStringList QSessionManager::restartCommand() const
{
    return d->restartCommand;
}


qt'QSessionManager::setDiscardCommand() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4316)

void QSessionManager::setDiscardCommand( const QStringList& command)
{
    d->discardCommand = command;
}


qt'QSessionManager::discardCommand() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4321)

QStringList QSessionManager::discardCommand() const
{
    return d->discardCommand;
}


qt'QSessionManager::setProperty() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4326)

void QSessionManager::setProperty( const QString&, const QString&)
{
}


qt'QSessionManager::setProperty() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4330)

void QSessionManager::setProperty( const QString&, const QStringList& )
{
}


qt'QSessionManager::isPhase2() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4334)

bool QSessionManager::isPhase2() const
{
    return FALSE;
}


qt'QSessionManager::requestPhase2() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4339)

void QSessionManager::requestPhase2()
{
}

#else // QT_SM_SUPPORT


qt'QSessionManager::QSessionManager() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4607)

QSessionManager::QSessionManager( QApplication * app, QString &session )
    : QObject( app, "session manager" )
{
    d = new QSessionManagerData;
    d->sessionId = session;
    d->restartHint = RestartIfRunning;

    resetSmState();
    char cerror[256];
    char* myId = 0;
    char* prevId = (char*)session.latin1(); // we know what we are doing

    SmcCallbacks cb;
    cb.save_yourself.callback = sm_saveYourselfCallback;
    cb.save_yourself.client_data = (SmPointer) this;
    cb.die.callback = sm_dieCallback;
    cb.die.client_data = (SmPointer) this;
    cb.save_complete.callback = sm_saveCompleteCallback;
    cb.save_complete.client_data = (SmPointer) this;
    cb.shutdown_cancelled.callback = sm_shutdownCancelledCallback;
    cb.shutdown_cancelled.client_data = (SmPointer) this;

    // avoid showing a warning message below
    if (!::getenv("SESSION_MANAGER") )
	return;

    smcConnection = SmcOpenConnection( 0, 0, 1, 0,
				       SmcSaveYourselfProcMask |
				       SmcDieProcMask |
				       SmcSaveCompleteProcMask |
				       SmcShutdownCancelledProcMask,
				       &cb,
				       prevId,
				       &myId,
				       255,
				       cerror );

    d->sessionId = QString::fromLatin1( myId );
    ::free( myId ); // it was allocated by C
    session = d->sessionId;

    QString error = cerror;
    if (!smcConnection ) {
	qWarning("Session management error: %s", error.latin1() );
    }
    else {
	sm_receiver = new QSmSocketReceiver(  IceConnectionNumber( SmcGetIceConnection( smcConnection ) ) );
    }
}


qt'QSessionManager::~QSessionManager() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4657)

QSessionManager::~QSessionManager()
{
    if ( smcConnection )
      SmcCloseConnection( smcConnection, 0, 0 );
    smcConnection = 0;
    delete sm_receiver;
    delete d;
}


qt'QSessionManager::sessionId() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4666)

QString QSessionManager::sessionId() const
{
    return d->sessionId;
}


qt'QSessionManager::handle() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4671)

void* QSessionManager::handle() const
{
    return (void*) smcConnection;
}



qt'QSessionManager::allowsInteraction() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4677)

bool QSessionManager::allowsInteraction()
{
    if ( sm_interactionActive )
	return TRUE;

    if ( sm_waitingForInteraction )
	return FALSE;

    if ( sm_interactStyle == SmInteractStyleAny ) {
	sm_waitingForInteraction =  SmcInteractRequest( smcConnection, SmDialogNormal,
							sm_interactCallback, (SmPointer*) this );
    }
    if ( sm_waitingForInteraction ) {
	qApp->enter_loop();
	sm_waitingForInteraction = FALSE;
	if ( sm_smActive ) { // not cancelled
	    sm_interactionActive = TRUE;
	    sm_blockUserInput = FALSE;
	    return TRUE;
	}
    }
    return FALSE;
}


qt'QSessionManager::allowsErrorInteraction() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4701)

bool QSessionManager::allowsErrorInteraction()
{
    if ( sm_interactionActive )
	return TRUE;

    if ( sm_waitingForInteraction )
	return FALSE;

    if ( sm_interactStyle == SmInteractStyleAny || sm_interactStyle == SmInteractStyleErrors ) {
	sm_waitingForInteraction =  SmcInteractRequest( smcConnection, SmDialogError,
							sm_interactCallback, (SmPointer*) this );
    }
    if ( sm_waitingForInteraction ) {
	qApp->enter_loop();
	sm_waitingForInteraction = FALSE;
	if ( sm_smActive ) { // not cancelled
	    sm_interactionActive = TRUE;
	    sm_blockUserInput = FALSE;
	    return TRUE;
	}
    }
    return FALSE;
}


qt'QSessionManager::release() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4725)

void QSessionManager::release()
{
    if ( sm_interactionActive ) {
	SmcInteractDone( smcConnection, FALSE );
	sm_interactionActive = FALSE;
	if ( sm_smActive && sm_isshutdown )
	    sm_blockUserInput = TRUE;
    }
}


qt'QSessionManager::cancel() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4735)

void QSessionManager::cancel()
{
    sm_cancel = TRUE;
}


qt'QSessionManager::setRestartHint() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4740)

void QSessionManager::setRestartHint( QSessionManager::RestartHint hint)
{
    d->restartHint = hint;
}

QSessionManager::RestartHint QSessionManager::restartHint() const
{
    return d->restartHint;
}


qt'QSessionManager::setRestartCommand() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4750)

void QSessionManager::setRestartCommand( const QStringList& command)
{
    d->restartCommand = command;
}


qt'QSessionManager::restartCommand() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4755)

QStringList QSessionManager::restartCommand() const
{
    return d->restartCommand;
}


qt'QSessionManager::setDiscardCommand() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4760)

void QSessionManager::setDiscardCommand( const QStringList& command)
{
    d->discardCommand = command;
}


qt'QSessionManager::discardCommand() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4765)

QStringList QSessionManager::discardCommand() const
{
    return d->discardCommand;
}


qt'QSessionManager::setProperty() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4770)

void QSessionManager::setProperty( const QString& name, const QString& value)
{
    SmPropValue prop;
    prop.length = value.length();
    prop.value = (SmPointer) value.utf8().data();
    sm_setProperty( name.latin1(), SmARRAY8, 1, &prop );
}


qt'QSessionManager::setProperty() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4778)

void QSessionManager::setProperty( const QString& name, const QStringList& value)
{
    SmPropValue *prop = new SmPropValue[ value.count() ];
    int count = 0;
    for ( QStringList::ConstIterator it = value.begin(); it != value.end(); ++it ) {
      prop[ count ].length = (*it).length();
      prop[ count ].value = (char*)(*it).utf8().data();
      ++count;
    }
    sm_setProperty( name.latin1(), SmLISTofARRAY8, count, prop );
    delete [] prop;
}


qt'QSessionManager::isPhase2() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4791)

bool QSessionManager::isPhase2() const
{
    return sm_in_phase2;
}


qt'QSessionManager::requestPhase2() (./qt-2.1.0/src/kernel/qapplication_x11.cpp:4796)

void QSessionManager::requestPhase2()
{
    sm_phase2 = TRUE;
}