This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch master in repository x2goclient. from 9a7a47e Add folder explorer - GUI to management of sessions folders. new 9c05de1 Support for sessions folders in sessionmanagedialog. The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: debian/changelog | 1 + editconnectiondialog.cpp | 4 +- editconnectiondialog.h | 34 +++++++-------- onmainwindow.cpp | 2 +- sessionbutton.h | 4 ++ sessionexplorer.cpp | 4 +- sessionexplorer.h | 10 +++++ sessionmanagedialog.cpp | 107 +++++++++++++++++++++++++++++++++------------- sessionmanagedialog.h | 46 +++++++++++--------- sessionwidget.cpp | 7 ++- sessionwidget.h | 3 +- 11 files changed, 147 insertions(+), 75 deletions(-) -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit 9c05de1eefc87ff767d96d2ea1064d1a3a203a08 Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Thu Aug 14 13:14:49 2014 +0200 Support for sessions folders in sessionmanagedialog. --- debian/changelog | 1 + editconnectiondialog.cpp | 4 +- editconnectiondialog.h | 34 +++++++-------- onmainwindow.cpp | 2 +- sessionbutton.h | 4 ++ sessionexplorer.cpp | 4 +- sessionexplorer.h | 10 +++++ sessionmanagedialog.cpp | 107 +++++++++++++++++++++++++++++++++------------- sessionmanagedialog.h | 46 +++++++++++--------- sessionwidget.cpp | 7 ++- sessionwidget.h | 3 +- 11 files changed, 147 insertions(+), 75 deletions(-) diff --git a/debian/changelog b/debian/changelog index 8534eec..744fa33 100644 --- a/debian/changelog +++ b/debian/changelog @@ -30,6 +30,7 @@ x2goclient (4.0.3.0-0x2go1) UNRELEASED; urgency=low - Add Makefile for x2gohelper. - Add support for sessions folders. - Add folder explorer - GUI to management of sessions folders. + - Support for sessions folders in sessionmanagedialog. [ Mike DePaulo ] * New upstream release (4.0.3.0): diff --git a/editconnectiondialog.cpp b/editconnectiondialog.cpp index 0769e3b..5cd0d3d 100644 --- a/editconnectiondialog.cpp +++ b/editconnectiondialog.cpp @@ -28,7 +28,7 @@ #include "connectionwidget.h" #include "settingswidget.h" -EditConnectionDialog::EditConnectionDialog ( QString id, QWidget * par, +EditConnectionDialog::EditConnectionDialog ( bool newSession, QString id, QWidget * par, int ind,Qt::WFlags f ) : QDialog ( par,f ) { @@ -49,7 +49,7 @@ EditConnectionDialog::EditConnectionDialog ( QString id, QWidget * par, #endif setFont ( fnt ); - sessSet=new SessionWidget ( id,parent ); + sessSet=new SessionWidget ( newSession, id,parent ); conSet=new ConnectionWidget ( id,parent ); otherSet=new SettingsWidget ( id,parent ); exportDir=new ShareWidget ( id,parent ); diff --git a/editconnectiondialog.h b/editconnectiondialog.h index a7bfee9..32b36dd 100644 --- a/editconnectiondialog.h +++ b/editconnectiondialog.h @@ -45,25 +45,25 @@ class ShareWidget; class EditConnectionDialog : public QDialog { - Q_OBJECT - public: - EditConnectionDialog ( QString id, QWidget * par, int ind=0, - Qt::WFlags f = 0 ); - ~EditConnectionDialog(); - private: - QTabWidget *fr; - SessionWidget* sessSet; - ConnectionWidget* conSet; - SettingsWidget* otherSet; - ShareWidget* exportDir; + Q_OBJECT +public: + EditConnectionDialog ( bool newSession, QString id, QWidget * par, int ind=0, + Qt::WFlags f = 0 ); + ~EditConnectionDialog(); +private: + QTabWidget *fr; + SessionWidget* sessSet; + ConnectionWidget* conSet; + SettingsWidget* otherSet; + ShareWidget* exportDir; - private slots: - void slot_changeCaption ( const QString& newName ); - void slot_accepted(); - void slot_default(); -#ifdef Q_OS_LINUX - void slot_directRDP(bool direct); +private slots: + void slot_changeCaption ( const QString& newName ); + void slot_accepted(); + void slot_default(); +#ifdef Q_OS_LINUX + void slot_directRDP(bool direct); #endif }; diff --git a/onmainwindow.cpp b/onmainwindow.cpp index 4f4bceb..69be30f 100644 --- a/onmainwindow.cpp +++ b/onmainwindow.cpp @@ -2193,7 +2193,7 @@ void ONMainWindow::slotNewSession() { QString id=QDateTime::currentDateTime(). toString ( "yyyyMMddhhmmsszzz" ); - EditConnectionDialog dlg ( id, this ); + EditConnectionDialog dlg (true, id, this ); if ( dlg.exec() ==QDialog::Accepted ) { SessionButton* bt=sessionExplorer->createBut ( id ); diff --git a/sessionbutton.h b/sessionbutton.h index 6a39648..e153438 100644 --- a/sessionbutton.h +++ b/sessionbutton.h @@ -48,6 +48,10 @@ public: { return path; } + QString getName() + { + return sessName->text(); + } void setPath(QString path) { this->path=path; diff --git a/sessionexplorer.cpp b/sessionexplorer.cpp index 06694f7..cd16ed3 100644 --- a/sessionexplorer.cpp +++ b/sessionexplorer.cpp @@ -86,7 +86,7 @@ void SessionExplorer::cleanSessions() void SessionExplorer::exportsEdit ( SessionButton* bt ) { - EditConnectionDialog dlg ( bt->id(),parent,3 ); + EditConnectionDialog dlg (false, bt->id(),parent,3 ); if ( dlg.exec() ==QDialog::Accepted ) { bt->redraw(); @@ -119,7 +119,7 @@ void SessionExplorer::getFoldersFromConfig() void SessionExplorer::slotEdit ( SessionButton* bt ) { - EditConnectionDialog dlg ( bt->id(),parent ); + EditConnectionDialog dlg (false, bt->id(),parent ); if ( dlg.exec() ==QDialog::Accepted ) { bt->redraw(); diff --git a/sessionexplorer.h b/sessionexplorer.h index beaa471..67bd171 100644 --- a/sessionexplorer.h +++ b/sessionexplorer.h @@ -64,6 +64,16 @@ public: void renameFolder(QString oldPath, QString currentPath); void deleteFolder(QString path); + QString getCurrentPath() + { + return currentPath; + } + + void setCurrrentPath(QString path) + { + currentPath=path; + } + //vars private: diff --git a/sessionmanagedialog.cpp b/sessionmanagedialog.cpp index ca11f31..f88245b 100644 --- a/sessionmanagedialog.cpp +++ b/sessionmanagedialog.cpp @@ -23,13 +23,15 @@ #include <QDir> #include <QFrame> #include <QBoxLayout> -#include <QListView> +#include <QTreeWidget> #include <QStringListModel> #include <QShortcut> #include "sessionbutton.h" +#include "folderbutton.h" #include "sessionexplorer.h" - +#define SESSIONROLE Qt::UserRole+1 +#define SESSIONIDROLE Qt::UserRole+2 SessionManageDialog::SessionManageDialog ( QWidget * parent, bool onlyCreateIcon, Qt::WFlags f ) @@ -39,10 +41,12 @@ SessionManageDialog::SessionManageDialog ( QWidget * parent, QFrame *fr=new QFrame ( this ); QHBoxLayout* frLay=new QHBoxLayout ( fr ); + currentPath=""; + QPushButton* ok=new QPushButton ( tr ( "E&xit" ),this ); QHBoxLayout* bLay=new QHBoxLayout(); - sessions=new QListView ( fr ); + sessions=new QTreeWidget ( fr ); frLay->addWidget ( sessions ); QPushButton* newSession=new QPushButton ( tr ( "&New session" ),fr ); @@ -115,10 +119,10 @@ SessionManageDialog::SessionManageDialog ( QWidget * parent, setWindowTitle ( tr ( "Session management" ) ); loadSessions(); - connect ( sessions,SIGNAL ( clicked ( const QModelIndex& ) ), - this,SLOT ( slot_activated ( const QModelIndex& ) ) ); - connect ( sessions,SIGNAL ( doubleClicked ( const QModelIndex& ) ), - this,SLOT ( slot_dclicked ( const QModelIndex& ) ) ); + connect ( sessions, SIGNAL(itemActivated(QTreeWidgetItem*,int)), + this,SLOT(slot_activated(QTreeWidgetItem*,int)) ); + connect ( sessions,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), + this,SLOT(slot_dclicked(QTreeWidgetItem*,int)) ); } @@ -128,47 +132,90 @@ SessionManageDialog::~SessionManageDialog() void SessionManageDialog::loadSessions() { - QStringListModel *model= ( QStringListModel* ) sessions->model(); - if ( !model ) - model=new QStringListModel(); - sessions->setModel ( model ); - QStringList lst; - model->setStringList ( lst ); + sessions->clear(); const QList<SessionButton*> *sess=par->getSessionExplorer()->getSessionsList(); + const QList<FolderButton*> *folders=par->getSessionExplorer()->getFoldersList(); - for ( int i=0; i<sess->size(); ++i ) - lst<<sess->at ( i )->name(); - - model->setStringList ( lst ); removeSession->setEnabled ( false ); editSession->setEnabled ( false ); #if (!defined Q_WS_HILDON) && (!defined Q_OS_DARWIN) if ( !ONMainWindow::getPortable() ) createSessionIcon->setEnabled ( false ); #endif - sessions->setEditTriggers ( QAbstractItemView::NoEditTriggers ); + + QTreeWidgetItem* root; + + root=new QTreeWidgetItem(sessions); + root->setText(0,"/"); + root->setIcon(0,QIcon(":icons/128x128/folder.png")); + initFolders(root, ""); + root->setExpanded(true); + root->setData(0, SESSIONROLE , false); + + sessions->setRootIsDecorated(false); + sessions->setHeaderHidden(true); } +void SessionManageDialog::initFolders(QTreeWidgetItem* parent, QString path) +{ + FolderButton* b; + foreach(b, *(par->getSessionExplorer()->getFoldersList())) + { + if(b->getPath()==path) + { + QTreeWidgetItem* it=new QTreeWidgetItem(parent); + it->setText(0,b->getName()); + it->setIcon(0, QIcon(*(b->folderIcon()))); + QString normPath=(b->getPath()+"/"+b->getName()).split("/",QString::SkipEmptyParts).join("/"); + it->setData(0,Qt::UserRole, normPath+"/"); + it->setData(0, SESSIONROLE , false); + initFolders(it, normPath); + } + } + for(int i=0; i< par->getSessionExplorer()->getSessionsList()->count(); ++i) + { + SessionButton* s=par->getSessionExplorer()->getSessionsList()->at(i); + if(s->getPath()==path) + { + QTreeWidgetItem* it=new QTreeWidgetItem(parent); + it->setText(0,s->getName()); + it->setIcon(0, QIcon(*(s->sessIcon()))); + QString normPath=(s->getPath()+"/"+s->getName()).split("/",QString::SkipEmptyParts).join("/"); + it->setData(0,Qt::UserRole, normPath+"/"); + it->setData(0, SESSIONROLE, true); + it->setData(0, SESSIONIDROLE, i); + initFolders(it, normPath); + } + } +} -void SessionManageDialog::slot_activated ( const QModelIndex& ) + +void SessionManageDialog::slot_activated ( QTreeWidgetItem* item, int ) { - removeSession->setEnabled ( true ); - editSession->setEnabled ( true ); + bool isSess=item->data(0, SESSIONROLE).toBool(); + if(!isSess) + { + currentPath=item->data(0,Qt::UserRole).toString().split("/",QString::SkipEmptyParts).join("/"); + } + removeSession->setEnabled ( isSess ); + editSession->setEnabled ( isSess ); #if (!defined Q_WS_HILDON) && (!defined Q_OS_DARWIN) if ( !ONMainWindow::getPortable() ) - createSessionIcon->setEnabled ( true ); + createSessionIcon->setEnabled ( isSess ); #endif } -void SessionManageDialog::slot_dclicked ( const QModelIndex& ) +void SessionManageDialog::slot_dclicked ( QTreeWidgetItem* item, int ) { - slot_edit(); + if(item->data(0, SESSIONROLE).toBool()) + slot_edit(); } void SessionManageDialog::slotNew() { + par->getSessionExplorer()->setCurrrentPath(currentPath); par->slotNewSession(); loadSessions(); } @@ -176,27 +223,27 @@ void SessionManageDialog::slotNew() void SessionManageDialog::slot_edit() { - int ind=sessions->currentIndex().row(); - if ( ind<0 ) + if((! sessions->currentItem()) || (! sessions->currentItem()->data(0, SESSIONROLE).toBool())) return; + int ind=sessions->currentItem()->data(0, SESSIONIDROLE).toInt(); par->getSessionExplorer()->slotEdit ( par->getSessionExplorer()->getSessionsList()->at ( ind ) ); loadSessions(); } void SessionManageDialog::slot_createSessionIcon() { - int ind=sessions->currentIndex().row(); - if ( ind<0 ) + if((! sessions->currentItem()) || (! sessions->currentItem()->data(0, SESSIONROLE).toBool())) return; + int ind=sessions->currentItem()->data(0, SESSIONIDROLE).toInt(); par->getSessionExplorer()->slotCreateDesktopIcon ( par->getSessionExplorer()->getSessionsList()->at ( ind ) ); } void SessionManageDialog::slot_delete() { - int ind=sessions->currentIndex().row(); - if ( ind<0 ) + if((! sessions->currentItem()) || (! sessions->currentItem()->data(0, SESSIONROLE).toBool())) return; + int ind=sessions->currentItem()->data(0, SESSIONIDROLE).toInt(); par->getSessionExplorer()->slotDeleteButton ( par->getSessionExplorer()->getSessionsList()->at ( ind ) ); loadSessions(); } diff --git a/sessionmanagedialog.h b/sessionmanagedialog.h index 825d6db..1f9c18f 100644 --- a/sessionmanagedialog.h +++ b/sessionmanagedialog.h @@ -20,7 +20,8 @@ #include "x2goclientconfig.h" #include <QDialog> -class QListView; +class QTreeWidget; +class QTreeWidgetItem; class QPushButton; class QModelIndex; class ONMainWindow; @@ -30,26 +31,29 @@ class ONMainWindow; class SessionManageDialog : public QDialog { - Q_OBJECT - public: - SessionManageDialog ( QWidget * parent, - bool onlyCreateIcon=false, - Qt::WFlags f=0 ); - ~SessionManageDialog(); - void loadSessions(); - private: - QListView* sessions; - QPushButton* editSession; - QPushButton* removeSession; - QPushButton* createSessionIcon; - ONMainWindow* par; - private slots: - void slot_activated ( const QModelIndex& index ); - void slotNew(); - void slot_edit(); - void slot_createSessionIcon(); - void slot_delete(); - void slot_dclicked ( const QModelIndex& index ); + Q_OBJECT +public: + SessionManageDialog ( QWidget * parent, + bool onlyCreateIcon=false, + Qt::WFlags f=0 ); + ~SessionManageDialog(); + void loadSessions(); +private: + void initFolders(QTreeWidgetItem* parent, QString path); +private: + QTreeWidget* sessions; + QPushButton* editSession; + QPushButton* removeSession; + QPushButton* createSessionIcon; + ONMainWindow* par; + QString currentPath; +private slots: + void slot_activated ( QTreeWidgetItem * item, int); + void slotNew(); + void slot_edit(); + void slot_createSessionIcon(); + void slot_delete(); + void slot_dclicked ( QTreeWidgetItem * item, int ); }; #endif diff --git a/sessionwidget.cpp b/sessionwidget.cpp index 874c26f..668676c 100644 --- a/sessionwidget.cpp +++ b/sessionwidget.cpp @@ -36,8 +36,9 @@ #include <QButtonGroup> #include <QRadioButton> #include "folderexplorer.h" +#include "sessionexplorer.h" -SessionWidget::SessionWidget ( QString id, ONMainWindow * mw, +SessionWidget::SessionWidget ( bool newSession, QString id, ONMainWindow * mw, QWidget * parent, Qt::WindowFlags f ) : ConfigWidget ( id,mw,parent,f ) { @@ -46,6 +47,8 @@ SessionWidget::SessionWidget ( QString id, ONMainWindow * mw, sessLay->setMargin ( 2 ); #endif this->parent=mw; + this->newSession=newSession; + sessName=new QLineEdit ( this ); icon=new QPushButton ( QString::null,this ); if ( !miniMode ) @@ -533,6 +536,8 @@ void SessionWidget::readConfig() path=tails.join("/")+"/"; } lPath->setText(path); + if(newSession) + lPath->setText(parent->getSessionExplorer()->getCurrentPath()+"/"); sessName->setText (name); diff --git a/sessionwidget.h b/sessionwidget.h index 4d07e6a..94ef4e3 100644 --- a/sessionwidget.h +++ b/sessionwidget.h @@ -35,7 +35,7 @@ class SessionWidget : public ConfigWidget { Q_OBJECT public: - SessionWidget ( QString id, ONMainWindow * mv, + SessionWidget ( bool newSession, QString id, ONMainWindow * mv, QWidget * parent = 0, Qt::WindowFlags f = 0 ); ~SessionWidget(); void setDefaults(); @@ -65,6 +65,7 @@ private: QLineEdit* server; QSpinBox* sshPort; ONMainWindow* parent; + bool newSession; #ifdef Q_OS_LINUX QSpinBox* rdpPort; #endif -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git