//============================================================================= // // File : channelsjoinwindow.cpp // Creation date : Thu Nov 6 2001 12:41:18 by Juanjo �varez // // This file is part of the KVirc irc client distribution // Copyright (C) 2001-2003 Szymon Stefanek (pragma at kvirc dot net) // // This program is FREE software. You can redistribute it and/or // modify it under the linkss of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your opinion) any later version. // // This program is distributed in the HOPE that it will be USEFUL, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, write to the Free Software Foundation, // Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // //============================================================================= #include "channelsjoinwindow.h" #include "kvi_locale.h" #include "kvi_options.h" #include "kvi_selectors.h" #include "kvi_app.h" #include "kvi_string.h" #include "kvi_iconmanager.h" #include "kvi_console.h" #include "kvi_regchan.h" #include "kvi_kvs_script.h" #include #include #include "kvi_tal_listview.h" #include #include #include #include #ifdef COMPILE_USE_QT4 #include #else #include #endif #include extern KviChannelsJoinWindow * g_pChannelsWindow; extern TQRect g_rectChannelsJoinGeometry; // kvi_app.cpp extern KVIRC_API KviRegisteredChannelDataBase * g_pRegisteredChannelDataBase; KviChannelsJoinWindow::KviChannelsJoinWindow(TQWidget * par, const char * name) : TQDialog(par,name) { m_pConsole=0; setCaption(__tr2qs("Join Channels")); setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL))); TQGridLayout * g = new TQGridLayout(this,4,2,4,8); m_pListView = new KviTalListView(this); m_pListView->addColumn(__tr2qs("Channel")); m_pListView->setRootIsDecorated(true); m_pListView->setSelectionMode(KviTalListView::Single); g->addMultiCellWidget(m_pListView,0,0,0,1); connect(m_pListView,TQT_SIGNAL(clicked(KviTalListViewItem *)),this,TQT_SLOT(itemClicked(KviTalListViewItem *))); connect(m_pListView,TQT_SIGNAL(doubleClicked(KviTalListViewItem *)),this,TQT_SLOT(itemDoubleClicked(KviTalListViewItem *))); m_pGroupBox = new KviTalGroupBox(2,Qt::Horizontal,__tr2qs("Channel" ),this); TQString szMsg = __tr2qs("Name"); szMsg.append(":"); TQLabel * l = new TQLabel(szMsg,m_pGroupBox); m_pChannelEdit = new TQLineEdit(m_pGroupBox); connect(m_pChannelEdit,TQT_SIGNAL(returnPressed()), this, TQT_SLOT(editReturnPressed())); connect(m_pChannelEdit,TQT_SIGNAL(textChanged(const TQString &)),this,TQT_SLOT(editTextChanged(const TQString &))); szMsg = __tr2qs("Password"); szMsg.append(":"); l = new TQLabel(szMsg,m_pGroupBox); m_pPass = new TQLineEdit(m_pGroupBox); m_pPass->setEchoMode(TQLineEdit::Password); g->addMultiCellWidget(m_pGroupBox,1,1,0,1); m_pJoinButton = new TQPushButton(__tr2qs("&Join"),this); // Join on return pressed m_pJoinButton->setDefault(true); connect(m_pJoinButton,TQT_SIGNAL(clicked()),this,TQT_SLOT(joinClicked())); #ifdef COMPILE_USE_QT4 g->addMultiCellWidget(m_pJoinButton,2,2,0,1,TQt::AlignHCenter); #else g->addMultiCellWidget(m_pJoinButton,2,2,0,1,AlignHCenter); #endif m_pShowAtStartupCheck = new KviStyledCheckBox(__tr2qs("Show this window after connecting"),this); m_pShowAtStartupCheck->setChecked(KVI_OPTION_BOOL(KviOption_boolShowChannelsJoinOnIrc)); g->addWidget(m_pShowAtStartupCheck,3,0); TQPushButton * cancelButton = new TQPushButton(__tr2qs("Close"),this); connect(cancelButton,TQT_SIGNAL(clicked()),this,TQT_SLOT(cancelClicked())); g->addWidget(cancelButton,3,1); /* KviTalHBox * hb = new KviTalHBox(this); hb->setSpacing(4); TQPushButton * namesButton = new TQPushButton("/names", hb); connect(namesButton,TQT_SIGNAL(clicked()),this,TQT_SLOT(namesClicked())); TQPushButton * whoButton = new TQPushButton("/who", hb); connect(whoButton,TQT_SIGNAL(clicked()),this,TQT_SLOT(whoClicked())); g->addWidget(hb,2,0); */ g->setRowStretch(0,1); g->setColStretch(0,1); fillListView(); if(g_rectChannelsJoinGeometry.y() < 5)g_rectChannelsJoinGeometry.setY(5); resize(g_rectChannelsJoinGeometry.width(),g_rectChannelsJoinGeometry.height()); move(g_rectChannelsJoinGeometry.x(),g_rectChannelsJoinGeometry.y()); enableJoin(); } KviChannelsJoinWindow::~KviChannelsJoinWindow() { KVI_OPTION_BOOL(KviOption_boolShowChannelsJoinOnIrc) = m_pShowAtStartupCheck->isChecked(); g_rectChannelsJoinGeometry = TQRect(pos().x(),pos().y(),size().width(),size().height()); g_pChannelsWindow = 0; } void KviChannelsJoinWindow::setConsole(KviConsole * pConsole) { m_pConsole=pConsole; fillListView(); } void KviChannelsJoinWindow::fillListView() { m_pListView->clear(); m_pListView->header()->hide(); KviTalListViewItem * par = new KviTalListViewItem(m_pListView,__tr2qs("Recent Channels")); par->setOpen(true); KviTalListViewItem * chld; if(m_pConsole) { TQStringList* pList=g_pApp->getRecentChannels(m_pConsole->currentNetworkName()); if(pList) { for(TQStringList::Iterator it = pList->begin(); it != pList->end(); ++it) { chld = new KviTalListViewItem(par,*it); chld->setPixmap(0,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL))); } } } // FIXME: Registered channels go here! par = new KviTalListViewItem(m_pListView,__tr2qs("Registered Channels")); par->setOpen(true); KviPointerHashTable * d = g_pRegisteredChannelDataBase->channelDict(); if(d) { KviPointerHashTableIterator it(*d); while(it.current()) { chld = new KviTalListViewItem(par,it.currentKey()); chld->setPixmap(0,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL))); ++it; } } } void KviChannelsJoinWindow::itemClicked(KviTalListViewItem * it) { if(!it)return; if(!it->parent())return; KviStr tmp = it->text(0); m_pChannelEdit->setText(tmp.ptr()); enableJoin(); } void KviChannelsJoinWindow::itemDoubleClicked(KviTalListViewItem * it) { if(!it)return; if(!it->parent())return; KviStr tmp = it->text(0); m_pChannelEdit->setText(tmp.ptr()); enableJoin(); joinClicked(); } void KviChannelsJoinWindow::editTextChanged(const TQString &) { enableJoin(); } void KviChannelsJoinWindow::enableJoin() { KviStr tmp = m_pChannelEdit->text(); KviConsole * c = g_pApp->topmostConnectedConsole(); if(c) { if(tmp.isEmpty()) m_pJoinButton->setEnabled(false); else m_pJoinButton->setEnabled(true); } else { m_pListView->setEnabled(false); m_pGroupBox->setEnabled(false); m_pJoinButton->setEnabled(false); } } void KviChannelsJoinWindow::cancelClicked() { delete this; } void KviChannelsJoinWindow::joinClicked() { KviStr pass = m_pPass->text(); KviStr tmp = m_pChannelEdit->text(); if(tmp.isEmpty())return; KviStr command(KviStr::Format,"join %s %s",tmp.ptr(),pass.ptr()); KviConsole * c = g_pApp->topmostConnectedConsole(); if(!c)return; // no connection KviWindow * w = g_pActiveWindow; if(w->console() != c)w = c; KviKvsScript::run(command.ptr(),w); m_pChannelEdit->setText(""); m_pPass->setText(""); } /* void KviChannelsJoinWindow::whoClicked() { KviStr tmp = m_pChannelEdit->text(); if(!tmp.isEmpty())doCmd("who", tmp.ptr()); } void KviChannelsJoinWindow::namesClicked() { KviStr tmp = m_pChannelEdit->text(); //FIXME: I must be a nice guy and implement /names in the core... if(!tmp.isEmpty())doCmd("raw names", tmp.ptr()); } void KviChannelsJoinWindow::itemDoubleClicked(KviTalListBoxItem * it) { if (it == 0)return; KviStr tmp = it->text(); doCmd("join", tmp.ptr()); // if(KVI_OPTION_BOOL(KviOption_boolCloseChannelsJoinAfterJoin)) // g_pApp->collectGarbage(this); } */ void KviChannelsJoinWindow::editReturnPressed() { joinClicked(); } void KviChannelsJoinWindow::closeEvent(TQCloseEvent *e) { e->ignore(); delete this; } #include "m_channelsjoinwindow.moc"