The branch, master has been updated via fd0ba68dad5db7ecd7608623c64811ee58d64895 (commit) from ca94e0810266761b80454a616d68b0f06bad10c7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit fd0ba68dad5db7ecd7608623c64811ee58d64895 Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Wed Mar 13 18:48:38 2013 +0100 add select session dialog, continue development ----------------------------------------------------------------------- Summary of changes: messagebox.cpp | 2 +- messagebox.h | 6 +- messagebox.ui | 4 +- ...usframeapplications.cpp => sessionlistframe.cpp | 30 +++- ...atusframeapplications.cpp => sessionlistframe.h | 26 ++-- sessionlistframe.ui | 144 ++++++++++++++++++++ sessionselecter.cpp | 95 +++++++++++++ ...tatusframeapplications.cpp => sessionselecter.h | 35 ++--- sshconnection.cpp | 2 +- x2goclient2.pro | 7 + x2gosession.cpp | 66 +++++++++ x2gosession.h | 9 +- x2gosessiondata.cpp | 87 ++++++++++++ sessionstatusframe.h => x2gosessiondata.h | 49 +++---- 14 files changed, 492 insertions(+), 70 deletions(-) copy sessionstatusframeapplications.cpp => sessionlistframe.cpp (50%) copy sessionstatusframeapplications.cpp => sessionlistframe.h (79%) create mode 100644 sessionlistframe.ui create mode 100644 sessionselecter.cpp copy sessionstatusframeapplications.cpp => sessionselecter.h (72%) create mode 100644 x2gosessiondata.cpp copy sessionstatusframe.h => x2gosessiondata.h (62%) The diff of changes is: diff --git a/messagebox.cpp b/messagebox.cpp index ca2291d..fcba505 100644 --- a/messagebox.cpp +++ b/messagebox.cpp @@ -1,5 +1,5 @@ /************************************************************************** -* Copyright (C) 2005-2012 by Oleksandr Shneyder * +* Copyright (C) 2005-2013 by Oleksandr Shneyder * * o.shneyder@phoca-gmbh.de * * * * This program is free software; you can redistribute it and/or modify * diff --git a/messagebox.h b/messagebox.h index 7b216dd..da40703 100644 --- a/messagebox.h +++ b/messagebox.h @@ -1,5 +1,5 @@ /************************************************************************** -* Copyright (C) 2005-2012 by Oleksandr Shneyder * +* Copyright (C) 2005-2013 by Oleksandr Shneyder * * o.shneyder@phoca-gmbh.de * * * * This program is free software; you can redistribute it and/or modify * @@ -34,7 +34,7 @@ public: X2GO_PROPERTY_GETTER(QPushButton*, pbCancel) X2GO_PROPERTY_GETTER(QPushButton*, pbOk) enum Buttons {YES=1,NO=2,OK=8,CANCEL=16}; -private: +protected: QEventLoop* loop; private slots: void slotResize(QResizeEvent* event); @@ -50,7 +50,7 @@ public: QString pixPath=QString::null); MessageBox(); virtual ~MessageBox(); - Buttons exec(); + virtual Buttons exec(); void setupDialog(QString pix, QString text, int buttons, QString inputLabel = QString::null, QLineEdit::EchoMode echoMode = QLineEdit::Normal); }; diff --git a/messagebox.ui b/messagebox.ui index d18f5e6..635c03f 100644 --- a/messagebox.ui +++ b/messagebox.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>577</width> - <height>227</height> + <width>623</width> + <height>206</height> </rect> </property> <property name="windowTitle"> diff --git a/sessionstatusframeapplications.cpp b/sessionlistframe.cpp similarity index 50% copy from sessionstatusframeapplications.cpp copy to sessionlistframe.cpp index f6a827e..923347a 100644 --- a/sessionstatusframeapplications.cpp +++ b/sessionlistframe.cpp @@ -19,20 +19,36 @@ ***************************************************************************/ -#include "sessionstatusframeapplications.h" - -SessionStatusFrameApplications::SessionStatusFrameApplications(QWidget* parent, Qt::WindowFlags f): QFrame(parent, f) +#include "sessionlistframe.h" +#include <QScrollBar> +SessionListFrame::SessionListFrame(QWidget* parent, Qt::WindowFlags f): QFrame(parent, f) { - session=0; setupUi(this); + treeWidget->header()->setStyleSheet("border-image: url(:/svg/transparent.svg);border-top: 0px transparent; " + "border-bottom: 0px transparent;border-right: 0px transparent; border-left: 0px transparent"); + treeWidget->horizontalScrollBar()->setStyleSheet("border-image: url(:/svg/transparent.svg);border-top: 0px transparent; " + "border-bottom: 0px transparent;border-right: 0px transparent; border-left: 0px transparent"); + treeWidget->verticalScrollBar()->setStyleSheet("border-image: url(:/svg/transparent.svg);border-top: 0px transparent; " + "border-bottom: 0px transparent;border-right: 0px transparent; border-left: 0px transparent"); + for(int i=0; i<treeWidget->header()->count(); ++i) + treeWidget->headerItem()->setBackgroundColor(i,QColor(0xed,0xed,0xed,255)); + checkBox->setChecked(false); + slotShowAdvanced(false); } -SessionStatusFrameApplications::~SessionStatusFrameApplications() +void SessionListFrame::slotShowAdvanced(bool show) { + treeWidget->header()->setSectionHidden(3,!show); + treeWidget->header()->setSectionHidden(4,!show); + treeWidget->header()->setSectionHidden(5,!show); + treeWidget->header()->setSectionHidden(6,!show); + for(int i=0; i<treeWidget->header()->count(); ++i) + treeWidget->resizeColumnToContents(i); } -void SessionStatusFrameApplications::setSession(X2GoSession* session) +SessionListFrame::~SessionListFrame() { - this->session=session; + } + diff --git a/sessionstatusframeapplications.cpp b/sessionlistframe.h similarity index 79% copy from sessionstatusframeapplications.cpp copy to sessionlistframe.h index f6a827e..d564fc9 100644 --- a/sessionstatusframeapplications.cpp +++ b/sessionlistframe.h @@ -19,20 +19,18 @@ ***************************************************************************/ -#include "sessionstatusframeapplications.h" +#ifndef SESSIONLISTFRAME_H +#define SESSIONLISTFRAME_H +#include "ui_sessionlistframe.h" -SessionStatusFrameApplications::SessionStatusFrameApplications(QWidget* parent, Qt::WindowFlags f): QFrame(parent, f) +class SessionListFrame: public QFrame, public Ui_SessionListFrame { - session=0; - setupUi(this); -} + Q_OBJECT +public: + explicit SessionListFrame(QWidget* parent = 0, Qt::WindowFlags f = 0); + ~SessionListFrame(); +private slots: + void slotShowAdvanced(bool show); +}; -SessionStatusFrameApplications::~SessionStatusFrameApplications() -{ - -} - -void SessionStatusFrameApplications::setSession(X2GoSession* session) -{ - this->session=session; -} +#endif // SESSIONLISTFRAME_H diff --git a/sessionlistframe.ui b/sessionlistframe.ui new file mode 100644 index 0000000..ec14d94 --- /dev/null +++ b/sessionlistframe.ui @@ -0,0 +1,144 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>SessionListFrame</class> + <widget class="QFrame" name="SessionListFrame"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>615</width> + <height>165</height> + </rect> + </property> + <property name="windowTitle"> + <string>Frame</string> + </property> + <property name="styleSheet"> + <string notr="true">border-image: url(:/svg/transparent.svg);border-top: 0px transparent; border-bottom: 0px transparent;border-right: 0px transparent; border-left: 0px transparent</string> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QTreeWidget" name="treeWidget"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="styleSheet"> + <string notr="true">border-image: url(:/svg/messageboxbutton.svg);border-top: 2px transparent; border-bottom: 2px transparent;border-right: 2px transparent; border-left: 2px transparent</string> + </property> + <property name="alternatingRowColors"> + <bool>false</bool> + </property> + <property name="rootIsDecorated"> + <bool>false</bool> + </property> + <property name="itemsExpandable"> + <bool>false</bool> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <property name="allColumnsShowFocus"> + <bool>true</bool> + </property> + <property name="headerHidden"> + <bool>false</bool> + </property> + <property name="expandsOnDoubleClick"> + <bool>false</bool> + </property> + <attribute name="headerVisible"> + <bool>true</bool> + </attribute> + <attribute name="headerCascadingSectionResizes"> + <bool>true</bool> + </attribute> + <attribute name="headerHighlightSections"> + <bool>true</bool> + </attribute> + <attribute name="headerShowSortIndicator" stdset="0"> + <bool>true</bool> + </attribute> + <attribute name="headerStretchLastSection"> + <bool>false</bool> + </attribute> + <column> + <property name="text"> + <string>Session</string> + </property> + </column> + <column> + <property name="text"> + <string>Type</string> + </property> + </column> + <column> + <property name="text"> + <string>Status</string> + </property> + </column> + <column> + <property name="text"> + <string>Display</string> + </property> + </column> + <column> + <property name="text"> + <string>Creation time</string> + </property> + </column> + <column> + <property name="text"> + <string>Client IP</string> + </property> + </column> + <column> + <property name="text"> + <string>Session ID</string> + </property> + </column> + </widget> + </item> + <item> + <widget class="QCheckBox" name="checkBox"> + <property name="focusPolicy"> + <enum>Qt::NoFocus</enum> + </property> + <property name="text"> + <string>Adavnced</string> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>checkBox</sender> + <signal>toggled(bool)</signal> + <receiver>SessionListFrame</receiver> + <slot>slotShowAdvanced(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>88</x> + <y>146</y> + </hint> + <hint type="destinationlabel"> + <x>4</x> + <y>10</y> + </hint> + </hints> + </connection> + </connections> + <slots> + <slot>slotShowAdvanced(bool)</slot> + </slots> +</ui> diff --git a/sessionselecter.cpp b/sessionselecter.cpp new file mode 100644 index 0000000..208c20e --- /dev/null +++ b/sessionselecter.cpp @@ -0,0 +1,95 @@ +/************************************************************************** +* Copyright (C) 2005-2013 by Oleksandr Shneyder * +* o.shneyder@phoca-gmbh.de * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +* This program is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU General Public License for more details. * +* * +* You should have received a copy of the GNU General Public License * +* along with this program; if not, write to the * +* Free Software Foundation, Inc., * +* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * +***************************************************************************/ + +#include "sessionselecter.h" +#include "sessionlistframe.h" + +#include "x2goapplication.h" +#include "workarea.h" +#include <QDateTime> + +SessionSelecter::SessionSelecter(const QList<X2GoSessionData>& sessions) +{ + pbNo->hide(); + pbYes->setText(tr("Resume selected")); + pbYes->setEnabled(false); + pbOk->setText(tr("New session")); + lPixmap->hide(); + listFrame=new SessionListFrame(frame); + vlDisplayLayout->insertWidget(1,listFrame); + foreach (X2GoSessionData data, sessions) + { + QTreeWidgetItem* item=new QTreeWidgetItem(listFrame->treeWidget); + QString name=X2GoApplication::instance()->getReadableDesktopName(data.get_command()); + if(name.length()<=0) + name=X2GoApplication::instance()->getReadableAppName(data.get_command()); + if(name.length()<=0) + name=data.get_command(); + item->setText(0, name); + switch(data.get_sessionType()) + { + case X2GoSessionData::DESKTOP: + item->setText(1, tr("Desktop")); + break; + case X2GoSessionData::ROOTLESS: + item->setText(1, tr("Single application")); + break; + case X2GoSessionData::SHADOW: + break; + } + if(data.get_status()=="S") + { + item->setText(2, tr("Suspended")); + } + else + { + item->setText(2, tr("Running")); + } + item->setText(3,data.get_display()); + + QDateTime dt=QDateTime::fromString(data.get_creationTime(), Qt::ISODate); + item->setText(4,dt.toString(Qt::SystemLocaleShortDate)); + item->setText(5,data.get_clientIp()); + item->setText(6,data.get_sessionId()); + } + for(int i=0; i<listFrame->treeWidget->header()->count(); ++i) + listFrame->treeWidget->resizeColumnToContents(i); + connect(listFrame->treeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(slotEnableButton())); +} + +void SessionSelecter::slotEnableButton() +{ + pbYes->setEnabled(true); +} + + +SessionSelecter::~SessionSelecter() +{ + +} + +MessageBox::Buttons SessionSelecter::exec() +{ + lText->setFixedHeight(lText->sizeHint().height()); + listFrame->setFixedHeight(listFrame->sizeHint().height()); + setFixedHeight(sizeHint().height()+listFrame->sizeHint().height()); + X2GoApplication::instance()->get_workArea()->setEnabled(false); + return (MessageBox::Buttons)loop->exec(); +} diff --git a/sessionstatusframeapplications.cpp b/sessionselecter.h similarity index 72% copy from sessionstatusframeapplications.cpp copy to sessionselecter.h index f6a827e..4a333c7 100644 --- a/sessionstatusframeapplications.cpp +++ b/sessionselecter.h @@ -1,4 +1,5 @@ -/************************************************************************** + +class SessionListFrame;/************************************************************************** * Copyright (C) 2005-2013 by Oleksandr Shneyder * * o.shneyder@phoca-gmbh.de * * * @@ -18,21 +19,23 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#ifndef SESSIONSELECTER_H +#define SESSIONSELECTER_H -#include "sessionstatusframeapplications.h" - -SessionStatusFrameApplications::SessionStatusFrameApplications(QWidget* parent, Qt::WindowFlags f): QFrame(parent, f) -{ - session=0; - setupUi(this); -} - -SessionStatusFrameApplications::~SessionStatusFrameApplications() +#include "messagebox.h" +#include "x2gosessiondata.h" +class SessionListFrame; +class SessionSelecter: public MessageBox { + Q_OBJECT +public: + SessionSelecter(const QList< X2GoSessionData >& sessions); + ~SessionSelecter(); + virtual Buttons exec(); +private: + SessionListFrame* listFrame; +public slots: + void slotEnableButton(); +}; -} - -void SessionStatusFrameApplications::setSession(X2GoSession* session) -{ - this->session=session; -} +#endif // SESSIONSELECTER_H diff --git a/sshconnection.cpp b/sshconnection.cpp index f5680ae..835464e 100644 --- a/sshconnection.cpp +++ b/sshconnection.cpp @@ -25,7 +25,7 @@ #define PROXYTUNNELPORT 44444 #undef DEBUG -#define DEBUG +// #define DEBUG #undef SSH_DEBUG // #define SSH_DEBUG diff --git a/x2goclient2.pro b/x2goclient2.pro index bbd5e5e..35d6041 100755 --- a/x2goclient2.pro +++ b/x2goclient2.pro @@ -30,6 +30,7 @@ FORMS += mainwindow.ui \ sessionstatusframe.ui \ sessionstatusframestatus.ui \ sessionstatusframeapplications.ui \ + sessionlistframe.ui \ profile.ui SOURCES += main.cpp \ @@ -64,7 +65,10 @@ SOURCES += main.cpp \ sessionstatusframe.cpp \ sessionstatusframestatus.cpp \ sessionstatusframeapplications.cpp \ + sessionselecter.cpp \ profile.cpp \ + x2gosessiondata.cpp \ + sessionlistframe.cpp \ x2gosession.cpp HEADERS += mainwindow.h \ @@ -98,7 +102,10 @@ HEADERS += mainwindow.h \ sessionstatusframe.h \ sessionstatusframestatus.h \ sessionstatusframeapplications.h \ + sessionselecter.h \ profile.h \ + x2gosessiondata.h \ + sessionlistframe.h \ x2gosession.h LIBS += -lssh diff --git a/x2gosession.cpp b/x2gosession.cpp index 3db3356..bce8864 100644 --- a/x2gosession.cpp +++ b/x2gosession.cpp @@ -26,6 +26,7 @@ #include "workarea.h" #include "sessionform.h" #include "x2gobroker.h" +#include "sessionselecter.h" X2GoSession::X2GoSession(Profile* profile) { @@ -85,8 +86,73 @@ void X2GoSession::slotSshConnectionFailed(int, QString) } } +void X2GoSession::slotListSessions(bool success, QString answer, int id) +{ + if(!success) + { + slotSshConnectionFailed(id, answer); + return; + } + QList<X2GoSessionData> sessions; + foreach ( QString str, answer.trimmed().split ('\n', QString::SkipEmptyParts )) + { + X2GoSessionData data=X2GoSessionData::getSessionFromString(str); + if(data.get_sessionType()!=X2GoSessionData::SHADOW && data.get_status()!="F") + sessions<<data; + } + if(sessions.size()==0) + { + createNewSession(); + return; + } + if(sessions.size()==1) + { + if(sessions[0].get_status()=="S") + { + resumeSession(sessions[0]); + return; + } + } + selectSession(sessions); + + +} +void X2GoSession::selectSession(const QList<X2GoSessionData>& sessions) +{ + SessionSelecter* sel=new SessionSelecter(sessions); + sel->exec(); + delete sel; + +} + + +void X2GoSession::resumeSession(const X2GoSessionData& sessionData) +{ + +} + +void X2GoSession::createNewSession() +{ + +} void X2GoSession::slotSshConnectionOk(QString) { qDebug()<<"SSH Connection established"; + if(profile->get_desktop()=="SHADOW") + { + //get desktops + return; + } + if(profile->get_desktop()=="RDP" && profile->get_directRDP()) + { + //start rdp session + return; + } + if(X2GoApplication::instance()->get_broker()) + { + //start broker session; + return; + } + sshConnection->executeCommand("export HOSTNAME && x2golistsessions", this,SLOT (slotListSessions(bool, QString, int))); } diff --git a/x2gosession.h b/x2gosession.h index bc43fdc..81589c0 100644 --- a/x2gosession.h +++ b/x2gosession.h @@ -24,6 +24,7 @@ #include <QObject> #include "x2goapplication.h" #include "sshconnection.h" +#include "x2gosessiondata.h" class Profile; class X2GoSession : public QObject @@ -31,19 +32,23 @@ class X2GoSession : public QObject Q_OBJECT public: typedef enum {NOTRUNNING, STARTING, RESUMING, TERMINATING, SUSPENDING, RUNNING} SessionStatus; -private: X2GO_RO_PROPERTY(Profile*, profile) X2GO_RO_PROPERTY(SessionStatus, status) X2GO_RO_PROPERTY(SshConnection*, sshConnection) -public: + X2GO_PROPERTY(X2GoSessionData, sessionData) X2GoSession(Profile* profile); virtual ~X2GoSession(); void startSession(); + void resumeSession(const X2GoSessionData& sessionData); + void createNewSession(); +private: + void selectSession(const QList<X2GoSessionData> & sessions); public slots: void slotStartSession(); private slots: void slotSshConnectionOk(QString); void slotSshConnectionFailed(int, QString errorMessage); + void slotListSessions(bool success, QString answer, int); signals: void signalStatusChanged(X2GoSession::SessionStatus status); }; diff --git a/x2gosessiondata.cpp b/x2gosessiondata.cpp new file mode 100644 index 0000000..164fb5b --- /dev/null +++ b/x2gosessiondata.cpp @@ -0,0 +1,87 @@ +/************************************************************************** +* Copyright (C) 2005-2013 by Oleksandr Shneyder * +* o.shneyder@phoca-gmbh.de * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +* This program is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU General Public License for more details. * +* * +* You should have received a copy of the GNU General Public License * +* along with this program; if not, write to the * +* Free Software Foundation, Inc., * +* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * +***************************************************************************/ + +#include "x2gosessiondata.h" +#include <QStringList> +#include <QObject> +X2GoSessionData::X2GoSessionData() +{ + published=false; + colorDepth=0; + fullscreen=false; + sessionType=DESKTOP; +} + +void X2GoSessionData::operator=(const X2GoSessionData& s) +{ + agentPid=s.agentPid; + sessionId=s.sessionId; + display=s.display; + server=s.server; + status=s.status; + creationTime=s.creationTime; + cookie=s.cookie; + clientIp=s.clientIp; + grPort=s.grPort; + sndPort=s.sndPort; + fsPort=s.fsPort; + command=s.command; + published=s.published; + colorDepth=s.colorDepth; + fullscreen=s.fullscreen; + sessionType=s.sessionType; +} + +X2GoSessionData X2GoSessionData::getSessionFromString(const QString& string) +{ + QStringList lst=string.split ( '|' ); + X2GoSessionData s; + s.set_agentPid(lst[0]); + s.set_sessionId(lst[1]); + s.set_display(lst[2]); + s.set_server(lst[3]); + s.set_server(lst[4]); + s.set_creationTime(lst[5]); + s.set_cookie(lst[6]); + s.set_clientIp(lst[7]); + s.set_grPort(lst[8]); + s.set_sndPort(lst[9]); + if ( lst.count() >13 ) + s.set_fsPort(lst[13]); + if ( s.get_sessionId().indexOf ( "_dp" ) !=-1 ) + { + s.set_colorDepth(s.get_sessionId().split ( "_dp" ) [1].toInt()); + } + s.set_command(QObject::tr ( "unknown" )); + if ( s.get_sessionId().indexOf ( "_st" ) !=-1 ) + { + QString cmdinfo=s.get_sessionId().split ( "_st" ) [1]; + cmdinfo=cmdinfo.split ( "_" ) [0]; + QChar st=cmdinfo[0]; + if ( st=='R' ) + s.set_sessionType(X2GoSessionData::ROOTLESS); + if ( st=='S' ) + s.set_sessionType(X2GoSessionData::SHADOW); + QString command=cmdinfo.mid ( 1 ); + if ( command.length() >0 ) + s.set_command(command); + } + return s; +} diff --git a/sessionstatusframe.h b/x2gosessiondata.h similarity index 62% copy from sessionstatusframe.h copy to x2gosessiondata.h index 9845544..d96603d 100644 --- a/sessionstatusframe.h +++ b/x2gosessiondata.h @@ -18,33 +18,34 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef SESSIONSTATUSFRAME_H -#define SESSIONSTATUSFRAME_H -#include "x2goapplication.h" -#include "x2gosession.h" -#include <QFrame> -#include "ui_sessionstatusframe.h" - -class SessionStatusFrameStatus; -class SessionStatusFrameApplications; +#ifndef X2GOSESSIONDATA_H +#define X2GOSESSIONDATA_H -class SessionStatusFrame : public QFrame, public Ui_SessionStatusFrame +#include "x2goapplication.h" +class X2GoSessionData { - Q_OBJECT - X2GO_RO_PROPERTY(X2GoSession*, session) public: - explicit SessionStatusFrame(QWidget* parent = 0, Qt::WindowFlags f = 0); - virtual ~SessionStatusFrame(); - void setSession(X2GoSession* session); -private slots: - void slotSetTabFrames(); - void slotSessionStatusChanged(X2GoSession::SessionStatus status); -private: - void setFrame(QPushButton* button); -private: - SessionStatusFrameStatus* frStatus; - SessionStatusFrameApplications* frApps; + typedef enum {DESKTOP,ROOTLESS,SHADOW} SessionType; + X2GO_PROPERTY(QString, agentPid); + X2GO_PROPERTY(QString, sessionId); + X2GO_PROPERTY(QString, display); + X2GO_PROPERTY(QString, server); + X2GO_PROPERTY(QString, status); + X2GO_PROPERTY(QString, creationTime); + X2GO_PROPERTY(QString, cookie); + X2GO_PROPERTY(QString, clientIp); + X2GO_PROPERTY(QString, grPort); + X2GO_PROPERTY(QString, sndPort); + X2GO_PROPERTY(QString, fsPort); + X2GO_PROPERTY(QString, command); + X2GO_PROPERTY(bool, published); + X2GO_PROPERTY(int, colorDepth); + X2GO_PROPERTY(bool, fullscreen); + X2GO_PROPERTY(SessionType, sessionType); + X2GoSessionData(); + void operator = ( const X2GoSessionData& s ); + static X2GoSessionData getSessionFromString( const QString& string); }; -#endif // SESSIONSTATUSFRAME_H +#endif // X2GOSESSIONDATA_H hooks/post-receive -- x2goclient2.git (X2Go Client 2 (rewrite of x2goclient.git)) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "x2goclient2.git" (X2Go Client 2 (rewrite of x2goclient.git)).