summaryrefslogblamecommitdiffstats
path: root/src/gui/connectionList.h
blob: 50d8924ef9f9bde7515c8cb2fbe5874c3ddca400 (plain) (tree)





































































































































                                                                                                                 
#ifndef _CONNECTIONLIST_H_
#define _CONNECTIONLIST_H_

#include <QtGui>
#include <src/core/pvsClient.h>
#include <QTableView>
#include <QObject>
#include <QMap>
#include <QItemSelection>
#include <src/gui/mainWindow.h>
#include <src/gui/dialog.h>
#include <src/gui/projectionDialog.h>

class PVSClient;

//class QAbstractItemView;


/**
  *	The Sidebar showing the connected servers
  *	also used to determine to which connection
  *	contextual actions should be applied
  */

class QVBoxLayout;
class QSortFilterProxyModel;
class QAbstractItemModel;
class QAbstractItemView;
class QItemSelectionModel;
class MainWindow;
class Dialog;
class ProjectionDialog;
//class ConnectionList;

class ConnectionList: public QTableView
{
    Q_OBJECT

public:
    ConnectionList(QWidget *parent=0);
    ~ ConnectionList();

    void onAddClient(PVSClient* newConnection);	// called if a new connection is added
    void onUpdateClient(PVSClient* newConnection); // update the username*/
    void addClientToList(QString clientname);
    void onRemoveClient(PVSClient* newCon);
    void removeClientToList(QString clientname);
    QList<QString> getClientist()
    {
        return _clientNames;
    };
    //  void updateAllClients();
    bool useUserName();
    bool useUserName(bool use);
    QList<QString> projectList;
    QList<QString> targetList;
    QList<QString> displayList;
    QList<QString> sourceList;
	QMap<QString, QList<QString> > sourceMap;
	QString projSourceName;
    std::list<QString>* getSelectedClients(bool isClickOnWindow=false);	// returns the currently selected clients
    //void setTargetToDisplay(QString source); // return the list for the projection
    void setProjectProporties(QString source);
    QList<QString> getTargetToDisplay(QString source);
    void addTargetToProjectList(QString name);
    QList<QString> getTargetForTheProject(QString source);
    QList<QString>getTargetToProject()
	{
		return projectList;
	}
    // void removeFromList(PVSConnection* newConnection);	// called if a connection is removed
    // void setMultipleSelection(bool on);

    QAbstractItemModel *model;

private:
    QItemSelectionModel *_selectionModel;
    QList<QString> _clientNames;

    int clientindex; //Index of clientname in the list.

    static bool    isOnProjection;

    QMenu *_popupMenu; // in der PopupMenu
    /*Die Aktionen in der PopupMenu*/
   /* QAction *a1 ;
    QAction *a2 ;
    QAction *a3 ;*/
    QAction *_lockClient ;
    QAction *_uLockClient ;
    /*QAction *invertlockClient ;
    QAction *LockAllClient ;
    QAction *uLockAllClient ;*/
    QAction *_msgLockClient ;
    QAction *_msgLockAllClient ;
    QAction *_msgClient ;
    QAction *_project ;
    QAction *_uproject ;
  //  QAction *rHelp ;

    void preparePopup();
    void unproject(QString source);
    QAction* createToolbarButton(const QString &name, const char *slot);

public slots:
    //Signal handlers:

    virtual void on_projection();
    virtual void on_unprojection();
    virtual void on_lock();
    virtual void on_unlock();
    virtual void on_message();
    virtual void on_lock_with_message();
    virtual void on_lock_all_with_message();
    virtual void on_lock_all();
    virtual void on_unlock_all();
    virtual void on_unproject_all();
    virtual void on_lock_invert();
    virtual void on_remoteHelp();
    void on_vnc_add();
    void on_vnc_remove();
    void on_removeClient();
    void removeClient(QModelIndexList indexes);
    /*virtual void on_menu_file_remove_connection();*/

signals:
    void selectionChanged (const QItemSelection &selected);

protected:
    bool _useUserName;
    virtual void mouseReleaseEvent  (QMouseEvent * e );
};

#endif