The branch, master has been updated via 110bbeba16404474f940ea66658b818dcbea220a (commit) from fd0ba68dad5db7ecd7608623c64811ee58d64895 (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 110bbeba16404474f940ea66658b818dcbea220a Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Wed Mar 20 14:45:43 2013 +0100 continue developing ----------------------------------------------------------------------- Summary of changes: messagebox.h | 1 + sessionlistframe.cpp | 1 + sessionlistframe.ui | 2 +- sessionselecter.cpp | 45 +++++++++++++++++++++++++++++++++++---------- sessionselecter.h | 13 +++++++++++-- x2gosession.cpp | 36 ++++++++++++++++++++++++++++++------ x2gosession.h | 1 + x2gosessiondata.cpp | 2 +- 8 files changed, 81 insertions(+), 20 deletions(-) The diff of changes is: diff --git a/messagebox.h b/messagebox.h index da40703..7348ccf 100644 --- a/messagebox.h +++ b/messagebox.h @@ -38,6 +38,7 @@ protected: QEventLoop* loop; private slots: void slotResize(QResizeEvent* event); +protected slots: void slotYesClicked(); void slotNoClicked(); void slotOkClicked(); diff --git a/sessionlistframe.cpp b/sessionlistframe.cpp index 923347a..661b72c 100644 --- a/sessionlistframe.cpp +++ b/sessionlistframe.cpp @@ -30,6 +30,7 @@ SessionListFrame::SessionListFrame(QWidget* parent, Qt::WindowFlags f): QFrame(p "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); diff --git a/sessionlistframe.ui b/sessionlistframe.ui index ec14d94..0c38cee 100644 --- a/sessionlistframe.ui +++ b/sessionlistframe.ui @@ -68,7 +68,7 @@ <bool>true</bool> </attribute> <attribute name="headerStretchLastSection"> - <bool>false</bool> + <bool>true</bool> </attribute> <column> <property name="text"> diff --git a/sessionselecter.cpp b/sessionselecter.cpp index 208c20e..d1d6851 100644 --- a/sessionselecter.cpp +++ b/sessionselecter.cpp @@ -23,15 +23,19 @@ #include "x2goapplication.h" #include "workarea.h" +#include "profile.h" + #include <QDateTime> -SessionSelecter::SessionSelecter(const QList<X2GoSessionData>& sessions) +SessionSelecter::SessionSelecter(const QList<X2GoSessionData>& sessions, Profile* profile) { + this->sessions=(QList< X2GoSessionData >*)&sessions; pbNo->hide(); pbYes->setText(tr("Resume selected")); pbYes->setEnabled(false); pbOk->setText(tr("New session")); lPixmap->hide(); + lText->setText("<b>"+profile->get_profileName()+"</b><br><br>"+tr("Select X2Go session to resume:")); listFrame=new SessionListFrame(frame); vlDisplayLayout->insertWidget(1,listFrame); foreach (X2GoSessionData data, sessions) @@ -42,36 +46,38 @@ SessionSelecter::SessionSelecter(const QList<X2GoSessionData>& sessions) name=X2GoApplication::instance()->getReadableAppName(data.get_command()); if(name.length()<=0) name=data.get_command(); - item->setText(0, name); + item->setText(NAME, name); switch(data.get_sessionType()) { case X2GoSessionData::DESKTOP: - item->setText(1, tr("Desktop")); + item->setText(TYPE, tr("Desktop")); break; case X2GoSessionData::ROOTLESS: - item->setText(1, tr("Single application")); + item->setText(TYPE, tr("Single application")); break; case X2GoSessionData::SHADOW: break; } if(data.get_status()=="S") { - item->setText(2, tr("Suspended")); + item->setText(STATUS, tr("Suspended")); } else { - item->setText(2, tr("Running")); + item->setText(STATUS, tr("Running")); } - item->setText(3,data.get_display()); + item->setText(DISPLAY, 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()); + item->setText(CRTIME, dt.toString(Qt::SystemLocaleShortDate)); + item->setText(CLIENT, data.get_clientIp()); + item->setText(ID, 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())); + connect(listFrame->treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), + this, SLOT(slotSessionDoubleClicked(QTreeWidgetItem*,int))); } void SessionSelecter::slotEnableButton() @@ -93,3 +99,22 @@ MessageBox::Buttons SessionSelecter::exec() X2GoApplication::instance()->get_workArea()->setEnabled(false); return (MessageBox::Buttons)loop->exec(); } + +X2GoSessionData* SessionSelecter::getSelectedSession() +{ + if(listFrame->treeWidget->selectedItems().count()<=0) + return 0; + QString id=listFrame->treeWidget->selectedItems()[0]->text(ID); + for(int i=0; i<sessions->count(); ++i) + { + if((*sessions)[i].get_sessionId()==id) + return &((*sessions)[i]); + } + return 0; +} + + +void SessionSelecter::slotSessionDoubleClicked(QTreeWidgetItem*, int) +{ + slotYesClicked(); +} diff --git a/sessionselecter.h b/sessionselecter.h index 4a333c7..dfb93fd 100644 --- a/sessionselecter.h +++ b/sessionselecter.h @@ -24,18 +24,27 @@ class SessionListFrame;/******************************************************** #include "messagebox.h" #include "x2gosessiondata.h" +#include "x2goapplication.h" + +class Profile; class SessionListFrame; +class QTreeWidgetItem; + class SessionSelecter: public MessageBox { Q_OBJECT public: - SessionSelecter(const QList< X2GoSessionData >& sessions); + enum {NAME, TYPE, STATUS, DISPLAY, CRTIME, CLIENT, ID}; + SessionSelecter(const QList< X2GoSessionData >& sessions, Profile* profile); ~SessionSelecter(); virtual Buttons exec(); + X2GoSessionData* getSelectedSession(); private: SessionListFrame* listFrame; -public slots: + QList< X2GoSessionData >* sessions; +private slots: void slotEnableButton(); + void slotSessionDoubleClicked ( QTreeWidgetItem*, int ); }; #endif // SESSIONSELECTER_H diff --git a/x2gosession.cpp b/x2gosession.cpp index bce8864..e1df84b 100644 --- a/x2gosession.cpp +++ b/x2gosession.cpp @@ -75,7 +75,7 @@ void X2GoSession::startSession() } -void X2GoSession::slotSshConnectionFailed(int, QString) +void X2GoSession::setSessionNotRunning() { status=NOTRUNNING; emit signalStatusChanged(status); @@ -86,6 +86,12 @@ void X2GoSession::slotSshConnectionFailed(int, QString) } } + +void X2GoSession::slotSshConnectionFailed(int, QString) +{ + setSessionNotRunning(); +} + void X2GoSession::slotListSessions(bool success, QString answer, int id) { if(!success) @@ -114,15 +120,33 @@ void X2GoSession::slotListSessions(bool success, QString answer, int id) } } selectSession(sessions); - - } + void X2GoSession::selectSession(const QList<X2GoSessionData>& sessions) { - SessionSelecter* sel=new SessionSelecter(sessions); - sel->exec(); + SessionSelecter* sel=new SessionSelecter(sessions, profile); + switch(sel->exec()) + { + case MessageBox::OK: + createNewSession(); + break; + case MessageBox::YES: + if(!sel->getSelectedSession()) + { + qDebug()<<"selected session is NULL, aborting..."; + setSessionNotRunning(); + } + else + { + resumeSession(*(sel->getSelectedSession())); + } + break; + default: + qDebug()<<"canceling session"; + setSessionNotRunning(); + break; + } delete sel; - } diff --git a/x2gosession.h b/x2gosession.h index 81589c0..870073f 100644 --- a/x2gosession.h +++ b/x2gosession.h @@ -41,6 +41,7 @@ public: void startSession(); void resumeSession(const X2GoSessionData& sessionData); void createNewSession(); + void setSessionNotRunning(); private: void selectSession(const QList<X2GoSessionData> & sessions); public slots: diff --git a/x2gosessiondata.cpp b/x2gosessiondata.cpp index 164fb5b..2bc3840 100644 --- a/x2gosessiondata.cpp +++ b/x2gosessiondata.cpp @@ -57,7 +57,7 @@ X2GoSessionData X2GoSessionData::getSessionFromString(const QString& string) s.set_sessionId(lst[1]); s.set_display(lst[2]); s.set_server(lst[3]); - s.set_server(lst[4]); + s.set_status(lst[4]); s.set_creationTime(lst[5]); s.set_cookie(lst[6]); s.set_clientIp(lst[7]); 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)).