author | zecke <zecke> | 2004-09-08 21:51:06 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-09-08 21:51:06 (UTC) |
commit | ebb830522c9662bda4c4453e532bcc29631c5d60 (patch) (unidiff) | |
tree | 5cf95975e91cb2db78be5cdf47c01a340109c1f4 /noncore/net | |
parent | f0fdb800d57e9a1d95ba593185e9462300539eea (diff) | |
download | opie-ebb830522c9662bda4c4453e532bcc29631c5d60.zip opie-ebb830522c9662bda4c4453e532bcc29631c5d60.tar.gz opie-ebb830522c9662bda4c4453e532bcc29631c5d60.tar.bz2 |
-Close Tab Keyboard Accelerator with delayed deletion of the tab
-Optionally add a TimeStamp to the Tab
-Remove not implemented CTCP actions from the Channel PopupMenu
-Give Focus to the Edit Line
-Some more ping handling
patch inspired and copied from zautrix fork
-rw-r--r-- | noncore/net/opieirc/.cvsignore | 1 | ||||
-rw-r--r-- | noncore/net/opieirc/ircchanneltab.cpp | 22 | ||||
-rw-r--r-- | noncore/net/opieirc/ircchanneltab.h | 2 | ||||
-rw-r--r-- | noncore/net/opieirc/ircmessageparser.cpp | 34 | ||||
-rw-r--r-- | noncore/net/opieirc/ircmisc.cpp | 5 | ||||
-rw-r--r-- | noncore/net/opieirc/ircmisc.h | 3 | ||||
-rw-r--r-- | noncore/net/opieirc/ircquerytab.cpp | 9 | ||||
-rw-r--r-- | noncore/net/opieirc/ircserverlist.cpp | 9 | ||||
-rw-r--r-- | noncore/net/opieirc/ircserverlist.h | 1 | ||||
-rw-r--r-- | noncore/net/opieirc/ircservertab.cpp | 25 | ||||
-rw-r--r-- | noncore/net/opieirc/ircsettings.cpp | 18 | ||||
-rw-r--r-- | noncore/net/opieirc/ircsettings.h | 2 | ||||
-rw-r--r-- | noncore/net/opieirc/irctab.cpp | 16 | ||||
-rw-r--r-- | noncore/net/opieirc/irctab.h | 4 | ||||
-rw-r--r-- | noncore/net/opieirc/mainwindow.cpp | 32 | ||||
-rw-r--r-- | noncore/net/opieirc/mainwindow.h | 5 |
16 files changed, 152 insertions, 36 deletions
diff --git a/noncore/net/opieirc/.cvsignore b/noncore/net/opieirc/.cvsignore index d5423d6..0ccbade 100644 --- a/noncore/net/opieirc/.cvsignore +++ b/noncore/net/opieirc/.cvsignore | |||
@@ -4 +4,2 @@ moc_*.cpp | |||
4 | .moc \ No newline at end of file | 4 | .moc \ No newline at end of file |
5 | *.gch \ No newline at end of file | ||
diff --git a/noncore/net/opieirc/ircchanneltab.cpp b/noncore/net/opieirc/ircchanneltab.cpp index b6e3954..7610058 100644 --- a/noncore/net/opieirc/ircchanneltab.cpp +++ b/noncore/net/opieirc/ircchanneltab.cpp | |||
@@ -17,2 +17,3 @@ IRCChannelTab::IRCChannelTab(IRCChannel *channel, IRCServerTab *parentTab, MainW | |||
17 | m_listButton = new QPushButton(">", m_textview); | 17 | m_listButton = new QPushButton(">", m_textview); |
18 | m_listButton->setFlat( true ); | ||
18 | m_textview->setCornerWidget(m_listButton); | 19 | m_textview->setCornerWidget(m_listButton); |
@@ -27,3 +28,3 @@ IRCChannelTab::IRCChannelTab(IRCChannel *channel, IRCServerTab *parentTab, MainW | |||
27 | connect(m_field, SIGNAL(prevTab()), this, SIGNAL(prevTab())); | 28 | connect(m_field, SIGNAL(prevTab()), this, SIGNAL(prevTab())); |
28 | connect(m_field, SIGNAL(closeTab()), this, SIGNAL(closeTab())); | 29 | connect(m_field, SIGNAL(closeTab()), this, SLOT(remove())); |
29 | connect(this, SIGNAL(editFocus()), m_field, SLOT(setEditFocus())); | 30 | connect(this, SIGNAL(editFocus()), m_field, SLOT(setEditFocus())); |
@@ -38,3 +39,2 @@ IRCChannelTab::IRCChannelTab(IRCChannel *channel, IRCServerTab *parentTab, MainW | |||
38 | QPopupMenu *ctcpMenu = new QPopupMenu(m_list); | 39 | QPopupMenu *ctcpMenu = new QPopupMenu(m_list); |
39 | m_popup->insertItem(Resource::loadPixmap("opieirc/ctcp"), tr("CTCP"), ctcpMenu); | ||
40 | m_popup->insertItem(Resource::loadPixmap("opieirc/query"), tr("Query"), this, SLOT(popupQuery())); | 40 | m_popup->insertItem(Resource::loadPixmap("opieirc/query"), tr("Query"), this, SLOT(popupQuery())); |
@@ -51,2 +51,3 @@ IRCChannelTab::IRCChannelTab(IRCChannel *channel, IRCServerTab *parentTab, MainW | |||
51 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); | 51 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); |
52 | connect(m_list, SIGNAL(doubleClicked ( QListBoxItem * ) ), this, SLOT(popupQuery( QListBoxItem * ) )); | ||
52 | settingsChanged(); | 53 | settingsChanged(); |
@@ -60,3 +61,3 @@ void IRCChannelTab::appendText(QString text) { | |||
60 | /* not using append because it creates layout problems */ | 61 | /* not using append because it creates layout problems */ |
61 | QString txt = m_textview->text() + text + "\n"; | 62 | QString txt = m_textview->text() + IRCTab::appendTimestamp( text ); |
62 | if (m_maxLines > 0 && m_lines >= m_maxLines) { | 63 | if (m_maxLines > 0 && m_lines >= m_maxLines) { |
@@ -74,3 +75,5 @@ void IRCChannelTab::appendText(QString text) { | |||
74 | int p1, p2; | 75 | int p1, p2; |
75 | if ( (p1 = text.find("ping", 0, false) )!= -1 && (p2 = text.find( m_parentTab->server()->nick(), 0,false )) != -1 ) { | 76 | if ( text.contains( IRCMessageParser::tr("Received a CTCP PING from ") ) ) |
77 | emit ping( title() ); | ||
78 | else 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); | 79 | int col = text.findRev("color", -1, false); |
@@ -134,5 +137,5 @@ void IRCChannelTab::mouseButtonPressed(int mouse, QListBoxItem *, const QPoint & | |||
134 | 137 | ||
135 | void IRCChannelTab::popupQuery() { | 138 | void IRCChannelTab::popupQuery( QListBoxItem *item) { |
136 | if (m_list->currentItem() != -1) { | 139 | if (item) { |
137 | IRCPerson *person = session()->getPerson(m_list->item(m_list->currentItem())->text()); | 140 | IRCPerson *person = session()->getPerson(item->text()); |
138 | if (person) { | 141 | if (person) { |
@@ -148,2 +151,7 @@ void IRCChannelTab::popupQuery() { | |||
148 | 151 | ||
152 | void IRCChannelTab::popupQuery() { | ||
153 | if ( m_list->currentItem() != -1 ) | ||
154 | popupQuery( m_list->item(m_list->currentItem())); | ||
155 | } | ||
156 | |||
149 | void IRCChannelTab::popupPing() { | 157 | void IRCChannelTab::popupPing() { |
diff --git a/noncore/net/opieirc/ircchanneltab.h b/noncore/net/opieirc/ircchanneltab.h index 001c96d..70b212c 100644 --- a/noncore/net/opieirc/ircchanneltab.h +++ b/noncore/net/opieirc/ircchanneltab.h | |||
@@ -55,3 +55,5 @@ protected slots: | |||
55 | /* Popup slots */ | 55 | /* Popup slots */ |
56 | void popupQuery(QListBoxItem*); | ||
56 | void popupQuery(); | 57 | void popupQuery(); |
58 | |||
57 | void popupPing(); | 59 | void popupPing(); |
diff --git a/noncore/net/opieirc/ircmessageparser.cpp b/noncore/net/opieirc/ircmessageparser.cpp index 90280d7..ecc7e9a 100644 --- a/noncore/net/opieirc/ircmessageparser.cpp +++ b/noncore/net/opieirc/ircmessageparser.cpp | |||
@@ -285,2 +285,36 @@ void IRCMessageParser::parseCTCPPing(IRCMessage *message) { | |||
285 | emit outputReady(IRCOutput(OUTPUT_CTCP, tr("Received a CTCP PING from ")+mask.nick())); | 285 | emit outputReady(IRCOutput(OUTPUT_CTCP, tr("Received a CTCP PING from ")+mask.nick())); |
286 | |||
287 | //IRCPerson mask(message->prefix()); | ||
288 | QString dest = message->ctcpDestination(); | ||
289 | if (dest.startsWith("#")) { | ||
290 | IRCChannel *channel = m_session->getChannel(dest.lower()); | ||
291 | if (channel) { | ||
292 | IRCChannelPerson *person = channel->getPerson(mask.nick()); | ||
293 | if (person) { | ||
294 | IRCOutput output(OUTPUT_CHANACTION, tr("Received a CTCP PING from ")+ mask.nick()) ; | ||
295 | output.addParam(channel); | ||
296 | output.addParam(person); | ||
297 | emit outputReady(output); | ||
298 | } else { | ||
299 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("CTCP PING with unknown person - Desynchronized?"))); | ||
300 | } | ||
301 | } else { | ||
302 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("CTCP PING with unknown channel - Desynchronized?"))); | ||
303 | } | ||
304 | } else { | ||
305 | if (message->ctcpDestination() == m_session->m_server->nick()) { | ||
306 | IRCPerson *person = m_session->getPerson(mask.nick()); | ||
307 | if (!person) { | ||
308 | /* Person not yet known, create and add to the current session */ | ||
309 | person = new IRCPerson(message->prefix()); | ||
310 | m_session->addPerson(person); | ||
311 | } | ||
312 | IRCOutput output(OUTPUT_QUERYACTION, tr("Received a CTCP PING from ")+ mask.nick() ); | ||
313 | output.addParam(person); | ||
314 | emit outputReady(output); | ||
315 | } else { | ||
316 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("CTCP PING with bad recipient"))); | ||
317 | } | ||
318 | } | ||
319 | |||
286 | } | 320 | } |
diff --git a/noncore/net/opieirc/ircmisc.cpp b/noncore/net/opieirc/ircmisc.cpp index 9b9bff8..6fc5ba0 100644 --- a/noncore/net/opieirc/ircmisc.cpp +++ b/noncore/net/opieirc/ircmisc.cpp | |||
@@ -69,2 +69,5 @@ OKeyConfigManager* IRCHistoryLineEdit::keyConfigInstance() { | |||
69 | KeyPrevTab, OKeyPair(Qt::Key_P, Qt::ControlButton) )); | 69 | KeyPrevTab, OKeyPair(Qt::Key_P, Qt::ControlButton) )); |
70 | s_manager->addKeyConfig( OKeyConfigItem( tr("Close Tab"), "close_tab", | ||
71 | QPixmap(), KeyCloseTab, | ||
72 | OKeyPair(Qt::Key_C, Qt::ControlButton) )); | ||
70 | s_manager->load(); | 73 | s_manager->load(); |
@@ -109,2 +112,4 @@ void IRCHistoryLineEdit::keyPressEvent(QKeyEvent *event) { | |||
109 | return; | 112 | return; |
113 | case KeyCloseTab: | ||
114 | emit closeTab(); | ||
110 | default: | 115 | default: |
diff --git a/noncore/net/opieirc/ircmisc.h b/noncore/net/opieirc/ircmisc.h index 37eed28..3cf64df 100644 --- a/noncore/net/opieirc/ircmisc.h +++ b/noncore/net/opieirc/ircmisc.h | |||
@@ -70,3 +70,4 @@ public: | |||
70 | KeyNextTab, | 70 | KeyNextTab, |
71 | KeyPrevTab | 71 | KeyPrevTab, |
72 | KeyCloseTab | ||
72 | }; | 73 | }; |
diff --git a/noncore/net/opieirc/ircquerytab.cpp b/noncore/net/opieirc/ircquerytab.cpp index 1fddc6d..53474b9 100644 --- a/noncore/net/opieirc/ircquerytab.cpp +++ b/noncore/net/opieirc/ircquerytab.cpp | |||
@@ -18,6 +18,7 @@ IRCQueryTab::IRCQueryTab(IRCPerson *person, IRCServerTab *parentTab, MainWindow | |||
18 | m_field = new IRCHistoryLineEdit(this); | 18 | m_field = new IRCHistoryLineEdit(this); |
19 | |||
19 | connect(m_field, SIGNAL(nextTab()), this, SIGNAL(nextTab())); | 20 | connect(m_field, SIGNAL(nextTab()), this, SIGNAL(nextTab())); |
20 | connect(m_field, SIGNAL(prevTab()), this, SIGNAL(prevTab())); | 21 | connect(m_field, SIGNAL(prevTab()), this, SIGNAL(prevTab())); |
21 | connect(m_field, SIGNAL(closeTab()),this, SIGNAL(closeTab())); | 22 | connect(m_field, SIGNAL(closeTab()),this, SLOT(remove())); |
22 | 23 | connect(this, SIGNAL(editFocus()), m_field, SLOT(setEditFocus())); | |
23 | 24 | ||
@@ -27,3 +28,3 @@ IRCQueryTab::IRCQueryTab(IRCPerson *person, IRCServerTab *parentTab, MainWindow | |||
27 | m_layout->add(m_field); | 28 | m_layout->add(m_field); |
28 | m_field->setFocus(); | 29 | |
29 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); | 30 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); |
@@ -31,2 +32,4 @@ IRCQueryTab::IRCQueryTab(IRCPerson *person, IRCServerTab *parentTab, MainWindow | |||
31 | settingsChanged(); | 32 | settingsChanged(); |
33 | m_field->setFocus(); | ||
34 | m_field->setActiveWindow(); | ||
32 | } | 35 | } |
diff --git a/noncore/net/opieirc/ircserverlist.cpp b/noncore/net/opieirc/ircserverlist.cpp index 62bfc17..3e78469 100644 --- a/noncore/net/opieirc/ircserverlist.cpp +++ b/noncore/net/opieirc/ircserverlist.cpp | |||
@@ -84,2 +84,7 @@ IRCServerList::IRCServerList(QWidget* parent, const char *name, bool modal, WFla | |||
84 | 84 | ||
85 | connect(m_list, SIGNAL(doubleClicked(QListBoxItem*)), | ||
86 | this, SLOT(acceptOnClick(QListBoxItem *))); | ||
87 | connect(m_list, SIGNAL(returnPressed(QListBoxItem*)), | ||
88 | this, SLOT(acceptOnClick(QListBoxItem*))); | ||
89 | |||
85 | QPEApplication::showDialog( this ); | 90 | QPEApplication::showDialog( this ); |
@@ -124,2 +129,6 @@ void IRCServerList::editServer() | |||
124 | 129 | ||
130 | void IRCServerList::acceptOnClick( QListBoxItem* ) { | ||
131 | accept(); | ||
132 | } | ||
133 | |||
125 | int IRCServerList::exec() | 134 | int IRCServerList::exec() |
diff --git a/noncore/net/opieirc/ircserverlist.h b/noncore/net/opieirc/ircserverlist.h index d61210e..869b26f 100644 --- a/noncore/net/opieirc/ircserverlist.h +++ b/noncore/net/opieirc/ircserverlist.h | |||
@@ -44,2 +44,3 @@ public slots: | |||
44 | void editServer(); | 44 | void editServer(); |
45 | void acceptOnClick(QListBoxItem*); | ||
45 | protected: | 46 | protected: |
diff --git a/noncore/net/opieirc/ircservertab.cpp b/noncore/net/opieirc/ircservertab.cpp index 2a34c0b..5ca7a29 100644 --- a/noncore/net/opieirc/ircservertab.cpp +++ b/noncore/net/opieirc/ircservertab.cpp | |||
@@ -6,3 +6,4 @@ | |||
6 | bool IRCServerTab::containsPing( const QString& text, IRCServerTab* tab ) { | 6 | bool IRCServerTab::containsPing( const QString& text, IRCServerTab* tab ) { |
7 | return (text.find("ping") != -1 && text.find( tab->server()->nick() != -1)); | 7 | return (text.contains(IRCMessageParser::tr("Received a CTCP PING from "))) || |
8 | (text.find("ping") != -1 && text.find( tab->server()->nick() != -1)); | ||
8 | } | 9 | } |
@@ -32,3 +33,2 @@ IRCServerTab::IRCServerTab(IRCServer server, MainWindow *mainWindow, QWidget *pa | |||
32 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); | 33 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); |
33 | m_field->setFocus(); | ||
34 | connect(m_session, SIGNAL(outputReady(IRCOutput)), this, SLOT(display(IRCOutput))); | 34 | connect(m_session, SIGNAL(outputReady(IRCOutput)), this, SLOT(display(IRCOutput))); |
@@ -36,2 +36,6 @@ IRCServerTab::IRCServerTab(IRCServer server, MainWindow *mainWindow, QWidget *pa | |||
36 | settingsChanged(); | 36 | settingsChanged(); |
37 | |||
38 | m_field->setFocus(); | ||
39 | m_field->setActiveWindow(); | ||
40 | |||
37 | } | 41 | } |
@@ -45,3 +49,6 @@ void IRCServerTab::appendText(QString text) { | |||
45 | /* not using append because it creates layout problems */ | 49 | /* not using append because it creates layout problems */ |
46 | QString txt = m_textview->text() + text + "\n"; | 50 | QString txt = m_textview->text() + IRCTab::appendTimestamp( text ); |
51 | |||
52 | |||
53 | |||
47 | if (m_maxLines > 0 && m_lines >= m_maxLines) { | 54 | if (m_maxLines > 0 && m_lines >= m_maxLines) { |
@@ -236,3 +243,3 @@ void IRCServerTab::remove() { | |||
236 | while (m_channelTabs.current() != 0) { | 243 | while (m_channelTabs.current() != 0) { |
237 | m_mainWindow->killTab(m_channelTabs.current()); | 244 | m_mainWindow->killTab(m_channelTabs.current(), true); |
238 | } | 245 | } |
@@ -240,3 +247,3 @@ void IRCServerTab::remove() { | |||
240 | while (m_queryTabs.current() != 0) { | 247 | while (m_queryTabs.current() != 0) { |
241 | m_mainWindow->killTab(m_queryTabs.current()); | 248 | m_mainWindow->killTab(m_queryTabs.current(), true); |
242 | } | 249 | } |
@@ -274,3 +281,3 @@ void IRCServerTab::display(IRCOutput output) { | |||
274 | while (m_channelTabs.current() != 0) { | 281 | while (m_channelTabs.current() != 0) { |
275 | m_mainWindow->killTab(m_channelTabs.current()); | 282 | m_mainWindow->killTab(m_channelTabs.current(), true); |
276 | } | 283 | } |
@@ -278,3 +285,3 @@ void IRCServerTab::display(IRCOutput output) { | |||
278 | while (m_queryTabs.current() != 0) { | 285 | while (m_queryTabs.current() != 0) { |
279 | m_mainWindow->killTab(m_queryTabs.current()); | 286 | m_mainWindow->killTab(m_queryTabs.current(), true); |
280 | } | 287 | } |
@@ -314,3 +321,3 @@ void IRCServerTab::display(IRCOutput output) { | |||
314 | if (channelTab) | 321 | if (channelTab) |
315 | m_mainWindow->killTab(channelTab); | 322 | m_mainWindow->killTab(channelTab, true); |
316 | } | 323 | } |
@@ -321,3 +328,3 @@ void IRCServerTab::display(IRCOutput output) { | |||
321 | if (channelTab) | 328 | if (channelTab) |
322 | m_mainWindow->killTab(channelTab); | 329 | m_mainWindow->killTab(channelTab, true); |
323 | } | 330 | } |
diff --git a/noncore/net/opieirc/ircsettings.cpp b/noncore/net/opieirc/ircsettings.cpp index 1fba030..7a1dd6c 100644 --- a/noncore/net/opieirc/ircsettings.cpp +++ b/noncore/net/opieirc/ircsettings.cpp | |||
@@ -14,2 +14,3 @@ | |||
14 | #include <qwhatsthis.h> | 14 | #include <qwhatsthis.h> |
15 | #include <qcheckbox.h> | ||
15 | 16 | ||
@@ -27,3 +28,3 @@ IRCSettings::IRCSettings(QWidget* parent, const char* name, bool modal, WFlags) | |||
27 | QWidget *genwidget = new QWidget(tw); | 28 | QWidget *genwidget = new QWidget(tw); |
28 | QGridLayout *layout = new QGridLayout(genwidget, 1, 2, 5, 0); | 29 | QGridLayout *layout = new QGridLayout(genwidget, 1, 4, 5, 0); |
29 | QLabel *label = new QLabel(tr("Lines displayed :"), genwidget); | 30 | QLabel *label = new QLabel(tr("Lines displayed :"), genwidget); |
@@ -37,2 +38,15 @@ IRCSettings::IRCSettings(QWidget* parent, const char* name, bool modal, WFlags) | |||
37 | layout->addWidget(m_lines, 0, 1); | 38 | layout->addWidget(m_lines, 0, 1); |
39 | |||
40 | /* | ||
41 | * include timestamp | ||
42 | */ | ||
43 | m_displayTime = new QCheckBox( tr("Display time in chat log"), genwidget ); | ||
44 | m_displayTime->setChecked( m_config->readBoolEntry("DisplayTime", false) ); | ||
45 | layout->addMultiCellWidget(m_displayTime, 1, 1, 0, 4 ); | ||
46 | |||
47 | // add a spacer | ||
48 | layout->addItem( new QSpacerItem(1,1, QSizePolicy::Minimum, | ||
49 | QSizePolicy::MinimumExpanding), | ||
50 | 2, 0 ); | ||
51 | |||
38 | tw->addTab(genwidget, "opieirc/settings", tr("General")); | 52 | tw->addTab(genwidget, "opieirc/settings", tr("General")); |
@@ -119,2 +133,4 @@ void IRCSettings::accept() | |||
119 | m_config->writeEntry("Lines", m_lines->text()); | 133 | m_config->writeEntry("Lines", m_lines->text()); |
134 | m_config->writeEntry("DisplayTime", m_displayTime->isChecked() ); | ||
135 | IRCTab::setUseTimeStamps(m_displayTime->isChecked()); | ||
120 | IRCHistoryLineEdit::keyConfigInstance()->save(); | 136 | IRCHistoryLineEdit::keyConfigInstance()->save(); |
diff --git a/noncore/net/opieirc/ircsettings.h b/noncore/net/opieirc/ircsettings.h index a032aff..b51d535 100644 --- a/noncore/net/opieirc/ircsettings.h +++ b/noncore/net/opieirc/ircsettings.h | |||
@@ -34,2 +34,3 @@ class OKeyConfigWidget; | |||
34 | 34 | ||
35 | class QCheckBox; | ||
35 | class IRCSettings : public QDialog { | 36 | class IRCSettings : public QDialog { |
@@ -52,2 +53,3 @@ protected: | |||
52 | QLineEdit *m_lines; | 53 | QLineEdit *m_lines; |
54 | QCheckBox *m_displayTime; | ||
53 | }; | 55 | }; |
diff --git a/noncore/net/opieirc/irctab.cpp b/noncore/net/opieirc/irctab.cpp index 2b3ecd4..fbbf303 100644 --- a/noncore/net/opieirc/irctab.cpp +++ b/noncore/net/opieirc/irctab.cpp | |||
@@ -20,2 +20,18 @@ int IRCTab::m_maxLines; | |||
20 | 20 | ||
21 | |||
22 | static bool g_useTime = false; | ||
23 | |||
24 | void IRCTab::setUseTimeStamps( bool b ) { | ||
25 | g_useTime = b; | ||
26 | } | ||
27 | |||
28 | // ## FIXME use TimeString later for AM/PM Setting | ||
29 | QString IRCTab::appendTimestamp( const QString& text ) { | ||
30 | return g_useTime ? | ||
31 | "[" +QTime::currentTime().toString()+"]" + text + "\n" : | ||
32 | text + "\n"; | ||
33 | |||
34 | } | ||
35 | |||
36 | |||
21 | IRCTab::IRCTab(QWidget *parent, const char *name, WFlags f) : QWidget(parent, name, f) { | 37 | IRCTab::IRCTab(QWidget *parent, const char *name, WFlags f) : QWidget(parent, name, f) { |
diff --git a/noncore/net/opieirc/irctab.h b/noncore/net/opieirc/irctab.h index 6c29ea5..d17c530 100644 --- a/noncore/net/opieirc/irctab.h +++ b/noncore/net/opieirc/irctab.h | |||
@@ -40,2 +40,6 @@ public: | |||
40 | int id(); | 40 | int id(); |
41 | |||
42 | static void setUseTimeStamps(bool b); | ||
43 | static QString appendTimestamp(const QString& tex); | ||
44 | |||
41 | virtual QString title() = 0; | 45 | virtual QString title() = 0; |
diff --git a/noncore/net/opieirc/mainwindow.cpp b/noncore/net/opieirc/mainwindow.cpp index 2e674c5..2562f33 100644 --- a/noncore/net/opieirc/mainwindow.cpp +++ b/noncore/net/opieirc/mainwindow.cpp | |||
@@ -50,2 +50,3 @@ void MainWindow::loadSettings() { | |||
50 | IRCTab::m_maxLines = config.readNumEntry("Lines", 100); | 50 | IRCTab::m_maxLines = config.readNumEntry("Lines", 100); |
51 | IRCTab::setUseTimeStamps( config.readBoolEntry("DisplayTime", false ) ); | ||
51 | } | 52 | } |
@@ -62,3 +63,2 @@ void MainWindow::addTab(IRCTab *tab) { | |||
62 | connect(tab, SIGNAL(prevTab()), this, SLOT(slotPrevTab())); | 63 | connect(tab, SIGNAL(prevTab()), this, SLOT(slotPrevTab())); |
63 | connect(tab, SIGNAL(closeTab()), this, SLOT(slotCloseTab())); | ||
64 | 64 | ||
@@ -75,8 +75,20 @@ void MainWindow::changeEvent(IRCTab *tab) { | |||
75 | 75 | ||
76 | void MainWindow::killTab(IRCTab *tab) { | 76 | void MainWindow::killTab(IRCTab *tab, bool imediate) { |
77 | m_tabWidget->removePage(tab); | 77 | m_toDelete.append( tab ); |
78 | m_tabs.remove(tab); | ||
79 | 78 | ||
80 | /* there might be nicer ways to do this .. */ | 79 | if ( imediate ) |
81 | delete tab; | 80 | slotKillTabsLater(); |
81 | else | ||
82 | QTimer::singleShot(0, this, SLOT(slotKillTabsLater()) ); | ||
83 | } | ||
84 | |||
85 | void MainWindow::slotKillTabsLater() { | ||
86 | for ( QListIterator<IRCTab> it(m_toDelete); it.current(); ++it ) { | ||
87 | m_tabWidget->removePage( it.current() ); | ||
88 | m_tabs.remove( it.current() ); | ||
89 | } | ||
90 | |||
91 | m_toDelete.setAutoDelete( true ); | ||
92 | m_toDelete.clear(); | ||
93 | m_toDelete.setAutoDelete( false ); | ||
82 | } | 94 | } |
@@ -119,9 +131,3 @@ void MainWindow::slotPrevTab() { | |||
119 | 131 | ||
120 | void MainWindow::slotCloseTab() { | 132 | void MainWindow::slotPing( const QString& /*channel*/ ) { |
121 | IRCTab *tab = (IRCTab *) m_tabWidget->currentPage (); | ||
122 | if ( tab ) | ||
123 | killTab ( tab ); | ||
124 | } | ||
125 | |||
126 | void MainWindow::slotPing( const QString& channel ) { | ||
127 | raise(); | 133 | raise(); |
diff --git a/noncore/net/opieirc/mainwindow.h b/noncore/net/opieirc/mainwindow.h index 945fc71..abf205d 100644 --- a/noncore/net/opieirc/mainwindow.h +++ b/noncore/net/opieirc/mainwindow.h | |||
@@ -36,3 +36,3 @@ public: | |||
36 | void addTab(IRCTab *tab); | 36 | void addTab(IRCTab *tab); |
37 | void killTab(IRCTab *tab); | 37 | void killTab(IRCTab *tab, bool now = false); |
38 | static QString appName() { return QString::fromLatin1("opieirc"); } | 38 | static QString appName() { return QString::fromLatin1("opieirc"); } |
@@ -49,4 +49,4 @@ protected slots: | |||
49 | void slotPrevTab(); | 49 | void slotPrevTab(); |
50 | void slotCloseTab(); | ||
51 | void slotPing(const QString&); | 50 | void slotPing(const QString&); |
51 | void slotKillTabsLater(); | ||
52 | 52 | ||
@@ -57,2 +57,3 @@ protected: | |||
57 | QList<IRCTab> m_tabs; | 57 | QList<IRCTab> m_tabs; |
58 | QList<IRCTab> m_toDelete; | ||
58 | }; | 59 | }; |