summaryrefslogtreecommitdiff
path: root/noncore/net/opieirc
authorskyhusker <skyhusker>2005-02-03 21:47:50 (UTC)
committer skyhusker <skyhusker>2005-02-03 21:47:50 (UTC)
commit8aaae9e3eca7853e9c693d2401f721d75209acf7 (patch) (unidiff)
tree6f700d154fac8510b322242496604d0ad7589377 /noncore/net/opieirc
parent875b3b63624308f4e50f82e17db27edeb9609d6c (diff)
downloadopie-8aaae9e3eca7853e9c693d2401f721d75209acf7.zip
opie-8aaae9e3eca7853e9c693d2401f721d75209acf7.tar.gz
opie-8aaae9e3eca7853e9c693d2401f721d75209acf7.tar.bz2
Added DCC receive support
Diffstat (limited to 'noncore/net/opieirc') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opieirc/dccprogress.cpp75
-rw-r--r--noncore/net/opieirc/dccprogress.h35
-rw-r--r--noncore/net/opieirc/dcctransfer.cpp41
-rw-r--r--noncore/net/opieirc/dcctransfer.h44
-rw-r--r--noncore/net/opieirc/dcctransferrecv.cpp53
-rw-r--r--noncore/net/opieirc/dcctransferrecv.h21
-rw-r--r--noncore/net/opieirc/dcctransfertab.cpp81
-rw-r--r--noncore/net/opieirc/dcctransfertab.h41
-rw-r--r--noncore/net/opieirc/ircmessageparser.cpp30
-rw-r--r--noncore/net/opieirc/ircservertab.cpp4
-rw-r--r--noncore/net/opieirc/ircservertab.h1
-rw-r--r--noncore/net/opieirc/ircsession.cpp5
-rw-r--r--noncore/net/opieirc/ircsession.h4
-rw-r--r--noncore/net/opieirc/mainwindow.cpp20
-rw-r--r--noncore/net/opieirc/mainwindow.h8
-rw-r--r--noncore/net/opieirc/opieirc.pro9
16 files changed, 459 insertions, 13 deletions
diff --git a/noncore/net/opieirc/dccprogress.cpp b/noncore/net/opieirc/dccprogress.cpp
new file mode 100644
index 0000000..28277f7
--- a/dev/null
+++ b/noncore/net/opieirc/dccprogress.cpp
@@ -0,0 +1,75 @@
1#include <qprogressbar.h>
2#include <qlabel.h>
3#include <qvbox.h>
4
5#include "dcctransfer.h"
6#include "dcctransferrecv.h"
7#include "dccprogress.h"
8
9DCCProgress::DCCProgress(DCCTransfer::Type type, Q_UINT32 ip4Addr, Q_UINT16 port,
10 const QString &filename, const QString &nickname, unsigned int size, QWidget *parent, char *name, WFlags f)
11 : QWidget(parent, name, f), m_vbox(new QVBox(this)),
12 m_label(new QLabel(m_vbox)),
13 m_bar(new QProgressBar(m_vbox))
14{
15
16 if (DCCTransfer::Recv == type)
17 m_transfer = new DCCTransferRecv(ip4Addr, port, filename, size);
18
19
20 connect(m_transfer, SIGNAL(progress(int)), this, SLOT(slotSetProgress(int)));
21 connect(m_transfer, SIGNAL(finished(DCCTransfer *, DCCTransfer::EndCode)),
22 this, SLOT(slotFinished(DCCTransfer *, DCCTransfer::EndCode)));
23
24 m_label->setText(tr("Receiving file %1 from %2...").arg(m_transfer->filename()).arg(nickname));
25
26 m_label->show();
27 m_bar->show();
28 show();
29
30}
31
32bool DCCProgress::finished()
33{
34 return ( m_transfer == 0);
35}
36
37void DCCProgress::cancel()
38{
39 if (m_transfer)
40 m_transfer->cancel();
41}
42
43void DCCProgress::slotSetProgress(int progress)
44{
45 m_bar->setProgress(progress);
46}
47
48void DCCProgress::slotFinished(DCCTransfer *transfer, DCCTransfer::EndCode code)
49{
50 if(transfer != m_transfer)
51 // WTF!!
52 return;
53
54 QString msg;
55
56 switch(code) {
57 case DCCTransfer::Successfull:
58 msg = tr("Successfully received %1").arg(m_transfer->filename());
59 break;
60 case DCCTransfer::SelfAborted:
61 msg = tr("Aborted");
62 break;
63 case DCCTransfer::PeerAborted:
64 msg = tr("Peer Aborted");
65 break;
66 case DCCTransfer::Timeout:
67 msg = tr("Timeout");
68 break;
69 }
70
71 m_label->setText(msg);
72 delete m_transfer;
73 m_transfer = 0;
74}
75
diff --git a/noncore/net/opieirc/dccprogress.h b/noncore/net/opieirc/dccprogress.h
new file mode 100644
index 0000000..81b922e
--- a/dev/null
+++ b/noncore/net/opieirc/dccprogress.h
@@ -0,0 +1,35 @@
1#ifndef DCCPROGRESS_H
2#define DCCPROGRESS_H
3
4
5#include <qwidget.h>
6
7#include "dcctransfer.h"
8
9class QProgressBar;
10class QLabel;
11class QVBox;
12
13class DCCProgress: public QWidget {
14
15 Q_OBJECT
16public:
17 DCCProgress(DCCTransfer::Type type, Q_UINT32 ip4Addr, Q_UINT16 port,
18 const QString &filename, const QString &nickname, unsigned int size,
19 QWidget *parent = 0, char *name = 0, WFlags f = 0);
20
21 bool finished();
22 void cancel();
23
24public slots:
25 void slotSetProgress(int progress);
26 void slotFinished(DCCTransfer *transfer, DCCTransfer::EndCode code);
27
28private:
29 QVBox *m_vbox;
30 QLabel *m_label;
31 QProgressBar *m_bar;
32 DCCTransfer *m_transfer;
33};
34
35#endif
diff --git a/noncore/net/opieirc/dcctransfer.cpp b/noncore/net/opieirc/dcctransfer.cpp
new file mode 100644
index 0000000..cfa9f74
--- a/dev/null
+++ b/noncore/net/opieirc/dcctransfer.cpp
@@ -0,0 +1,41 @@
1#include <qsocket.h>
2#include <qfile.h>
3
4#include "dcctransfer.h"
5
6
7DCCTransfer::DCCTransfer(Q_UINT32 ip4Addr, Q_UINT16 port, const QString &filename, unsigned int size)
8 : m_socket(new QSocket), m_file(new QFile), m_bufSize(4096), m_buffer(new char[m_bufSize]),
9 m_ip4Addr(ip4Addr), m_port(port), m_totalSize(size), m_processedSize(0)
10{
11 m_file->setName(filename);
12}
13
14DCCTransfer::~DCCTransfer()
15{
16 if(m_socket)
17 delete m_socket;
18 if(m_file) {
19 m_file->close();
20 delete m_file;
21 }
22 if(m_buffer)
23 delete []m_buffer;
24}
25
26
27void DCCTransfer::cancel()
28{
29 if(m_socket)
30 m_socket->close();
31
32 emit(finished(DCCTransfer::SelfAborted));
33}
34
35QString DCCTransfer::filename()
36{
37 if(!m_file)
38 return QString::null;
39
40 return m_file->name().mid(m_file->name().findRev('/') + 1);
41}
diff --git a/noncore/net/opieirc/dcctransfer.h b/noncore/net/opieirc/dcctransfer.h
new file mode 100644
index 0000000..775ed24
--- a/dev/null
+++ b/noncore/net/opieirc/dcctransfer.h
@@ -0,0 +1,44 @@
1#ifndef DCCTRANSFER_H
2#define DCCTRANSFER_H
3
4#include <qobject.h>
5
6class QSocket;
7class QFile;
8class QString;
9
10class DCCTransfer: public QObject {
11 Q_OBJECT
12public:
13 enum Type { Send, Recv };
14 enum EndCode { Successfull, SelfAborted, PeerAborted, Timeout };
15
16 DCCTransfer(Q_UINT32 ip4Addr, Q_UINT16 port, const QString &filename, unsigned int size);
17 virtual ~DCCTransfer();
18
19 void cancel();
20
21 QString filename();
22
23signals:
24 virtual void finished(DCCTransfer *transfer, EndCode code);
25 virtual void progress(int progress);
26
27protected slots:
28 virtual void slotProcess() = 0;
29 virtual void slotFinished() = 0;
30
31protected:
32 QSocket *m_socket;
33 QFile *m_file;
34 unsigned int m_bufSize;
35 char *m_buffer;
36 Q_UINT32 m_ip4Addr;
37 Q_UINT16 m_port;
38 unsigned int m_totalSize;
39 unsigned int m_processedSize;
40 bool m_cancel;
41 bool m_timeout;
42};
43
44#endif
diff --git a/noncore/net/opieirc/dcctransferrecv.cpp b/noncore/net/opieirc/dcctransferrecv.cpp
new file mode 100644
index 0000000..58e8d09
--- a/dev/null
+++ b/noncore/net/opieirc/dcctransferrecv.cpp
@@ -0,0 +1,53 @@
1#include <netinet/in.h>
2
3#include <qfile.h>
4#include <qsocket.h>
5#include <qhostaddress.h>
6
7#include <opie2/odebug.h>
8
9
10#include "dcctransferrecv.h"
11
12
13DCCTransferRecv::DCCTransferRecv(Q_UINT32 ip4Addr, Q_UINT16 port, const QString &filename, unsigned int size)
14 : DCCTransfer(ip4Addr, port, filename, size)
15{
16 QHostAddress ip(ip4Addr);
17 m_socket->connectToHost(ip.toString(), m_port);
18 connect(m_socket, SIGNAL(readyRead()), this, SLOT(slotProcess()));
19 connect(m_socket, SIGNAL(connectionClosed()), this, SLOT(slotFinished()));
20
21 m_file->open(IO_WriteOnly);
22}
23
24
25void DCCTransferRecv::slotProcess()
26{
27 int availableBytes = m_socket->bytesAvailable();
28 int receivedBytes = 0;
29
30 while(receivedBytes < availableBytes) {
31 int bytes = m_socket->readBlock(m_buffer, m_bufSize);
32 receivedBytes += bytes;
33 m_file->writeBlock(m_buffer, bytes);
34 }
35
36 m_file->flush();
37 m_processedSize += availableBytes;
38 unsigned long value = htonl(m_processedSize);
39 m_socket->writeBlock((char*)&value, sizeof(unsigned long));
40
41 emit (progress((m_processedSize * 100) / m_totalSize));
42}
43
44void DCCTransferRecv::slotFinished()
45{
46 m_file->close();
47
48 if(m_processedSize == m_totalSize)
49 emit(finished(this, DCCTransfer::Successfull));
50 else
51 emit(finished(this, DCCTransfer::PeerAborted));
52}
53
diff --git a/noncore/net/opieirc/dcctransferrecv.h b/noncore/net/opieirc/dcctransferrecv.h
new file mode 100644
index 0000000..bfc55ef
--- a/dev/null
+++ b/noncore/net/opieirc/dcctransferrecv.h
@@ -0,0 +1,21 @@
1#ifndef DCCTRANSFERRECV_H
2#define DCCTRANSFERRECV_H
3
4#include "dcctransfer.h"
5
6
7class DCCTransferRecv: public DCCTransfer {
8 Q_OBJECT
9public:
10 DCCTransferRecv(Q_UINT32 ip4Addr, Q_UINT16 port, const QString &filename, unsigned int size);
11
12signals:
13 void finished(DCCTransfer *transfer, DCCTransfer::EndCode code);
14
15public slots:
16 void slotProcess();
17 void slotFinished();
18};
19
20#endif
21
diff --git a/noncore/net/opieirc/dcctransfertab.cpp b/noncore/net/opieirc/dcctransfertab.cpp
new file mode 100644
index 0000000..ea0ff1f
--- a/dev/null
+++ b/noncore/net/opieirc/dcctransfertab.cpp
@@ -0,0 +1,81 @@
1#include <qlist.h>
2#include <qlabel.h>
3#include <qstring.h>
4#include <qvbox.h>
5#include <qmessagebox.h>
6
7#include "dcctransfer.h"
8#include "dccprogress.h"
9#include "mainwindow.h"
10#include "dcctransfertab.h"
11
12#include <stdio.h>
13
14DCCTransferTab::DCCTransferTab(QWidget *parent, const char *name, WFlags f)
15 :IRCTab(parent, name, f), m_hbox(new QHBox(this)), m_parent(static_cast<MainWindow*>(parent))
16{
17 m_description->setText("");
18 m_layout->add(m_hbox);
19 m_hbox->show();
20}
21
22DCCTransferTab::~DCCTransferTab()
23{
24 if(m_hbox)
25 delete m_hbox;
26}
27
28QString DCCTransferTab::title()
29{
30 return "DCC";
31}
32
33void DCCTransferTab::remove()
34{
35 //Clean finished transfers
36 for(QListIterator <DCCProgress> it(m_progressList); it.current(); ++it) {
37 DCCProgress *current = it.current();
38 if (current->finished()) {
39 m_progressList.remove(current);
40 current->hide();
41 delete current;
42 }
43 }
44
45 if (m_progressList.count() > 0) {
46 int retval = QMessageBox::information( parentWidget() , tr("DCC Transfers in Progress"),
47 tr( "There are transfers in progress. <br>If you close this tab, they will be canceled."
48 "<br>Do you want to close it anyway?"),
49 tr("&Close"), tr("&Don't Close"));
50 if ( retval != 0 ) {
51 return;
52 }
53 //Cancel active transfers (user accepted)
54 for(QListIterator <DCCProgress> itr(m_progressList); itr.current(); ++itr) {
55 DCCProgress *current = itr.current();
56 m_progressList.remove(current);
57 current->hide();
58 current->cancel();
59 delete current;
60 }
61 }
62
63 //Remove
64 m_parent->killTab(this);
65}
66
67bool DCCTransferTab::confirm(QWidget *parent, const QString &nickname, const QString &filename, unsigned int size)
68{
69 int retval = QMessageBox::information(parent, tr("DCC Transfer from %1").arg(nickname),
70 tr( "%1 is trying to send you the file %2\n(%3 bytes)").arg(nickname).arg(filename).arg(size),
71 tr("&Accept"), tr("&Reject"));
72
73 return ( 0 == retval);
74
75}
76
77void DCCTransferTab::addTransfer(DCCTransfer::Type type, Q_UINT32 ip4Addr, Q_UINT16 port,
78 const QString &filename, const QString &nickname, unsigned int size)
79{
80 m_progressList.append(new DCCProgress(type, ip4Addr, port, filename, nickname, size, this));
81}
diff --git a/noncore/net/opieirc/dcctransfertab.h b/noncore/net/opieirc/dcctransfertab.h
new file mode 100644
index 0000000..a21323d
--- a/dev/null
+++ b/noncore/net/opieirc/dcctransfertab.h
@@ -0,0 +1,41 @@
1#ifndef DCCTRANSFERTAB_H
2#define DCCTRANSFERTAB_H
3
4#include "dcctransfer.h"
5#include "irctab.h"
6
7template <class T> class QList;
8
9class DCCProgress;
10class IRCSession;
11class QString;
12class QHBox;
13class MainWindow;
14
15class DCCTransferTab: public IRCTab {
16 Q_OBJECT
17public:
18
19 DCCTransferTab(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
20 ~DCCTransferTab();
21 virtual QString DCCTransferTab::title();
22 virtual IRCSession* DCCTransferTab::session(){return 0;};
23 virtual void DCCTransferTab::appendText(QString){};
24 virtual void DCCTransferTab::remove();
25 virtual void DCCTransferTab::settingsChanged() {};
26 void addTransfer(DCCTransfer::Type type, Q_UINT32 ip4Addr,
27 Q_UINT16 port, const QString &filename,
28 const QString &nickname, unsigned int size);
29 static bool confirm(QWidget *parent = 0,
30 const QString &nickname = QString::null,
31 const QString &filename = QString::null,
32 unsigned int size = 0);
33private:
34 QHBox *m_hbox;
35 QList <DCCProgress> m_progressList;
36 MainWindow *m_parent;
37
38};
39
40#endif
41
diff --git a/noncore/net/opieirc/ircmessageparser.cpp b/noncore/net/opieirc/ircmessageparser.cpp
index ad9de2b..939cdae 100644
--- a/noncore/net/opieirc/ircmessageparser.cpp
+++ b/noncore/net/opieirc/ircmessageparser.cpp
@@ -3,2 +3,6 @@
3 3
4#include <opie2/ofiledialog.h>
5#include <opie2/ofileselector.h>
6#include <opie2/odebug.h>
7
4#include "ircmessageparser.h" 8#include "ircmessageparser.h"
@@ -6,3 +10,4 @@
6#include "ircchannelperson.h" 10#include "ircchannelperson.h"
7//#include "transferreceiver.h" 11#include "dcctransfertab.h"
12#include "ircservertab.h"
8 13
@@ -463,8 +468,21 @@ void IRCMessageParser::parseCTCPDCC(IRCMessage *message) {
463 QStringList params = QStringList::split(' ', message->param(0).stripWhiteSpace()); 468 QStringList params = QStringList::split(' ', message->param(0).stripWhiteSpace());
464 if( params.count() != 5) { 469
465 emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Malformed DCC request from ") + IRCPerson(message->prefix()).nick())); 470 if(params[0] == "SEND") {
466 return; 471 QString nickname = IRCPerson(message->prefix()).nick();
472 if( params.count() != 5) {
473 emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Malformed DCC request from %1").arg(nickname)));
474 return;
475 }
476 bool accepted = DCCTransferTab::confirm(static_cast<QWidget*>(m_session->parent()), nickname, params[1], params[4].toUInt());
477 if(!accepted)
478 return;
479 QString filename = Opie::Ui::OFileDialog::getSaveFileName(Opie::Ui::OFileSelector::EXTENDED_ALL,
480 QString::null, params[1], MimeTypes(), 0, tr("Save As"));
481 if(filename.isEmpty())
482 return;
483
484 odebug << "Receiving file " << filename << " from " << nickname << oendl;
485 static_cast<IRCServerTab*>(m_session->parent())->mainwindow()->addDCC(DCCTransfer::Recv, params[2].toUInt(), params[3].toUInt(),
486 filename, nickname, params[4].toUInt());
467 } 487 }
468
469 //TransferReceiver *foo = new TransferReceiver(params[2].toUInt(), params[3].toUInt(), params[1], params[4].toUInt());
470} 488}
diff --git a/noncore/net/opieirc/ircservertab.cpp b/noncore/net/opieirc/ircservertab.cpp
index 62a06e8..d3c0448 100644
--- a/noncore/net/opieirc/ircservertab.cpp
+++ b/noncore/net/opieirc/ircservertab.cpp
@@ -414,2 +414,6 @@ void IRCServerTab::slotUpdateChannels() {
414} 414}
415
416MainWindow *IRCServerTab::mainwindow() {
417 return m_mainWindow;
418}
415 419
diff --git a/noncore/net/opieirc/ircservertab.h b/noncore/net/opieirc/ircservertab.h
index 42f6f57..fe48a3b 100644
--- a/noncore/net/opieirc/ircservertab.h
+++ b/noncore/net/opieirc/ircservertab.h
@@ -43,2 +43,3 @@ public:
43 IRCServer *server(); 43 IRCServer *server();
44 MainWindow *mainwindow();
44 45
diff --git a/noncore/net/opieirc/ircsession.cpp b/noncore/net/opieirc/ircsession.cpp
index fd8ba72..c8d7869 100644
--- a/noncore/net/opieirc/ircsession.cpp
+++ b/noncore/net/opieirc/ircsession.cpp
@@ -6,3 +6,5 @@
6 6
7IRCSession::IRCSession(QWidget *parent, IRCServer *server) { 7IRCSession::IRCSession(QObject *parent, IRCServer *server)
8 : QObject(parent)
9{
8 m_server = server; 10 m_server = server;
@@ -10,3 +12,2 @@ IRCSession::IRCSession(QWidget *parent, IRCServer *server) {
10 m_parser = new IRCMessageParser(this); 12 m_parser = new IRCMessageParser(this);
11 m_parent = parent;
12 connect(m_connection, SIGNAL(messageArrived(IRCMessage*)), this, SLOT(handleMessage(IRCMessage*))); 13 connect(m_connection, SIGNAL(messageArrived(IRCMessage*)), this, SLOT(handleMessage(IRCMessage*)));
diff --git a/noncore/net/opieirc/ircsession.h b/noncore/net/opieirc/ircsession.h
index 7c91893..23a2540 100644
--- a/noncore/net/opieirc/ircsession.h
+++ b/noncore/net/opieirc/ircsession.h
@@ -32,2 +32,3 @@
32class IRCMessageParser; 32class IRCMessageParser;
33class IRCServerTab;
33 34
@@ -41,3 +42,3 @@ friend class IRCMessageParser;
41public: 42public:
42 IRCSession(QWidget *parent, IRCServer *server); 43 IRCSession(QObject *parent, IRCServer *server);
43 ~IRCSession(); 44 ~IRCSession();
@@ -92,3 +93,2 @@ protected:
92 QString m_validChannelmodes; 93 QString m_validChannelmodes;
93 QWidget *m_parent;
94}; 94};
diff --git a/noncore/net/opieirc/mainwindow.cpp b/noncore/net/opieirc/mainwindow.cpp
index 1811a0c..3d60107 100644
--- a/noncore/net/opieirc/mainwindow.cpp
+++ b/noncore/net/opieirc/mainwindow.cpp
@@ -9,2 +9,3 @@
9#include "ircservertab.h" 9#include "ircservertab.h"
10#include "dcctransfertab.h"
10#include "ircserverlist.h" 11#include "ircserverlist.h"
@@ -12,2 +13,5 @@
12 13
14#include <stdio.h>
15
16
13QString MainWindow::appCaption() { 17QString MainWindow::appCaption() {
@@ -35,2 +39,3 @@ MainWindow::MainWindow(QWidget *parent, const char *name, WFlags) : QMainWindow(
35 a->addTo(irc); 39 a->addTo(irc);
40 m_dccTab = 0;
36 loadSettings(); 41 loadSettings();
@@ -79,2 +84,5 @@ void MainWindow::changeEvent(IRCTab *tab) {
79void MainWindow::killTab(IRCTab *tab, bool imediate) { 84void MainWindow::killTab(IRCTab *tab, bool imediate) {
85 if (tab == m_dccTab)
86 m_dccTab = 0;
87
80 m_toDelete.append( tab ); 88 m_toDelete.append( tab );
@@ -139 +147,13 @@ void MainWindow::slotPing( const QString& /*channel*/ ) {
139 147
148void MainWindow::addDCC(DCCTransfer::Type type, Q_UINT32 ip4Addr, Q_UINT16 port,
149 const QString &filename, const QString &nickname, unsigned int size) {
150
151 if (!m_dccTab) {
152 m_dccTab = new DCCTransferTab(this);
153 addTab(m_dccTab);
154 m_dccTab->show();
155 }
156
157 m_dccTab->addTransfer(type, ip4Addr, port, filename, nickname, size);
158}
159
diff --git a/noncore/net/opieirc/mainwindow.h b/noncore/net/opieirc/mainwindow.h
index abf205d..873a685 100644
--- a/noncore/net/opieirc/mainwindow.h
+++ b/noncore/net/opieirc/mainwindow.h
@@ -26,3 +26,4 @@
26#include <qlist.h> 26#include <qlist.h>
27#include "mainwindow.h" 27
28#include "dcctransfer.h"
28#include "ircmisc.h" 29#include "ircmisc.h"
@@ -30,2 +31,4 @@
30 31
32class DCCTransferTab;
33
31class MainWindow : public QMainWindow { 34class MainWindow : public QMainWindow {
@@ -39,2 +42,4 @@ public:
39 static QString appCaption(); 42 static QString appCaption();
43 void addDCC(DCCTransfer::Type type, Q_UINT32 ip4Addr, Q_UINT16 port,
44 const QString &filename, const QString &nickname, unsigned int size);
40signals: 45signals:
@@ -58,2 +63,3 @@ protected:
58 QList<IRCTab> m_toDelete; 63 QList<IRCTab> m_toDelete;
64 DCCTransferTab *m_dccTab;
59}; 65};
diff --git a/noncore/net/opieirc/opieirc.pro b/noncore/net/opieirc/opieirc.pro
index 1ef9be2..5e91450 100644
--- a/noncore/net/opieirc/opieirc.pro
+++ b/noncore/net/opieirc/opieirc.pro
@@ -9,3 +9,5 @@ HEADERS = ircchannel.h ircconnection.h \
9 ircquerytab.h ircsettings.h ircmisc.h \ 9 ircquerytab.h ircsettings.h ircmisc.h \
10 ircchannelperson.h 10 ircchannelperson.h dcctransfertab.h \
11 dccprogress.h dcctransfer.h \
12 dcctransferrecv.h
11 SOURCES = ircchannel.cpp ircconnection.cpp \ 13 SOURCES = ircchannel.cpp ircconnection.cpp \
@@ -19,3 +21,6 @@ SOURCES = ircchannel.cpp ircconnection.cpp \
19 ircquerytab.cpp ircsettings.cpp ircmisc.cpp \ 21 ircquerytab.cpp ircsettings.cpp ircmisc.cpp \
20 ircchannelperson.cpp 22 ircchannelperson.cpp dcctransfertab.cpp \
23 dccprogress.cpp dcctransfer.cpp \
24 dcctransferrecv.cpp
25
21INCLUDEPATH += $(OPIEDIR)/include 26INCLUDEPATH += $(OPIEDIR)/include