add View only option to connect dialog
authorChristian Pulvermacher <christian@christian-laptop.(none)>
Sun, 28 Nov 2010 14:34:31 +0000 (15:34 +0100)
committerChristian Pulvermacher <christian@christian-laptop.(none)>
Sun, 28 Nov 2010 14:34:31 +0000 (15:34 +0100)
src/connectdialog.cpp
src/connectdialog.h
src/mainwindow.cpp
src/mainwindow.h

index 9c21d24..1caba92 100644 (file)
 
 #include <QtGui>
 
-#ifdef Q_WS_MAEMO_5
-#include <QMaemo5ValueButton>
-#include <QMaemo5ListPickSelector>
-#endif
-
 
 const QString LISTEN_FOR_INCOMING_CONNECTIONS_STRING = QObject::tr("Listen for incoming connections");
 
 ConnectDialog::ConnectDialog(QWidget *parent):
-       QDialog(parent),
-       done(new QPushButton)
+       QDialog(parent)
 {
        setWindowTitle(tr("Connect to VNC Server"));
        QSettings settings;
@@ -52,6 +46,10 @@ ConnectDialog::ConnectDialog(QWidget *parent):
        hostnames_sorted = hosts_map.values(); //sorted by ascending position
        settings.endGroup();
 
+       QHBoxLayout *layout = new QHBoxLayout(this);
+       QGridLayout *grid_layout = new QGridLayout();
+       layout->addLayout(grid_layout);
+
        //set up combobox
        hosts.addItems(hostnames_sorted);
        hosts.insertSeparator(hosts.count());
@@ -62,38 +60,25 @@ ConnectDialog::ConnectDialog(QWidget *parent):
 #endif
        connect(&hosts, SIGNAL(editTextChanged(QString)),
                this, SLOT(hostnameUpdated(QString)));
-       layout.addWidget(&hosts);
+       grid_layout->addWidget(&hosts, 0, 0, 1, 2);
 
-#ifdef Q_WS_MAEMO_5
-       QMaemo5ValueButton *quality = new QMaemo5ValueButton(tr("Quality"), this);
-       quality_selector = new QMaemo5ListPickSelector(this);
-       QStandardItemModel *model = new QStandardItemModel(0, 1, this);
-       model->appendRow(new QStandardItem(tr("High\t\t(LAN)"))); //1
-       model->appendRow(new QStandardItem(tr("Medium\t(DSL)"))); //2
-       model->appendRow(new QStandardItem(tr("Low\t\t(ISDN)"))); //3
-       quality_selector->setModel(model);
-       quality->setPickSelector(quality_selector);
-       quality->setValueLayout(QMaemo5ValueButton::ValueUnderText);
-       quality->setMaximumWidth(120);
-       layout.addWidget(quality);
-#else
+       grid_layout->addWidget(new QLabel(tr("Quality")), 1, 0);
        //combobox numbering starts from 0, so currentIndex() == quality-1
-       quality_combobox.addItem(tr("High quality (LAN)")); //1
-       quality_combobox.addItem(tr("Medium quality (DSL)")); //2
-       quality_combobox.addItem(tr("Low quality (ISDN)")); //3
-       //quality_combobox.setMaximumWidth(120);
-       layout.addWidget(&quality_combobox);
-#endif
-
-       hostnameUpdated(hosts.lineEdit()->text()); //get saved quality for last host, or 2
-
-       done->setText(tr("Connect"));
-       done->setMaximumWidth(110);
-       connect(done, SIGNAL(clicked()),
+       quality_combobox.addItem(tr("High (LAN)")); //1
+       quality_combobox.addItem(tr("Medium (DSL)")); //2
+       quality_combobox.addItem(tr("Low (ISDN)")); //3
+       grid_layout->addWidget(&quality_combobox, 1, 1);
+       
+       viewonly.setText(tr("View only"));
+       grid_layout->addWidget(&viewonly, 2, 0, 1, 2);
+
+       done.setMaximumWidth(110);
+       connect(&done, SIGNAL(clicked()),
                this, SLOT(accept()));
-       layout.addWidget(done);
+       layout->addWidget(&done);
 
-       setLayout(&layout);
+       //get settings for last host
+       hostnameUpdated(hosts.lineEdit()->text());
 
        connect(this, SIGNAL(finished(int)),
                this, SLOT(deleteLater()));
@@ -104,7 +89,7 @@ void ConnectDialog::hostnameUpdated(QString newtext)
        const int cursorpos = hosts.lineEdit()->cursorPosition();
 
        const bool normal_entry = hosts.itemIcon(hosts.currentIndex()).isNull();
-       done->setText(normal_entry ? tr("Connect") : tr("Listen"));
+       done.setText(normal_entry ? tr("Connect") : tr("Listen"));
 
        //unselect 'listen ...' entry if edited
        if(!normal_entry) {
@@ -126,11 +111,10 @@ void ConnectDialog::hostnameUpdated(QString newtext)
        int quality = settings.value(QString("hosts/%1/quality").arg(hosts.lineEdit()->text()), 2).toInt();
        if(quality < 1 or quality > 3)
                quality = 2;
-#ifdef Q_WS_MAEMO_5
-       quality_selector->setCurrentIndex(quality-1);
-#else
        quality_combobox.setCurrentIndex(quality-1);
-#endif
+
+       //saved viewonly setting?
+       viewonly.setChecked(settings.value(QString("hosts/%1/viewonly").arg(hosts.lineEdit()->text()), false).toBool());
 }
 
 void ConnectDialog::accept()
@@ -142,11 +126,7 @@ void ConnectDialog::accept()
                return;
        }
 
-#ifdef Q_WS_MAEMO_5
-       int quality = quality_selector->currentIndex() + 1;
-#else
        int quality = quality_combobox.currentIndex() + 1;
-#endif
 
        QSettings settings;
        if(!hosts.itemIcon(hosts.currentIndex()).isNull()) {
@@ -165,7 +145,7 @@ void ConnectDialog::accept()
 #endif
                if(ok) {
                        settings.setValue("listen_port", listen_port);
-                       emit connectToHost("", quality, listen_port);
+                       emit connectToHost("", quality, listen_port, viewonly.isChecked());
                }
                return;
        }
@@ -188,12 +168,11 @@ void ConnectDialog::accept()
                        settings.setValue(QString("%1/position").arg(hostnames_sorted.at(i)), i+1);
        }
 
