Diffstat (limited to 'noncore/todayplugins/stockticker/stocktickerlib') (more/less context) (ignore whitespace changes)
11 files changed, 689 insertions, 0 deletions
diff --git a/noncore/todayplugins/stockticker/stocktickerlib/.cvsignore b/noncore/todayplugins/stockticker/stocktickerlib/.cvsignore new file mode 100644 index 0000000..c9bb88e --- a/dev/null +++ b/noncore/todayplugins/stockticker/stocktickerlib/.cvsignore @@ -0,0 +1,3 @@ +Makefile* +moc_* +*.moc
\ No newline at end of file diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerlib.pro b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerlib.pro new file mode 100644 index 0000000..28ef072 --- a/dev/null +++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerlib.pro @@ -0,0 +1,27 @@ +TEMPLATE = lib +CONFIG -= moc +CONFIG += qt debug + +HEADERS = stocktickerplugin.h stocktickeruginimpl.h stocktickerpluginwidget.h ticker.h \ + ../libstocks/csv.h \ + ../libstocks/http.h \ + ../libstocks/lists.h \ + ../libstocks/stocks.h +SOURCES = stocktickerplugin.cpp stocktickerpluginimpl.cpp stocktickerpluginwidget.cpp ticker.cpp \ + ../libstocks/csv.c \ + ../libstocks/currency.c \ + ../libstocks/history.c \ + ../libstocks/http.c \ + ../libstocks/lists.c \ + ../libstocks/stocks.c + +INCLUDEPATH += $(OPIEDIR)/include \ + ../ ../library +DEPENDPATH += $(OPIEDIR)/include \ + ../ ../library + +LIBS+= -lqpe -lopie +TMAKE_CFLAGS += -D__UNIX__ + +DESTDIR = $(OPIEDIR)/plugins/today +TARGET = todaystocktickerplugin diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerplugin.cpp b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerplugin.cpp new file mode 100644 index 0000000..82dfb13 --- a/dev/null +++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerplugin.cpp @@ -0,0 +1,56 @@ +/* + * stocktickerplugin.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 "stocktickerplugin.h" +#include "stocktickerpluginwidget.h" + + +StockTickerPlugin::StockTickerPlugin() { +} + +StockTickerPlugin::~StockTickerPlugin() { +} + +QString StockTickerPlugin::pluginName() const { + return QObject::tr( "StockTicker plugin" ); +} + +double StockTickerPlugin::versionNumber() const { + return 0.6; +} + +QString StockTickerPlugin::pixmapNameWidget() const { + return "pass"; +} + +QWidget* StockTickerPlugin::widget( QWidget * wid ) { + return new StockTickerPluginWidget( wid, "StockTicker " ); +} + +QString StockTickerPlugin::pixmapNameConfig() const { + return 0l; +} + +TodayConfigWidget* StockTickerPlugin::configWidget( QWidget* wid ) { + return 0l; +} + +QString StockTickerPlugin::appName() const { + return "stockticker"; +} + + diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerplugin.h b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerplugin.h new file mode 100644 index 0000000..9f174bf --- a/dev/null +++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerplugin.h @@ -0,0 +1,47 @@ +/* + * stocktickerplugin.h + * + * 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. * + * * + ***************************************************************************/ + + +#ifndef STOCKTICKER_PLUGIN_H +#define STOCKTICKER_PLUGIN_H + +#include <qstring.h> +#include <qwidget.h> + +#include <opie/tododb.h> +#include <opie/oclickablelabel.h> + +#include <opie/todayplugininterface.h> +#include <opie/todayconfigwidget.h> + +class StockTickerPlugin : public TodayPluginObject { + +public: + StockTickerPlugin(); + ~StockTickerPlugin(); + + QString pluginName() const; + double versionNumber() const; + QString pixmapNameWidget() const; + QWidget* widget(QWidget *); + QString pixmapNameConfig() const; + TodayConfigWidget* configWidget(QWidget *); + QString appName() const; + + +}; + +#endif diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginimpl.cpp b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginimpl.cpp new file mode 100644 index 0000000..9a640d4 --- a/dev/null +++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginimpl.cpp @@ -0,0 +1,45 @@ +/* + * stocktickerpluginimpl.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 "stocktickerplugin.h" +#include "stocktickerpluginimpl.h" + +StockTickerPluginImpl::StockTickerPluginImpl() { + stocktickerPlugin = new StockTickerPlugin(); +} + +StockTickerPluginImpl::~StockTickerPluginImpl() { +} + + +TodayPluginObject* StockTickerPluginImpl::guiPart() { + return stocktickerPlugin; +} + +QRESULT StockTickerPluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) { + *iface = 0; + if ( ( uuid == IID_QUnknown ) || ( uuid == IID_TodayPluginInterface ) ) { + *iface = this, (*iface)->addRef(); + } + return QS_OK; + +} + +Q_EXPORT_INTERFACE() { + Q_CREATE_INSTANCE( StockTickerPluginImpl ); +} diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginimpl.h b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginimpl.h new file mode 100644 index 0000000..300c545 --- a/dev/null +++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginimpl.h @@ -0,0 +1,40 @@ +/* + * stocktickerpluginimpl.h + * + * 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. * + * * + ***************************************************************************/ + +#ifndef STOCKTICKER_PLUGIN_IMPL_H +#define STOCKTICKER_PLUGIN_IMPL_H + +#include <opie/todayplugininterface.h> + +class StockTickerPlugin; + +class StockTickerPluginImpl : public TodayPluginInterface{ + +public: + StockTickerPluginImpl(); + virtual ~StockTickerPluginImpl(); + + QRESULT queryInterface( const QUuid &, QUnknownInterface** ); + Q_REFCOUNT + + virtual TodayPluginObject *guiPart(); + +private: + StockTickerPlugin *stocktickerPlugin; + ulong ref; +}; + +#endif diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.cpp b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.cpp new file mode 100644 index 0000000..3eaade4 --- a/dev/null +++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.cpp @@ -0,0 +1,239 @@ +/* + * 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 <qvaluelist.h> +#include <qtl.h> +#include <qstring.h> +#include <qstringlist.h> +#include <qobject.h> +#include <qlayout.h> +#include <qlineedit.h> +#include <qregexp.h> + +#include <qpe/config.h> +#include <qpe/timestring.h> +#include <qpe/qcopenvelope_qws.h> + +#include "ticker.h" + +extern "C" { +#include "libstocks/stocks.h" +} + +#include "stocktickerpluginwidget.h" + +StockTickerPluginWidget::StockTickerPluginWidget( QWidget *parent, const char* name) + : QWidget(parent, name ) { + init(); +} + +StockTickerPluginWidget::~StockTickerPluginWidget() { +} + +void StockTickerPluginWidget::init() { + + QHBoxLayout* layout = new QHBoxLayout( this ); + + stocktickerTicker = new Ticker(this); + stocktickerTicker->setMinimumHeight(15); + connect( stocktickerTicker, SIGNAL( mousePressed()), this, SLOT( doStocks() )); + + layout->addWidget( stocktickerTicker); +} + +void StockTickerPluginWidget::doStocks() { + + Config cfg( "stockticker"); + cfg.setGroup( "Symbols" ); + QString symbollist; + symbollist = cfg.readEntry("Symbols", ""); + symbollist.replace(QRegExp(" "),"+");//seperated by + +// qDebug(symbollist); + + getStocks( symbollist.latin1()); + + stocktickerTicker->setText( output ); +} + +void StockTickerPluginWidget::getStocks( const char *blah) { + + stock *stocks_quotes=NULL; + stock *stocks_tmp; + + 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 *stock_liste = (char *)blah; + /* Get the stocks and process errors */ + error = get_stocks( stock_liste, &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); + +} + +void StockTickerPluginWidget::DefProxy(void) { + 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); + } + } +} diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.h b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.h new file mode 100644 index 0000000..6524ae4 --- a/dev/null +++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginwidget.h @@ -0,0 +1,62 @@ +/* + * stocktickerpluginwidget.h + * + * copyright : (c) 2002 by L.J. Potter + * email : lornkcor@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 STOCKTICKERL_PLUGIN_WIDGET_H +#define STOCKTICKERL_PLUGIN_WIDGET_H + +#include <qstring.h> +#include <qwidget.h> +#include <qlineedit.h> + +#include <opie/tododb.h> +#include <opie/oclickablelabel.h> + +#include <sys/types.h> +#include <sys/uio.h> +#include <unistd.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "ticker.h" + +/* extern "C" { */ +/* #include "stocks.h" */ +/* } */ + +class StockTickerPluginWidget : public QWidget { + + Q_OBJECT + +public: + StockTickerPluginWidget( QWidget *parent, const char *name ); + ~StockTickerPluginWidget(); + QString output; + +protected slots: + void doStocks(); + +private: + Ticker *stocktickerTicker; + + void init(); + void getStocks( const char *stock_liste); + void DefProxy(void); + +}; + +#endif diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktimerpluginwidget.h b/noncore/todayplugins/stockticker/stocktickerlib/stocktimerpluginwidget.h new file mode 100644 index 0000000..2feef80 --- a/dev/null +++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktimerpluginwidget.h @@ -0,0 +1,45 @@ +/* + * mailpluginwidget.h + * + * copyright : (c) 2002 by Maximilian Reiß + * email : harlekin@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 MAIL_PLUGIN_WIDGET_H +#define MAIL_PLUGIN_WIDGET_H + +#include <qstring.h> +#include <qwidget.h> + +#include <opie/tododb.h> +#include <opie/oclickablelabel.h> + +class MailPluginWidget : public QWidget { + + Q_OBJECT + + +public: + MailPluginWidget( QWidget *parent, const char *name ); + ~MailPluginWidget(); + +protected slots: + void startMail(); + +private: + OClickableLabel *mailLabel; + void readConfig(); + void getInfo(); +}; + +#endif diff --git a/noncore/todayplugins/stockticker/stocktickerlib/ticker.cpp b/noncore/todayplugins/stockticker/stocktickerlib/ticker.cpp new file mode 100644 index 0000000..6e6273b --- a/dev/null +++ b/noncore/todayplugins/stockticker/stocktickerlib/ticker.cpp @@ -0,0 +1,93 @@ +/* + This file is part of the Opie Project + + Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> + Copyright (c) 2002 L. Potter <ljp@llornkcor.com> + Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> + =. + .=l. + .>+-= + _;:, .> :=|. This program is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This program is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU +..}^=.= = ; Library General Public License for more +++= -. .` .: details. + : = ...= . :.=- + -. .:....=;==+<; You should have received a copy of the GNU + -_. . . )=. = Library General Public License along with + -- :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#include <qpe/qpeapplication.h> +#include <qpe/resource.h> +#include <qpe/config.h> + +#include <qwidget.h> +#include <qpixmap.h> +#include <qbutton.h> +#include <qpainter.h> +#include <qframe.h> +#include <qlayout.h> +#include <qdir.h> +#include <stdlib.h> +#include <stdio.h> + +#include "ticker.h" + +Ticker::Ticker( QWidget* parent=0 ) : QFrame( parent ) { + setFrameStyle( NoFrame/*WinPanel | Sunken */); +} + +Ticker::~Ticker() { +} + +void Ticker::setText( const QString& text ) { + + pos = 0; // reset it everytime the text is changed + scrollText = text; + + int pixelLen = fontMetrics().width( text ); + QPixmap pm( pixelLen, contentsRect().height() ); + pm.fill( QColor( 167, 212, 167 ) ); + QPainter pmp( &pm ); + pmp.setPen( Qt::black ); + pmp.drawText( 0, 0, pixelLen, contentsRect().height(), AlignVCenter, scrollText ); + pmp.end(); + scrollTextPixmap = pm; + + killTimers(); + if ( pixelLen > contentsRect().width() ) + startTimer( 50 ); + update(); +} + + +void Ticker::timerEvent( QTimerEvent * ) { + pos = ( pos <= 0 ) ? scrollTextPixmap.width() : pos - 1; + repaint( FALSE ); +} + +void Ticker::drawContents( QPainter *p ) { + int pixelLen = scrollTextPixmap.width(); + p->drawPixmap( pos, contentsRect().y(), scrollTextPixmap ); + if ( pixelLen > contentsRect().width() ) // Scrolling + p->drawPixmap( pos - pixelLen, contentsRect().y(), scrollTextPixmap ); +} + +void Ticker::mouseReleaseEvent( QMouseEvent * e) { + qDebug("<<<<<<<>>>>>>>>>"); + emit mousePressed(); +} diff --git a/noncore/todayplugins/stockticker/stocktickerlib/ticker.h b/noncore/todayplugins/stockticker/stocktickerlib/ticker.h new file mode 100644 index 0000000..3b68928 --- a/dev/null +++ b/noncore/todayplugins/stockticker/stocktickerlib/ticker.h @@ -0,0 +1,32 @@ +#ifndef TICKER_H +#define TICKER_H + +#include <qwidget.h> +#include <qpainter.h> +#include <qdrawutil.h> +#include <qpixmap.h> +#include <qstring.h> +#include <qslider.h> +#include <qframe.h> +#include <qlineedit.h> + +class Ticker : public QFrame { + Q_OBJECT + +public: + Ticker( QWidget* parent=0 ); + ~Ticker(); + void setText( const QString& text ) ; +signals: + void mousePressed(); +protected: + void timerEvent( QTimerEvent * ); + void drawContents( QPainter *p ); + void mouseReleaseEvent ( QMouseEvent *); +private: + QString scrollText; + QPixmap scrollTextPixmap; + int pos;//, pixelLen; +}; + +#endif |