add quality setting
authorChristian Pulvermacher <christian@christian-laptop.(none)>
Thu, 30 Sep 2010 19:18:51 +0000 (21:18 +0200)
committerChristian Pulvermacher <christian@christian-laptop.(none)>
Thu, 30 Sep 2010 19:18:51 +0000 (21:18 +0200)
debian/changelog
src/connectdialog.cpp
src/connectdialog.h
src/mainwindow.cpp
src/mainwindow.h

index 7b60cf8..4916ae9 100644 (file)
@@ -4,6 +4,7 @@ presencevnc (0.5) unstable; urgency=low
   * Add local cursor option
   * Symbol key (Fn+Ctrl) fixed
   * Don't start virtual keyboard with caps lock enabled
+  * Add quality setting (per connection)
 
  -- Christian Pulvermacher <pulvermacher@gmx.de>  Fri, 27 Aug 2010 19:09:29 +0200
 
index 8c877a6..11281e4 100644 (file)
 */
 #include <QtGui>
 
+#ifdef Q_WS_MAEMO_5
+#include <QMaemo5ValueButton>
+#include <QMaemo5ListPickSelector>
+#endif
+
 #include "connectdialog.h"
 
 #include <iostream>
@@ -57,11 +62,27 @@ ConnectDialog::ConnectDialog(QWidget *parent):
        hosts.lineEdit()->setInputMethodHints(Qt::ImhNoAutoUppercase); //somehow this doesn't work that well here
 #endif
        connect(&hosts, SIGNAL(editTextChanged(QString)),
-               this, SLOT(cleanHostname(QString)));
+               this, SLOT(hostnameUpdated(QString)));
        layout.addWidget(&hosts);
 
-       QPushButton *done = new QPushButton(tr("Done"));
-       done->setMaximumWidth(100);
+#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);
+
+       hostnameUpdated(hosts.lineEdit()->text()); //get saved quality for last host, or 2
+#endif
+
+       QPushButton *done = new QPushButton(tr("Connect"));
+       done->setMaximumWidth(110);
        connect(done, SIGNAL(clicked()),
                this, SLOT(accept()));
        layout.addWidget(done);
@@ -69,11 +90,19 @@ ConnectDialog::ConnectDialog(QWidget *parent):
        setLayout(&layout);
 }
 
-void ConnectDialog::cleanHostname(QString newtext)
+void ConnectDialog::hostnameUpdated(QString newtext)
 {
+       //clean up hostname
        newtext.remove(QChar('/'));
        newtext.remove(QChar('\\'));
        hosts.lineEdit()->setText(newtext.toLower());
+
+       //saved quality setting available?
+       QSettings settings;
+       int quality = settings.value(QString("hosts/%1/quality").arg(hosts.lineEdit()->text()), 2).toInt();
+       if(quality < 1 or quality > 3)
+               quality = 2;
+       quality_selector->setCurrentIndex(quality-1);
 }
 
 void ConnectDialog::accept()
@@ -115,9 +144,12 @@ void ConnectDialog::accept()
                //move selected host to front
                settings.setValue(QString("%1/position").arg(hosts.currentText()), 0);
        }
+       int quality = quality_selector->currentIndex() + 1;
+       settings.setValue(QString("%1/quality").arg(hosts.currentText()), quality);
+
        settings.endGroup();
        settings.sync();
 
-       emit connectToHost(QString("vnc://") + hosts.currentText());
+       emit connectToHost(QString("vnc://%1").arg(hosts.currentText()), quality);
        deleteLater();
 }
index 513cb11..6dc7320 100644 (file)
@@ -22,6 +22,8 @@
 
 #include <QtGui>
 
+class QMaemo5ListPickSelector;
+
 class ConnectDialog : public QDialog {
        Q_OBJECT
 public:
@@ -29,11 +31,12 @@ public:
 public slots:
        virtual void accept();
 signals:
-       void connectToHost(QString url);
+       void connectToHost(QString url, int quality);
 private slots:
-       void cleanHostname(QString newtext);
+       void hostnameUpdated(QString newtext);
 private:
        QHBoxLayout layout;
        QComboBox hosts;
+       QMaemo5ListPickSelector *quality_selector;
 };
 #endif
index 47d3d36..dbe099f 100644 (file)
@@ -181,16 +181,16 @@ void MainWindow::about() {
 void MainWindow::showConnectDialog()
 {
        ConnectDialog *connect_dialog = new ConnectDialog(this);
-       connect(connect_dialog, SIGNAL(connectToHost(QString)),
-               this, SLOT(connectToHost(QString)));
+       connect(connect_dialog, SIGNAL(connectToHost(QString, int)),
+               this, SLOT(connectToHost(QString, int)));
        connect_dialog->exec();
 }
 
-void MainWindow::connectToHost(QString url)
+void MainWindow::connectToHost(QString url, int quality)
 {
        disconnectFromHost();
 
-       vnc_view = new VncView(this, url, RemoteView::Quality(2));
+       vnc_view = new VncView(this, url, RemoteView::Quality(quality));
 
        connect(scaling, SIGNAL(toggled(bool)),
                vnc_view, SLOT(enableScaling(bool)));
index fc33210..a0096da 100644 (file)
@@ -47,7 +47,7 @@ public:
 public slots:
        void about();
        void showConnectDialog();
-       void connectToHost(QString url);
+       void connectToHost(QString url, int quality);
        void disconnectFromHost();
        void forceResize();
        void forceResizeDelayed();