author | zecke <zecke> | 2004-09-06 22:47:48 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-09-06 22:47:48 (UTC) |
commit | 8f18e8b46dfaaa7e03b9ed1f3faed12da5b30cd5 (patch) (unidiff) | |
tree | 39158cd8abe423cf2df95b5038cdc7848de2e3dc | |
parent | 8bf99aaa1b31e770b21b7bf50407a650a8f5d646 (diff) | |
download | opie-8f18e8b46dfaaa7e03b9ed1f3faed12da5b30cd5.zip opie-8f18e8b46dfaaa7e03b9ed1f3faed12da5b30cd5.tar.gz opie-8f18e8b46dfaaa7e03b9ed1f3faed12da5b30cd5.tar.bz2 |
-Some keyboard handling
-ping notification
merge of zautrixs work
-rw-r--r-- | noncore/net/opieirc/ircchanneltab.cpp | 18 | ||||
-rw-r--r-- | noncore/net/opieirc/ircmessageparser.cpp | 24 | ||||
-rw-r--r-- | noncore/net/opieirc/ircmisc.cpp | 19 | ||||
-rw-r--r-- | noncore/net/opieirc/ircmisc.h | 8 | ||||
-rw-r--r-- | noncore/net/opieirc/ircquerytab.cpp | 9 | ||||
-rw-r--r-- | noncore/net/opieirc/ircservertab.cpp | 15 | ||||
-rw-r--r-- | noncore/net/opieirc/ircservertab.h | 2 | ||||
-rw-r--r-- | noncore/net/opieirc/irctab.cpp | 7 | ||||
-rw-r--r-- | noncore/net/opieirc/irctab.h | 10 | ||||
-rw-r--r-- | noncore/net/opieirc/mainwindow.cpp | 37 | ||||
-rw-r--r-- | noncore/net/opieirc/mainwindow.h | 7 |
11 files changed, 138 insertions, 18 deletions
diff --git a/noncore/net/opieirc/ircchanneltab.cpp b/noncore/net/opieirc/ircchanneltab.cpp index 667e977..b6e3954 100644 --- a/noncore/net/opieirc/ircchanneltab.cpp +++ b/noncore/net/opieirc/ircchanneltab.cpp | |||
@@ -24,4 +24,9 @@ IRCChannelTab::IRCChannelTab(IRCChannel *channel, IRCServerTab *parentTab, MainW | |||
24 | m_list->setMaximumWidth(LISTWIDTH); | 24 | m_list->setMaximumWidth(LISTWIDTH); |
25 | m_field = new IRCHistoryLineEdit(this); | 25 | m_field = new IRCHistoryLineEdit(this); |
26 | connect(m_field, SIGNAL(nextTab()), this, SIGNAL(nextTab())); | ||
27 | connect(m_field, SIGNAL(prevTab()), this, SIGNAL(prevTab())); | ||
28 | connect(m_field, SIGNAL(closeTab()), this, SIGNAL(closeTab())); | ||
29 | connect(this, SIGNAL(editFocus()), m_field, SLOT(setEditFocus())); | ||
30 | |||
26 | QWhatsThis::add(m_field, tr("Type your message here to participate in the channel discussion")); | 31 | QWhatsThis::add(m_field, tr("Type your message here to participate in the channel discussion")); |
27 | m_popup = new QPopupMenu(m_list); | 32 | m_popup = new QPopupMenu(m_list); |
@@ -42,4 +47,6 @@ IRCChannelTab::IRCChannelTab(IRCChannel *channel, IRCServerTab *parentTab, MainW | |||
42 | m_layout->add(m_field); | 47 | m_layout->add(m_field); |
43 | m_field->setFocus(); | 48 | m_field->setFocus(); |
49 | m_field->setActiveWindow(); | ||
50 | |||
44 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); | 51 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); |
45 | settingsChanged(); | 52 | settingsChanged(); |
@@ -64,4 +71,13 @@ void IRCChannelTab::appendText(QString text) { | |||
64 | m_textview->setText(txt); | 71 | m_textview->setText(txt); |
65 | m_textview->ensureVisible(0, m_textview->contentsHeight()); | 72 | m_textview->ensureVisible(0, m_textview->contentsHeight()); |
73 | |||
74 | int p1, p2; | ||
75 | if ( (p1 = text.find("ping", 0, false) )!= -1 && (p2 = text.find( m_parentTab->server()->nick(), 0,false )) != -1 ) { | ||
76 | int col = text.findRev("color", -1, false); | ||
77 | if ( col < p2 ) | ||
78 | emit ping( title() ); | ||
79 | |||
80 | } | ||
81 | |||
66 | emit changed(this); | 82 | emit changed(this); |
67 | } | 83 | } |
@@ -123,5 +139,5 @@ void IRCChannelTab::popupQuery() { | |||
123 | IRCQueryTab *tab = m_parentTab->getTabForQuery(person); | 139 | IRCQueryTab *tab = m_parentTab->getTabForQuery(person); |
124 | if (!tab) { | 140 | if (!tab) { |
125 | tab = new IRCQueryTab(person, m_parentTab, m_mainWindow, (QWidget *)parent()); | 141 | tab = new IRCQueryTab(person, m_parentTab, m_mainWindow, (QWidget *)parent()); |
126 | m_parentTab->addQueryTab(tab); | 142 | m_parentTab->addQueryTab(tab); |
127 | m_mainWindow->addTab(tab); | 143 | m_mainWindow->addTab(tab); |
diff --git a/noncore/net/opieirc/ircmessageparser.cpp b/noncore/net/opieirc/ircmessageparser.cpp index 400ff41..90280d7 100644 --- a/noncore/net/opieirc/ircmessageparser.cpp +++ b/noncore/net/opieirc/ircmessageparser.cpp | |||
@@ -4,5 +4,5 @@ | |||
4 | 4 | ||
5 | /* Lookup table for literal commands */ | 5 | /* Lookup table for literal commands */ |
6 | IRCLiteralMessageParserStruct IRCMessageParser::literalParserProcTable[] = { | 6 | IRCLiteralMessageParserStruct IRCMessageParser::literalParserProcTable[] = { |
7 | { "PING", FUNC(parseLiteralPing) }, | 7 | { "PING", FUNC(parseLiteralPing) }, |
8 | { "NOTICE", FUNC(parseLiteralNotice) }, | 8 | { "NOTICE", FUNC(parseLiteralNotice) }, |
@@ -21,5 +21,5 @@ IRCLiteralMessageParserStruct IRCMessageParser::literalParserProcTable[] = { | |||
21 | 21 | ||
22 | /* Lookup table for literal commands */ | 22 | /* Lookup table for literal commands */ |
23 | IRCCTCPMessageParserStruct IRCMessageParser::ctcpParserProcTable[] = { | 23 | IRCCTCPMessageParserStruct IRCMessageParser::ctcpParserProcTable[] = { |
24 | { "PING", FUNC(parseCTCPPing) }, | 24 | { "PING", FUNC(parseCTCPPing) }, |
25 | { "VERSION", FUNC(parseCTCPVersion) }, | 25 | { "VERSION", FUNC(parseCTCPVersion) }, |
@@ -29,5 +29,5 @@ IRCCTCPMessageParserStruct IRCMessageParser::ctcpParserProcTable[] = { | |||
29 | 29 | ||
30 | /* Lookup table for numerical commands */ | 30 | /* Lookup table for numerical commands */ |
31 | IRCNumericalMessageParserStruct IRCMessageParser::numericalParserProcTable[] = { | 31 | IRCNumericalMessageParserStruct IRCMessageParser::numericalParserProcTable[] = { |
32 | { 1, FUNC(parseNumerical001) }, // RPL_WELCOME | 32 | { 1, FUNC(parseNumerical001) }, // RPL_WELCOME |
33 | { 2, FUNC(parseNumerical002) }, // RPL_YOURHOST | 33 | { 2, FUNC(parseNumerical002) }, // RPL_YOURHOST |
@@ -172,5 +172,5 @@ void IRCMessageParser::parseLiteralPart(IRCMessage *message) { | |||
172 | 172 | ||
173 | void IRCMessageParser::parseLiteralPrivMsg(IRCMessage *message) { | 173 | void IRCMessageParser::parseLiteralPrivMsg(IRCMessage *message) { |
174 | if (m_session->m_server->nick() == message->param(0)) { | 174 | if (m_session->m_server->nick().lower() == message->param(0).lower() ) { |
175 | /* IRC Query message detected, verify sender and display it */ | 175 | /* IRC Query message detected, verify sender and display it */ |
176 | IRCPerson mask(message->prefix()); | 176 | IRCPerson mask(message->prefix()); |
@@ -207,5 +207,5 @@ void IRCMessageParser::parseLiteralPrivMsg(IRCMessage *message) { | |||
207 | 207 | ||
208 | void IRCMessageParser::parseLiteralNick(IRCMessage *message) { | 208 | void IRCMessageParser::parseLiteralNick(IRCMessage *message) { |
209 | 209 | ||
210 | IRCPerson mask(message->prefix()); | 210 | IRCPerson mask(message->prefix()); |
211 | /* this way of handling nick changes really sucks */ | 211 | /* this way of handling nick changes really sucks */ |
@@ -221,5 +221,5 @@ void IRCMessageParser::parseLiteralNick(IRCMessage *message) { | |||
221 | if (person) { | 221 | if (person) { |
222 | //IRCOutput output(OUTPUT_NICKCHANGE, tr("%1 is now known as %2").arg( mask.nick() ).arg( message->param(0))); | 222 | //IRCOutput output(OUTPUT_NICKCHANGE, tr("%1 is now known as %2").arg( mask.nick() ).arg( message->param(0))); |
223 | 223 | ||
224 | /* new code starts here -- this removes the person from all channels */ | 224 | /* new code starts here -- this removes the person from all channels */ |
225 | QList<IRCChannel> channels; | 225 | QList<IRCChannel> channels; |
@@ -235,5 +235,5 @@ void IRCMessageParser::parseLiteralNick(IRCMessage *message) { | |||
235 | emit outputReady(output); | 235 | emit outputReady(output); |
236 | } | 236 | } |
237 | /* new code ends here */ | 237 | /* new code ends here */ |
238 | } else { | 238 | } else { |
239 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Nickname change of an unknown person"))); | 239 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Nickname change of an unknown person"))); |
@@ -249,5 +249,5 @@ void IRCMessageParser::parseLiteralQuit(IRCMessage *message) { | |||
249 | m_session->getChannelsByPerson(person, channels); | 249 | m_session->getChannelsByPerson(person, channels); |
250 | QListIterator<IRCChannel> it(channels); | 250 | QListIterator<IRCChannel> it(channels); |
251 | for (;it.current(); ++it) { | 251 | for (;it.current(); ++it) { |
252 | IRCChannelPerson *chanperson = it.current()->getPerson(mask.nick()); | 252 | IRCChannelPerson *chanperson = it.current()->getPerson(mask.nick()); |
253 | it.current()->removePerson(chanperson); | 253 | it.current()->removePerson(chanperson); |
@@ -326,5 +326,5 @@ void IRCMessageParser::parseCTCPAction(IRCMessage *message) { | |||
326 | } | 326 | } |
327 | } | 327 | } |
328 | 328 | ||
329 | void IRCMessageParser::parseLiteralMode(IRCMessage *message) { | 329 | void IRCMessageParser::parseLiteralMode(IRCMessage *message) { |
330 | IRCPerson mask(message->prefix()); | 330 | IRCPerson mask(message->prefix()); |
@@ -462,5 +462,5 @@ void IRCMessageParser::parseNumericalNames(IRCMessage *message) { | |||
462 | while (!stream.atEnd()) { | 462 | while (!stream.atEnd()) { |
463 | stream >> temp; | 463 | stream >> temp; |
464 | 464 | ||
465 | char flagch = temp.at(0).latin1(); | 465 | char flagch = temp.at(0).latin1(); |
466 | int flag = 0; | 466 | int flag = 0; |
@@ -468,5 +468,5 @@ void IRCMessageParser::parseNumericalNames(IRCMessage *message) { | |||
468 | /* Parse person flags */ | 468 | /* Parse person flags */ |
469 | if (flagch == '@' || flagch == '+' || flagch=='%' || flagch == '*') { | 469 | if (flagch == '@' || flagch == '+' || flagch=='%' || flagch == '*') { |
470 | 470 | ||
471 | nick = temp.right(temp.length()-1); | 471 | nick = temp.right(temp.length()-1); |
472 | switch (flagch) { | 472 | switch (flagch) { |
@@ -479,5 +479,5 @@ void IRCMessageParser::parseNumericalNames(IRCMessage *message) { | |||
479 | nick = temp; | 479 | nick = temp; |
480 | } | 480 | } |
481 | 481 | ||
482 | IRCChannelPerson *chan_person = new IRCChannelPerson(); | 482 | IRCChannelPerson *chan_person = new IRCChannelPerson(); |
483 | IRCPerson *person = m_session->getPerson(nick); | 483 | IRCPerson *person = m_session->getPerson(nick); |
diff --git a/noncore/net/opieirc/ircmisc.cpp b/noncore/net/opieirc/ircmisc.cpp index 6d93a34..df6f874 100644 --- a/noncore/net/opieirc/ircmisc.cpp +++ b/noncore/net/opieirc/ircmisc.cpp | |||
@@ -67,8 +67,15 @@ void IRCHistoryLineEdit::keyPressEvent(QKeyEvent *event) { | |||
67 | m_history.prepend(text()); | 67 | m_history.prepend(text()); |
68 | m_index = -1; | 68 | m_index = -1; |
69 | } else if (key == Key_Tab) { | 69 | } else if (key == Key_N && event->state() == Qt::ControlButton) { |
70 | odebug << "got tab" << oendl; | 70 | emit nextTab(); |
71 | return; | ||
72 | } else if ( ( key == Key_Y || key == Key_Z ) && event->state() == Qt::ControlButton) { | ||
73 | emit closeTab(); | ||
74 | return; | ||
75 | } else if (key == Key_P && event->state() == Qt::ControlButton) { | ||
76 | emit prevTab(); | ||
71 | return; | 77 | return; |
72 | } | 78 | } |
79 | |||
73 | QLineEdit::keyPressEvent(event); | 80 | QLineEdit::keyPressEvent(event); |
74 | } | 81 | } |
@@ -79,5 +86,5 @@ bool IRCHistoryLineEdit::eventFilter(QObject *object, QEvent *event) { | |||
79 | /* Catch tab characters */ | 86 | /* Catch tab characters */ |
80 | if (k->key() == Key_Tab) { | 87 | if (k->key() == Key_Tab) { |
81 | odebug << "tab!" << oendl; | 88 | emit nextTab(); |
82 | return TRUE; | 89 | return TRUE; |
83 | } | 90 | } |
@@ -85,2 +92,8 @@ bool IRCHistoryLineEdit::eventFilter(QObject *object, QEvent *event) { | |||
85 | return QLineEdit::eventFilter(object, event); | 92 | return QLineEdit::eventFilter(object, event); |
86 | } | 93 | } |
94 | |||
95 | |||
96 | void IRCHistoryLineEdit::setEditFocus() { | ||
97 | setActiveWindow(); | ||
98 | setFocus(); | ||
99 | } | ||
diff --git a/noncore/net/opieirc/ircmisc.h b/noncore/net/opieirc/ircmisc.h index b4a5b06..c42dcbd 100644 --- a/noncore/net/opieirc/ircmisc.h +++ b/noncore/net/opieirc/ircmisc.h | |||
@@ -62,4 +62,12 @@ public: | |||
62 | IRCHistoryLineEdit(QWidget *parent = 0, const char *name = 0); | 62 | IRCHistoryLineEdit(QWidget *parent = 0, const char *name = 0); |
63 | virtual bool eventFilter(QObject *object, QEvent *event); | 63 | virtual bool eventFilter(QObject *object, QEvent *event); |
64 | public slots: | ||
65 | void setEditFocus(); | ||
66 | signals: | ||
67 | void nextTab(); | ||
68 | void prevTab(); | ||
69 | void closeTab(); | ||
70 | |||
71 | |||
64 | protected: | 72 | protected: |
65 | void keyPressEvent(QKeyEvent *); | 73 | void keyPressEvent(QKeyEvent *); |
diff --git a/noncore/net/opieirc/ircquerytab.cpp b/noncore/net/opieirc/ircquerytab.cpp index a113b04..1fddc6d 100644 --- a/noncore/net/opieirc/ircquerytab.cpp +++ b/noncore/net/opieirc/ircquerytab.cpp | |||
@@ -17,4 +17,9 @@ IRCQueryTab::IRCQueryTab(IRCPerson *person, IRCServerTab *parentTab, MainWindow | |||
17 | QWhatsThis::add(m_textview, tr("Private discussion")); | 17 | QWhatsThis::add(m_textview, tr("Private discussion")); |
18 | m_field = new IRCHistoryLineEdit(this); | 18 | m_field = new IRCHistoryLineEdit(this); |
19 | connect(m_field, SIGNAL(nextTab()), this, SIGNAL(nextTab())); | ||
20 | connect(m_field, SIGNAL(prevTab()), this, SIGNAL(prevTab())); | ||
21 | connect(m_field, SIGNAL(closeTab()),this, SIGNAL(closeTab())); | ||
22 | |||
23 | |||
19 | QWhatsThis::add(m_field, tr("Type your text here in order to send a message to the other person")); | 24 | QWhatsThis::add(m_field, tr("Type your text here in order to send a message to the other person")); |
20 | m_layout->add(hbox); | 25 | m_layout->add(hbox); |
@@ -45,4 +50,8 @@ void IRCQueryTab::appendText(QString text) { | |||
45 | m_textview->setText(txt); | 50 | m_textview->setText(txt); |
46 | m_textview->ensureVisible(0, m_textview->contentsHeight()); | 51 | m_textview->ensureVisible(0, m_textview->contentsHeight()); |
52 | |||
53 | if ( IRCServerTab::containsPing( text, m_parentTab ) ) | ||
54 | emit ping( title() ); | ||
55 | |||
47 | emit changed(this); | 56 | emit changed(this); |
48 | } | 57 | } |
diff --git a/noncore/net/opieirc/ircservertab.cpp b/noncore/net/opieirc/ircservertab.cpp index d1aab40..2a34c0b 100644 --- a/noncore/net/opieirc/ircservertab.cpp +++ b/noncore/net/opieirc/ircservertab.cpp | |||
@@ -3,4 +3,10 @@ | |||
3 | #include "ircservertab.h" | 3 | #include "ircservertab.h" |
4 | 4 | ||
5 | |||
6 | bool IRCServerTab::containsPing( const QString& text, IRCServerTab* tab ) { | ||
7 | return (text.find("ping") != -1 && text.find( tab->server()->nick() != -1)); | ||
8 | } | ||
9 | |||
10 | |||
5 | IRCServerTab::IRCServerTab(IRCServer server, MainWindow *mainWindow, QWidget *parent, const char *name, WFlags f) : IRCTab(parent, name, f) { | 11 | IRCServerTab::IRCServerTab(IRCServer server, MainWindow *mainWindow, QWidget *parent, const char *name, WFlags f) : IRCTab(parent, name, f) { |
6 | m_server = server; | 12 | m_server = server; |
@@ -17,4 +23,9 @@ IRCServerTab::IRCServerTab(IRCServer server, MainWindow *mainWindow, QWidget *pa | |||
17 | m_layout->add(m_textview); | 23 | m_layout->add(m_textview); |
18 | m_field = new IRCHistoryLineEdit(this); | 24 | m_field = new IRCHistoryLineEdit(this); |
25 | connect(m_field, SIGNAL(nextTab()), this, SIGNAL(nextTab())); | ||
26 | connect(m_field, SIGNAL(prevTab()), this, SIGNAL(prevTab())); | ||
27 | connect(m_field, SIGNAL(closeTab()), this, SIGNAL(closeTab())); | ||
28 | connect(this, SIGNAL(editFocus()), m_field, SLOT(setEditFocus())); | ||
29 | |||
19 | QWhatsThis::add(m_field, tr("Type commands here. A list of available commands can be found inside the OpieIRC help")); | 30 | QWhatsThis::add(m_field, tr("Type commands here. A list of available commands can be found inside the OpieIRC help")); |
20 | m_layout->add(m_field); | 31 | m_layout->add(m_field); |
@@ -122,5 +133,5 @@ void IRCServerTab::executeCommand(IRCTab *tab, QString line) { | |||
122 | QString nickname; | 133 | QString nickname; |
123 | stream >> nickname; | 134 | stream >> nickname; |
124 | if (nickname.length() > 0) { | 135 | if (nickname.length() > 0) { |
125 | QString text = line.right(line.length()-nickname.length()-5); | 136 | QString text = line.right(line.length()-nickname.length()-5); |
126 | IRCPerson person; | 137 | IRCPerson person; |
@@ -129,5 +140,5 @@ void IRCServerTab::executeCommand(IRCTab *tab, QString line) { | |||
129 | } | 140 | } |
130 | } | 141 | } |
131 | 142 | ||
132 | //SEND MODES | 143 | //SEND MODES |
133 | else if (command == "MODE"){ | 144 | else if (command == "MODE"){ |
diff --git a/noncore/net/opieirc/ircservertab.h b/noncore/net/opieirc/ircservertab.h index 48200d7..69543fc 100644 --- a/noncore/net/opieirc/ircservertab.h +++ b/noncore/net/opieirc/ircservertab.h | |||
@@ -34,4 +34,6 @@ class IRCServerTab : public IRCTab { | |||
34 | Q_OBJECT | 34 | Q_OBJECT |
35 | public: | 35 | public: |
36 | static bool containsPing(const QString& text, IRCServerTab *tab); | ||
37 | |||
36 | /* IRCTab implementation */ | 38 | /* IRCTab implementation */ |
37 | IRCServerTab(IRCServer server, MainWindow *mainWindow, QWidget *parent = 0, const char *name = 0, WFlags f = 0); | 39 | IRCServerTab(IRCServer server, MainWindow *mainWindow, QWidget *parent = 0, const char *name = 0, WFlags f = 0); |
diff --git a/noncore/net/opieirc/irctab.cpp b/noncore/net/opieirc/irctab.cpp index 3351c3b..8e1dc16 100644 --- a/noncore/net/opieirc/irctab.cpp +++ b/noncore/net/opieirc/irctab.cpp | |||
@@ -3,4 +3,5 @@ | |||
3 | #include <qwhatsthis.h> | 3 | #include <qwhatsthis.h> |
4 | #include "irctab.h" | 4 | #include "irctab.h" |
5 | #include "mainwindow.h" | ||
5 | 6 | ||
6 | QString IRCTab::m_errorColor; | 7 | QString IRCTab::m_errorColor; |
@@ -37,2 +38,8 @@ int IRCTab::id() { | |||
37 | return m_id; | 38 | return m_id; |
38 | } | 39 | } |
40 | |||
41 | void IRCTab::showEvent( QShowEvent *ev ) { | ||
42 | topLevelWidget()->setCaption( MainWindow::appCaption() + " " + title() ); | ||
43 | QWidget::showEvent( ev ); | ||
44 | emit editFocus(); | ||
45 | } | ||
diff --git a/noncore/net/opieirc/irctab.h b/noncore/net/opieirc/irctab.h index 7a2d0a2..6c29ea5 100644 --- a/noncore/net/opieirc/irctab.h +++ b/noncore/net/opieirc/irctab.h | |||
@@ -44,7 +44,17 @@ public: | |||
44 | signals: | 44 | signals: |
45 | void changed(IRCTab *); | 45 | void changed(IRCTab *); |
46 | void ping(const QString& ); | ||
47 | void nextTab(); | ||
48 | void prevTab(); | ||
49 | void closeTab(); | ||
50 | void editFocus(); | ||
51 | |||
46 | public slots: | 52 | public slots: |
47 | virtual void remove() = 0; | 53 | virtual void remove() = 0; |
48 | virtual void settingsChanged() = 0; | 54 | virtual void settingsChanged() = 0; |
55 | |||
56 | protected: | ||
57 | void showEvent( QShowEvent* ); | ||
58 | |||
49 | protected: | 59 | protected: |
50 | QLabel *m_description; | 60 | QLabel *m_description; |
diff --git a/noncore/net/opieirc/mainwindow.cpp b/noncore/net/opieirc/mainwindow.cpp index 0923a11..1143213 100644 --- a/noncore/net/opieirc/mainwindow.cpp +++ b/noncore/net/opieirc/mainwindow.cpp | |||
@@ -8,4 +8,9 @@ | |||
8 | #include "ircsettings.h" | 8 | #include "ircsettings.h" |
9 | 9 | ||
10 | QString MainWindow::appCaption() { | ||
11 | return QObject::tr("Opie IRC"); | ||
12 | } | ||
13 | |||
14 | |||
10 | MainWindow::MainWindow(QWidget *parent, const char *name, WFlags) : QMainWindow(parent, name, WStyle_ContextHelp) { | 15 | MainWindow::MainWindow(QWidget *parent, const char *name, WFlags) : QMainWindow(parent, name, WStyle_ContextHelp) { |
11 | setCaption(tr("IRC Client")); | 16 | setCaption(tr("IRC Client")); |
@@ -53,4 +58,9 @@ void MainWindow::selected(QWidget *) { | |||
53 | void MainWindow::addTab(IRCTab *tab) { | 58 | void MainWindow::addTab(IRCTab *tab) { |
54 | connect(tab, SIGNAL(changed(IRCTab*)), this, SLOT(changeEvent(IRCTab*))); | 59 | connect(tab, SIGNAL(changed(IRCTab*)), this, SLOT(changeEvent(IRCTab*))); |
60 | connect(tab, SIGNAL(ping (const QString&)), this, SLOT(slotPing(const QString&))); | ||
61 | connect(tab, SIGNAL(nextTab()), this, SLOT(slotNextTab())); | ||
62 | connect(tab, SIGNAL(prevTab()), this, SLOT(slotPrevTab())); | ||
63 | connect(tab, SIGNAL(closeTab()), this, SLOT(slotCloseTab())); | ||
64 | |||
55 | m_tabWidget->addTab(tab, tab->title()); | 65 | m_tabWidget->addTab(tab, tab->title()); |
56 | m_tabWidget->showPage(tab); | 66 | m_tabWidget->showPage(tab); |
@@ -90,2 +100,29 @@ void MainWindow::settings() { | |||
90 | } | 100 | } |
91 | } | 101 | } |
102 | |||
103 | |||
104 | void MainWindow::slotNextTab() { | ||
105 | int i = m_tabWidget->currentPageIndex (); | ||
106 | m_tabWidget->setCurrentPage ( i+1 ); | ||
107 | |||
108 | int j = m_tabWidget->currentPageIndex (); | ||
109 | if ( i == j ) | ||
110 | m_tabWidget->setCurrentPage ( 1 ); | ||
111 | } | ||
112 | |||
113 | void MainWindow::slotPrevTab() { | ||
114 | int i = m_tabWidget->currentPageIndex (); | ||
115 | if ( i > 1 ) | ||
116 | m_tabWidget->setCurrentPage ( i-1 ); | ||
117 | } | ||
118 | |||
119 | void MainWindow::slotCloseTab() { | ||
120 | IRCTab *tab = (IRCTab *) m_tabWidget->currentPage (); | ||
121 | if ( tab ) | ||
122 | killTab ( tab ); | ||
123 | } | ||
124 | |||
125 | void MainWindow::slotPing( const QString& channel ) { | ||
126 | raise(); | ||
127 | } | ||
128 | |||
diff --git a/noncore/net/opieirc/mainwindow.h b/noncore/net/opieirc/mainwindow.h index 0f60855..945fc71 100644 --- a/noncore/net/opieirc/mainwindow.h +++ b/noncore/net/opieirc/mainwindow.h | |||
@@ -37,4 +37,5 @@ public: | |||
37 | void killTab(IRCTab *tab); | 37 | void killTab(IRCTab *tab); |
38 | static QString appName() { return QString::fromLatin1("opieirc"); } | 38 | static QString appName() { return QString::fromLatin1("opieirc"); } |
39 | static QString appCaption(); | ||
39 | signals: | 40 | signals: |
40 | void updateScroll(); | 41 | void updateScroll(); |
@@ -44,4 +45,10 @@ protected slots: | |||
44 | void selected(QWidget *); | 45 | void selected(QWidget *); |
45 | void changeEvent(IRCTab *); | 46 | void changeEvent(IRCTab *); |
47 | |||
48 | void slotNextTab(); | ||
49 | void slotPrevTab(); | ||
50 | void slotCloseTab(); | ||
51 | void slotPing(const QString&); | ||
52 | |||
46 | protected: | 53 | protected: |
47 | void loadSettings(); | 54 | void loadSettings(); |