-#ifdef Q_WS_MAEMO_5
        settings.setValue(QString("%1/quality").arg(selected_host), quality);
-#endif
+       settings.setValue(QString("%1/viewonly").arg(selected_host), viewonly.isChecked());
 
        settings.endGroup();
        settings.sync();
 
-       emit connectToHost(QString("vnc://%1").arg(selected_host), quality, 0);
+       emit connectToHost(QString("vnc://%1").arg(selected_host), quality, 0, viewonly.isChecked());
 }
index 98bcd3f..ee19286 100644 (file)
@@ -22,7 +22,6 @@
 
 #include <QtGui>
 
-
 class QMaemo5ListPickSelector;
 
 class ConnectDialog : public QDialog {
@@ -32,19 +31,14 @@ public:
 public slots:
        virtual void accept();
 signals:
-       void connectToHost(QString url, int quality, int listen_port);
+       void connectToHost(QString url, int quality, int listen_port, bool view_only);
 private slots:
        void hostnameUpdated(QString newtext);
 private:
-       QHBoxLayout layout;
        QStringList hostnames_sorted;
-       QPushButton *done;
+       QPushButton done;
        QComboBox hosts;
-
-#ifdef Q_WS_MAEMO_5
-       QMaemo5ListPickSelector *quality_selector;
-#else
        QComboBox quality_combobox;
-#endif
+       QCheckBox viewonly;
 };
 #endif
index d08f673..0ce70d6 100644 (file)
@@ -182,16 +182,17 @@ and LibVNCServer, &copy; 2001-2003 Johannes E. Schindelin</p>\
 void MainWindow::showConnectDialog()
 {
        ConnectDialog *connect_dialog = new ConnectDialog(this);
-       connect(connect_dialog, SIGNAL(connectToHost(QString, int, int)),
-               this, SLOT(connectToHost(QString, int, int)));
+       connect(connect_dialog, SIGNAL(connectToHost(QString, int, int, bool)),
+               this, SLOT(connectToHost(QString, int, int, bool)));
        connect_dialog->exec();
 }
 
-void MainWindow::connectToHost(QString url, int quality, int listen_port)
+void MainWindow::connectToHost(QString url, int quality, int listen_port, bool view_only)
 {
        disconnectFromHost();
 
        vnc_view = new VncView(this, url, RemoteView::Quality(quality), listen_port);
+       vnc_view->setViewOnly(view_only);
 
        connect(vnc_view, SIGNAL(statusChanged(RemoteView::RemoteStatus)),
                this, SLOT(statusChanged(RemoteView::RemoteStatus)));
index 970dc11..1e97352 100644 (file)
@@ -34,7 +34,7 @@ public:
 public slots:
        void about();
        void showConnectDialog();
-       void connectToHost(QString url, int quality, int listen_port);
+       void connectToHost(QString url, int quality, int listen_port, bool view_only);
        void disconnectFromHost();
        void updateScreenSpace();
        void updateScreenSpaceDelayed();