summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2003-05-26 03:43:09 (UTC)
committer llornkcor <llornkcor>2003-05-26 03:43:09 (UTC)
commit4a9831b570a60075650863b571b0875e96ca8ad6 (patch) (side-by-side diff)
treec4c76096f954067301609d1a89d00276d418ea49
parent830bab619ea396c018ccd29b20ce81cb47e113e1 (diff)
downloadopie-4a9831b570a60075650863b571b0875e96ca8ad6.zip
opie-4a9831b570a60075650863b571b0875e96ca8ad6.tar.gz
opie-4a9831b570a60075650863b571b0875e96ca8ad6.tar.bz2
remove extra includes
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 @@
/****************************************************************************
** $Id$
**
** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
**
** This file is part of an example program for Qt. This example
** program may be used, distributed and modified without limitation.
**
*****************************************************************************/
#include "helpwindow.h"
#include <qstatusbar.h>
-#include <qstringlist.h>
-#include <qpixmap.h>
-#include <qpopupmenu.h>
#include <qmenubar.h>
#include <qtoolbar.h>
#include <qtoolbutton.h>
-#include <qiconset.h>
-#include <qfile.h>
-#include <qtextstream.h>
-#include <qstylesheet.h>
-#include <qmessagebox.h>
-#include <qfiledialog.h>
-#include <qapplication.h>
#include <qcombobox.h>
-#include <qevent.h>
-#include <qlineedit.h>
-#include <qobjectlist.h>
-#include <qfileinfo.h>
-#include <qfile.h>
-#include <qdatastream.h>
-#include <qprinter.h>
-#include <qsimplerichtext.h>
-#include <qpaintdevicemetrics.h>
#include <ctype.h>
HelpWindow::HelpWindow( const QString& home_, const QString& _path, QWidget* parent, const char *name )
: QMainWindow( parent, name, WDestructiveClose ), pathCombo( 0 ), selectedURL()
{
readHistory();
readBookmarks();
browser = new QTextBrowser( this );
QStringList Strlist;
Strlist.append( home_);
browser->mimeSourceFactory()->setFilePath( Strlist );
browser->setFrameStyle( QFrame::Panel | QFrame::Sunken );
connect( browser, SIGNAL( textChanged() ),
this, SLOT( textChanged() ) );
setCentralWidget( browser );
if ( !home_.isEmpty() )
////////////////////////////////
browser->setSource( home_ );
////////////////////////////////
connect( browser, SIGNAL( highlighted( const QString&) ),
statusBar(), SLOT( message( const QString&)) );
setGeometry( 0,0,236,280);
QPopupMenu* file = new QPopupMenu( this );
// file->insertItem( tr("&New Window"), this, SLOT( newWindow() ), ALT | Key_N );
file->insertItem( tr("&Open File"), this, SLOT( openFile() ), ALT | Key_O );
// file->insertItem( tr("&Print"), this, SLOT( print() ), ALT | Key_P );
file->insertSeparator();
file->insertItem( tr("&Close"), this, SLOT( close() ), ALT | Key_Q );
// file->insertItem( tr("E&xit"), qApp, SLOT( closeAllWindows() ), ALT | Key_X );
// The same three icons are used twice each.
////F FIXME
QString pixs=(QDir::homeDirPath ()) +"/Applications/gutenbrowser/pix/";
QIconSet icon_back( QPixmap(pixs+"back.png") );
QIconSet icon_forward( QPixmap(pixs+"forward.png") );
QIconSet icon_home( QPixmap(pixs+"home.png") );
QPopupMenu* go = new QPopupMenu( this );
backwardId = go->insertItem( icon_back, tr("&Backward"), browser, SLOT( backward() ), ALT | Key_Left );
forwardId = go->insertItem( icon_forward, tr("&Forward"), browser, SLOT( forward() ), ALT | Key_Right );
go->insertItem( icon_home, tr("&Home"), browser, SLOT( home() ) );
hist = new QPopupMenu( this );
QStringList::Iterator it = history.begin();
for ( ; it != history.end(); ++it )
mHistory[ hist->insertItem( *it ) ] = *it;
connect( hist, SIGNAL( activated( int ) ), this, SLOT( histChosen( int ) ) );
bookm = new QPopupMenu( this );
bookm->insertItem( tr( "Add Bookmark" ), this, SLOT( addBookmark() ) );
bookm->insertSeparator();
QStringList::Iterator it2 = bookmarks.begin();
for ( ; it2 != bookmarks.end(); ++it2 )
mBookmarks[ bookm->insertItem( *it2 ) ] = *it2;
connect( bookm, SIGNAL( activated( int ) ),
this, SLOT( bookmChosen( int ) ) );
menuBar()->insertItem( tr("&File"), file );
menuBar()->insertItem( tr("&Go"), go );
menuBar()->insertItem( tr( "History" ), hist );
menuBar()->insertItem( tr( "Bookmarks" ), bookm );
// menuBar()->insertSeparator();
// menuBar()->insertItem( tr("&Help"), help );
menuBar()->setItemEnabled( forwardId, FALSE);
menuBar()->setItemEnabled( backwardId, FALSE);
connect( browser, SIGNAL( backwardAvailable( bool ) ), this, SLOT( setBackwardAvailable( bool ) ) );
connect( browser, SIGNAL( forwardAvailable( bool ) ), this, SLOT( setForwardAvailable( bool ) ) );
QToolBar* toolbar = new QToolBar( this );
addToolBar( toolbar, "Toolbar");
QToolButton* button;
button = new QToolButton( icon_back, tr("Backward"), "", browser, SLOT(backward()), toolbar );
connect( browser, SIGNAL( backwardAvailable(bool) ), button, SLOT( setEnabled(bool) ) );
button->setEnabled( FALSE );
button = new QToolButton( icon_forward, tr("Forward"), "", browser, SLOT(forward()), toolbar );
connect( browser, SIGNAL( forwardAvailable(bool) ), button, SLOT( setEnabled(bool) ) );
button->setEnabled( FALSE );
button = new QToolButton( icon_home, tr("Home"), "", browser, SLOT(home()), toolbar );
toolbar->addSeparator();
pathCombo = new QComboBox( TRUE, toolbar );
connect( pathCombo, SIGNAL( activated( const QString & ) ), this, SLOT( pathSelected( const QString & ) ) );
toolbar->setStretchableWidget( pathCombo );
// pathCombo->setMaximumWidth(190);
// setRightJustification( TRUE );
// setDockEnabled( Left, FALSE );
// setDockEnabled( Right, FALSE );
pathCombo->insertItem( home_ );
browser->setFocus();
}
void HelpWindow::setBackwardAvailable( bool b)
{
menuBar()->setItemEnabled( backwardId, b);
}
void HelpWindow::setForwardAvailable( bool b)
{
menuBar()->setItemEnabled( forwardId, b);
}
void HelpWindow::textChanged()
{
if ( browser->documentTitle().isNull() ) {
setCaption( "Stockticker Lookup - " + browser->context() );
selectedURL = browser->context();
}
else {
setCaption( "Stockticker Lookup - " + browser->documentTitle() ) ;
selectedURL = browser->documentTitle();
}
if ( !selectedURL.isEmpty() && pathCombo ) {
bool exists = FALSE;
int i;
for ( i = 0; i < pathCombo->count(); ++i ) {
if ( pathCombo->text( i ) == selectedURL ) {
exists = TRUE;
break;
}
}
if ( !exists ) {
pathCombo->insertItem( selectedURL, 0 );
pathCombo->setCurrentItem( 0 );
mHistory[ hist->insertItem( selectedURL ) ] = selectedURL;
} else
pathCombo->setCurrentItem( i );
selectedURL = QString::null;
}
}
HelpWindow::~HelpWindow()
{
history.clear();
QMap<int, QString>::Iterator it = mHistory.begin();
for ( ; it != mHistory.end(); ++it )
history.append( *it );
QFile f( QDir::currentDirPath() + "/.history" );
f.open( IO_WriteOnly );
QDataStream s( &f );
s << history;
f.close();
bookmarks.clear();
QMap<int, QString>::Iterator it2 = mBookmarks.begin();
for ( ; it2 != mBookmarks.end(); ++it2 )
bookmarks.append( *it2 );
QFile f2( QDir::currentDirPath() + "/.bookmarks" );
f2.open( IO_WriteOnly );
QDataStream s2( &f2 );
s2 << bookmarks;
f2.close();
}
void HelpWindow::openFile()
{
#ifndef QT_NO_FILEDIALOG
QString fn = QFileDialog::getOpenFileName( QString::null, QString::null, this );
if ( !fn.isEmpty() )
browser->setSource( fn );
#endif
}
void HelpWindow::newWindow()
{
( new HelpWindow(browser->source(), "qbrowser") )->show();
}
void HelpWindow::pathSelected( const QString &_path )
{
browser->setSource( _path );
QMap<int, QString>::Iterator it = mHistory.begin();
bool exists = FALSE;
for ( ; it != mHistory.end(); ++it ) {
if ( *it == _path ) {
exists = TRUE;
break;
}
}
if ( !exists )
mHistory[ hist->insertItem( _path ) ] = _path;
}
void HelpWindow::readHistory()
{
if ( QFile::exists( QDir::currentDirPath() + "/.history" ) ) {
QFile f( QDir::currentDirPath() + "/.history" );
f.open( IO_ReadOnly );
QDataStream s( &f );
s >> history;
f.close();
while ( history.count() > 20 )
history.remove( history.begin() );
}
}
void HelpWindow::readBookmarks()
{
if ( QFile::exists( QDir::currentDirPath() + "/.bookmarks" ) ) {
QFile f( QDir::currentDirPath() + "/.bookmarks" );
f.open( IO_ReadOnly );
QDataStream s( &f );
s >> bookmarks;
f.close();
}
}
void HelpWindow::histChosen( int i )
{
if ( mHistory.contains( i ) )
browser->setSource( mHistory[ i ] );
}
void HelpWindow::bookmChosen( int i )
{
if ( mBookmarks.contains( i ) )
browser->setSource( mBookmarks[ i ] );
}
void HelpWindow::addBookmark()
{
mBookmarks[ bookm->insertItem( caption() ) ] = caption();
}
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 @@
#include "inputDialog.h"
#include <qapplication.h>
#include <qcheckbox.h>
-#include <qlayout.h>
#include <qlineedit.h>
-#include <qlayout.h>
#include <qvariant.h>
#include <qpushbutton.h>
#include <qwhatsthis.h>
#include <qlabel.h>
#include <qpe/config.h>
#include <qstringlist.h>
#include <qmainwindow.h>
#include "helpwindow.h"
#include <opie/oprocess.h>
#include <stdlib.h>
// #include <sys/stat.h>
// #include <unistd.h>
InputDialog::InputDialog( )
: QMainWindow( 0x0, 0x0, WStyle_ContextHelp ) {
setCaption( tr("Symbol Lookup"));
QGridLayout *layout = new QGridLayout( this );
layout->setSpacing(6);
layout->setMargin( 2);
LineEdit1 = new QLineEdit( this, "LineEdit1" );
LineEdit1->setFocus();
layout->addMultiCellWidget( LineEdit1, 0, 0, 0, 3);
QLabel *label;
label = new QLabel(this);
label->setText( tr("Enter something to lookup / search."));
label->setMaximumHeight(60);
layout->addMultiCellWidget( label, 1, 1, 0, 3);
connect(LineEdit1,SIGNAL(returnPressed()),this,SLOT(doLookup()));
QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding );
layout->addItem( spacer, 8, 0 );
}
InputDialog::~InputDialog() {
}
void InputDialog::doLookup() {
// http://finance.yahoo.com/l?m=&s=siemens&t=
QString url = "\"http://finance.yahoo.com/l?m=&s="+LineEdit1->text()+"\"";
QString tempHtml = "/tmp/stockticker.html";
QString cmd = "wget -O "+tempHtml+" "+url;
qDebug(cmd);
/*
OProcess proc;
proc << "/usr/bin/wget";
proc<<"-O"<< tempHtml<< url;
connect( &proc, SIGNAL( processExited( OProcess *)),this, SLOT( showBrowser(OProcess *)));
proc.start( OProcess::NotifyOnExit);
*/
system(cmd.latin1());
HelpWindow *StockLookup = new HelpWindow( tempHtml,".",this, "SymbolLookup");
StockLookup->setCaption("Symbol");
StockLookup->showMaximized();
StockLookup->show();
LineEdit1->text();
}
void InputDialog::showBrowser(OProcess*) {
qDebug("BLAH");
QString tempHtml = "/tmp/stockticker.html";
HelpWindow *StockLookup = new HelpWindow( tempHtml,".",this, "SymbolLookup");
StockLookup->setCaption("Symbol");
StockLookup->showMaximized();
StockLookup->show();
LineEdit1->text();
}
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 @@
/*
* stocktickeRconfig.cpp
*
* copyright : (c) 2002 by ljp
* email : llornkcor@handhelds.org
*
*/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include "stocktickerconfig.h"
#include <opie/todayconfigwidget.h>
-#include <qpe/config.h>
#include <qapplication.h>
#include <qspinbox.h>
#include <qcheckbox.h>
-#include <qlayout.h>
#include <qlineedit.h>
-#include <qlayout.h>
#include <qvariant.h>
#include <qpushbutton.h>
#include <qwhatsthis.h>
#include <qlabel.h>
-#include <qpe/config.h>
#include <qstringlist.h>
#include <qmainwindow.h>
#include <stdlib.h>
StocktickerPluginConfig::StocktickerPluginConfig( QWidget *parent, const char* name)
: TodayConfigWidget(parent, name ) {
QGridLayout *layout = new QGridLayout( this );
layout->setSpacing(2);
layout->setMargin( 2);
LineEdit1 = new QLineEdit( this, "LineEdit1" );
LineEdit1->setFocus();
// QWhatsThis::add( LineEdit1, tr("Enter the stock symbols you want to be shown here."));
layout->addMultiCellWidget( LineEdit1, 0, 0, 0, 4);
Config cfg( "stockticker");
cfg.setGroup( "Symbols" );
QString symbollist;
symbollist = cfg.readEntry("Symbols", "");
LineEdit1->setText(symbollist);
QLabel *label;
label = new QLabel(this);
label->setText( tr("Enter stock symbols seperated\nby a space."));
label->setMaximumHeight(60);
layout->addMultiCellWidget( label, 1, 1, 0, 4);
cfg.setGroup( "Fields" );
timeCheck= new QCheckBox ( "Time",this );
timeCheck->setChecked( cfg.readBoolEntry("timeCheck",1));
layout->addMultiCellWidget(timeCheck, 2, 2, 0, 0 );
QWhatsThis::add( timeCheck, tr("Toggles Time of current price field"));
dateCheck= new QCheckBox ( "Date", this );
dateCheck->setChecked( cfg.readBoolEntry("dateCheck",1));
layout->addMultiCellWidget( dateCheck, 2, 2, 1, 1 );
QWhatsThis::add(dateCheck, tr("Toggles date field"));
symbolCheck= new QCheckBox ( "Symbol", this );
symbolCheck->setChecked( cfg.readBoolEntry("symbolCheck",1));
layout->addMultiCellWidget( symbolCheck, 2, 2, 2, 2 );
QWhatsThis::add(symbolCheck, tr("Toggles Symbol field"));
nameCheck= new QCheckBox ( "Name", this );
nameCheck->setChecked( cfg.readBoolEntry("nameCheck",1));
layout->addMultiCellWidget( nameCheck, 3, 3, 0, 0 );
QWhatsThis::add(nameCheck, tr("Toggles Name of symbols owner field"));
currentPriceCheck= new QCheckBox ( "Price", this );
currentPriceCheck->setChecked( cfg.readBoolEntry("currentPriceCheck",1));
layout->addMultiCellWidget( currentPriceCheck, 3, 3, 1, 1 );
QWhatsThis::add(currentPriceCheck, tr("Toggles current Price field"));
lastPriceCheck= new QCheckBox ( "Last Price", this );
lastPriceCheck->setChecked( cfg.readBoolEntry("lastPriceCheck",1));
layout->addMultiCellWidget(lastPriceCheck, 3, 3, 2, 2);
QWhatsThis::add(lastPriceCheck, tr("Toggles last price field"));
openPriceCheck= new QCheckBox ( "Open Price", this);
openPriceCheck->setChecked( cfg.readBoolEntry("openPriceCheck",1));
layout->addMultiCellWidget( openPriceCheck, 4, 4, 0, 0 );
QWhatsThis::add(openPriceCheck, tr("Toggles opening price field"));
minPriceCheck= new QCheckBox ( "Min Price", this );
minPriceCheck->setChecked( cfg.readBoolEntry("minPriceCheck",1));
layout->addMultiCellWidget( minPriceCheck, 4, 4, 1, 1);
QWhatsThis::add(minPriceCheck, tr("Toggles minimum daily price field"));
maxPriceCheck= new QCheckBox ( "Max Price", this);
maxPriceCheck->setChecked( cfg.readBoolEntry("maxPriceCheck",1));
layout->addMultiCellWidget( maxPriceCheck, 4, 4, 2, 2 );
QWhatsThis::add(maxPriceCheck, tr("Toggles maximum daily price field"));
variationCheck= new QCheckBox ( "Variation", this );
variationCheck->setChecked( cfg.readBoolEntry("variationCheck",1));
layout->addMultiCellWidget( variationCheck, 5, 5, 0, 0 );
QWhatsThis::add(variationCheck, tr("Toggles daily variation of price field"));
volumeCheck= new QCheckBox ( "Volume", this );
volumeCheck->setChecked( cfg.readBoolEntry("volumeCheck",1));
layout->addMultiCellWidget( volumeCheck , 5, 5, 1, 1);
QWhatsThis::add(volumeCheck, tr("Toggles volume of trading field"));
timerDelaySpin = new QSpinBox( this, "timer spin" );
QWhatsThis::add( timerDelaySpin , tr( "How often stocks prices should be looked up. In minutes" ) );
timerDelaySpin->setMaxValue( 60);
cfg.setGroup("Timer");
timerDelaySpin->setValue( cfg.readNumEntry("Delay",0));
layout->addMultiCellWidget( timerDelaySpin , 6, 6, 0, 0);
QLabel *label2;
label2 = new QLabel(this);
label2->setText( tr("Minutes between lookups."));
label2->setMaximumHeight(60);
layout->addMultiCellWidget( label2, 6, 6, 1, 2);
scrollSpeed = new QSpinBox( this, "Scrollspin" );
QWhatsThis::add( timerDelaySpin , tr( "Speed of scrolling action, in milliseconds" ) );
scrollSpeed->setMaxValue( 1000);
scrollSpeed->setSteps(50,50);
cfg.setGroup("Timer");
scrollSpeed->setValue( cfg.readNumEntry("ScrollSpeed",50));
layout->addMultiCellWidget( scrollSpeed , 7, 7, 0, 0);
QLabel *label3;
label3 = new QLabel(this);
label3->setText( tr("Scroll Speed, in milliseconds"));
label3->setMaximumHeight(60);
layout->addMultiCellWidget( label3, 7, 7, 1, 2);
scrollLength = new QSpinBox( this, "ScrollLength" );
QWhatsThis::add( timerDelaySpin , tr( "Length of scrolling" ) );
scrollLength->setMaxValue( 10);
// scrollLength->setSteps(5,5);
cfg.setGroup("Timer");
scrollLength->setValue( cfg.readNumEntry("ScrollLength",1));
layout->addMultiCellWidget( scrollLength , 8, 8, 0, 0);
QLabel *label4;
label4 = new QLabel(this);
label4->setText( tr("Scroll Length"));
label4->setMaximumHeight(60);
layout->addMultiCellWidget( label4, 8, 8, 1, 2);
// lookupButton = new QPushButton(this, "LookupButton");
// lookupButton->setText(tr("Symbol Lookup"));
// connect(lookupButton,SIGNAL(clicked()),SLOT( doLookup()));
// layout->addMultiCellWidget( lookupButton , 9, 9, 0, 0);
QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding );
layout->addItem( spacer, 9, 0 );
}
void StocktickerPluginConfig::writeConfig() {
Config cfg( "stockticker");
cfg.setGroup( "Symbols" );
QString outText = text().upper();
outText.stripWhiteSpace();
cfg.writeEntry("Symbols", outText );
cfg.setGroup( "Fields" );
cfg.writeEntry("timeCheck",timeCheck->isChecked());
cfg.writeEntry("dateCheck",dateCheck->isChecked());
cfg.writeEntry("symbolCheck",symbolCheck->isChecked());
cfg.writeEntry("nameCheck",nameCheck->isChecked());
cfg.writeEntry("currentPriceCheck",currentPriceCheck->isChecked());
cfg.writeEntry("lastPriceCheck",lastPriceCheck->isChecked());
cfg.writeEntry("openPriceCheck",openPriceCheck->isChecked());
cfg.writeEntry("minPriceCheck",minPriceCheck->isChecked());
cfg.writeEntry("maxPriceCheck",maxPriceCheck->isChecked());
cfg.writeEntry("variationCheck",variationCheck->isChecked());
cfg.writeEntry("volumeCheck",volumeCheck->isChecked());
cfg.setGroup("Timer");
cfg.writeEntry("Delay",timerDelaySpin->value());
cfg.writeEntry("ScrollLength",scrollLength->value());
cfg.writeEntry("ScrollSpeed",scrollSpeed->value());
cfg.write();
}
StocktickerPluginConfig::~StocktickerPluginConfig() {
}
QString StocktickerPluginConfig::text() const {
return LineEdit1->text();
}
void StocktickerPluginConfig::doLookup() {
system("stockticker");
}
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 @@
/*
* stocktickerpluginwidget.cpp
*
* copyright : (c) 2002 by L.J. Potter
* email : llornkcor@handhelds.org
*
*/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
-#include <qsocket.h>
-#include <qvaluelist.h>
-#include <qtl.h>
-#include <qstring.h>
-#include <qstringlist.h>
-#include <qobject.h>
#include <qlayout.h>
-#include <qlineedit.h>
-#include <qregexp.h>
-#include <qtimer.h>
-#include <qmessagebox.h>
#include <qpe/config.h>
-#include <qpe/timestring.h>
-#include <qpe/qcopenvelope_qws.h>
-#include <qpe/network.h>
#include <opie/oticker.h>
extern "C" {
#include "libstocks/stocks.h"
}
#include <pthread.h>
#include "stocktickerpluginwidget.h"
QString output;
OTicker *stocktickerTicker;
void getStocks(char *blah) {
// stocktickerTicker->setText( "Downloading stock data.");
stock *stocks_quotes=NULL;
stock *stocks_tmp;
QCString stock_liste = blah;
::free ( blah );
// char *stock_liste = (char *)blah->latin1();
qDebug("%s", stock_liste.data() );
QString tempString;
output = "";
libstocks_return_code error;
Config cfg( "stockticker");
cfg.setGroup( "Fields" );
bool dotimeCheck, dodateCheck, dosymbolCheck, donameCheck;
bool docurrentPriceCheck, dolastPriceCheck, doopenPriceCheck;
bool dominPriceCheck, domaxPriceCheck, dovariationCheck, dovolumeCheck;
dotimeCheck=dodateCheck=dosymbolCheck=donameCheck= docurrentPriceCheck=dolastPriceCheck=doopenPriceCheck=dominPriceCheck=domaxPriceCheck=dovariationCheck=dovolumeCheck=false;
dotimeCheck=cfg.readBoolEntry("timeCheck",1);
dodateCheck=cfg.readBoolEntry("dateCheck",1);
dosymbolCheck=cfg.readBoolEntry("symbolCheck",1);
donameCheck=cfg.readBoolEntry("nameCheck",1);
docurrentPriceCheck=cfg.readBoolEntry("currentPriceCheck",1);
dolastPriceCheck=cfg.readBoolEntry("lastPriceCheck",1);
doopenPriceCheck=cfg.readBoolEntry("openPriceCheck",1);
dominPriceCheck=cfg.readBoolEntry("minPriceCheck",1);
domaxPriceCheck=cfg.readBoolEntry("maxPriceCheck",1);
dovariationCheck=cfg.readBoolEntry("variationCheck",1);
dovolumeCheck=cfg.readBoolEntry("volumeCheck",1);
// DefProxy();
{
char *proxy;
libstocks_return_code error;
/* Proxy support */
/* Checks for "http_proxy" environment variable */
proxy = getenv("http_proxy");
if(proxy) {
/* printf("proxy set\n"); */
error = set_proxy(proxy);
if (error) {
printf("Proxy error (%d)\n", error);
QString tempString;
tempString.sprintf("Proxy error (%d)\n", error);
output = tempString;
return;
// exit(1);
}
}
}
// char *stock_liste = (char *)blah;
/* Get the stocks and process errors */
error = get_stocks( stock_liste.data(), &stocks_quotes);
if (error) {
printf("Error in getting stocks (%d)\n", error);
tempString.sprintf("Error in getting stocks (%d)\n", error);
output =tempString;
return;
// exit(1);
}
stocks_tmp = stocks_quotes;
/* Displays the stocks */
while(stocks_tmp!=0){
if (stocks_tmp->Time) {
// printf("%s ", stocks_tmp->Time);
tempString.sprintf("| %s ", stocks_tmp->Time);
tempString.replace(QRegExp("\""),"");
if( dotimeCheck)
output +=tempString;
}
if (stocks_tmp->Date) {
// printf("%s ", stocks_tmp->Date);
tempString.sprintf("| %s ", stocks_tmp->Date);
tempString.replace(QRegExp("\""),"");
if(dodateCheck)
output +=tempString;
}
// printf("\n");
// printf("----------------------------------------\n");
if ( strlen(stocks_tmp->Symbol) > 20 ) {
// printf("| Symbol | %.20s |\n",stocks_tmp->Symbol);
tempString.sprintf("| Symbol %s ",stocks_tmp->Symbol);
if(dosymbolCheck)
output +=tempString;
}
else {
// printf("| Symbol | %-20s |\n",stocks_tmp->Symbol);
tempString.sprintf("| Symbol %s ",stocks_tmp->Symbol);
if(dosymbolCheck)
output +=tempString;
}
if (stocks_tmp->Name) {
if ( strlen(stocks_tmp->Name) > 20 ) {
// printf("| Name %.20s |\n",stocks_tmp->Name);
tempString.sprintf("| Name %s ",stocks_tmp->Name);
tempString.stripWhiteSpace();
if(donameCheck)
output +=tempString;
} else {
// printf("| Name | %-20s |\n",stocks_tmp->Name);
tempString.sprintf("| Name %s ",stocks_tmp->Name);
tempString.stripWhiteSpace();
if(donameCheck)
output +=tempString;
}
}
else {
// printf("| Name | |\n");
tempString.sprintf("| Name | |");
if(donameCheck)
output +=tempString;
}
// printf("| Price | %-7.2f |\n", stocks_tmp->CurrentPrice);
tempString.sprintf("| Price %-7.2f ", stocks_tmp->CurrentPrice);
if(docurrentPriceCheck)
output +=tempString;
// printf("| Yesterday | %-7.2f |\n",stocks_tmp->LastPrice);
tempString.sprintf("| Yesterday %-7.2f ",stocks_tmp->LastPrice);
if(dolastPriceCheck)
output +=tempString;
// printf("| Open | %-7.2f |\n",stocks_tmp->OpenPrice);
tempString.sprintf("| Open %-7.2f ",stocks_tmp->OpenPrice);
if(doopenPriceCheck)
output +=tempString;
// printf("| Min | %-7.2f |\n", stocks_tmp->MinPrice);
tempString.sprintf("| Min %-7.2f ", stocks_tmp->MinPrice);
if(dominPriceCheck)
output +=tempString;
// printf("| Max | %-7.2f |\n",stocks_tmp->MaxPrice);
tempString.sprintf("| Max %-7.2f ",stocks_tmp->MaxPrice);
if(domaxPriceCheck)
output +=tempString;
// printf("| Var | %-6.2f (%5.2f %%) |\n", stocks_tmp->Variation, stocks_tmp->Pourcentage);
tempString.sprintf("| Var %-6.2f (%5.2f %%) ", stocks_tmp->Variation, stocks_tmp->Pourcentage);
if(dovariationCheck)
output +=tempString;
// printf("| Volume | %-9d |\n", stocks_tmp->Volume);
tempString.sprintf("| Volume %-9d ", stocks_tmp->Volume);
if(dovolumeCheck)
output +=tempString;
// printf("----------------------------------------\n\n");
tempString.sprintf("||==++==|");
output +=tempString;
/* Simple function which help to browse in the stocks list */
stocks_tmp = next_stock(stocks_tmp);
}
/* frees stocks */
free_stocks(stocks_quotes);
stocktickerTicker->setText( output.latin1() );
}
StockTickerPluginWidget::StockTickerPluginWidget( QWidget *parent, const char* name)
: QWidget(parent, name ) {
init();
startTimer(1000);
stocktickerTicker->setTextFormat(Qt::RichText);
// checkConnection();
}
StockTickerPluginWidget::~StockTickerPluginWidget() {
}
void StockTickerPluginWidget::init() {
QHBoxLayout* layout = new QHBoxLayout( this );
stocktickerTicker = new OTicker(this);
// stocktickerTicker->setMinimumHeight(15);
connect( stocktickerTicker, SIGNAL( mousePressed()), this, SLOT( checkConnection() ));
layout->addWidget( stocktickerTicker);
wasError = true;
}
void StockTickerPluginWidget::doStocks() {
Config cfg( "stockticker");
cfg.setGroup( "Symbols" );
symbollist="";
symbollist = cfg.readEntry("Symbols", "");
symbollist.replace(QRegExp(" "),"+");//seperated by +
cfg.setGroup("Timer");
stocktickerTicker->setUpdateTime( cfg.readNumEntry("ScrollSpeed",50));
stocktickerTicker->setScrollLength( cfg.readNumEntry("ScrollLength",10));
if (!symbollist.isEmpty()) {
pthread_t thread1;
char *blah = ::strdup(symbollist.latin1());
pthread_create(&thread1,NULL, (void * (*)(void *))getStocks, (void *) blah);
}
}
void StockTickerPluginWidget::timerEvent( QTimerEvent *e ) {
killTimer(e->timerId());
checkConnection();
}
void StockTickerPluginWidget::checkConnection() {
// qDebug("checking connection");
// Sock = new QSocket( this );
// if( wasError)
// stocktickerTicker->setText("Checking connection");
// if(Sock->state() == QSocket::Idle) {
// Sock->connectToHost("finance.yahoo.com", 80);
// connect( Sock, SIGNAL( error(int) ), SLOT(socketError(int)) );
// connect( Sock, SIGNAL( hostFound() ), SLOT(isConnected()) );
// } else {
// qDebug("State is not Idle");
isConnected();
// }
}
void StockTickerPluginWidget::isConnected() {
// qDebug("We connect, so ok to grab stocks");
doStocks();
Config cfg( "stockticker");
cfg.setGroup("Timer");
timerDelay= cfg.readNumEntry("Delay",0);
if(timerDelay > 0)
startTimer(timerDelay*60000);
qDebug("timer set for %d",(timerDelay*60000)/60000);
wasError = false;
// Sock->close();
}
void StockTickerPluginWidget::socketError(int errcode) {
switch(errcode) {
case QSocket::ErrConnectionRefused:
output = tr("Connection refused.");
break;
case QSocket::ErrHostNotFound:
output = tr("Could not find server.");
break;
case QSocket::ErrSocketRead :
output = tr("Socket read error.");
break;
};
stocktickerTicker->setText( output );
wasError = true;
// Sock->close();
}