summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/minesweep/minefield.cpp4
-rw-r--r--noncore/net/opieirc/ircsession.cpp8
-rw-r--r--noncore/todayplugins/stockticker/libstocks/csv.c3
3 files changed, 10 insertions, 5 deletions
diff --git a/noncore/games/minesweep/minefield.cpp b/noncore/games/minesweep/minefield.cpp
index 72c05b0..1987ea5 100644
--- a/noncore/games/minesweep/minefield.cpp
+++ b/noncore/games/minesweep/minefield.cpp
@@ -515,233 +515,235 @@ void MineField::held()
515 updateMine( currRow, currCol ); 515 updateMine( currRow, currCol );
516 ignoreClick = TRUE; 516 ignoreClick = TRUE;
517} 517}
518 518
519 519
520 520
521 521
522void MineField::keyPressEvent( QKeyEvent* e ) 522void MineField::keyPressEvent( QKeyEvent* e )
523{ 523{
524#if defined(Q_WS_QWS) || defined(_WS_QWS_) 524#if defined(Q_WS_QWS) || defined(_WS_QWS_)
525 flagAction = ( e->key() == Key_Up ) ? FlagOn : NoAction; 525 flagAction = ( e->key() == Key_Up ) ? FlagOn : NoAction;
526#else 526#else
527 flagAction = ( ( e->state() & ShiftButton ) == ShiftButton ) ? FlagOn : NoAction; 527 flagAction = ( ( e->state() & ShiftButton ) == ShiftButton ) ? FlagOn : NoAction;
528#endif 528#endif
529} 529}
530 530
531void MineField::keyReleaseEvent( QKeyEvent* ) 531void MineField::keyReleaseEvent( QKeyEvent* )
532{ 532{
533 flagAction = NoAction; 533 flagAction = NoAction;
534} 534}
535 535
536int MineField::getHint( int row, int col ) 536int MineField::getHint( int row, int col )
537{ 537{
538 int hint = 0; 538 int hint = 0;
539 for ( int c = col-1; c <= col+1; c++ ) 539 for ( int c = col-1; c <= col+1; c++ )
540 for ( int r = row-1; r <= row+1; r++ ) { 540 for ( int r = row-1; r <= row+1; r++ ) {
541 Mine* m = mine( r, c ); 541 Mine* m = mine( r, c );
542 if ( m && m->isMined() ) 542 if ( m && m->isMined() )
543 hint++; 543 hint++;
544 } 544 }
545 545
546 return hint; 546 return hint;
547} 547}
548 548
549void MineField::setHint( int row, int col ) 549void MineField::setHint( int row, int col )
550{ 550{
551 Mine *m = mine( row, col ); 551 Mine *m = mine( row, col );
552 if ( !m ) 552 if ( !m )
553 return; 553 return;
554 554
555 int hint = getHint( row, col ); 555 int hint = getHint( row, col );
556 556
557 if ( !hint ) { 557 if ( !hint ) {
558 for ( int c = col-1; c <= col+1; c++ ) 558 for ( int c = col-1; c <= col+1; c++ )
559 for ( int r = row-1; r <= row+1; r++ ) { 559 for ( int r = row-1; r <= row+1; r++ ) {
560 Mine* m = mine( r, c ); 560 Mine* m = mine( r, c );
561 if ( m && m->state() == Mine::Hidden ) { 561 if ( m && m->state() == Mine::Hidden ) {
562 m->activate( TRUE ); 562 m->activate( TRUE );
563 nonminecount--; 563 nonminecount--;
564 setHint( r, c ); 564 setHint( r, c );
565 updateCell( r, c ); 565 updateCell( r, c );
566 } 566 }
567 } 567 }
568 } 568 }
569 569
570 m->setHint( hint ); 570 m->setHint( hint );
571 updateCell( row, col ); 571 updateCell( row, col );
572} 572}
573 573
574/* 574/*
575 Only place mines after first click, since it is pointless to 575 Only place mines after first click, since it is pointless to
576 kill the player before the game has started. 576 kill the player before the game has started.
577*/ 577*/
578 578
579void MineField::cellClicked( int row, int col ) 579void MineField::cellClicked( int row, int col )
580{ 580{
581 if ( state() == GameOver ) 581 if ( state() == GameOver )
582 return; 582 return;
583 if ( state() == Waiting ) { 583 if ( state() == Waiting ) {
584 Mine* m = mine( row, col ); 584 Mine* m = mine( row, col );
585 if ( !m ) 585 if ( !m )
586 return; 586 return;
587 m->setState( Mine::Empty ); 587 m->setState( Mine::Empty );
588 nonminecount--; 588 nonminecount--;
589 placeMines(); 589 placeMines();
590 setState( Playing ); 590 setState( Playing );
591 emit gameStarted(); 591 emit gameStarted();
592 updateMine( row, col ); 592 updateMine( row, col );
593 } else { // state() == Playing 593 } else { // state() == Playing
594 holdTimer->stop(); 594 holdTimer->stop();
595 if ( ignoreClick ) 595 if ( ignoreClick )
596 ignoreClick = FALSE; 596 ignoreClick = FALSE;
597 else 597 else
598 updateMine( row, col ); 598 updateMine( row, col );
599 } 599 }
600} 600}
601 601
602void MineField::updateMine( int row, int col ) 602void MineField::updateMine( int row, int col )
603{ 603{
604 Mine* m = mine( row, col ); 604 Mine* m = mine( row, col );
605 if ( !m ) 605 if ( !m )
606 return; 606 return;
607 607
608 bool wasFlagged = m->state() == Mine::Flagged; 608 bool wasFlagged = m->state() == Mine::Flagged;
609 bool wasEmpty = m->state() == Mine::Empty; 609 bool wasEmpty = m->state() == Mine::Empty;
610 610
611 m->activate( flagAction == NoAction ); 611 m->activate( flagAction == NoAction );
612 612
613 if ( m->state() == Mine::Exploded ) { 613 if ( m->state() == Mine::Exploded ) {
614 emit gameOver( FALSE ); 614 emit gameOver( FALSE );
615 setState( GameOver ); 615 setState( GameOver );
616 return; 616 return;
617 } else if ( m->state() == Mine::Empty ) { 617 } else if ( m->state() == Mine::Empty ) {
618 setHint( row, col ); 618 setHint( row, col );
619 if ( !wasEmpty ) 619 if ( !wasEmpty )
620 nonminecount--; 620 nonminecount--;
621 } 621 }
622 622
623 if ( flagAction != NoAction ) { 623 if ( flagAction != NoAction ) {
624 if ( m->state() == Mine::Flagged ) { 624 if ( m->state() == Mine::Flagged ) {
625 if (mineguess > 0) { 625 if (mineguess > 0) {
626 --mineguess; 626 --mineguess;
627 emit mineCount( mineguess ); 627 emit mineCount( mineguess );
628 if ( m->isMined() ) 628 if ( m->isMined() )
629 --minecount; 629 --minecount;
630 } else { 630 } else {
631 m->setState(Mine::Hidden); 631 m->setState(Mine::Hidden);
632 } 632 }
633 } else if ( wasFlagged ) { 633 } else if ( wasFlagged ) {
634 ++mineguess; 634 ++mineguess;
635 emit mineCount( mineguess ); 635 emit mineCount( mineguess );
636 if ( m->isMined() ) 636 if ( m->isMined() )
637 ++minecount; 637 ++minecount;
638 } 638 }
639 } 639 }
640 640
641 updateCell( row, col ); 641 updateCell( row, col );
642 642
643 if ( !minecount && !mineguess || !nonminecount ) { 643 if ( !minecount && !mineguess || !nonminecount ) {
644 emit gameOver( TRUE ); 644 emit gameOver( TRUE );
645 setState( GameOver ); 645 setState( GameOver );
646 } 646 }
647} 647}
648 648
649void MineField::showMines() 649void MineField::showMines()
650{ 650{
651 for ( int c = 0; c < numCols; c++ ) 651 for ( int c = 0; c < numCols; c++ )
652 for ( int r = 0; r < numRows; r++ ) { 652 for ( int r = 0; r < numRows; r++ ) {
653 Mine* m = mine( r, c ); 653 Mine* m = mine( r, c );
654 if ( !m ) 654 if ( !m )
655 continue; 655 continue;
656 if ( m->isMined() && m->state() == Mine::Hidden ) 656 if ( m->isMined() && m->state() == Mine::Hidden )
657 m->setState( Mine::Mined ); 657 m->setState( Mine::Mined );
658 if ( !m->isMined() && m->state() == Mine::Flagged ) 658 if ( !m->isMined() && m->state() == Mine::Flagged )
659 m->setState( Mine::Wrong ); 659 m->setState( Mine::Wrong );
660 660
661 updateCell( r, c ); 661 updateCell( r, c );
662 } 662 }
663} 663}
664 664
665void MineField::paletteChange( const QPalette &o ) 665void MineField::paletteChange( const QPalette &o )
666{ 666{
667 Mine::paletteChange(); 667 Mine::paletteChange();
668 QScrollView::paletteChange( o ); 668 QScrollView::paletteChange( o );
669} 669}
670 670
671void MineField::writeConfig(Config& cfg) const 671void MineField::writeConfig(Config& cfg) const
672{ 672{
673 cfg.setGroup("Field"); 673 cfg.setGroup("Field");
674 cfg.writeEntry("Level",lev); 674 cfg.writeEntry("Level",lev);
675 QString grid=""; 675 QString grid="";
676 if ( stat == Playing ) { 676 if ( stat == Playing ) {
677 for ( int x = 0; x < numCols; x++ ) 677 for ( int x = 0; x < numCols; x++ )
678 for ( int y = 0; y < numRows; y++ ) { 678 for ( int y = 0; y < numRows; y++ ) {
679 char code='A'+(x*17+y*101)%21; // Reduce the urge to cheat 679 char code='A'+(x*17+y*101)%21; // Reduce the urge to cheat
680 const Mine* m = mine( y, x ); 680 const Mine* m = mine( y, x );
681 int st = (int)m->state(); if ( m->isMined() ) st+=5; 681 int st = (int)m->state(); if ( m->isMined() ) st+=5;
682 grid += code + st; 682 grid += code + st;
683 } 683 }
684 } 684 }
685 cfg.writeEntry("Grid",grid); 685 cfg.writeEntry("Grid",grid);
686} 686}
687 687
688void MineField::readConfig(Config& cfg) 688void MineField::readConfig(Config& cfg)
689{ 689{
690 cfg.setGroup("Field"); 690 cfg.setGroup("Field");
691 lev = cfg.readNumEntry("Level",1); 691 lev = cfg.readNumEntry("Level",1);
692 setup(lev); 692 setup(lev);
693 flagAction = NoAction; 693 flagAction = NoAction;
694 ignoreClick = FALSE; 694 ignoreClick = FALSE;
695 currRow = currCol = 0; 695 currRow = currCol = 0;
696 QString grid = cfg.readEntry("Grid"); 696 QString grid = cfg.readEntry("Grid");
697 int x; 697 int x;
698 if ( !grid.isEmpty() ) { 698 if ( !grid.isEmpty() ) {
699 int i=0; 699 int i=0;
700 minecount=0; 700 minecount=0;
701 mineguess=0; 701 mineguess=0;
702 for ( x = 0; x < numCols; x++ ) { 702 for ( x = 0; x < numCols; x++ ) {
703 for ( int y = 0; y < numRows; y++ ) { 703 for ( int y = 0; y < numRows; y++ ) {
704 char code='A'+(x*17+y*101)%21; // Reduce the urge to cheat 704 char code='A'+(x*17+y*101)%21; // Reduce the urge to cheat
705 int st = (char)(QChar)grid[i++]-code; 705 int st = (char)(QChar)grid[i++]-code;
706 Mine* m = mine( y, x ); 706 Mine* m = mine( y, x );
707 if (!m)
708 continue;
707 if ( st >= 5 ) { 709 if ( st >= 5 ) {
708 st-=5; 710 st-=5;
709 m->setMined(TRUE); 711 m->setMined(TRUE);
710 minecount++; 712 minecount++;
711 mineguess++; 713 mineguess++;
712 } 714 }
713 m->setState((Mine::MineState)st); 715 m->setState((Mine::MineState)st);
714 switch ( m->state() ) { 716 switch ( m->state() ) {
715 case Mine::Flagged: 717 case Mine::Flagged:
716 if (m->isMined()) 718 if (m->isMined())
717 minecount--; 719 minecount--;
718 mineguess--; 720 mineguess--;
719 break; 721 break;
720 case Mine::Empty: 722 case Mine::Empty:
721 --nonminecount; 723 --nonminecount;
722 break; 724 break;
723 default: 725 default:
724 break; 726 break;
725 } 727 }
726 } 728 }
727 } 729 }
728 for ( x = 0; x < numCols; x++ ) { 730 for ( x = 0; x < numCols; x++ ) {
729 for ( int y = 0; y < numRows; y++ ) { 731 for ( int y = 0; y < numRows; y++ ) {
730 Mine* m = mine( y, x ); 732 Mine* m = mine( y, x );
731 if ( m->state() == Mine::Empty ) 733 if ( m && m->state() == Mine::Empty )
732 m->setHint(getHint(y,x)); 734 m->setHint(getHint(y,x));
733 } 735 }
734 } 736 }
735 } 737 }
736 setState( Playing ); 738 setState( Playing );
737 emit mineCount( mineguess ); 739 emit mineCount( mineguess );
738} 740}
739 741
740QSize MineField::sizeHint() const 742QSize MineField::sizeHint() const
741{ 743{
742 if ( qApp->desktop()->width() >= 240 ) 744 if ( qApp->desktop()->width() >= 240 )
743 return QSize(200,200); 745 return QSize(200,200);
744 else 746 else
745 return QSize(160, 160); 747 return QSize(160, 160);
746} 748}
747 749
diff --git a/noncore/net/opieirc/ircsession.cpp b/noncore/net/opieirc/ircsession.cpp
index c8d7869..d87ff80 100644
--- a/noncore/net/opieirc/ircsession.cpp
+++ b/noncore/net/opieirc/ircsession.cpp
@@ -1,216 +1,218 @@
1 1
2#include "ircsession.h" 2#include "ircsession.h"
3#include "ircmessageparser.h" 3#include "ircmessageparser.h"
4#include "ircchannelperson.h" 4#include "ircchannelperson.h"
5#include "ircversion.h" 5#include "ircversion.h"
6 6
7IRCSession::IRCSession(QObject *parent, IRCServer *server) 7IRCSession::IRCSession(QObject *parent, IRCServer *server)
8 : QObject(parent) 8 : QObject(parent)
9{ 9{
10 m_server = server; 10 m_server = server;
11 m_connection = new IRCConnection(m_server); 11 m_connection = new IRCConnection(m_server);
12 m_parser = new IRCMessageParser(this); 12 m_parser = new IRCMessageParser(this);
13 connect(m_connection, SIGNAL(messageArrived(IRCMessage*)), this, SLOT(handleMessage(IRCMessage*))); 13 connect(m_connection, SIGNAL(messageArrived(IRCMessage*)), this, SLOT(handleMessage(IRCMessage*)));
14 connect(m_parser, SIGNAL(outputReady(IRCOutput)), this, SIGNAL(outputReady(IRCOutput))); 14 connect(m_parser, SIGNAL(outputReady(IRCOutput)), this, SIGNAL(outputReady(IRCOutput)));
15 connect(m_connection, SIGNAL(outputReady(IRCOutput)), this, SIGNAL(outputReady(IRCOutput))); 15 connect(m_connection, SIGNAL(outputReady(IRCOutput)), this, SIGNAL(outputReady(IRCOutput)));
16} 16}
17 17
18IRCSession::~IRCSession() { 18IRCSession::~IRCSession() {
19 /* We want this to get deleted automatically */ 19 /* We want this to get deleted automatically */
20 m_channels.setAutoDelete(TRUE); 20 m_channels.setAutoDelete(TRUE);
21 m_people.setAutoDelete(TRUE); 21 m_people.setAutoDelete(TRUE);
22 22
23 delete m_parser; 23 delete m_parser;
24 delete m_connection; 24 delete m_connection;
25} 25}
26 26
27void IRCSession::beginSession() { 27void IRCSession::beginSession() {
28 m_connection->doConnect(); 28 m_connection->doConnect();
29} 29}
30 30
31void IRCSession::join(QString channelname) { 31void IRCSession::join(QString channelname) {
32 m_connection->sendLine("JOIN " + channelname); 32 m_connection->sendLine("JOIN " + channelname);
33} 33}
34 34
35void IRCSession::quit(){ 35void IRCSession::quit(){
36 m_connection->sendLine("QUIT :[OI] I'm too good to need a reason"); 36 m_connection->sendLine("QUIT :[OI] I'm too good to need a reason");
37} 37}
38 38
39void IRCSession::quit(QString message){ 39void IRCSession::quit(QString message){
40 m_connection->sendLine("QUIT :" + message); 40 m_connection->sendLine("QUIT :" + message);
41} 41}
42 42
43void IRCSession::topic(IRCChannel *channel, QString message){ 43void IRCSession::topic(IRCChannel *channel, QString message){
44 m_connection->sendLine("TOPIC :" + channel->channelname() + " " + message); 44 m_connection->sendLine("TOPIC :" + channel->channelname() + " " + message);
45} 45}
46 46
47void IRCSession::mode(IRCChannel *channel, QString message){ 47void IRCSession::mode(IRCChannel *channel, QString message){
48 m_connection->sendLine("MODE " + channel->channelname() + " " + message); 48 m_connection->sendLine("MODE " + channel->channelname() + " " + message);
49} 49}
50 50
51void IRCSession::mode(IRCPerson *person, QString message){ 51void IRCSession::mode(IRCPerson *person, QString message){
52 m_connection->sendLine("MODE " + person->nick() + " " + message); 52 m_connection->sendLine("MODE " + person->nick() + " " + message);
53} 53}
54 54
55void IRCSession::mode(QString message){ 55void IRCSession::mode(QString message){
56 m_connection->sendLine("MODE " + message); 56 m_connection->sendLine("MODE " + message);
57} 57}
58 58
59void IRCSession::raw(QString message){ 59void IRCSession::raw(QString message){
60 m_connection->sendLine(message); 60 m_connection->sendLine(message);
61} 61}
62 62
63void IRCSession::kick(IRCChannel *channel, IRCPerson *person) { 63void IRCSession::kick(IRCChannel *channel, IRCPerson *person) {
64 m_connection->sendLine("KICK " + channel->channelname() + " " + person->nick() +" :0wn3d - no reason"); 64 m_connection->sendLine("KICK " + channel->channelname() + " " + person->nick() +" :0wn3d - no reason");
65} 65}
66 66
67void IRCSession::op(IRCChannel *channel, IRCPerson *person) { 67void IRCSession::op(IRCChannel *channel, IRCPerson *person) {
68 m_connection->sendLine("MODE " + channel->channelname() + " +ooo " + person->nick()); 68 m_connection->sendLine("MODE " + channel->channelname() + " +ooo " + person->nick());
69} 69}
70 70
71void IRCSession::kick(IRCChannel *channel, IRCPerson *person, QString message) { 71void IRCSession::kick(IRCChannel *channel, IRCPerson *person, QString message) {
72 m_connection->sendLine("KICK " + channel->channelname() + " " + person->nick() +" :" + message); 72 m_connection->sendLine("KICK " + channel->channelname() + " " + person->nick() +" :" + message);
73} 73}
74 74
75void IRCSession::sendMessage(IRCPerson *person, QString message) { 75void IRCSession::sendMessage(IRCPerson *person, QString message) {
76 m_connection->sendLine("PRIVMSG " + person->nick() + " :" + message); 76 m_connection->sendLine("PRIVMSG " + person->nick() + " :" + message);
77} 77}
78 78
79void IRCSession::sendMessage(IRCChannel *channel, QString message) { 79void IRCSession::sendMessage(IRCChannel *channel, QString message) {
80 m_connection->sendLine("PRIVMSG " + channel->channelname() + " :" + message); 80 m_connection->sendLine("PRIVMSG " + channel->channelname() + " :" + message);
81} 81}
82 82
83void IRCSession::sendAction(IRCChannel *channel, QString message) { 83void IRCSession::sendAction(IRCChannel *channel, QString message) {
84 m_connection->sendLine("PRIVMSG " + channel->channelname() + " :\001ACTION " + message + "\001"); 84 m_connection->sendLine("PRIVMSG " + channel->channelname() + " :\001ACTION " + message + "\001");
85} 85}
86 86
87void IRCSession::sendAction(IRCPerson *person, QString message) { 87void IRCSession::sendAction(IRCPerson *person, QString message) {
88 m_connection->sendLine("PRIVMSG " + person->nick() + " :\001ACTION " + message + "\001"); 88 m_connection->sendLine("PRIVMSG " + person->nick() + " :\001ACTION " + message + "\001");
89} 89}
90 90
91bool IRCSession::isSessionActive() { 91bool IRCSession::isSessionActive() {
92 return m_connection->isConnected(); 92 return m_connection->isConnected();
93} 93}
94 94
95bool IRCSession::isLoggedIn() { 95bool IRCSession::isLoggedIn() {
96 return m_connection->isLoggedIn(); 96 return m_connection->isLoggedIn();
97} 97}
98 98
99void IRCSession::endSession() { 99void IRCSession::endSession() {
100 if (m_connection->isLoggedIn()) 100 if (m_connection->isLoggedIn())
101 quit(APP_VERSION); 101 quit(APP_VERSION);
102 else 102 else
103 m_connection->close(); 103 m_connection->close();
104} 104}
105 105
106void IRCSession::part(IRCChannel *channel) { 106void IRCSession::part(IRCChannel *channel) {
107 m_connection->sendLine("PART " + channel->channelname() + " :" + APP_VERSION); 107 m_connection->sendLine("PART " + channel->channelname() + " :" + APP_VERSION);
108} 108}
109 109
110void IRCSession::setValidUsermodes(const QString &modes) { 110void IRCSession::setValidUsermodes(const QString &modes) {
111 m_validUsermodes = modes; 111 m_validUsermodes = modes;
112} 112}
113 113
114void IRCSession::setValidChannelmodes(const QString &modes) { 114void IRCSession::setValidChannelmodes(const QString &modes) {
115 m_validChannelmodes = modes; 115 m_validChannelmodes = modes;
116} 116}
117 117
118void IRCSession::updateNickname(const QString &oldNickname, const QString &newNickname) { 118void IRCSession::updateNickname(const QString &oldNickname, const QString &newNickname) {
119 QList<IRCChannel> channels; 119 QList<IRCChannel> channels;
120 IRCOutput output; 120 IRCOutput output;
121 121
122 if (oldNickname == m_server->nick()) { 122 if (oldNickname == m_server->nick()) {
123 m_server->setNick(newNickname); 123 m_server->setNick(newNickname);
124 output = IRCOutput(OUTPUT_NICKCHANGE, tr("You are now known as %1").arg(newNickname)); 124 output = IRCOutput(OUTPUT_NICKCHANGE, tr("You are now known as %1").arg(newNickname));
125 channels = m_channels; 125 channels = m_channels;
126 } 126 }
127 127
128 else { 128 else {
129 IRCPerson *person = getPerson(oldNickname); 129 IRCPerson *person = getPerson(oldNickname);
130 130
131 if(!person) { 131 if(!person) {
132 emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Nickname change of an unknown person"))); 132 emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Nickname change of an unknown person")));
133 return; 133 return;
134 } 134 }
135 135
136 getChannelsByPerson(person, channels); 136 getChannelsByPerson(person, channels);
137 output = IRCOutput(OUTPUT_NICKCHANGE, tr("%1 is now known as %2").arg(oldNickname).arg(newNickname)); 137 output = IRCOutput(OUTPUT_NICKCHANGE, tr("%1 is now known as %2").arg(oldNickname).arg(newNickname));
138 } 138 }
139 139
140 QListIterator<IRCChannel> it(channels); 140 QListIterator<IRCChannel> it(channels);
141 for (;it.current(); ++it) { 141 for (;it.current(); ++it) {
142 IRCChannelPerson *chanperson = it.current()->getPerson(oldNickname); 142 IRCChannelPerson *chanperson = it.current()->getPerson(oldNickname);
143 it.current()->removePerson(chanperson); 143 if (chanperson) {
144 chanperson->setNick(newNickname); 144 it.current()->removePerson(chanperson);
145 it.current()->addPerson(chanperson); 145 chanperson->setNick(newNickname);
146 it.current()->addPerson(chanperson);
147 }
146 } 148 }
147 149
148 emit updateChannels(); 150 emit updateChannels();
149 output.addParam(new QString(newNickname)); 151 output.addParam(new QString(newNickname));
150 emit outputReady(output); 152 emit outputReady(output);
151} 153}
152 154
153IRCChannel *IRCSession::getChannel(QString channelname) { 155IRCChannel *IRCSession::getChannel(QString channelname) {
154 QListIterator<IRCChannel> it(m_channels); 156 QListIterator<IRCChannel> it(m_channels);
155 for (; it.current(); ++it) { 157 for (; it.current(); ++it) {
156 if (it.current()->channelname() == channelname) { 158 if (it.current()->channelname() == channelname) {
157 return it.current(); 159 return it.current();
158 } 160 }
159 } 161 }
160 return 0; 162 return 0;
161} 163}
162 164
163IRCPerson *IRCSession::getPerson(QString nickname) { 165IRCPerson *IRCSession::getPerson(QString nickname) {
164 QListIterator<IRCPerson> it(m_people); 166 QListIterator<IRCPerson> it(m_people);
165 for (; it.current(); ++it) { 167 for (; it.current(); ++it) {
166 if (it.current()->nick() == nickname) { 168 if (it.current()->nick() == nickname) {
167 return it.current(); 169 return it.current();
168 } 170 }
169 } 171 }
170 return 0; 172 return 0;
171} 173}
172 174
173void IRCSession::getChannelsByPerson(IRCPerson *person, QList<IRCChannel> &channels) { 175void IRCSession::getChannelsByPerson(IRCPerson *person, QList<IRCChannel> &channels) {
174 QListIterator<IRCChannel> it(m_channels); 176 QListIterator<IRCChannel> it(m_channels);
175 for (; it.current(); ++it) { 177 for (; it.current(); ++it) {
176 if (it.current()->getPerson(person->nick()) != 0) { 178 if (it.current()->getPerson(person->nick()) != 0) {
177 channels.append(it.current()); 179 channels.append(it.current());
178 } 180 }
179 } 181 }
180} 182}
181 183
182void IRCSession::addPerson(IRCPerson *person) { 184void IRCSession::addPerson(IRCPerson *person) {
183 m_people.append(person); 185 m_people.append(person);
184} 186}
185 187
186void IRCSession::addChannel(IRCChannel *channel) { 188void IRCSession::addChannel(IRCChannel *channel) {
187 m_channels.append(channel); 189 m_channels.append(channel);
188} 190}
189 191
190void IRCSession::removeChannel(IRCChannel *channel) { 192void IRCSession::removeChannel(IRCChannel *channel) {
191 m_channels.remove(channel); 193 m_channels.remove(channel);
192} 194}
193 195
194void IRCSession::removePerson(IRCPerson *person) { 196void IRCSession::removePerson(IRCPerson *person) {
195 m_people.remove(person); 197 m_people.remove(person);
196} 198}
197 199
198void IRCSession::handleMessage(IRCMessage *message) { 200void IRCSession::handleMessage(IRCMessage *message) {
199 m_parser->parse(message); 201 m_parser->parse(message);
200} 202}
201 203
202void IRCSession::whois(const QString &nickname) { 204void IRCSession::whois(const QString &nickname) {
203 m_connection->whois(nickname); 205 m_connection->whois(nickname);
204} 206}
205 207
206void IRCSession::sendCTCPPing(const QString &nickname) { 208void IRCSession::sendCTCPPing(const QString &nickname) {
207 m_connection->sendCTCPPing(nickname); 209 m_connection->sendCTCPPing(nickname);
208} 210}
209 211
210void IRCSession::sendCTCPRequest(const QString &nickname, const QString &type, const QString &args) { 212void IRCSession::sendCTCPRequest(const QString &nickname, const QString &type, const QString &args) {
211 m_connection->sendCTCPRequest(nickname, type, args); 213 m_connection->sendCTCPRequest(nickname, type, args);
212} 214}
213 215
214void IRCSession::sendCTCPReply(const QString &nickname, const QString &type, const QString &args) { 216void IRCSession::sendCTCPReply(const QString &nickname, const QString &type, const QString &args) {
215 m_connection->sendCTCPReply(nickname, type, args); 217 m_connection->sendCTCPReply(nickname, type, args);
216} 218}
diff --git a/noncore/todayplugins/stockticker/libstocks/csv.c b/noncore/todayplugins/stockticker/libstocks/csv.c
index 6170bed..86d8607 100644
--- a/noncore/todayplugins/stockticker/libstocks/csv.c
+++ b/noncore/todayplugins/stockticker/libstocks/csv.c
@@ -125,281 +125,282 @@ stock *parse_csv_file(char *csv)
125 /* if 4 "N/A" then ok because Mutual funds have */ 125 /* if 4 "N/A" then ok because Mutual funds have */
126 /* if 5 "N/A" then ok because currencies have */ 126 /* if 5 "N/A" then ok because currencies have */
127 /* So if >5 then stock not valid */ 127 /* So if >5 then stock not valid */
128 128
129 test = line; 129 test = line;
130 valid = 0; 130 valid = 0;
131 while ( (test = strstr(test, "N/A")) ) 131 while ( (test = strstr(test, "N/A")) )
132 { 132 {
133 valid ++; 133 valid ++;
134 test = test +3; 134 test = test +3;
135 } 135 }
136 136
137 if (valid < 6) 137 if (valid < 6)
138 { 138 {
139 /* This Symbol is valid */ 139 /* This Symbol is valid */
140 140
141 StockPtr = malloc_stock(); 141 StockPtr = malloc_stock();
142 142
143 ptr = csv_strtok(line, ","); 143 ptr = csv_strtok(line, ",");
144 if (!ptr) return 0; 144 if (!ptr) return 0;
145 145
146 symbol = (char *)malloc(strlen(ptr)+1); 146 symbol = (char *)malloc(strlen(ptr)+1);
147 if (symbol==NULL) 147 if (symbol==NULL)
148 { 148 {
149 fprintf(stderr,"Memory allocating error (%s line %d)\n" 149 fprintf(stderr,"Memory allocating error (%s line %d)\n"
150 ,__FILE__, __LINE__); 150 ,__FILE__, __LINE__);
151 exit(1); 151 exit(1);
152 } 152 }
153 strcpy((char *)(symbol), ptr); 153 strcpy((char *)(symbol), ptr);
154 StockPtr->Symbol = symbol; 154 StockPtr->Symbol = symbol;
155 155
156 ptr = csv_strtok(NULL, ","); 156 ptr = csv_strtok(NULL, ",");
157 if (!ptr) return 0; 157 if (!ptr) return 0;
158 158
159 name = (char *)malloc(strlen(ptr)+1); 159 name = (char *)malloc(strlen(ptr)+1);
160 if (name==NULL) 160 if (name==NULL)
161 { 161 {
162 fprintf(stderr,"Memory allocating error (%s line %d)\n" 162 fprintf(stderr,"Memory allocating error (%s line %d)\n"
163 ,__FILE__, __LINE__); 163 ,__FILE__, __LINE__);
164 exit(1); 164 exit(1);
165 } 165 }
166 strcpy((char *)(name), ptr); 166 strcpy((char *)(name), ptr);
167 StockPtr->Name = name; 167 StockPtr->Name = name;
168 168
169 ptr = csv_strtok(NULL, ","); 169 ptr = csv_strtok(NULL, ",");
170 if (!ptr) return 0; 170 if (!ptr) return 0;
171 sscanf(ptr,"%f",&(StockPtr->CurrentPrice)); 171 sscanf(ptr,"%f",&(StockPtr->CurrentPrice));
172 172
173 ptr = csv_strtok(NULL, ","); 173 ptr = csv_strtok(NULL, ",");
174 if (!ptr) return 0; 174 if (!ptr) return 0;
175 175
176 date = (char *)malloc(strlen(ptr)+1); 176 date = (char *)malloc(strlen(ptr)+1);
177 if (date==NULL) 177 if (date==NULL)
178 { 178 {
179 fprintf(stderr,"Memory allocating error (%s line %d)\n" 179 fprintf(stderr,"Memory allocating error (%s line %d)\n"
180 ,__FILE__, __LINE__); 180 ,__FILE__, __LINE__);
181 exit(1); 181 exit(1);
182 } 182 }
183 strcpy((char *)(date), ptr); 183 strcpy((char *)(date), ptr);
184 StockPtr->Date = date; 184 StockPtr->Date = date;
185 185
186 ptr = csv_strtok(NULL, ","); 186 ptr = csv_strtok(NULL, ",");
187 if (!ptr) return 0; 187 if (!ptr) return 0;
188 188
189 time = (char *)malloc(strlen(ptr)+1); 189 time = (char *)malloc(strlen(ptr)+1);
190 if (time==NULL) 190 if (time==NULL)
191 { 191 {
192 fprintf(stderr,"Memory allocating error (%s line %d)\n" 192 fprintf(stderr,"Memory allocating error (%s line %d)\n"
193 ,__FILE__, __LINE__); 193 ,__FILE__, __LINE__);
194 exit(1); 194 exit(1);
195 } 195 }
196 strcpy((char *)(time), ptr); 196 strcpy((char *)(time), ptr);
197 StockPtr->Time = time; 197 StockPtr->Time = time;
198 198
199 ptr = csv_strtok(NULL, ","); 199 ptr = csv_strtok(NULL, ",");
200 if (!ptr) return 0; 200 if (!ptr) return 0;
201 sscanf(ptr,"%f",&(StockPtr->Variation)); 201 sscanf(ptr,"%f",&(StockPtr->Variation));
202 202
203 StockPtr->Pourcentage = 100 * StockPtr->Variation / 203 StockPtr->Pourcentage = 100 * StockPtr->Variation /
204 (StockPtr->CurrentPrice - StockPtr->Variation); 204 (StockPtr->CurrentPrice - StockPtr->Variation);
205 205
206 StockPtr->LastPrice = StockPtr->CurrentPrice - StockPtr->Variation; 206 StockPtr->LastPrice = StockPtr->CurrentPrice - StockPtr->Variation;
207 207
208 ptr = csv_strtok(NULL, ","); 208 ptr = csv_strtok(NULL, ",");
209 if (!ptr) return 0; 209 if (!ptr) return 0;
210 sscanf(ptr,"%f",&(StockPtr->OpenPrice)); 210 sscanf(ptr,"%f",&(StockPtr->OpenPrice));
211 211
212 ptr = csv_strtok(NULL, ","); 212 ptr = csv_strtok(NULL, ",");
213 if (!ptr) return 0; 213 if (!ptr) return 0;
214 sscanf(ptr,"%f",&(StockPtr->MaxPrice)); 214 sscanf(ptr,"%f",&(StockPtr->MaxPrice));
215 215
216 ptr = csv_strtok(NULL, ","); 216 ptr = csv_strtok(NULL, ",");
217 if (!ptr) return 0; 217 if (!ptr) return 0;
218 sscanf(ptr,"%f",&(StockPtr->MinPrice)); 218 sscanf(ptr,"%f",&(StockPtr->MinPrice));
219 219
220 ptr = csv_strtok(NULL, ","); 220 ptr = csv_strtok(NULL, ",");
221 if (!ptr) return 0; 221 if (!ptr) return 0;
222 StockPtr->Volume = atoi(ptr); 222 StockPtr->Volume = atoi(ptr);
223 223
224 if( !FirstStockPtr ) 224 if( !FirstStockPtr )
225 { 225 {
226 FirstStockPtr = StockPtr; 226 FirstStockPtr = StockPtr;
227 StockPtr->PreviousStock = 0; 227 StockPtr->PreviousStock = 0;
228 } 228 }
229 229
230 StockPtr->NextStock = 0; 230 StockPtr->NextStock = 0;
231 231
232 if (LastStockPtr) 232 if (LastStockPtr)
233 { 233 {
234 LastStockPtr->NextStock = StockPtr; 234 LastStockPtr->NextStock = StockPtr;
235 StockPtr->PreviousStock = LastStockPtr; 235 StockPtr->PreviousStock = LastStockPtr;
236 } 236 }
237 237
238 LastStockPtr = StockPtr; 238 LastStockPtr = StockPtr;
239 239
240 } 240 }
241 else 241 else
242 { 242 {
243 /* this symbol is not valid */ 243 /* this symbol is not valid */
244 /* Set the stock struct just with Symbol, all other are NULL */ 244 /* Set the stock struct just with Symbol, all other are NULL */
245 /* This can be used to see if the symbol has been reached are not */ 245 /* This can be used to see if the symbol has been reached are not */
246 246
247 StockPtr = malloc_stock(); 247 StockPtr = malloc_stock();
248 248
249 ptr = csv_strtok(line, ","); 249 ptr = csv_strtok(line, ",");
250 if (!ptr) return 0; 250 if (!ptr) return 0;
251 251
252 symbol = (char *)malloc(strlen(ptr)+1); 252 symbol = (char *)malloc(strlen(ptr)+1);
253 if (symbol==NULL) 253 if (symbol==NULL)
254 { 254 {
255 fprintf(stderr,"Memory allocating error (%s line %d)\n" 255 fprintf(stderr,"Memory allocating error (%s line %d)\n"
256 ,__FILE__, __LINE__); 256 ,__FILE__, __LINE__);
257 exit(1); 257 exit(1);
258 } 258 }
259 strcpy((char *)(symbol), ptr); 259 strcpy((char *)(symbol), ptr);
260 StockPtr->Symbol = symbol; 260 StockPtr->Symbol = symbol;
261 261
262 if( !FirstStockPtr ) 262 if( !FirstStockPtr )
263 { 263 {
264 FirstStockPtr = StockPtr; 264 FirstStockPtr = StockPtr;
265 StockPtr->PreviousStock = 0; 265 StockPtr->PreviousStock = 0;
266 } 266 }
267 267
268 StockPtr->NextStock = 0; 268 StockPtr->NextStock = 0;
269 269
270 if (LastStockPtr) 270 if (LastStockPtr)
271 { 271 {
272 LastStockPtr->NextStock = StockPtr; 272 LastStockPtr->NextStock = StockPtr;
273 StockPtr->PreviousStock = LastStockPtr; 273 StockPtr->PreviousStock = LastStockPtr;
274 } 274 }
275 275
276 LastStockPtr = StockPtr; 276 LastStockPtr = StockPtr;
277 } 277 }
278 278
279 end_line++; 279 end_line++;
280 line = end_line; 280 line = end_line;
281 281
282 } 282 }
283 283
284 return (FirstStockPtr); 284 return (FirstStockPtr);
285} 285}
286 286
287/*****************************************************************************/ 287/*****************************************************************************/
288/* Parses the history quotes file and return a stock structure list. */ 288/* Parses the history quotes file and return a stock structure list. */
289/*****************************************************************************/ 289/*****************************************************************************/
290stock *parse_csv_history_file(char *csv_file) 290stock *parse_csv_history_file(char *csv_file)
291{ 291{
292 292
293 char *line; 293 char *line;
294 char *end_line; 294 char *end_line;
295 char *ptr; 295 char *ptr;
296 296
297 int day; 297 int day;
298 char smonth[10]; 298 char smonth[10];
299 int month; 299 int month;
300 int year; 300 int year;
301 301
302 char *date; 302 char *date;
303 303
304 int i; 304 int i;
305 int test; 305 int test;
306 306
307 stock *StockPtr=NULL; 307 stock *StockPtr=NULL;
308 stock *LastStockPtr=NULL; 308 stock *LastStockPtr=NULL;
309 309
310 /* Used to return the pointer to the list */ 310 /* Used to return the pointer to the list */
311 stock *FirstStockPtr=NULL; 311 stock *FirstStockPtr=NULL;
312 312
313 line = csv_file; 313 line = csv_file;
314 end_line = csv_file; 314 end_line = csv_file;
315 315
316 /* do not use the first line */ 316 /* do not use the first line */
317 end_line = strstr(line, "\n"); 317 if (!(end_line = strstr(line, "\n")))
318 return 0;
318 *end_line = 0; 319 *end_line = 0;
319 end_line++; 320 end_line++;
320 line = end_line; 321 line = end_line;
321 322
322 while ((end_line = strstr(line, "\n"))) 323 while ((end_line = strstr(line, "\n")))
323 { 324 {
324 *end_line = 0; 325 *end_line = 0;
325 326
326 StockPtr = malloc_stock(); 327 StockPtr = malloc_stock();
327 328
328 /* Date */ 329 /* Date */
329 ptr = strtok(line, ","); 330 ptr = strtok(line, ",");
330 if (!ptr) return 0; 331 if (!ptr) return 0;
331 332
332 sscanf(ptr,"%d-%3s-%d",&day,smonth,&year); 333 sscanf(ptr,"%d-%3s-%d",&day,smonth,&year);
333 334
334 i=0; 335 i=0;
335 336
336#ifdef __UNIX__ 337#ifdef __UNIX__
337 while((test=strcasecmp(months[i], smonth))) i++; 338 while((test=strcasecmp(months[i], smonth))) i++;
338#elif __WINDOWS__ 339#elif __WINDOWS__
339 while(test=_mbsnbicmp(months[i], smonth, strlen(months[i]))) i++; 340 while(test=_mbsnbicmp(months[i], smonth, strlen(months[i]))) i++;
340#endif 341#endif
341 342
342 month = i+1; 343 month = i+1;
343 344
344 date = (char *)malloc(DATE_LENGTH); 345 date = (char *)malloc(DATE_LENGTH);
345 if (date==NULL) 346 if (date==NULL)
346 { 347 {
347 fprintf(stderr,"Memory allocating error (%s line %d)\n" 348 fprintf(stderr,"Memory allocating error (%s line %d)\n"
348 ,__FILE__, __LINE__); 349 ,__FILE__, __LINE__);
349 exit(1); 350 exit(1);
350 } 351 }
351 sprintf(date,"%.2d%.2d%.2d", year, month, day); 352 sprintf(date,"%.2d%.2d%.2d", year, month, day);
352 StockPtr->Date = date; 353 StockPtr->Date = date;
353 354
354 /* Open */ 355 /* Open */
355 ptr = strtok(NULL, ","); 356 ptr = strtok(NULL, ",");
356 if (!ptr) return 0; 357 if (!ptr) return 0;
357 sscanf(ptr,"%f",&(StockPtr->OpenPrice)); 358 sscanf(ptr,"%f",&(StockPtr->OpenPrice));
358 359
359 /* High */ 360 /* High */
360 ptr = strtok(NULL, ","); 361 ptr = strtok(NULL, ",");
361 if (!ptr) return 0; 362 if (!ptr) return 0;
362 sscanf(ptr,"%f",&(StockPtr->MaxPrice)); 363 sscanf(ptr,"%f",&(StockPtr->MaxPrice));
363 364
364 /* Low */ 365 /* Low */
365 ptr = strtok(NULL, ","); 366 ptr = strtok(NULL, ",");
366 if (!ptr) return 0; 367 if (!ptr) return 0;
367 sscanf(ptr,"%f",&(StockPtr->MinPrice)); 368 sscanf(ptr,"%f",&(StockPtr->MinPrice));
368 369
369 /* Close */ 370 /* Close */
370 ptr = strtok(NULL, ","); 371 ptr = strtok(NULL, ",");
371 if (!ptr) return 0; 372 if (!ptr) return 0;
372 sscanf(ptr,"%f",&(StockPtr->LastPrice)); 373 sscanf(ptr,"%f",&(StockPtr->LastPrice));
373 374
374 /* Volume */ 375 /* Volume */
375 376
376 ptr = strtok(NULL, ","); 377 ptr = strtok(NULL, ",");
377 if (!ptr) 378 if (!ptr)
378 /* It seems to be an indice */ 379 /* It seems to be an indice */
379 /* No volume for indices */ 380 /* No volume for indices */
380 StockPtr->Volume = 0; 381 StockPtr->Volume = 0;
381 else 382 else
382 StockPtr->Volume = atoi(ptr); 383 StockPtr->Volume = atoi(ptr);
383 384
384 if( !FirstStockPtr ) 385 if( !FirstStockPtr )
385 { 386 {
386 FirstStockPtr = StockPtr; 387 FirstStockPtr = StockPtr;
387 StockPtr->PreviousStock = 0; 388 StockPtr->PreviousStock = 0;
388 } 389 }
389 390
390 StockPtr->NextStock = 0; 391 StockPtr->NextStock = 0;
391 392
392 if (LastStockPtr) 393 if (LastStockPtr)
393 { 394 {
394 LastStockPtr->NextStock = StockPtr; 395 LastStockPtr->NextStock = StockPtr;
395 StockPtr->PreviousStock = LastStockPtr; 396 StockPtr->PreviousStock = LastStockPtr;
396 } 397 }
397 398
398 LastStockPtr = StockPtr; 399 LastStockPtr = StockPtr;
399 400
400 end_line++; 401 end_line++;
401 line = end_line; 402 line = end_line;
402 } 403 }
403 404
404 return (FirstStockPtr); 405 return (FirstStockPtr);
405} 406}