summaryrefslogtreecommitdiff
path: root/noncore/comm/keypebble/kvnc.cpp
authortreke <treke>2002-09-04 17:53:12 (UTC)
committer treke <treke>2002-09-04 17:53:12 (UTC)
commit605d854057eb470a1d75210193b82eb0b1ad6b53 (patch) (unidiff)
treec411b661d5211fefbd83a7c8f63eef8c9cca72ee /noncore/comm/keypebble/kvnc.cpp
parentc35a5eabd8f5ed18e4216f6c88ee6794bacfb491 (diff)
downloadopie-605d854057eb470a1d75210193b82eb0b1ad6b53.zip
opie-605d854057eb470a1d75210193b82eb0b1ad6b53.tar.gz
opie-605d854057eb470a1d75210193b82eb0b1ad6b53.tar.bz2
Major modifications to the User Interface
1) Bookmark support added, all options are stored on a per bookmark basis 2) 16 Bit color is now a supported bit depth for the server
Diffstat (limited to 'noncore/comm/keypebble/kvnc.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/comm/keypebble/kvnc.cpp168
1 files changed, 125 insertions, 43 deletions
diff --git a/noncore/comm/keypebble/kvnc.cpp b/noncore/comm/keypebble/kvnc.cpp
index 43cffc5..aa46e2f 100644
--- a/noncore/comm/keypebble/kvnc.cpp
+++ b/noncore/comm/keypebble/kvnc.cpp
@@ -10,14 +10,27 @@
10#include <qpe/qpetoolbar.h> 10#include <qpe/qpetoolbar.h>
11#include <qtimer.h> 11#include <qtimer.h>
12#include <qmessagebox.h> 12#include <qmessagebox.h>
13#include <qspinbox.h>
14#include <qlistbox.h>
15#include <qlineedit.h>
13#include <qpe/qpeapplication.h> 16#include <qpe/qpeapplication.h>
14#include <qpe/global.h> 17#include <qpe/global.h>
18#include <qpe/qpetoolbar.h>
19#include <qpe/resource.h>
20
15#include <assert.h> 21#include <assert.h>
16 22
17#include "kvnc.h" 23#include "kvnc.h"
18#include "krfbcanvas.h" 24#include "krfbcanvas.h"
19#include "kvncoptionsdlg.h"
20#include "krfbconnection.h" 25#include "krfbconnection.h"
26#include "kvncconndlg.h"
27#include "krfbserver.h"
28
29static int u_id = 1;
30static int get_unique_id()
31{
32 return u_id++;
33}
21 34
22 35
23/* XPM */ 36/* XPM */
@@ -48,9 +61,19 @@ KVNC::KVNC( const char *name ) : QMainWindow( 0, name )
48 setCaption( tr("VNC Viewer") ); 61 setCaption( tr("VNC Viewer") );
49 fullscreen = false; 62 fullscreen = false;
50 63
51 canvas = new KRFBCanvas( this, "canvas" ); 64 stack = new QWidgetStack( this );
52 setCentralWidget( canvas ); 65 setCentralWidget( stack );
53 66
67 bookmarkSelector=new KVNCBookmarkDlg();
68 stack->addWidget(bookmarkSelector,get_unique_id());
69 stack->raiseWidget( bookmarkSelector );
70
71 canvas = new KRFBCanvas( stack, "canvas" );
72 stack->addWidget(canvas,get_unique_id());
73 setCentralWidget( stack );
74
75 connect( bookmarkSelector->bookmarkList, SIGNAL(doubleClicked(QListBoxItem *)),
76 this, SLOT(openConnection(QListBoxItem *)) );
54 connect( canvas->connection(), SIGNAL(statusChanged(const QString &)), 77 connect( canvas->connection(), SIGNAL(statusChanged(const QString &)),
55 this, SLOT(statusMessage(const QString &)) ); 78 this, SLOT(statusMessage(const QString &)) );
56 connect( canvas->connection(), SIGNAL(error(const QString &)), 79 connect( canvas->connection(), SIGNAL(error(const QString &)),
@@ -66,16 +89,73 @@ KVNC::KVNC( const char *name ) : QMainWindow( 0, name )
66 connect( cornerButton, SIGNAL(pressed()), this, SLOT(showMenu()) ); 89 connect( cornerButton, SIGNAL(pressed()), this, SLOT(showMenu()) );
67 canvas->setCornerWidget( cornerButton ); 90 canvas->setCornerWidget( cornerButton );
68 91
69 QTimer::singleShot( 0, canvas, SLOT(openConnection()) ); 92 stack->raiseWidget( bookmarkSelector );
93
94
95 QPEToolBar *bar = new QPEToolBar( this );
96
97 QAction *n = new QAction( tr( "New Connection" ), Resource::loadPixmap( "new" ),
98 QString::null, 0, this, 0 );
99 connect( n, SIGNAL( activated() ),
100 this, SLOT( newConnection() ) );
101 n->addTo( bar );
102
103 QAction *o = new QAction( tr( "Open Bookmark" ), Resource::loadPixmap( "edit" ),
104 QString::null, 0, this, 0 );
105 connect( o, SIGNAL( activated() ),
106 this, SLOT( openConnection() ) );
107 o->addTo( bar );
108
109 QAction *d = new QAction( tr( "Delete Bookmark" ), Resource::loadPixmap( "trash" ),
110 QString::null, 0, this, 0 );
111 connect( d, SIGNAL( activated() ),
112 this, SLOT( deleteBookmark() ) );
113 d->addTo( bar );
70} 114}
71 115
72KVNC::~KVNC() 116KVNC::~KVNC()
73{ 117{
118
119}
120
121void KVNC::newConnection()
122{
123 curServer=new KRFBServer;
124
125 KVNCConnDlg dlg( curServer,this);
126 dlg.showMaximized();
127 if (dlg.exec()) {
128 if (!curServer->name.isEmpty())
129 bookmarkSelector->addBookmark(curServer);
130 canvas->openConnection(*curServer);
131 } else
132 curServer=0;
133}
134
135void KVNC::openConnection( QString name)
136{
137 curServer=bookmarkSelector->getServer(name);
138
139 if (curServer) {
140 KVNCConnDlg dlg( curServer,this);
141 dlg.showMaximized();
142
143 if ( dlg.exec() ) {
144 canvas->openConnection(*curServer);
145 bookmarkSelector->writeBookmarks();
146 } else
147 curServer=0;
148 }
149}
150
151void KVNC::openConnection( void )
152{
153 openConnection( bookmarkSelector->selectedBookmark());
74} 154}
75 155
76void KVNC::openURL( const QUrl &url ) 156void KVNC::openConnection( QListBoxItem * item)
77{ 157{
78 canvas->openURL( url ); 158 openConnection(item->text());
79} 159}
80 160
81void KVNC::setupActions() 161void KVNC::setupActions()
@@ -88,14 +168,11 @@ void KVNC::setupActions()
88 fullScreenAction->addTo( cornerMenu ); 168 fullScreenAction->addTo( cornerMenu );
89 fullScreenAction->setEnabled( false ); 169 fullScreenAction->setEnabled( false );
90 170
91 optionsAction = new QAction( tr("Settings"), QString::null, 0, 0 ); 171 ctlAltDelAction = new QAction( tr("Send Contrl-Alt-Delete"), QString::null, 0, 0 );
92 connect( optionsAction, SIGNAL(activated()), this, SLOT( showOptions() ) ); 172 connect( ctlAltDelAction, SIGNAL(activated()),
93 optionsAction->addTo( cornerMenu ); 173 canvas, SLOT( sendCtlAltDel() ) );
94 174 ctlAltDelAction->addTo( cornerMenu );
95 connectAction = new QAction( tr("Connect..."), QString::null, 0, 0 ); 175 ctlAltDelAction->setEnabled( false );
96 connect( connectAction, SIGNAL(activated()),
97 canvas, SLOT( openConnection() ) );
98 connectAction->addTo( cornerMenu );
99 176
100 disconnectAction = new QAction( tr("Disconnect"), QString::null, 0, 0 ); 177 disconnectAction = new QAction( tr("Disconnect"), QString::null, 0, 0 );
101 connect( disconnectAction, SIGNAL(activated()), 178 connect( disconnectAction, SIGNAL(activated()),
@@ -106,26 +183,31 @@ void KVNC::setupActions()
106 183
107void KVNC::toggleFullScreen() 184void KVNC::toggleFullScreen()
108{ 185{
109 if ( fullscreen ) { 186 if ( fullscreen ) {
110 canvas->releaseKeyboard(); 187 canvas->releaseKeyboard();
111 canvas->reparent( this, 0, QPoint(0,0), false ); 188 canvas->reparent( stack, 0, QPoint(0,0), false );
112 canvas->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 189 canvas->setFrameStyle( QFrame::Panel | QFrame::Sunken );
113 setCentralWidget( canvas ); 190 setCentralWidget( stack );
114 canvas->show(); 191 stack->addWidget(canvas,get_unique_id());
115 fullScreenAction->setText( tr("Full Screen") ); 192 stack->raiseWidget(canvas);
116 } else { 193 canvas->show();
117 canvas->setFrameStyle( QFrame::NoFrame ); 194 stack->show();
118 canvas->reparent( 0,WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop, 195 fullScreenAction->setText( tr("Full Screen") );
119 QPoint(0,0),false); 196 } else {
120 canvas->resize(qApp->desktop()->width(), qApp->desktop()->height()); 197 canvas->setFrameStyle( QFrame::NoFrame );
121 canvas->raise(); 198 stack->removeWidget(canvas);
122 canvas->setFocus(); 199 canvas->reparent( 0,WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop,
123 canvas->grabKeyboard(); 200 QPoint(0,0),false);
124 canvas->show(); 201 canvas->resize(qApp->desktop()->width(), qApp->desktop()->height());
125 202 canvas->raise();
126 fullScreenAction->setText( tr("Stop Full Screen") ); 203 canvas->setFocus();
127 } 204 canvas->grabKeyboard();
128 205 canvas->show();
206
207 fullScreenAction->setText( tr("Stop Full Screen") );
208 }
209
210
129 fullscreen = !fullscreen; 211 fullscreen = !fullscreen;
130} 212}
131 213
@@ -149,9 +231,10 @@ void KVNC::connected()
149{ 231{
150 static QString msg = tr( "Connected to remote host" ); 232 static QString msg = tr( "Connected to remote host" );
151 statusMessage( msg ); 233 statusMessage( msg );
152 connectAction->setEnabled( false ); 234 ctlAltDelAction->setEnabled(true);
153 disconnectAction->setEnabled( true ); 235 disconnectAction->setEnabled( true );
154 fullScreenAction->setEnabled( true ); 236 fullScreenAction->setEnabled( true );
237 stack->raiseWidget(canvas);
155} 238}
156 239
157void KVNC::loggedIn() 240void KVNC::loggedIn()
@@ -162,11 +245,15 @@ void KVNC::loggedIn()
162 245
163void KVNC::disconnected() 246void KVNC::disconnected()
164{ 247{
248
249 if ( fullscreen )
250 toggleFullScreen();
165 static QString msg = tr( "Connection closed" ); 251 static QString msg = tr( "Connection closed" );
166 statusMessage( msg ); 252 statusMessage( msg );
167 connectAction->setEnabled( true ); 253 ctlAltDelAction->setEnabled(false);
168 disconnectAction->setEnabled( false ); 254 disconnectAction->setEnabled( false );
169 fullScreenAction->setEnabled( false ); 255 fullScreenAction->setEnabled( false );
256 stack->raiseWidget(bookmarkSelector);
170} 257}
171 258
172void KVNC::statusMessage( const QString &m ) 259void KVNC::statusMessage( const QString &m )
@@ -179,12 +266,7 @@ void KVNC::error( const QString &msg )
179 statusMessage( msg ); 266 statusMessage( msg );
180 QMessageBox::warning( this, tr("VNC Viewer"), msg ); 267 QMessageBox::warning( this, tr("VNC Viewer"), msg );
181} 268}
182 269void KVNC::deleteBookmark(void)
183void KVNC::showOptions()
184{ 270{
185 KVNCOptionsDlg *wdg = new KVNCOptionsDlg( canvas->connection()->options(), this ); 271 bookmarkSelector->deleteBookmark(bookmarkSelector->selectedBookmark());
186 wdg->showMaximized();
187 wdg->exec();
188 delete wdg;
189} 272}
190