Diffstat (limited to 'noncore/net/opieirc/mainwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/opieirc/mainwindow.cpp | 32 |
1 files changed, 19 insertions, 13 deletions
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 | |||
@@ -48,6 +48,7 @@ void MainWindow::loadSettings() { | |||
48 | IRCTab::m_serverColor = config.readEntry("ServerColor", "#0000FF"); | 48 | IRCTab::m_serverColor = config.readEntry("ServerColor", "#0000FF"); |
49 | IRCTab::m_notificationColor = config.readEntry("NotificationColor", "#AA3300"); | 49 | IRCTab::m_notificationColor = config.readEntry("NotificationColor", "#AA3300"); |
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 | } |
52 | 53 | ||
53 | void MainWindow::selected(QWidget *) { | 54 | void MainWindow::selected(QWidget *) { |
@@ -60,7 +61,6 @@ void MainWindow::addTab(IRCTab *tab) { | |||
60 | connect(tab, SIGNAL(ping (const QString&)), this, SLOT(slotPing(const QString&))); | 61 | connect(tab, SIGNAL(ping (const QString&)), this, SLOT(slotPing(const QString&))); |
61 | connect(tab, SIGNAL(nextTab()), this, SLOT(slotNextTab())); | 62 | connect(tab, SIGNAL(nextTab()), this, SLOT(slotNextTab())); |
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 | ||
65 | m_tabWidget->addTab(tab, tab->title()); | 65 | m_tabWidget->addTab(tab, tab->title()); |
66 | m_tabWidget->showPage(tab); | 66 | m_tabWidget->showPage(tab); |
@@ -73,12 +73,24 @@ void MainWindow::changeEvent(IRCTab *tab) { | |||
73 | m_tabWidget->setTabColor(tab->id(), blue); | 73 | m_tabWidget->setTabColor(tab->id(), blue); |
74 | } | 74 | } |
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 | } |
83 | 95 | ||
84 | void MainWindow::newConnection() { | 96 | void MainWindow::newConnection() { |
@@ -117,13 +129,7 @@ void MainWindow::slotPrevTab() { | |||
117 | m_tabWidget->setCurrentPage ( i-1 ); | 129 | m_tabWidget->setCurrentPage ( i-1 ); |
118 | } | 130 | } |
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(); |
128 | } | 134 | } |
129 | 135 | ||