summaryrefslogtreecommitdiff
path: root/noncore/todayplugins/stockticker/stocktickerlib
Side-by-side diff
Diffstat (limited to 'noncore/todayplugins/stockticker/stocktickerlib') (more/less context) (show whitespace changes)
-rw-r--r--noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.cpp2
-rw-r--r--noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.h2
-rw-r--r--noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.cpp88
3 files changed, 59 insertions, 33 deletions
diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.cpp b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.cpp
index d740b6f..915233a 100644
--- a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.cpp
+++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.cpp
@@ -76,97 +76,97 @@ StocktickerPluginConfig::StocktickerPluginConfig( QWidget *parent, const char*
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));
+ timerDelaySpin->setValue( cfg.readNumEntry("Delay",15));
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() {
diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.h b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.h
index 2b67a8b..10f9678 100644
--- a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.h
+++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerconfig.h
@@ -1,46 +1,46 @@
/*
* stocktickerconfig.h
*
* 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. *
* *
***************************************************************************/
#ifndef STOCKTICKER_PLUGIN_CONFIG_H
#define STOCKTICKER_PLUGIN_CONFIG_H
#include <qwidget.h>
#include <opie/todayconfigwidget.h>
#include <qstring.h>
class QLineEdit;
class QCheckBox;
class QPushButton;
class QCheckBox;
class QSpinBox;
class StocktickerPluginConfig : public TodayConfigWidget {
-//Q_OBJECT
+ Q_OBJECT
public:
StocktickerPluginConfig( QWidget *parent, const char *name );
~StocktickerPluginConfig();
QString text() const;
void writeConfig();
private:
QLineEdit* LineEdit1;
QCheckBox *timeCheck, *dateCheck, *symbolCheck, *nameCheck, *currentPriceCheck, *lastPriceCheck, *openPriceCheck, *minPriceCheck, *maxPriceCheck, *variationCheck, *volumeCheck;
QPushButton *lookupButton;
QSpinBox *timerDelaySpin, *scrollSpeed, *scrollLength;
private slots:
void doLookup();
};
#endif
diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.cpp b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.cpp
index c3ca52d..fedc79c 100644
--- a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.cpp
+++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.cpp
@@ -1,146 +1,161 @@
/*
* 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 <qlayout.h>
#include <qpe/config.h>
#include <opie/oticker.h>
extern "C" {
#include "libstocks/stocks.h"
}
#include <pthread.h>
#include "stocktickerpluginwidget.h"
QString output;
OTicker *stocktickerTicker;
+ QCString stock_liste;
+ bool dotimeCheck, dodateCheck, dosymbolCheck, donameCheck;
+ bool docurrentPriceCheck, dolastPriceCheck, doopenPriceCheck;
+ bool dominPriceCheck, domaxPriceCheck, dovariationCheck, dovolumeCheck;
void getStocks(char *blah) {
// stocktickerTicker->setText( "Downloading stock data.");
stock *stocks_quotes=NULL;
stock *stocks_tmp;
- QCString stock_liste = blah;
+ stock_liste = blah;
::free ( blah );
// char *stock_liste = (char *)blah->latin1();
- qDebug("%s", stock_liste.data() );
- QString tempString;
+ // qDebug("%s", stock_liste.data() );
output = "";
-
+ QString tempString;
libstocks_return_code error;
- Config cfg( "stockticker");
- cfg.setGroup( "Fields" );
- bool dotimeCheck, dodateCheck, dosymbolCheck, donameCheck;
- bool docurrentPriceCheck, dolastPriceCheck, doopenPriceCheck;
- bool dominPriceCheck, domaxPriceCheck, dovariationCheck, dovolumeCheck;
+// 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);
+ dotimeCheck=1;
+ dodateCheck=1;
+ dosymbolCheck=1;
+ donameCheck=1;
+ docurrentPriceCheck=1;
+ dolastPriceCheck=1;
+ doopenPriceCheck=1;
+ dominPriceCheck=1;
+ domaxPriceCheck=1;
+ dovariationCheck=1;
+ dovolumeCheck=1;
+
+// 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;
+ // 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;
+// printf("Proxy error (%d)\n", error);
+// QString tempString2;
+// tempString2.sprintf("Proxy error (%d)\n", error);
+// output = tempString2;
+ // delete tempString2;
return;
// exit(1);
}
}
- }
-// char *stock_liste = (char *)blah;
+ ::free(proxy);
+ // }
/* 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);
@@ -154,148 +169,159 @@ void getStocks(char *blah) {
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);
}
+ stocktickerTicker->setText( output.latin1() );
+
/* frees stocks */
free_stocks(stocks_quotes);
- stocktickerTicker->setText( output.latin1() );
+ free_stocks(stocks_tmp);
+ stock_liste="";
+ //delete stock_liste;
+ tempString="";
+ output="";
}
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);
+ pthread_detach( thread1);
+
+ //::free((void*)thread1);
+ //getStocks(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");
+ if(this->isVisible())
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);
+ // 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();
}