summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/todayplugins/stockticker/stockticker/helpwindow.cpp19
-rw-r--r--noncore/todayplugins/stockticker/stockticker/inputDialog.cpp2
-rw-r--r--noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.cpp4
-rw-r--r--noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.cpp13
4 files changed, 0 insertions, 38 deletions
diff --git a/noncore/todayplugins/stockticker/stockticker/helpwindow.cpp b/noncore/todayplugins/stockticker/stockticker/helpwindow.cpp
index 33dcac0..23e78f2 100644
--- a/noncore/todayplugins/stockticker/stockticker/helpwindow.cpp
+++ b/noncore/todayplugins/stockticker/stockticker/helpwindow.cpp
@@ -1,287 +1,268 @@
1/**************************************************************************** 1/****************************************************************************
2** $Id$ 2** $Id$
3** 3**
4** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. 4** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
5** 5**
6** This file is part of an example program for Qt. This example 6** This file is part of an example program for Qt. This example
7** program may be used, distributed and modified without limitation. 7** program may be used, distributed and modified without limitation.
8** 8**
9*****************************************************************************/ 9*****************************************************************************/
10 10
11#include "helpwindow.h" 11#include "helpwindow.h"
12#include <qstatusbar.h> 12#include <qstatusbar.h>
13#include <qstringlist.h>
14 13
15#include <qpixmap.h>
16#include <qpopupmenu.h>
17#include <qmenubar.h> 14#include <qmenubar.h>
18#include <qtoolbar.h> 15#include <qtoolbar.h>
19#include <qtoolbutton.h> 16#include <qtoolbutton.h>
20#include <qiconset.h>
21#include <qfile.h>
22#include <qtextstream.h>
23#include <qstylesheet.h>
24#include <qmessagebox.h>
25#include <qfiledialog.h>
26#include <qapplication.h>
27#include <qcombobox.h> 17#include <qcombobox.h>
28#include <qevent.h>
29#include <qlineedit.h>
30#include <qobjectlist.h>
31#include <qfileinfo.h>
32#include <qfile.h>
33#include <qdatastream.h>
34#include <qprinter.h>
35#include <qsimplerichtext.h>
36#include <qpaintdevicemetrics.h>
37 18
38#include <ctype.h> 19#include <ctype.h>
39 20
40HelpWindow::HelpWindow( const QString& home_, const QString& _path, QWidget* parent, const char *name ) 21HelpWindow::HelpWindow( const QString& home_, const QString& _path, QWidget* parent, const char *name )
41 : QMainWindow( parent, name, WDestructiveClose ), pathCombo( 0 ), selectedURL() 22 : QMainWindow( parent, name, WDestructiveClose ), pathCombo( 0 ), selectedURL()
42{ 23{
43 readHistory(); 24 readHistory();
44 readBookmarks(); 25 readBookmarks();
45 26
46 browser = new QTextBrowser( this ); 27 browser = new QTextBrowser( this );
47 QStringList Strlist; 28 QStringList Strlist;
48 Strlist.append( home_); 29 Strlist.append( home_);
49 30
50 browser->mimeSourceFactory()->setFilePath( Strlist ); 31 browser->mimeSourceFactory()->setFilePath( Strlist );
51 32
52 browser->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 33 browser->setFrameStyle( QFrame::Panel | QFrame::Sunken );
53 34
54 connect( browser, SIGNAL( textChanged() ), 35 connect( browser, SIGNAL( textChanged() ),
55 36
56 this, SLOT( textChanged() ) ); 37 this, SLOT( textChanged() ) );
57 38
58 setCentralWidget( browser ); 39 setCentralWidget( browser );
59 40
60 if ( !home_.isEmpty() ) 41 if ( !home_.isEmpty() )
61 42
62//////////////////////////////// 43////////////////////////////////
63 browser->setSource( home_ ); 44 browser->setSource( home_ );
64 45
65//////////////////////////////// 46////////////////////////////////
66 connect( browser, SIGNAL( highlighted( const QString&) ), 47 connect( browser, SIGNAL( highlighted( const QString&) ),
67 statusBar(), SLOT( message( const QString&)) ); 48 statusBar(), SLOT( message( const QString&)) );
68 49
69 setGeometry( 0,0,236,280); 50 setGeometry( 0,0,236,280);
70 51
71 QPopupMenu* file = new QPopupMenu( this ); 52 QPopupMenu* file = new QPopupMenu( this );
72// file->insertItem( tr("&New Window"), this, SLOT( newWindow() ), ALT | Key_N ); 53// file->insertItem( tr("&New Window"), this, SLOT( newWindow() ), ALT | Key_N );
73 file->insertItem( tr("&Open File"), this, SLOT( openFile() ), ALT | Key_O ); 54 file->insertItem( tr("&Open File"), this, SLOT( openFile() ), ALT | Key_O );
74// file->insertItem( tr("&Print"), this, SLOT( print() ), ALT | Key_P ); 55// file->insertItem( tr("&Print"), this, SLOT( print() ), ALT | Key_P );
75 file->insertSeparator(); 56 file->insertSeparator();
76 file->insertItem( tr("&Close"), this, SLOT( close() ), ALT | Key_Q ); 57 file->insertItem( tr("&Close"), this, SLOT( close() ), ALT | Key_Q );
77// file->insertItem( tr("E&xit"), qApp, SLOT( closeAllWindows() ), ALT | Key_X ); 58// file->insertItem( tr("E&xit"), qApp, SLOT( closeAllWindows() ), ALT | Key_X );
78 59
79 // The same three icons are used twice each. 60 // The same three icons are used twice each.
80////F FIXME 61////F FIXME
81 QString pixs=(QDir::homeDirPath ()) +"/Applications/gutenbrowser/pix/"; 62 QString pixs=(QDir::homeDirPath ()) +"/Applications/gutenbrowser/pix/";
82 QIconSet icon_back( QPixmap(pixs+"back.png") ); 63 QIconSet icon_back( QPixmap(pixs+"back.png") );
83 QIconSet icon_forward( QPixmap(pixs+"forward.png") ); 64 QIconSet icon_forward( QPixmap(pixs+"forward.png") );
84 QIconSet icon_home( QPixmap(pixs+"home.png") ); 65 QIconSet icon_home( QPixmap(pixs+"home.png") );
85 66
86 QPopupMenu* go = new QPopupMenu( this ); 67 QPopupMenu* go = new QPopupMenu( this );
87 backwardId = go->insertItem( icon_back, tr("&Backward"), browser, SLOT( backward() ), ALT | Key_Left ); 68 backwardId = go->insertItem( icon_back, tr("&Backward"), browser, SLOT( backward() ), ALT | Key_Left );
88 forwardId = go->insertItem( icon_forward, tr("&Forward"), browser, SLOT( forward() ), ALT | Key_Right ); 69 forwardId = go->insertItem( icon_forward, tr("&Forward"), browser, SLOT( forward() ), ALT | Key_Right );
89 go->insertItem( icon_home, tr("&Home"), browser, SLOT( home() ) ); 70 go->insertItem( icon_home, tr("&Home"), browser, SLOT( home() ) );
90 71
91 72
92 hist = new QPopupMenu( this ); 73 hist = new QPopupMenu( this );
93 QStringList::Iterator it = history.begin(); 74 QStringList::Iterator it = history.begin();
94 for ( ; it != history.end(); ++it ) 75 for ( ; it != history.end(); ++it )
95 mHistory[ hist->insertItem( *it ) ] = *it; 76 mHistory[ hist->insertItem( *it ) ] = *it;
96 connect( hist, SIGNAL( activated( int ) ), this, SLOT( histChosen( int ) ) ); 77 connect( hist, SIGNAL( activated( int ) ), this, SLOT( histChosen( int ) ) );
97 78
98 bookm = new QPopupMenu( this ); 79 bookm = new QPopupMenu( this );
99 bookm->insertItem( tr( "Add Bookmark" ), this, SLOT( addBookmark() ) ); 80 bookm->insertItem( tr( "Add Bookmark" ), this, SLOT( addBookmark() ) );
100 bookm->insertSeparator(); 81 bookm->insertSeparator();
101 82
102 QStringList::Iterator it2 = bookmarks.begin(); 83 QStringList::Iterator it2 = bookmarks.begin();
103 for ( ; it2 != bookmarks.end(); ++it2 ) 84 for ( ; it2 != bookmarks.end(); ++it2 )
104 mBookmarks[ bookm->insertItem( *it2 ) ] = *it2; 85 mBookmarks[ bookm->insertItem( *it2 ) ] = *it2;
105 connect( bookm, SIGNAL( activated( int ) ), 86 connect( bookm, SIGNAL( activated( int ) ),
106 this, SLOT( bookmChosen( int ) ) ); 87 this, SLOT( bookmChosen( int ) ) );
107 88
108 menuBar()->insertItem( tr("&File"), file ); 89 menuBar()->insertItem( tr("&File"), file );
109 menuBar()->insertItem( tr("&Go"), go ); 90 menuBar()->insertItem( tr("&Go"), go );
110 menuBar()->insertItem( tr( "History" ), hist ); 91 menuBar()->insertItem( tr( "History" ), hist );
111 menuBar()->insertItem( tr( "Bookmarks" ), bookm ); 92 menuBar()->insertItem( tr( "Bookmarks" ), bookm );
112// menuBar()->insertSeparator(); 93// menuBar()->insertSeparator();
113// menuBar()->insertItem( tr("&Help"), help ); 94// menuBar()->insertItem( tr("&Help"), help );
114 95
115 menuBar()->setItemEnabled( forwardId, FALSE); 96 menuBar()->setItemEnabled( forwardId, FALSE);
116 menuBar()->setItemEnabled( backwardId, FALSE); 97 menuBar()->setItemEnabled( backwardId, FALSE);
117 connect( browser, SIGNAL( backwardAvailable( bool ) ), this, SLOT( setBackwardAvailable( bool ) ) ); 98 connect( browser, SIGNAL( backwardAvailable( bool ) ), this, SLOT( setBackwardAvailable( bool ) ) );
118 connect( browser, SIGNAL( forwardAvailable( bool ) ), this, SLOT( setForwardAvailable( bool ) ) ); 99 connect( browser, SIGNAL( forwardAvailable( bool ) ), this, SLOT( setForwardAvailable( bool ) ) );
119 100
120 101
121 QToolBar* toolbar = new QToolBar( this ); 102 QToolBar* toolbar = new QToolBar( this );
122 addToolBar( toolbar, "Toolbar"); 103 addToolBar( toolbar, "Toolbar");
123 QToolButton* button; 104 QToolButton* button;
124 105
125 button = new QToolButton( icon_back, tr("Backward"), "", browser, SLOT(backward()), toolbar ); 106 button = new QToolButton( icon_back, tr("Backward"), "", browser, SLOT(backward()), toolbar );
126 connect( browser, SIGNAL( backwardAvailable(bool) ), button, SLOT( setEnabled(bool) ) ); 107 connect( browser, SIGNAL( backwardAvailable(bool) ), button, SLOT( setEnabled(bool) ) );
127 button->setEnabled( FALSE ); 108 button->setEnabled( FALSE );
128 button = new QToolButton( icon_forward, tr("Forward"), "", browser, SLOT(forward()), toolbar ); 109 button = new QToolButton( icon_forward, tr("Forward"), "", browser, SLOT(forward()), toolbar );
129 connect( browser, SIGNAL( forwardAvailable(bool) ), button, SLOT( setEnabled(bool) ) ); 110 connect( browser, SIGNAL( forwardAvailable(bool) ), button, SLOT( setEnabled(bool) ) );
130 button->setEnabled( FALSE ); 111 button->setEnabled( FALSE );
131 button = new QToolButton( icon_home, tr("Home"), "", browser, SLOT(home()), toolbar ); 112 button = new QToolButton( icon_home, tr("Home"), "", browser, SLOT(home()), toolbar );
132 113
133 toolbar->addSeparator(); 114 toolbar->addSeparator();
134 115
135 pathCombo = new QComboBox( TRUE, toolbar ); 116 pathCombo = new QComboBox( TRUE, toolbar );
136 connect( pathCombo, SIGNAL( activated( const QString & ) ), this, SLOT( pathSelected( const QString & ) ) ); 117 connect( pathCombo, SIGNAL( activated( const QString & ) ), this, SLOT( pathSelected( const QString & ) ) );
137 toolbar->setStretchableWidget( pathCombo ); 118 toolbar->setStretchableWidget( pathCombo );
138 119
139// pathCombo->setMaximumWidth(190); 120// pathCombo->setMaximumWidth(190);
140// setRightJustification( TRUE ); 121// setRightJustification( TRUE );
141// setDockEnabled( Left, FALSE ); 122// setDockEnabled( Left, FALSE );
142// setDockEnabled( Right, FALSE ); 123// setDockEnabled( Right, FALSE );
143 124
144 pathCombo->insertItem( home_ ); 125 pathCombo->insertItem( home_ );
145 126
146 browser->setFocus(); 127 browser->setFocus();
147 128
148 129
149} 130}
150 131
151 132
152void HelpWindow::setBackwardAvailable( bool b) 133void HelpWindow::setBackwardAvailable( bool b)
153{ 134{
154 menuBar()->setItemEnabled( backwardId, b); 135 menuBar()->setItemEnabled( backwardId, b);
155} 136}
156 137
157void HelpWindow::setForwardAvailable( bool b) 138void HelpWindow::setForwardAvailable( bool b)
158{ 139{
159 menuBar()->setItemEnabled( forwardId, b); 140 menuBar()->setItemEnabled( forwardId, b);
160} 141}
161 142
162 143
163void HelpWindow::textChanged() 144void HelpWindow::textChanged()
164{ 145{
165 if ( browser->documentTitle().isNull() ) { 146 if ( browser->documentTitle().isNull() ) {
166 setCaption( "Stockticker Lookup - " + browser->context() ); 147 setCaption( "Stockticker Lookup - " + browser->context() );
167 selectedURL = browser->context(); 148 selectedURL = browser->context();
168 } 149 }
169 else { 150 else {
170 setCaption( "Stockticker Lookup - " + browser->documentTitle() ) ; 151 setCaption( "Stockticker Lookup - " + browser->documentTitle() ) ;
171 selectedURL = browser->documentTitle(); 152 selectedURL = browser->documentTitle();
172 } 153 }
173 154
174 if ( !selectedURL.isEmpty() && pathCombo ) { 155 if ( !selectedURL.isEmpty() && pathCombo ) {
175 bool exists = FALSE; 156 bool exists = FALSE;
176 int i; 157 int i;
177 for ( i = 0; i < pathCombo->count(); ++i ) { 158 for ( i = 0; i < pathCombo->count(); ++i ) {
178 if ( pathCombo->text( i ) == selectedURL ) { 159 if ( pathCombo->text( i ) == selectedURL ) {
179 exists = TRUE; 160 exists = TRUE;
180 break; 161 break;
181 } 162 }
182 } 163 }
183 if ( !exists ) { 164 if ( !exists ) {
184 pathCombo->insertItem( selectedURL, 0 ); 165 pathCombo->insertItem( selectedURL, 0 );
185 pathCombo->setCurrentItem( 0 ); 166 pathCombo->setCurrentItem( 0 );
186 mHistory[ hist->insertItem( selectedURL ) ] = selectedURL; 167 mHistory[ hist->insertItem( selectedURL ) ] = selectedURL;
187 } else 168 } else
188 pathCombo->setCurrentItem( i ); 169 pathCombo->setCurrentItem( i );
189 selectedURL = QString::null; 170 selectedURL = QString::null;
190 } 171 }
191} 172}
192 173
193HelpWindow::~HelpWindow() 174HelpWindow::~HelpWindow()
194{ 175{
195 history.clear(); 176 history.clear();
196 QMap<int, QString>::Iterator it = mHistory.begin(); 177 QMap<int, QString>::Iterator it = mHistory.begin();
197 for ( ; it != mHistory.end(); ++it ) 178 for ( ; it != mHistory.end(); ++it )
198 history.append( *it ); 179 history.append( *it );
199 180
200 QFile f( QDir::currentDirPath() + "/.history" ); 181 QFile f( QDir::currentDirPath() + "/.history" );
201 f.open( IO_WriteOnly ); 182 f.open( IO_WriteOnly );
202 QDataStream s( &f ); 183 QDataStream s( &f );
203 s << history; 184 s << history;
204 f.close(); 185 f.close();
205 186
206 bookmarks.clear(); 187 bookmarks.clear();
207 QMap<int, QString>::Iterator it2 = mBookmarks.begin(); 188 QMap<int, QString>::Iterator it2 = mBookmarks.begin();
208 for ( ; it2 != mBookmarks.end(); ++it2 ) 189 for ( ; it2 != mBookmarks.end(); ++it2 )
209 bookmarks.append( *it2 ); 190 bookmarks.append( *it2 );
210 191
211 QFile f2( QDir::currentDirPath() + "/.bookmarks" ); 192 QFile f2( QDir::currentDirPath() + "/.bookmarks" );
212 f2.open( IO_WriteOnly ); 193 f2.open( IO_WriteOnly );
213 QDataStream s2( &f2 ); 194 QDataStream s2( &f2 );
214 s2 << bookmarks; 195 s2 << bookmarks;
215 f2.close(); 196 f2.close();
216} 197}
217 198
218void HelpWindow::openFile() 199void HelpWindow::openFile()
219{ 200{
220#ifndef QT_NO_FILEDIALOG 201#ifndef QT_NO_FILEDIALOG
221 QString fn = QFileDialog::getOpenFileName( QString::null, QString::null, this ); 202 QString fn = QFileDialog::getOpenFileName( QString::null, QString::null, this );
222 if ( !fn.isEmpty() ) 203 if ( !fn.isEmpty() )
223 browser->setSource( fn ); 204 browser->setSource( fn );
224#endif 205#endif
225} 206}
226 207
227void HelpWindow::newWindow() 208void HelpWindow::newWindow()
228{ 209{
229 ( new HelpWindow(browser->source(), "qbrowser") )->show(); 210 ( new HelpWindow(browser->source(), "qbrowser") )->show();
230} 211}
231 212
232void HelpWindow::pathSelected( const QString &_path ) 213void HelpWindow::pathSelected( const QString &_path )
233{ 214{
234 browser->setSource( _path ); 215 browser->setSource( _path );
235 QMap<int, QString>::Iterator it = mHistory.begin(); 216 QMap<int, QString>::Iterator it = mHistory.begin();
236 bool exists = FALSE; 217 bool exists = FALSE;
237 for ( ; it != mHistory.end(); ++it ) { 218 for ( ; it != mHistory.end(); ++it ) {
238 if ( *it == _path ) { 219 if ( *it == _path ) {
239 exists = TRUE; 220 exists = TRUE;
240 break; 221 break;
241 } 222 }
242 } 223 }
243 if ( !exists ) 224 if ( !exists )
244 mHistory[ hist->insertItem( _path ) ] = _path; 225 mHistory[ hist->insertItem( _path ) ] = _path;
245} 226}
246 227
247void HelpWindow::readHistory() 228void HelpWindow::readHistory()
248{ 229{
249 if ( QFile::exists( QDir::currentDirPath() + "/.history" ) ) { 230 if ( QFile::exists( QDir::currentDirPath() + "/.history" ) ) {
250 QFile f( QDir::currentDirPath() + "/.history" ); 231 QFile f( QDir::currentDirPath() + "/.history" );
251 f.open( IO_ReadOnly ); 232 f.open( IO_ReadOnly );
252 QDataStream s( &f ); 233 QDataStream s( &f );
253 s >> history; 234 s >> history;
254 f.close(); 235 f.close();
255 while ( history.count() > 20 ) 236 while ( history.count() > 20 )
256 history.remove( history.begin() ); 237 history.remove( history.begin() );
257 } 238 }
258} 239}
259 240
260void HelpWindow::readBookmarks() 241void HelpWindow::readBookmarks()
261{ 242{
262 if ( QFile::exists( QDir::currentDirPath() + "/.bookmarks" ) ) { 243 if ( QFile::exists( QDir::currentDirPath() + "/.bookmarks" ) ) {
263 QFile f( QDir::currentDirPath() + "/.bookmarks" ); 244 QFile f( QDir::currentDirPath() + "/.bookmarks" );
264 f.open( IO_ReadOnly ); 245 f.open( IO_ReadOnly );
265 QDataStream s( &f ); 246 QDataStream s( &f );
266 s >> bookmarks; 247 s >> bookmarks;
267 f.close(); 248 f.close();
268 } 249 }
269} 250}
270 251
271void HelpWindow::histChosen( int i ) 252void HelpWindow::histChosen( int i )
272{ 253{
273 if ( mHistory.contains( i ) ) 254 if ( mHistory.contains( i ) )
274 browser->setSource( mHistory[ i ] ); 255 browser->setSource( mHistory[ i ] );
275} 256}
276 257
277void HelpWindow::bookmChosen( int i ) 258void HelpWindow::bookmChosen( int i )
278{ 259{
279 if ( mBookmarks.contains( i ) ) 260 if ( mBookmarks.contains( i ) )
280 browser->setSource( mBookmarks[ i ] ); 261 browser->setSource( mBookmarks[ i ] );
281} 262}
282 263
283void HelpWindow::addBookmark() 264void HelpWindow::addBookmark()
284{ 265{
285 mBookmarks[ bookm->insertItem( caption() ) ] = caption(); 266 mBookmarks[ bookm->insertItem( caption() ) ] = caption();
286} 267}
287 268
diff --git a/noncore/todayplugins/stockticker/stockticker/inputDialog.cpp b/noncore/todayplugins/stockticker/stockticker/inputDialog.cpp
index 18021c2..42a3885 100644
--- a/noncore/todayplugins/stockticker/stockticker/inputDialog.cpp
+++ b/noncore/todayplugins/stockticker/stockticker/inputDialog.cpp
@@ -1,89 +1,87 @@
1#include "inputDialog.h" 1#include "inputDialog.h"
2 2
3#include <qapplication.h> 3#include <qapplication.h>
4 4
5#include <qcheckbox.h> 5#include <qcheckbox.h>
6#include <qlayout.h>
7#include <qlineedit.h> 6#include <qlineedit.h>
8#include <qlayout.h>
9#include <qvariant.h> 7#include <qvariant.h>
10#include <qpushbutton.h> 8#include <qpushbutton.h>
11#include <qwhatsthis.h> 9#include <qwhatsthis.h>
12#include <qlabel.h> 10#include <qlabel.h>
13#include <qpe/config.h> 11#include <qpe/config.h>
14#include <qstringlist.h> 12#include <qstringlist.h>
15#include <qmainwindow.h> 13#include <qmainwindow.h>
16#include "helpwindow.h" 14#include "helpwindow.h"
17 15
18#include <opie/oprocess.h> 16#include <opie/oprocess.h>
19 17
20#include <stdlib.h> 18#include <stdlib.h>
21// #include <sys/stat.h> 19// #include <sys/stat.h>
22// #include <unistd.h> 20// #include <unistd.h>
23 21
24InputDialog::InputDialog( ) 22InputDialog::InputDialog( )
25 : QMainWindow( 0x0, 0x0, WStyle_ContextHelp ) { 23 : QMainWindow( 0x0, 0x0, WStyle_ContextHelp ) {
26 setCaption( tr("Symbol Lookup")); 24 setCaption( tr("Symbol Lookup"));
27 25
28 QGridLayout *layout = new QGridLayout( this ); 26 QGridLayout *layout = new QGridLayout( this );
29 layout->setSpacing(6); 27 layout->setSpacing(6);
30 layout->setMargin( 2); 28 layout->setMargin( 2);
31 29
32 LineEdit1 = new QLineEdit( this, "LineEdit1" ); 30 LineEdit1 = new QLineEdit( this, "LineEdit1" );
33 LineEdit1->setFocus(); 31 LineEdit1->setFocus();
34 32
35 layout->addMultiCellWidget( LineEdit1, 0, 0, 0, 3); 33 layout->addMultiCellWidget( LineEdit1, 0, 0, 0, 3);
36 34
37 QLabel *label; 35 QLabel *label;
38 label = new QLabel(this); 36 label = new QLabel(this);
39 label->setText( tr("Enter something to lookup / search.")); 37 label->setText( tr("Enter something to lookup / search."));
40 label->setMaximumHeight(60); 38 label->setMaximumHeight(60);
41 layout->addMultiCellWidget( label, 1, 1, 0, 3); 39 layout->addMultiCellWidget( label, 1, 1, 0, 3);
42 40
43 connect(LineEdit1,SIGNAL(returnPressed()),this,SLOT(doLookup())); 41 connect(LineEdit1,SIGNAL(returnPressed()),this,SLOT(doLookup()));
44 QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding ); 42 QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding );
45 layout->addItem( spacer, 8, 0 ); 43 layout->addItem( spacer, 8, 0 );
46 44
47} 45}
48 46
49InputDialog::~InputDialog() { 47InputDialog::~InputDialog() {
50} 48}
51 49
52void InputDialog::doLookup() { 50void InputDialog::doLookup() {
53// http://finance.yahoo.com/l?m=&s=siemens&t= 51// http://finance.yahoo.com/l?m=&s=siemens&t=
54 52
55 QString url = "\"http://finance.yahoo.com/l?m=&s="+LineEdit1->text()+"\""; 53 QString url = "\"http://finance.yahoo.com/l?m=&s="+LineEdit1->text()+"\"";
56 QString tempHtml = "/tmp/stockticker.html"; 54 QString tempHtml = "/tmp/stockticker.html";
57 QString cmd = "wget -O "+tempHtml+" "+url; 55 QString cmd = "wget -O "+tempHtml+" "+url;
58 qDebug(cmd); 56 qDebug(cmd);
59 57
60 58
61/* 59/*
62 OProcess proc; 60 OProcess proc;
63 proc << "/usr/bin/wget"; 61 proc << "/usr/bin/wget";
64 proc<<"-O"<< tempHtml<< url; 62 proc<<"-O"<< tempHtml<< url;
65 63
66 connect( &proc, SIGNAL( processExited( OProcess *)),this, SLOT( showBrowser(OProcess *))); 64 connect( &proc, SIGNAL( processExited( OProcess *)),this, SLOT( showBrowser(OProcess *)));
67 proc.start( OProcess::NotifyOnExit); 65 proc.start( OProcess::NotifyOnExit);
68*/ 66*/
69 system(cmd.latin1()); 67 system(cmd.latin1());
70 HelpWindow *StockLookup = new HelpWindow( tempHtml,".",this, "SymbolLookup"); 68 HelpWindow *StockLookup = new HelpWindow( tempHtml,".",this, "SymbolLookup");
71 StockLookup->setCaption("Symbol"); 69 StockLookup->setCaption("Symbol");
72 StockLookup->showMaximized(); 70 StockLookup->showMaximized();
73 StockLookup->show(); 71 StockLookup->show();
74 LineEdit1->text(); 72 LineEdit1->text();
75 73
76 74
77} 75}
78 76
79void InputDialog::showBrowser(OProcess*) { 77void InputDialog::showBrowser(OProcess*) {
80 qDebug("BLAH"); 78 qDebug("BLAH");
81 QString tempHtml = "/tmp/stockticker.html"; 79 QString tempHtml = "/tmp/stockticker.html";
82 80
83 HelpWindow *StockLookup = new HelpWindow( tempHtml,".",this, "SymbolLookup"); 81 HelpWindow *StockLookup = new HelpWindow( tempHtml,".",this, "SymbolLookup");
84 StockLookup->setCaption("Symbol"); 82 StockLookup->setCaption("Symbol");
85 StockLookup->showMaximized(); 83 StockLookup->showMaximized();
86 StockLookup->show(); 84 StockLookup->show();
87 LineEdit1->text(); 85 LineEdit1->text();
88 86
89} 87}
diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.cpp b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.cpp
index fdabd5c..e3d378b 100644
--- a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.cpp
+++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.cpp
@@ -1,211 +1,207 @@
1/* 1/*
2 * stocktickeRconfig.cpp 2 * stocktickeRconfig.cpp
3 * 3 *
4 * copyright : (c) 2002 by ljp 4 * copyright : (c) 2002 by ljp
5 * email : llornkcor@handhelds.org 5 * email : llornkcor@handhelds.org
6 * 6 *
7 */ 7 */
8/*************************************************************************** 8/***************************************************************************
9 * * 9 * *
10 * This program is free software; you can redistribute it and/or modify * 10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by * 11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or * 12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. * 13 * (at your option) any later version. *
14 * * 14 * *
15 ***************************************************************************/ 15 ***************************************************************************/
16 16
17#include "stocktickerconfig.h" 17#include "stocktickerconfig.h"
18#include <opie/todayconfigwidget.h> 18#include <opie/todayconfigwidget.h>
19 19
20#include <qpe/config.h>
21 20
22#include <qapplication.h> 21#include <qapplication.h>
23 22
24#include <qspinbox.h> 23#include <qspinbox.h>
25#include <qcheckbox.h> 24#include <qcheckbox.h>
26#include <qlayout.h>
27#include <qlineedit.h> 25#include <qlineedit.h>
28#include <qlayout.h>
29#include <qvariant.h> 26#include <qvariant.h>
30#include <qpushbutton.h> 27#include <qpushbutton.h>
31#include <qwhatsthis.h> 28#include <qwhatsthis.h>
32#include <qlabel.h> 29#include <qlabel.h>
33#include <qpe/config.h>
34#include <qstringlist.h> 30#include <qstringlist.h>
35#include <qmainwindow.h> 31#include <qmainwindow.h>
36 32
37#include <stdlib.h> 33#include <stdlib.h>
38 34
39StocktickerPluginConfig::StocktickerPluginConfig( QWidget *parent, const char* name) 35StocktickerPluginConfig::StocktickerPluginConfig( QWidget *parent, const char* name)
40 : TodayConfigWidget(parent, name ) { 36 : TodayConfigWidget(parent, name ) {
41 37
42 QGridLayout *layout = new QGridLayout( this ); 38 QGridLayout *layout = new QGridLayout( this );
43 layout->setSpacing(2); 39 layout->setSpacing(2);
44 layout->setMargin( 2); 40 layout->setMargin( 2);
45 41
46 LineEdit1 = new QLineEdit( this, "LineEdit1" ); 42 LineEdit1 = new QLineEdit( this, "LineEdit1" );
47 LineEdit1->setFocus(); 43 LineEdit1->setFocus();
48// QWhatsThis::add( LineEdit1, tr("Enter the stock symbols you want to be shown here.")); 44// QWhatsThis::add( LineEdit1, tr("Enter the stock symbols you want to be shown here."));
49 45
50 layout->addMultiCellWidget( LineEdit1, 0, 0, 0, 4); 46 layout->addMultiCellWidget( LineEdit1, 0, 0, 0, 4);
51 47
52 Config cfg( "stockticker"); 48 Config cfg( "stockticker");
53 cfg.setGroup( "Symbols" ); 49 cfg.setGroup( "Symbols" );
54 QString symbollist; 50 QString symbollist;
55 symbollist = cfg.readEntry("Symbols", ""); 51 symbollist = cfg.readEntry("Symbols", "");
56 LineEdit1->setText(symbollist); 52 LineEdit1->setText(symbollist);
57 53
58 QLabel *label; 54 QLabel *label;
59 label = new QLabel(this); 55 label = new QLabel(this);
60 label->setText( tr("Enter stock symbols seperated\nby a space.")); 56 label->setText( tr("Enter stock symbols seperated\nby a space."));
61 label->setMaximumHeight(60); 57 label->setMaximumHeight(60);
62 layout->addMultiCellWidget( label, 1, 1, 0, 4); 58 layout->addMultiCellWidget( label, 1, 1, 0, 4);
63 59
64 cfg.setGroup( "Fields" ); 60 cfg.setGroup( "Fields" );
65 61
66 timeCheck= new QCheckBox ( "Time",this ); 62 timeCheck= new QCheckBox ( "Time",this );
67 timeCheck->setChecked( cfg.readBoolEntry("timeCheck",1)); 63 timeCheck->setChecked( cfg.readBoolEntry("timeCheck",1));
68 layout->addMultiCellWidget(timeCheck, 2, 2, 0, 0 ); 64 layout->addMultiCellWidget(timeCheck, 2, 2, 0, 0 );
69 QWhatsThis::add( timeCheck, tr("Toggles Time of current price field")); 65 QWhatsThis::add( timeCheck, tr("Toggles Time of current price field"));
70 66
71 dateCheck= new QCheckBox ( "Date", this ); 67 dateCheck= new QCheckBox ( "Date", this );
72 dateCheck->setChecked( cfg.readBoolEntry("dateCheck",1)); 68 dateCheck->setChecked( cfg.readBoolEntry("dateCheck",1));
73 layout->addMultiCellWidget( dateCheck, 2, 2, 1, 1 ); 69 layout->addMultiCellWidget( dateCheck, 2, 2, 1, 1 );
74 QWhatsThis::add(dateCheck, tr("Toggles date field")); 70 QWhatsThis::add(dateCheck, tr("Toggles date field"));
75 71
76 symbolCheck= new QCheckBox ( "Symbol", this ); 72 symbolCheck= new QCheckBox ( "Symbol", this );
77 symbolCheck->setChecked( cfg.readBoolEntry("symbolCheck",1)); 73 symbolCheck->setChecked( cfg.readBoolEntry("symbolCheck",1));
78 layout->addMultiCellWidget( symbolCheck, 2, 2, 2, 2 ); 74 layout->addMultiCellWidget( symbolCheck, 2, 2, 2, 2 );
79 QWhatsThis::add(symbolCheck, tr("Toggles Symbol field")); 75 QWhatsThis::add(symbolCheck, tr("Toggles Symbol field"));
80 76
81 nameCheck= new QCheckBox ( "Name", this ); 77 nameCheck= new QCheckBox ( "Name", this );
82 nameCheck->setChecked( cfg.readBoolEntry("nameCheck",1)); 78 nameCheck->setChecked( cfg.readBoolEntry("nameCheck",1));
83 layout->addMultiCellWidget( nameCheck, 3, 3, 0, 0 ); 79 layout->addMultiCellWidget( nameCheck, 3, 3, 0, 0 );
84 QWhatsThis::add(nameCheck, tr("Toggles Name of symbols owner field")); 80 QWhatsThis::add(nameCheck, tr("Toggles Name of symbols owner field"));
85 81
86 currentPriceCheck= new QCheckBox ( "Price", this ); 82 currentPriceCheck= new QCheckBox ( "Price", this );
87 currentPriceCheck->setChecked( cfg.readBoolEntry("currentPriceCheck",1)); 83 currentPriceCheck->setChecked( cfg.readBoolEntry("currentPriceCheck",1));
88 layout->addMultiCellWidget( currentPriceCheck, 3, 3, 1, 1 ); 84 layout->addMultiCellWidget( currentPriceCheck, 3, 3, 1, 1 );
89 QWhatsThis::add(currentPriceCheck, tr("Toggles current Price field")); 85 QWhatsThis::add(currentPriceCheck, tr("Toggles current Price field"));
90 86
91 lastPriceCheck= new QCheckBox ( "Last Price", this ); 87 lastPriceCheck= new QCheckBox ( "Last Price", this );
92 lastPriceCheck->setChecked( cfg.readBoolEntry("lastPriceCheck",1)); 88 lastPriceCheck->setChecked( cfg.readBoolEntry("lastPriceCheck",1));
93 layout->addMultiCellWidget(lastPriceCheck, 3, 3, 2, 2); 89 layout->addMultiCellWidget(lastPriceCheck, 3, 3, 2, 2);
94 QWhatsThis::add(lastPriceCheck, tr("Toggles last price field")); 90 QWhatsThis::add(lastPriceCheck, tr("Toggles last price field"));
95 91
96 openPriceCheck= new QCheckBox ( "Open Price", this); 92 openPriceCheck= new QCheckBox ( "Open Price", this);
97 openPriceCheck->setChecked( cfg.readBoolEntry("openPriceCheck",1)); 93 openPriceCheck->setChecked( cfg.readBoolEntry("openPriceCheck",1));
98 layout->addMultiCellWidget( openPriceCheck, 4, 4, 0, 0 ); 94 layout->addMultiCellWidget( openPriceCheck, 4, 4, 0, 0 );
99 QWhatsThis::add(openPriceCheck, tr("Toggles opening price field")); 95 QWhatsThis::add(openPriceCheck, tr("Toggles opening price field"));
100 96
101 minPriceCheck= new QCheckBox ( "Min Price", this ); 97 minPriceCheck= new QCheckBox ( "Min Price", this );
102 minPriceCheck->setChecked( cfg.readBoolEntry("minPriceCheck",1)); 98 minPriceCheck->setChecked( cfg.readBoolEntry("minPriceCheck",1));
103 layout->addMultiCellWidget( minPriceCheck, 4, 4, 1, 1); 99 layout->addMultiCellWidget( minPriceCheck, 4, 4, 1, 1);
104 QWhatsThis::add(minPriceCheck, tr("Toggles minimum daily price field")); 100 QWhatsThis::add(minPriceCheck, tr("Toggles minimum daily price field"));
105 101
106 maxPriceCheck= new QCheckBox ( "Max Price", this); 102 maxPriceCheck= new QCheckBox ( "Max Price", this);
107 maxPriceCheck->setChecked( cfg.readBoolEntry("maxPriceCheck",1)); 103 maxPriceCheck->setChecked( cfg.readBoolEntry("maxPriceCheck",1));
108 layout->addMultiCellWidget( maxPriceCheck, 4, 4, 2, 2 ); 104 layout->addMultiCellWidget( maxPriceCheck, 4, 4, 2, 2 );
109 QWhatsThis::add(maxPriceCheck, tr("Toggles maximum daily price field")); 105 QWhatsThis::add(maxPriceCheck, tr("Toggles maximum daily price field"));
110 106
111 variationCheck= new QCheckBox ( "Variation", this ); 107 variationCheck= new QCheckBox ( "Variation", this );
112 variationCheck->setChecked( cfg.readBoolEntry("variationCheck",1)); 108 variationCheck->setChecked( cfg.readBoolEntry("variationCheck",1));
113 layout->addMultiCellWidget( variationCheck, 5, 5, 0, 0 ); 109 layout->addMultiCellWidget( variationCheck, 5, 5, 0, 0 );
114 QWhatsThis::add(variationCheck, tr("Toggles daily variation of price field")); 110 QWhatsThis::add(variationCheck, tr("Toggles daily variation of price field"));
115 111
116 volumeCheck= new QCheckBox ( "Volume", this ); 112 volumeCheck= new QCheckBox ( "Volume", this );
117 volumeCheck->setChecked( cfg.readBoolEntry("volumeCheck",1)); 113 volumeCheck->setChecked( cfg.readBoolEntry("volumeCheck",1));
118 layout->addMultiCellWidget( volumeCheck , 5, 5, 1, 1); 114 layout->addMultiCellWidget( volumeCheck , 5, 5, 1, 1);
119 QWhatsThis::add(volumeCheck, tr("Toggles volume of trading field")); 115 QWhatsThis::add(volumeCheck, tr("Toggles volume of trading field"));
120 116
121 timerDelaySpin = new QSpinBox( this, "timer spin" ); 117 timerDelaySpin = new QSpinBox( this, "timer spin" );
122 QWhatsThis::add( timerDelaySpin , tr( "How often stocks prices should be looked up. In minutes" ) ); 118 QWhatsThis::add( timerDelaySpin , tr( "How often stocks prices should be looked up. In minutes" ) );
123 timerDelaySpin->setMaxValue( 60); 119 timerDelaySpin->setMaxValue( 60);
124 120
125 cfg.setGroup("Timer"); 121 cfg.setGroup("Timer");
126 timerDelaySpin->setValue( cfg.readNumEntry("Delay",0)); 122 timerDelaySpin->setValue( cfg.readNumEntry("Delay",0));
127 layout->addMultiCellWidget( timerDelaySpin , 6, 6, 0, 0); 123 layout->addMultiCellWidget( timerDelaySpin , 6, 6, 0, 0);
128 124
129 QLabel *label2; 125 QLabel *label2;
130 label2 = new QLabel(this); 126 label2 = new QLabel(this);
131 label2->setText( tr("Minutes between lookups.")); 127 label2->setText( tr("Minutes between lookups."));
132 label2->setMaximumHeight(60); 128 label2->setMaximumHeight(60);
133 layout->addMultiCellWidget( label2, 6, 6, 1, 2); 129 layout->addMultiCellWidget( label2, 6, 6, 1, 2);
134 130
135 scrollSpeed = new QSpinBox( this, "Scrollspin" ); 131 scrollSpeed = new QSpinBox( this, "Scrollspin" );
136 QWhatsThis::add( timerDelaySpin , tr( "Speed of scrolling action, in milliseconds" ) ); 132 QWhatsThis::add( timerDelaySpin , tr( "Speed of scrolling action, in milliseconds" ) );
137 scrollSpeed->setMaxValue( 1000); 133 scrollSpeed->setMaxValue( 1000);
138 scrollSpeed->setSteps(50,50); 134 scrollSpeed->setSteps(50,50);
139 cfg.setGroup("Timer"); 135 cfg.setGroup("Timer");
140 scrollSpeed->setValue( cfg.readNumEntry("ScrollSpeed",50)); 136 scrollSpeed->setValue( cfg.readNumEntry("ScrollSpeed",50));
141 layout->addMultiCellWidget( scrollSpeed , 7, 7, 0, 0); 137 layout->addMultiCellWidget( scrollSpeed , 7, 7, 0, 0);
142 138
143 QLabel *label3; 139 QLabel *label3;
144 label3 = new QLabel(this); 140 label3 = new QLabel(this);
145 label3->setText( tr("Scroll Speed, in milliseconds")); 141 label3->setText( tr("Scroll Speed, in milliseconds"));
146 label3->setMaximumHeight(60); 142 label3->setMaximumHeight(60);
147 layout->addMultiCellWidget( label3, 7, 7, 1, 2); 143 layout->addMultiCellWidget( label3, 7, 7, 1, 2);
148 144
149 scrollLength = new QSpinBox( this, "ScrollLength" ); 145 scrollLength = new QSpinBox( this, "ScrollLength" );
150 QWhatsThis::add( timerDelaySpin , tr( "Length of scrolling" ) ); 146 QWhatsThis::add( timerDelaySpin , tr( "Length of scrolling" ) );
151 scrollLength->setMaxValue( 10); 147 scrollLength->setMaxValue( 10);
152// scrollLength->setSteps(5,5); 148// scrollLength->setSteps(5,5);
153 cfg.setGroup("Timer"); 149 cfg.setGroup("Timer");
154 scrollLength->setValue( cfg.readNumEntry("ScrollLength",1)); 150 scrollLength->setValue( cfg.readNumEntry("ScrollLength",1));
155 layout->addMultiCellWidget( scrollLength , 8, 8, 0, 0); 151 layout->addMultiCellWidget( scrollLength , 8, 8, 0, 0);
156 152
157 QLabel *label4; 153 QLabel *label4;
158 label4 = new QLabel(this); 154 label4 = new QLabel(this);
159 label4->setText( tr("Scroll Length")); 155 label4->setText( tr("Scroll Length"));
160 label4->setMaximumHeight(60); 156 label4->setMaximumHeight(60);
161 layout->addMultiCellWidget( label4, 8, 8, 1, 2); 157 layout->addMultiCellWidget( label4, 8, 8, 1, 2);
162 158
163// lookupButton = new QPushButton(this, "LookupButton"); 159// lookupButton = new QPushButton(this, "LookupButton");
164// lookupButton->setText(tr("Symbol Lookup")); 160// lookupButton->setText(tr("Symbol Lookup"));
165// connect(lookupButton,SIGNAL(clicked()),SLOT( doLookup())); 161// connect(lookupButton,SIGNAL(clicked()),SLOT( doLookup()));
166// layout->addMultiCellWidget( lookupButton , 9, 9, 0, 0); 162// layout->addMultiCellWidget( lookupButton , 9, 9, 0, 0);
167 163
168 QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding ); 164 QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding );
169 layout->addItem( spacer, 9, 0 ); 165 layout->addItem( spacer, 9, 0 );
170 166
171} 167}
172 168
173 169
174void StocktickerPluginConfig::writeConfig() { 170void StocktickerPluginConfig::writeConfig() {
175 Config cfg( "stockticker"); 171 Config cfg( "stockticker");
176 cfg.setGroup( "Symbols" ); 172 cfg.setGroup( "Symbols" );
177 QString outText = text().upper(); 173 QString outText = text().upper();
178 outText.stripWhiteSpace(); 174 outText.stripWhiteSpace();
179 cfg.writeEntry("Symbols", outText ); 175 cfg.writeEntry("Symbols", outText );
180 cfg.setGroup( "Fields" ); 176 cfg.setGroup( "Fields" );
181 cfg.writeEntry("timeCheck",timeCheck->isChecked()); 177 cfg.writeEntry("timeCheck",timeCheck->isChecked());
182 cfg.writeEntry("dateCheck",dateCheck->isChecked()); 178 cfg.writeEntry("dateCheck",dateCheck->isChecked());
183 cfg.writeEntry("symbolCheck",symbolCheck->isChecked()); 179 cfg.writeEntry("symbolCheck",symbolCheck->isChecked());
184 cfg.writeEntry("nameCheck",nameCheck->isChecked()); 180 cfg.writeEntry("nameCheck",nameCheck->isChecked());
185 cfg.writeEntry("currentPriceCheck",currentPriceCheck->isChecked()); 181 cfg.writeEntry("currentPriceCheck",currentPriceCheck->isChecked());
186 cfg.writeEntry("lastPriceCheck",lastPriceCheck->isChecked()); 182 cfg.writeEntry("lastPriceCheck",lastPriceCheck->isChecked());
187 cfg.writeEntry("openPriceCheck",openPriceCheck->isChecked()); 183 cfg.writeEntry("openPriceCheck",openPriceCheck->isChecked());
188 cfg.writeEntry("minPriceCheck",minPriceCheck->isChecked()); 184 cfg.writeEntry("minPriceCheck",minPriceCheck->isChecked());
189 cfg.writeEntry("maxPriceCheck",maxPriceCheck->isChecked()); 185 cfg.writeEntry("maxPriceCheck",maxPriceCheck->isChecked());
190 cfg.writeEntry("variationCheck",variationCheck->isChecked()); 186 cfg.writeEntry("variationCheck",variationCheck->isChecked());
191 cfg.writeEntry("volumeCheck",volumeCheck->isChecked()); 187 cfg.writeEntry("volumeCheck",volumeCheck->isChecked());
192 188
193 cfg.setGroup("Timer"); 189 cfg.setGroup("Timer");
194 cfg.writeEntry("Delay",timerDelaySpin->value()); 190 cfg.writeEntry("Delay",timerDelaySpin->value());
195 cfg.writeEntry("ScrollLength",scrollLength->value()); 191 cfg.writeEntry("ScrollLength",scrollLength->value());
196 cfg.writeEntry("ScrollSpeed",scrollSpeed->value()); 192 cfg.writeEntry("ScrollSpeed",scrollSpeed->value());
197 193
198 cfg.write(); 194 cfg.write();
199} 195}
200 196
201StocktickerPluginConfig::~StocktickerPluginConfig() { 197StocktickerPluginConfig::~StocktickerPluginConfig() {
202} 198}
203 199
204QString StocktickerPluginConfig::text() const { 200QString StocktickerPluginConfig::text() const {
205 return LineEdit1->text(); 201 return LineEdit1->text();
206} 202}
207 203
208void StocktickerPluginConfig::doLookup() { 204void StocktickerPluginConfig::doLookup() {
209 205
210 system("stockticker"); 206 system("stockticker");
211} 207}
diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.cpp b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.cpp
index a740b58..c3ca52d 100644
--- a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.cpp
+++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.cpp
@@ -1,314 +1,301 @@
1/* 1/*
2 * stocktickerpluginwidget.cpp 2 * stocktickerpluginwidget.cpp
3 * 3 *
4 * copyright : (c) 2002 by L.J. Potter 4 * copyright : (c) 2002 by L.J. Potter
5 * email : llornkcor@handhelds.org 5 * email : llornkcor@handhelds.org
6 * 6 *
7 */ 7 */
8/*************************************************************************** 8/***************************************************************************
9 * * 9 * *
10 * This program is free software; you can redistribute it and/or modify * 10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by * 11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or * 12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. * 13 * (at your option) any later version. *
14 * * 14 * *
15 ***************************************************************************/ 15 ***************************************************************************/
16 16
17#include <qsocket.h>
18#include <qvaluelist.h>
19#include <qtl.h>
20#include <qstring.h>
21#include <qstringlist.h>
22#include <qobject.h>
23#include <qlayout.h> 17#include <qlayout.h>
24#include <qlineedit.h>
25#include <qregexp.h>
26#include <qtimer.h>
27#include <qmessagebox.h>
28 18
29#include <qpe/config.h> 19#include <qpe/config.h>
30#include <qpe/timestring.h>
31#include <qpe/qcopenvelope_qws.h>
32#include <qpe/network.h>
33 20
34#include <opie/oticker.h> 21#include <opie/oticker.h>
35 22
36extern "C" { 23extern "C" {
37#include "libstocks/stocks.h" 24#include "libstocks/stocks.h"
38} 25}
39 26
40#include <pthread.h> 27#include <pthread.h>
41 28
42#include "stocktickerpluginwidget.h" 29#include "stocktickerpluginwidget.h"
43 30
44QString output; 31QString output;
45OTicker *stocktickerTicker; 32OTicker *stocktickerTicker;
46 33
47void getStocks(char *blah) { 34void getStocks(char *blah) {
48 35
49// stocktickerTicker->setText( "Downloading stock data."); 36// stocktickerTicker->setText( "Downloading stock data.");
50 stock *stocks_quotes=NULL; 37 stock *stocks_quotes=NULL;
51 stock *stocks_tmp; 38 stock *stocks_tmp;
52 QCString stock_liste = blah; 39 QCString stock_liste = blah;
53 ::free ( blah ); 40 ::free ( blah );
54 // char *stock_liste = (char *)blah->latin1(); 41 // char *stock_liste = (char *)blah->latin1();
55 qDebug("%s", stock_liste.data() ); 42 qDebug("%s", stock_liste.data() );
56 QString tempString; 43 QString tempString;
57 output = ""; 44 output = "";
58 45
59 libstocks_return_code error; 46 libstocks_return_code error;
60 47
61 Config cfg( "stockticker"); 48 Config cfg( "stockticker");
62 cfg.setGroup( "Fields" ); 49 cfg.setGroup( "Fields" );
63 bool dotimeCheck, dodateCheck, dosymbolCheck, donameCheck; 50 bool dotimeCheck, dodateCheck, dosymbolCheck, donameCheck;
64 bool docurrentPriceCheck, dolastPriceCheck, doopenPriceCheck; 51 bool docurrentPriceCheck, dolastPriceCheck, doopenPriceCheck;
65 bool dominPriceCheck, domaxPriceCheck, dovariationCheck, dovolumeCheck; 52 bool dominPriceCheck, domaxPriceCheck, dovariationCheck, dovolumeCheck;
66 53
67 dotimeCheck=dodateCheck=dosymbolCheck=donameCheck= docurrentPriceCheck=dolastPriceCheck=doopenPriceCheck=dominPriceCheck=domaxPriceCheck=dovariationCheck=dovolumeCheck=false; 54 dotimeCheck=dodateCheck=dosymbolCheck=donameCheck= docurrentPriceCheck=dolastPriceCheck=doopenPriceCheck=dominPriceCheck=domaxPriceCheck=dovariationCheck=dovolumeCheck=false;
68 55
69 dotimeCheck=cfg.readBoolEntry("timeCheck",1); 56 dotimeCheck=cfg.readBoolEntry("timeCheck",1);
70 dodateCheck=cfg.readBoolEntry("dateCheck",1); 57 dodateCheck=cfg.readBoolEntry("dateCheck",1);
71 dosymbolCheck=cfg.readBoolEntry("symbolCheck",1); 58 dosymbolCheck=cfg.readBoolEntry("symbolCheck",1);
72 donameCheck=cfg.readBoolEntry("nameCheck",1); 59 donameCheck=cfg.readBoolEntry("nameCheck",1);
73 docurrentPriceCheck=cfg.readBoolEntry("currentPriceCheck",1); 60 docurrentPriceCheck=cfg.readBoolEntry("currentPriceCheck",1);
74 dolastPriceCheck=cfg.readBoolEntry("lastPriceCheck",1); 61 dolastPriceCheck=cfg.readBoolEntry("lastPriceCheck",1);
75 doopenPriceCheck=cfg.readBoolEntry("openPriceCheck",1); 62 doopenPriceCheck=cfg.readBoolEntry("openPriceCheck",1);
76 dominPriceCheck=cfg.readBoolEntry("minPriceCheck",1); 63 dominPriceCheck=cfg.readBoolEntry("minPriceCheck",1);
77 domaxPriceCheck=cfg.readBoolEntry("maxPriceCheck",1); 64 domaxPriceCheck=cfg.readBoolEntry("maxPriceCheck",1);
78 dovariationCheck=cfg.readBoolEntry("variationCheck",1); 65 dovariationCheck=cfg.readBoolEntry("variationCheck",1);
79 dovolumeCheck=cfg.readBoolEntry("volumeCheck",1); 66 dovolumeCheck=cfg.readBoolEntry("volumeCheck",1);
80 67
81// DefProxy(); 68// DefProxy();
82 { 69 {
83 char *proxy; 70 char *proxy;
84 libstocks_return_code error; 71 libstocks_return_code error;
85 72
86 /* Proxy support */ 73 /* Proxy support */
87 /* Checks for "http_proxy" environment variable */ 74 /* Checks for "http_proxy" environment variable */
88 proxy = getenv("http_proxy"); 75 proxy = getenv("http_proxy");
89 if(proxy) { 76 if(proxy) {
90 /* printf("proxy set\n"); */ 77 /* printf("proxy set\n"); */
91 error = set_proxy(proxy); 78 error = set_proxy(proxy);
92 if (error) { 79 if (error) {
93 printf("Proxy error (%d)\n", error); 80 printf("Proxy error (%d)\n", error);
94 QString tempString; 81 QString tempString;
95 tempString.sprintf("Proxy error (%d)\n", error); 82 tempString.sprintf("Proxy error (%d)\n", error);
96 output = tempString; 83 output = tempString;
97 return; 84 return;
98// exit(1); 85// exit(1);
99 } 86 }
100 } 87 }
101 } 88 }
102// char *stock_liste = (char *)blah; 89// char *stock_liste = (char *)blah;
103 /* Get the stocks and process errors */ 90 /* Get the stocks and process errors */
104 error = get_stocks( stock_liste.data(), &stocks_quotes); 91 error = get_stocks( stock_liste.data(), &stocks_quotes);
105 92
106 if (error) { 93 if (error) {
107 printf("Error in getting stocks (%d)\n", error); 94 printf("Error in getting stocks (%d)\n", error);
108 tempString.sprintf("Error in getting stocks (%d)\n", error); 95 tempString.sprintf("Error in getting stocks (%d)\n", error);
109 output =tempString; 96 output =tempString;
110 return; 97 return;
111// exit(1); 98// exit(1);
112 } 99 }
113 100
114 stocks_tmp = stocks_quotes; 101 stocks_tmp = stocks_quotes;
115 102
116 /* Displays the stocks */ 103 /* Displays the stocks */
117 while(stocks_tmp!=0){ 104 while(stocks_tmp!=0){
118 105
119 if (stocks_tmp->Time) { 106 if (stocks_tmp->Time) {
120// printf("%s ", stocks_tmp->Time); 107// printf("%s ", stocks_tmp->Time);
121 tempString.sprintf("| %s ", stocks_tmp->Time); 108 tempString.sprintf("| %s ", stocks_tmp->Time);
122 tempString.replace(QRegExp("\""),""); 109 tempString.replace(QRegExp("\""),"");
123 if( dotimeCheck) 110 if( dotimeCheck)
124 output +=tempString; 111 output +=tempString;
125 } 112 }
126 if (stocks_tmp->Date) { 113 if (stocks_tmp->Date) {
127// printf("%s ", stocks_tmp->Date); 114// printf("%s ", stocks_tmp->Date);
128 tempString.sprintf("| %s ", stocks_tmp->Date); 115 tempString.sprintf("| %s ", stocks_tmp->Date);
129 tempString.replace(QRegExp("\""),""); 116 tempString.replace(QRegExp("\""),"");
130 if(dodateCheck) 117 if(dodateCheck)
131 output +=tempString; 118 output +=tempString;
132 } 119 }
133// printf("\n"); 120// printf("\n");
134 121
135// printf("----------------------------------------\n"); 122// printf("----------------------------------------\n");
136 123
137 if ( strlen(stocks_tmp->Symbol) > 20 ) { 124 if ( strlen(stocks_tmp->Symbol) > 20 ) {
138// printf("| Symbol | %.20s |\n",stocks_tmp->Symbol); 125// printf("| Symbol | %.20s |\n",stocks_tmp->Symbol);
139 tempString.sprintf("| Symbol %s ",stocks_tmp->Symbol); 126 tempString.sprintf("| Symbol %s ",stocks_tmp->Symbol);
140 if(dosymbolCheck) 127 if(dosymbolCheck)
141 output +=tempString; 128 output +=tempString;
142 } 129 }
143 else { 130 else {
144// printf("| Symbol | %-20s |\n",stocks_tmp->Symbol); 131// printf("| Symbol | %-20s |\n",stocks_tmp->Symbol);
145 tempString.sprintf("| Symbol %s ",stocks_tmp->Symbol); 132 tempString.sprintf("| Symbol %s ",stocks_tmp->Symbol);
146 if(dosymbolCheck) 133 if(dosymbolCheck)
147 output +=tempString; 134 output +=tempString;
148 } 135 }
149 136
150 if (stocks_tmp->Name) { 137 if (stocks_tmp->Name) {
151 if ( strlen(stocks_tmp->Name) > 20 ) { 138 if ( strlen(stocks_tmp->Name) > 20 ) {
152// printf("| Name %.20s |\n",stocks_tmp->Name); 139// printf("| Name %.20s |\n",stocks_tmp->Name);
153 tempString.sprintf("| Name %s ",stocks_tmp->Name); 140 tempString.sprintf("| Name %s ",stocks_tmp->Name);
154 tempString.stripWhiteSpace(); 141 tempString.stripWhiteSpace();
155 if(donameCheck) 142 if(donameCheck)
156 output +=tempString; 143 output +=tempString;
157 } else { 144 } else {
158// printf("| Name | %-20s |\n",stocks_tmp->Name); 145// printf("| Name | %-20s |\n",stocks_tmp->Name);
159 tempString.sprintf("| Name %s ",stocks_tmp->Name); 146 tempString.sprintf("| Name %s ",stocks_tmp->Name);
160 tempString.stripWhiteSpace(); 147 tempString.stripWhiteSpace();
161 if(donameCheck) 148 if(donameCheck)
162 output +=tempString; 149 output +=tempString;
163 } 150 }
164 } 151 }
165 else { 152 else {
166// printf("| Name | |\n"); 153// printf("| Name | |\n");
167 tempString.sprintf("| Name | |"); 154 tempString.sprintf("| Name | |");
168 if(donameCheck) 155 if(donameCheck)
169 output +=tempString; 156 output +=tempString;
170 } 157 }
171 158
172// printf("| Price | %-7.2f |\n", stocks_tmp->CurrentPrice); 159// printf("| Price | %-7.2f |\n", stocks_tmp->CurrentPrice);
173 tempString.sprintf("| Price %-7.2f ", stocks_tmp->CurrentPrice); 160 tempString.sprintf("| Price %-7.2f ", stocks_tmp->CurrentPrice);
174 if(docurrentPriceCheck) 161 if(docurrentPriceCheck)
175 output +=tempString; 162 output +=tempString;
176 163
177// printf("| Yesterday | %-7.2f |\n",stocks_tmp->LastPrice); 164// printf("| Yesterday | %-7.2f |\n",stocks_tmp->LastPrice);
178 tempString.sprintf("| Yesterday %-7.2f ",stocks_tmp->LastPrice); 165 tempString.sprintf("| Yesterday %-7.2f ",stocks_tmp->LastPrice);
179 if(dolastPriceCheck) 166 if(dolastPriceCheck)
180 output +=tempString; 167 output +=tempString;
181 168
182// printf("| Open | %-7.2f |\n",stocks_tmp->OpenPrice); 169// printf("| Open | %-7.2f |\n",stocks_tmp->OpenPrice);
183 tempString.sprintf("| Open %-7.2f ",stocks_tmp->OpenPrice); 170 tempString.sprintf("| Open %-7.2f ",stocks_tmp->OpenPrice);
184 if(doopenPriceCheck) 171 if(doopenPriceCheck)
185 output +=tempString; 172 output +=tempString;
186 173
187// printf("| Min | %-7.2f |\n", stocks_tmp->MinPrice); 174// printf("| Min | %-7.2f |\n", stocks_tmp->MinPrice);
188 tempString.sprintf("| Min %-7.2f ", stocks_tmp->MinPrice); 175 tempString.sprintf("| Min %-7.2f ", stocks_tmp->MinPrice);
189 if(dominPriceCheck) 176 if(dominPriceCheck)
190 output +=tempString; 177 output +=tempString;
191 178
192// printf("| Max | %-7.2f |\n",stocks_tmp->MaxPrice); 179// printf("| Max | %-7.2f |\n",stocks_tmp->MaxPrice);
193 tempString.sprintf("| Max %-7.2f ",stocks_tmp->MaxPrice); 180 tempString.sprintf("| Max %-7.2f ",stocks_tmp->MaxPrice);
194 if(domaxPriceCheck) 181 if(domaxPriceCheck)
195 output +=tempString; 182 output +=tempString;
196 183
197// printf("| Var | %-6.2f (%5.2f %%) |\n", stocks_tmp->Variation, stocks_tmp->Pourcentage); 184// printf("| Var | %-6.2f (%5.2f %%) |\n", stocks_tmp->Variation, stocks_tmp->Pourcentage);
198 tempString.sprintf("| Var %-6.2f (%5.2f %%) ", stocks_tmp->Variation, stocks_tmp->Pourcentage); 185 tempString.sprintf("| Var %-6.2f (%5.2f %%) ", stocks_tmp->Variation, stocks_tmp->Pourcentage);
199 if(dovariationCheck) 186 if(dovariationCheck)
200 output +=tempString; 187 output +=tempString;
201 188
202// printf("| Volume | %-9d |\n", stocks_tmp->Volume); 189// printf("| Volume | %-9d |\n", stocks_tmp->Volume);
203 tempString.sprintf("| Volume %-9d ", stocks_tmp->Volume); 190 tempString.sprintf("| Volume %-9d ", stocks_tmp->Volume);
204 if(dovolumeCheck) 191 if(dovolumeCheck)
205 output +=tempString; 192 output +=tempString;
206 193
207// printf("----------------------------------------\n\n"); 194// printf("----------------------------------------\n\n");
208 tempString.sprintf("||==++==|"); 195 tempString.sprintf("||==++==|");
209 output +=tempString; 196 output +=tempString;
210 197
211 /* Simple function which help to browse in the stocks list */ 198 /* Simple function which help to browse in the stocks list */
212 stocks_tmp = next_stock(stocks_tmp); 199 stocks_tmp = next_stock(stocks_tmp);
213 } 200 }
214 201
215 /* frees stocks */ 202 /* frees stocks */
216 free_stocks(stocks_quotes); 203 free_stocks(stocks_quotes);
217 stocktickerTicker->setText( output.latin1() ); 204 stocktickerTicker->setText( output.latin1() );
218 205
219} 206}
220 207
221StockTickerPluginWidget::StockTickerPluginWidget( QWidget *parent, const char* name) 208StockTickerPluginWidget::StockTickerPluginWidget( QWidget *parent, const char* name)
222 : QWidget(parent, name ) { 209 : QWidget(parent, name ) {
223 init(); 210 init();
224 startTimer(1000); 211 startTimer(1000);
225 212
226 stocktickerTicker->setTextFormat(Qt::RichText); 213 stocktickerTicker->setTextFormat(Qt::RichText);
227// checkConnection(); 214// checkConnection();
228} 215}
229 216
230StockTickerPluginWidget::~StockTickerPluginWidget() { 217StockTickerPluginWidget::~StockTickerPluginWidget() {
231} 218}
232 219
233void StockTickerPluginWidget::init() { 220void StockTickerPluginWidget::init() {
234 221
235 QHBoxLayout* layout = new QHBoxLayout( this ); 222 QHBoxLayout* layout = new QHBoxLayout( this );
236 stocktickerTicker = new OTicker(this); 223 stocktickerTicker = new OTicker(this);
237// stocktickerTicker->setMinimumHeight(15); 224// stocktickerTicker->setMinimumHeight(15);
238 connect( stocktickerTicker, SIGNAL( mousePressed()), this, SLOT( checkConnection() )); 225 connect( stocktickerTicker, SIGNAL( mousePressed()), this, SLOT( checkConnection() ));
239 layout->addWidget( stocktickerTicker); 226 layout->addWidget( stocktickerTicker);
240 wasError = true; 227 wasError = true;
241} 228}
242 229
243void StockTickerPluginWidget::doStocks() { 230void StockTickerPluginWidget::doStocks() {
244 Config cfg( "stockticker"); 231 Config cfg( "stockticker");
245 cfg.setGroup( "Symbols" ); 232 cfg.setGroup( "Symbols" );
246 symbollist=""; 233 symbollist="";
247 symbollist = cfg.readEntry("Symbols", ""); 234 symbollist = cfg.readEntry("Symbols", "");
248 symbollist.replace(QRegExp(" "),"+");//seperated by + 235 symbollist.replace(QRegExp(" "),"+");//seperated by +
249 236
250 cfg.setGroup("Timer"); 237 cfg.setGroup("Timer");
251 stocktickerTicker->setUpdateTime( cfg.readNumEntry("ScrollSpeed",50)); 238 stocktickerTicker->setUpdateTime( cfg.readNumEntry("ScrollSpeed",50));
252 stocktickerTicker->setScrollLength( cfg.readNumEntry("ScrollLength",10)); 239 stocktickerTicker->setScrollLength( cfg.readNumEntry("ScrollLength",10));
253 240
254 if (!symbollist.isEmpty()) { 241 if (!symbollist.isEmpty()) {
255 pthread_t thread1; 242 pthread_t thread1;
256 char *blah = ::strdup(symbollist.latin1()); 243 char *blah = ::strdup(symbollist.latin1());
257 pthread_create(&thread1,NULL, (void * (*)(void *))getStocks, (void *) blah); 244 pthread_create(&thread1,NULL, (void * (*)(void *))getStocks, (void *) blah);
258 } 245 }
259} 246}
260 247
261void StockTickerPluginWidget::timerEvent( QTimerEvent *e ) { 248void StockTickerPluginWidget::timerEvent( QTimerEvent *e ) {
262 killTimer(e->timerId()); 249 killTimer(e->timerId());
263 checkConnection(); 250 checkConnection();
264} 251}
265 252
266void StockTickerPluginWidget::checkConnection() { 253void StockTickerPluginWidget::checkConnection() {
267// qDebug("checking connection"); 254// qDebug("checking connection");
268// Sock = new QSocket( this ); 255// Sock = new QSocket( this );
269 256
270// if( wasError) 257// if( wasError)
271// stocktickerTicker->setText("Checking connection"); 258// stocktickerTicker->setText("Checking connection");
272 259
273// if(Sock->state() == QSocket::Idle) { 260// if(Sock->state() == QSocket::Idle) {
274// Sock->connectToHost("finance.yahoo.com", 80); 261// Sock->connectToHost("finance.yahoo.com", 80);
275// connect( Sock, SIGNAL( error(int) ), SLOT(socketError(int)) ); 262// connect( Sock, SIGNAL( error(int) ), SLOT(socketError(int)) );
276// connect( Sock, SIGNAL( hostFound() ), SLOT(isConnected()) ); 263// connect( Sock, SIGNAL( hostFound() ), SLOT(isConnected()) );
277// } else { 264// } else {
278// qDebug("State is not Idle"); 265// qDebug("State is not Idle");
279 isConnected(); 266 isConnected();
280// } 267// }
281} 268}
282 269
283void StockTickerPluginWidget::isConnected() { 270void StockTickerPluginWidget::isConnected() {
284// qDebug("We connect, so ok to grab stocks"); 271// qDebug("We connect, so ok to grab stocks");
285 doStocks(); 272 doStocks();
286 273
287 Config cfg( "stockticker"); 274 Config cfg( "stockticker");
288 cfg.setGroup("Timer"); 275 cfg.setGroup("Timer");
289 timerDelay= cfg.readNumEntry("Delay",0); 276 timerDelay= cfg.readNumEntry("Delay",0);
290 if(timerDelay > 0) 277 if(timerDelay > 0)
291 startTimer(timerDelay*60000); 278 startTimer(timerDelay*60000);
292 qDebug("timer set for %d",(timerDelay*60000)/60000); 279 qDebug("timer set for %d",(timerDelay*60000)/60000);
293 wasError = false; 280 wasError = false;
294 281
295// Sock->close(); 282// Sock->close();
296} 283}
297 284
298void StockTickerPluginWidget::socketError(int errcode) { 285void StockTickerPluginWidget::socketError(int errcode) {
299 switch(errcode) { 286 switch(errcode) {
300 case QSocket::ErrConnectionRefused: 287 case QSocket::ErrConnectionRefused:
301 output = tr("Connection refused."); 288 output = tr("Connection refused.");
302 break; 289 break;
303 case QSocket::ErrHostNotFound: 290 case QSocket::ErrHostNotFound:
304 output = tr("Could not find server."); 291 output = tr("Could not find server.");
305 break; 292 break;
306 case QSocket::ErrSocketRead : 293 case QSocket::ErrSocketRead :
307 output = tr("Socket read error."); 294 output = tr("Socket read error.");
308 break; 295 break;
309 }; 296 };
310 stocktickerTicker->setText( output ); 297 stocktickerTicker->setText( output );
311 wasError = true; 298 wasError = true;
312// Sock->close(); 299// Sock->close();
313 300
314} 301}