From 4b31610a61be20e2d840991bd54bdf14ce9a1eb8 Mon Sep 17 00:00:00 2001 From: Christian Pulvermacher Date: Sun, 28 Nov 2010 15:34:31 +0100 Subject: [PATCH] add View only option to connect dialog --- src/connectdialog.cpp | 75 ++++++++++++++++++------------------------------- src/connectdialog.h | 12 ++------ src/mainwindow.cpp | 7 +++-- src/mainwindow.h | 2 +- 4 files changed, 35 insertions(+), 61 deletions(-) diff --git a/src/connectdialog.cpp b/src/connectdialog.cpp index 9c21d24..1caba92 100644 --- a/src/connectdialog.cpp +++ b/src/connectdialog.cpp @@ -22,17 +22,11 @@ #include -#ifdef Q_WS_MAEMO_5 -#include -#include -#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()); } diff --git a/src/connectdialog.h b/src/connectdialog.h index 98bcd3f..ee19286 100644 --- a/src/connectdialog.h +++ b/src/connectdialog.h @@ -22,7 +22,6 @@ #include - 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 diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index d08f673..0ce70d6 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -182,16 +182,17 @@ and LibVNCServer, © 2001-2003 Johannes E. Schindelin

\ 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))); diff --git a/src/mainwindow.h b/src/mainwindow.h index 970dc11..1e97352 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -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(); -- 1.7.9.5