Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

kvncbookmarkdlg.cpp

Go to the documentation of this file.
00001 #include "kvncbookmarkdlg.h"
00002 
00003 /* OPIE */
00004 #include <opie2/odebug.h>
00005 #include <qpe/global.h>
00006 using namespace Opie::Core;
00007 
00008 /* QT */
00009 #include <qdir.h>
00010 #include <qtextstream.h>
00011 #include <qlistbox.h>
00012 
00013 KVNCBookmarkDlg::KVNCBookmarkDlg( QWidget * parent, const char * name, WFlags f ) 
00014 
00015 : KVNCBookmarkDlgBase( parent, name,f)
00016 {
00017                 readBookmarks();
00018                 refresh();
00019 
00020 }
00021 
00022 KVNCBookmarkDlg::~KVNCBookmarkDlg()
00023 {
00024 }
00025 
00026 void KVNCBookmarkDlg::addBookmark(KRFBServer * server)
00027 {
00028                 if (server) {
00029                                 servers.append(server);
00030                                 bookmarkList->insertItem(server->name);
00031                                 writeBookmarks();
00032                                 refresh();
00033     }
00034 }
00035 
00036 void KVNCBookmarkDlg::deleteBookmark(QString name)
00037 {
00038                 KRFBServer * server=0;
00039     for ( server=servers.first(); server != 0; server=servers.next() ) {
00040         if (server->name==name) {
00041                                                 servers.remove(servers.at());
00042                                                 writeBookmarks();
00043                                                 refresh();
00044             return;
00045                                 }
00046     }
00047 }
00048 KRFBServer *KVNCBookmarkDlg::getServer(QString name)
00049 {
00050                 KRFBServer * server=0;
00051     for ( server=servers.first(); server != 0; server=servers.next() ) {
00052         if (server->name==name)
00053           
00054             return server;
00055     }
00056                 return 0;
00057 }
00058 
00059 
00060 /*
00061   Note that the degree of protection offered by the encryption here is
00062   only sufficient to avoid the most casual observation of the configuration
00063   files. People with access to the files can write down the contents and
00064   decrypt it using this source code.
00065 
00066   Conceivably, and at some burden to the user, this encryption could
00067   be improved.
00068 */
00069 QString KVNCBookmarkDlg::encipher(const QString& plain)
00070 {
00071     // mainly, we make it long
00072     QString cipher;
00073     int mix=28730492;
00074     for (int i=0; i<(int)plain.length(); i++) {
00075         int u = plain[i].unicode();
00076         int c = u ^ mix;
00077         QString x = QString::number(c,36);
00078         cipher.append(QChar('a'+x.length()));
00079         cipher.append(x);
00080         mix *= u;
00081     }
00082     return cipher;
00083 }
00084 
00085 QString KVNCBookmarkDlg::decipher(const QString& cipher)
00086 {
00087     QString plain;
00088     int mix=28730492;
00089     for (int i=0; i<(int)cipher.length();) {
00090         int l = cipher[i].unicode()-'a';
00091         QString x = cipher.mid(i+1,l); i+=l+1;
00092         int u = x.toInt(0,36) ^ mix;
00093         plain.append(QChar(u));
00094         mix *= u;
00095     }
00096     return plain;
00097 }
00098 
00099 void KVNCBookmarkDlg::readBookmarks(void)
00100 {
00101                 QFile f(QDir::homeDirPath() + QString("/Applications/keypebble/bookmarks"));
00102 
00103                 QStringList entry;
00104                 QString key, val;
00105                 KRFBServer * server=0;
00106                 
00107                 if ( f.open(IO_ReadOnly) ) {
00108                                 QTextStream t( &f );
00109                                 QString s;
00110                                 int n = 1;
00111                                 while ( !t.eof() ) {
00112                                                 s = t.readLine();
00113                                                 
00114 
00115                                                 entry=QStringList::split('=',s);
00116                                                 key=entry[0].stripWhiteSpace().lower();
00117                                                 val=entry[1].stripWhiteSpace();
00118 
00119                                                 if (key=="server") {
00120 
00121                                                                 if (server){
00122                                                                                 servers.append(server);
00123                                                                                 server=0;
00124                                                                 }
00125                                                                 server = new KRFBServer();
00126 
00127                                                                 if (!server)
00128                                                                                 return;
00129                                                                 server->name=val;
00130 
00131                                                 }
00132                                                 else if (key=="hostname") 
00133                                                                 server->hostname=val;
00134                                                 else if (key=="password") 
00135                                                         server->password=decipher(val);
00136                                                 else if (key=="display")  
00137                                                                 server->display=val.toInt();
00138                                                 else if (key=="hextile") 
00139                                                                 server->hexTile=val.toInt();
00140                                                 else if (key=="corre") 
00141                                                                 server->corre=val.toInt();
00142                                                 else if (key=="rre") 
00143                                                                 server->rre=val.toInt();
00144                                                 else if (key=="copyrect") 
00145                                                                 server->copyrect=val.toInt();
00146                                                 else if (key=="colors256") 
00147                                                                 server->colors256=val.toInt();
00148                                                 else if (key=="shared") 
00149                                                                 server->shared=val.toInt();
00150                                                 else if (key=="readonly") 
00151                                                                 server->readOnly=val.toInt();
00152                                                 else if (key=="deiconify") 
00153                                                                 server->deIconify=val.toInt();
00154                                                 else if (key=="updaterate") 
00155                                                                 server->updateRate=val.toInt();
00156                                                 else if (key=="scalefactor") 
00157                                                                 server->scaleFactor=val.toInt();
00158 
00159                                 }
00160                                 if (server){
00161                                         servers.append(server);
00162                                         server=0;
00163                                 }
00164                                 f.close();
00165                 }
00166 }
00167 
00168 void KVNCBookmarkDlg::writeBookmarks(void)
00169 {
00170                 QString filename=Global::applicationFileName("keypebble","bookmarks");
00171                                                 
00172                 QFile f(filename);
00173 
00174                 QString key, val;
00175                 KRFBServer * server=0;
00176                 
00177                 if ( f.open(IO_ReadWrite) ) {
00178                                 QTextStream t( &f );
00179                                 QString s;
00180                                 int n = 1;
00181         KRFBServer *server;
00182 
00183          for ( server=servers.first(); server != 0; server=servers.next() ) {
00184                 odebug << server->name << oendl; 
00185           t << "server=" << server->name << '\n';
00186                                         t << "\thostname=" << server->hostname << '\n';
00187                                         t << "\tpassword=" << encipher(server->password )<< '\n';
00188                                         t << "\tdisplay=" << server->display << '\n';
00189                                         t << "\thextile=" << server->hexTile << '\n';
00190                                         t << "\tcorre=" << server->corre << '\n';
00191                                         t << "\trre=" << server->rre << '\n';
00192                                         t << "\tcopyrect=" << server->copyrect << '\n';
00193                                         t << "\tshared=" << server->shared << '\n';
00194                                         t << "\treadonly=" << server->readOnly << '\n';
00195                                         t << "\tdeiconify=" << server->deIconify << '\n';
00196                                         t << "\tupdaterate=" << server->updateRate << '\n';
00197                                         t << "\tscalefactor=" << server->scaleFactor << '\n';
00198 
00199                                 }
00200                                 f.close();
00201                 }
00202 }
00203 void KVNCBookmarkDlg::refresh(void)
00204 {
00205                 bookmarkList->clear();
00206                 KRFBServer * server=0;
00207     for ( server=servers.first(); server != 0; server=servers.next() ) {
00208       bookmarkList->insertItem(server->name);
00209     }
00210 }
00211 
00212 QString KVNCBookmarkDlg::selectedBookmark()
00213 {
00214                 return bookmarkList->currentText();
00215 }

Generated on Sat Nov 5 16:17:17 2005 for OPIE by  doxygen 1.4.2