1
//=============================================================================
3
// File : kvi_selectors.cpp
4
// Creation date : Mon Nov 13 2000 15:22:12 CEST by Szymon Stefanek
6
// This file is part of the KVirc irc client distribution
7
// Copyright (C) 2000-2008 Szymon Stefanek (pragma at kvirc dot net)
9
// This program is FREE software. You can redistribute it and/or
10
// modify it under the terms of the GNU General Public License
11
// as published by the Free Software Foundation; either version 2
12
// of the License, or (at your opinion) any later version.
14
// This program is distributed in the HOPE that it will be USEFUL,
15
// but WITHOUT ANY WARRANTY; without even the implied warranty of
16
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17
// See the GNU General Public License for more details.
19
// You should have received a copy of the GNU General Public License
20
// along with this program. If not, write to the Free Software Foundation,
21
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23
//=============================================================================
26
#define _KVI_SELECTORS_CPP_
28
#include "kvi_selectors.h"
29
#include "kvi_locale.h"
30
#include "kvi_options.h"
31
#include "kvi_mirccntrl.h"
32
#include "kvi_filedialog.h"
33
#include "kvi_kvs_script.h"
34
#include "kvi_tal_popupmenu.h"
39
#include <QColorDialog>
41
#include <QFontDialog>
42
#include <QAbstractItemView>
44
KviBoolSelector::KviBoolSelector(QWidget * par,const QString & txt,bool *pOption,bool bEnabled)
45
: QCheckBox(txt,par), KviSelectorInterface()
52
void KviBoolSelector::setEnabled(bool bEnabled)
54
QCheckBox::setEnabled(bEnabled);
57
void KviBoolSelector::setNotEnabled(bool bNotEnabled)
59
setEnabled(!bNotEnabled);
62
void KviBoolSelector::commit()
64
*m_pOption = isChecked();
67
KviUIntSelector::KviUIntSelector(QWidget * par,const QString & txt,unsigned int *pOption,
68
unsigned int uLowBound,unsigned int uHighBound,unsigned int uDefault,bool bEnabled,bool bShortInt)
69
: KviTalHBox(par) , KviSelectorInterface()
71
m_pLabel = new QLabel(txt,this);
72
//m_pLineEdit = new QLineEdit(this);
73
//m_pLineEdit->setMaximumWidth(150);
74
m_pSpinBox = new QSpinBox(this);
76
m_bIsShortInt = bShortInt;
82
m_uLowBound = uLowBound;
83
m_uHighBound = uHighBound;
84
m_uDefault = uDefault;
86
m_pSpinBox->setMinimum(m_uLowBound);
87
m_pSpinBox->setMaximum(m_uHighBound);
89
//KviStr tmp(KviStr::Format,"%u",bShortInt ? (unsigned int) *((unsigned short int *)pOption) : *pOption);
90
//m_pLineEdit->setText(tmp.ptr());
91
m_pSpinBox->setValue(bShortInt ? (unsigned int) *((unsigned short int *)pOption) : *pOption);
94
setStretchFactor(m_pLabel,1);
97
void KviUIntSelector::setPrefix(const QString & txt)
99
m_pSpinBox->setPrefix(txt);
102
void KviUIntSelector::setSuffix(const QString & txt)
104
m_pSpinBox->setSuffix(txt);
107
void KviUIntSelector::commit()
109
KviStr tmp = m_pSpinBox->cleanText();
111
unsigned int val = tmp.toUInt(&bOk);
112
if(!bOk)val = m_uDefault;
113
if(m_uHighBound > m_uLowBound)
115
if(val < m_uLowBound)val = m_uLowBound;
116
else if(val > m_uHighBound)val = m_uHighBound;
119
if(m_bIsShortInt)*((unsigned short int *)m_pOption) = (unsigned short int)val;
120
else *m_pOption = val;
123
void KviUIntSelector::setEnabled(bool bEnabled)
125
KviTalHBox::setEnabled(bEnabled);
126
m_pLabel->setEnabled(bEnabled);
127
m_pSpinBox->setEnabled(bEnabled);
131
KviStringSelector::KviStringSelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled)
132
: KviTalHBox(par) , KviSelectorInterface()
134
m_pLabel = new QLabel(txt,this);
135
m_pLineEdit = new QLineEdit(this);
136
//m_pLineEdit->setMinimumWidth(200);
137
QString tmp = *pOption;
138
m_pLineEdit->setText(tmp);
141
setStretchFactor(m_pLineEdit,1);
145
setEnabled(bEnabled);
148
KviStringSelector::~KviStringSelector()
152
void KviStringSelector::commit()
154
QString tmp = m_pLineEdit->text();
158
void KviStringSelector::setEnabled(bool bEnabled)
160
KviTalHBox::setEnabled(bEnabled);
161
m_pLineEdit->setEnabled(bEnabled);
162
m_pLabel->setEnabled(bEnabled);
165
void KviStringSelector::setText(const QString& text){
166
m_pLineEdit->setText(text);
169
KviPasswordSelector::KviPasswordSelector(QWidget * par,const QString & txt,QString *pOption,bool bEnabled)
170
: KviTalHBox(par) , KviSelectorInterface()
175
m_pLabel = new QLabel(txt,this);
176
m_pLineEdit = new QLineEdit(this);
178
m_pCheckBox = new QCheckBox(this);
179
m_pLineEdit->setEchoMode(QLineEdit::Password);
180
m_pCheckBox->setCheckState(Qt::Checked);
181
connect(m_pCheckBox,SIGNAL(stateChanged(int)), this, SLOT(checkToggled(int)));
182
//m_pLineEdit->setMinimumWidth(200);
183
QString tmp = *pOption;
184
m_pLineEdit->setText(tmp);
186
setStretchFactor(m_pLineEdit,1);
190
setEnabled(bEnabled);
193
void KviPasswordSelector::checkToggled(int state)
195
if(state == Qt::Checked)
197
m_pLineEdit->setEchoMode(QLineEdit::Password);
199
m_pLineEdit->setEchoMode(QLineEdit::Normal);
203
KviPasswordSelector::~KviPasswordSelector()
207
void KviPasswordSelector::commit()
209
QString tmp = m_pLineEdit->text();
213
void KviPasswordSelector::setEnabled(bool bEnabled)
215
KviTalHBox::setEnabled(bEnabled);
216
m_pLineEdit->setEnabled(bEnabled);
217
m_pLabel->setEnabled(bEnabled);
218
m_pCheckBox->setEnabled(bEnabled);
221
void KviPasswordSelector::setText(const QString& text){
222
m_pLineEdit->setText(text);
225
KviPasswordLineEdit::KviPasswordLineEdit(QWidget * par)
231
m_pLineEdit = new QLineEdit(this);
233
m_pCheckBox = new QCheckBox(this);
234
m_pLineEdit->setEchoMode(QLineEdit::Password);
235
m_pCheckBox->setCheckState(Qt::Checked);
236
connect(m_pCheckBox,SIGNAL(stateChanged(int)), this, SLOT(checkToggled(int)));
237
//m_pLineEdit->setMinimumWidth(200);
238
setStretchFactor(m_pLineEdit,1);
241
void KviPasswordLineEdit::checkToggled(int state)
243
if(state == Qt::Checked)
245
m_pLineEdit->setEchoMode(QLineEdit::Password);
247
m_pLineEdit->setEchoMode(QLineEdit::Normal);
251
KviPasswordLineEdit::~KviPasswordLineEdit()
255
QString KviPasswordLineEdit::text()
257
return m_pLineEdit->text();
260
void KviPasswordLineEdit::setEnabled(bool bEnabled)
262
KviTalHBox::setEnabled(bEnabled);
263
m_pLineEdit->setEnabled(bEnabled);
264
m_pCheckBox->setEnabled(bEnabled);
267
void KviPasswordLineEdit::setText(const QString& text){
268
m_pLineEdit->setText(text);
271
KviPixmapPreview::KviPixmapPreview(QWidget * par)
274
m_pLabPixmap = new QLabel(this);
275
setWidget(m_pLabPixmap);
276
setBackgroundRole(QPalette::Dark);
279
KviPixmapPreview::~KviPixmapPreview()
281
//delete m_pLabPixmap;
284
void KviPixmapPreview::setPixmap(KviPixmap * pix)
288
m_pLabPixmap->resize(pix->pixmap()->size());
289
m_pLabPixmap->setPixmap(*pix->pixmap());
290
//setWidget(m_pLabPixmap);
294
KviPixmapSelector::KviPixmapSelector(QWidget * par,const QString & txt,KviPixmap * pOption,bool bEnabled)
295
: QWidget(par), KviSelectorInterface()
297
QGridLayout * g = new QGridLayout(this);
300
m_localPixmap = *pOption;
302
m_pCheckBox = new QCheckBox(txt,this);
303
m_pCheckBox->setChecked(m_localPixmap.pixmap());
304
connect(m_pCheckBox,SIGNAL(toggled(bool)),this,SLOT(checkBoxToggled(bool)));
306
g->addWidget(m_pCheckBox,0,0,1,2);
307
// g->addMultiCellWidget(m_pCheckBox,0,0,0,1);
309
m_pPreview = new KviPixmapPreview(this);
310
m_pPreview->setPixmap(&m_localPixmap);
311
g->addWidget(m_pPreview,1,0,1,2);
312
// g->addMultiCellWidget(m_pPreview,1,1,0,1);
314
m_pFileNameLabel = new QLabel(this);
315
m_pFileNameLabel->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
316
if(m_localPixmap.pixmap())m_pFileNameLabel->setText(m_localPixmap.path());
317
g->addWidget(m_pFileNameLabel,2,0);
319
m_pChooseButton = new QPushButton("...",this);
320
g->addWidget(m_pChooseButton,2,1);
321
connect(m_pChooseButton,SIGNAL(clicked()),this,SLOT(choosePixmap()));
323
g->setRowStretch(1,1);
324
g->setColumnStretch(0,1);
326
setEnabled(bEnabled);
329
KviPixmapSelector::~KviPixmapSelector()
334
void KviPixmapSelector::checkBoxToggled(bool)
336
setEnabled(isEnabled());
339
void KviPixmapSelector::commit()
341
if(m_pCheckBox->isChecked())
343
*m_pOption = m_localPixmap;
345
*m_pOption = KviPixmap(); // null pixmap
349
void KviPixmapSelector::choosePixmap()
352
if(KviFileDialog::askForOpenFileName(tmp,__tr("Choose an Image File - KVIrc")))
358
void KviPixmapSelector::setImagePath(const QString &path)
360
m_localPixmap.load(path);
361
m_pPreview->setPixmap(&m_localPixmap);
363
if(m_localPixmap.isNull())
365
QString tmp = __tr2qs("Unloadable");
368
m_pFileNameLabel->setText(tmp);
369
m_pCheckBox->setChecked(false);
371
m_pCheckBox->setChecked(true);
372
m_pFileNameLabel->setText(path);
375
setEnabled(isEnabled());
378
void KviPixmapSelector::setEnabled(bool bEnabled)
380
QWidget::setEnabled(bEnabled);
381
m_pCheckBox->setEnabled(bEnabled);
382
m_pPreview->setEnabled(bEnabled && m_pCheckBox->isChecked());
383
m_pFileNameLabel->setEnabled(bEnabled && m_pCheckBox->isChecked());
384
m_pChooseButton->setEnabled(bEnabled && m_pCheckBox->isChecked());
388
// FIXME: #warning "Option for DIR_MUST_EXISTS...(this widget could be turned into a file selector too)"
389
KviFileSelector::KviFileSelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled,unsigned int uFlags,const QString &szFilter)
390
: QWidget(par), KviSelectorInterface()
392
m_Layout = new QGridLayout(this);
395
m_szFilter = szFilter;
396
m_pLabel = new QLabel(txt,this);
398
if(uFlags & VerticalLayout)
399
m_Layout->addWidget(m_pLabel,0,0,1,2);
401
m_Layout->addWidget(m_pLabel,0,0);
403
m_pLineEdit = new QLineEdit(this);
405
if(uFlags & VerticalLayout)
406
m_Layout->addWidget(m_pLineEdit,1,0);
408
m_Layout->addWidget(m_pLineEdit,0,1);
410
//m_pLineEdit->setMinimumWidth(200);
411
m_pLineEdit->setText(*pOption);
413
m_pButton = new QPushButton(__tr2qs("&Browse..."),this);
414
connect(m_pButton,SIGNAL(clicked()),this,SLOT(browseClicked()));
416
if(uFlags & VerticalLayout)
417
m_Layout->addWidget(m_pButton,1,1);
419
m_Layout->addWidget(m_pButton,0,2);
421
m_Layout->setSpacing(4);
423
if(uFlags & VerticalLayout)
424
m_Layout->setColumnStretch(0,1);
426
m_Layout->setColumnStretch(1,1);
430
setEnabled(bEnabled);
433
void KviFileSelector::commit()
435
*m_pOption = m_pLineEdit->text();
438
void KviFileSelector::setEnabled(bool bEnabled)
440
QWidget::setEnabled(bEnabled);
441
m_pLineEdit->setEnabled(bEnabled);
442
m_pLabel->setEnabled(bEnabled);
443
m_pButton->setEnabled(bEnabled);
446
void KviFileSelector::browseClicked()
451
void KviFileSelector::setSelection(const QString &szSelection)
453
m_pLineEdit->setText(szSelection);
456
void KviFileSelector::select()
459
QString tmp = *m_pOption;
460
if(m_uFlags & ChooseSaveFileName)
462
if(KviFileDialog::askForSaveFileName(tmp,__tr2qs("Choose a File - KVIrc"),tmp,m_szFilter,true,!(m_uFlags & DontConfirmOverwrite)))
464
m_pLineEdit->setText(tmp);
465
emit selectionChanged(tmp);
468
if(KviFileDialog::askForOpenFileName(tmp,__tr2qs("Choose a File - KVIrc"),tmp,m_szFilter,true))
470
m_pLineEdit->setText(tmp);
471
emit selectionChanged(tmp);
477
KviDirectorySelector::KviDirectorySelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled,unsigned int uFlags)
478
: KviFileSelector(par,txt,pOption,bEnabled,uFlags)
482
void KviDirectorySelector::select()
485
if(KviFileDialog::askForDirectoryName(szTmp,__tr2qs("Choose a Directory - KVIrc"),""))
487
m_pLineEdit->setText(szTmp);
488
emit selectionChanged(szTmp);
493
KviStringListSelector::KviStringListSelector(QWidget * par,const QString & txt,QStringList * pOption,bool bEnabled)
494
: KviTalVBox(par), KviSelectorInterface()
496
m_pLabel = new QLabel(txt,this);
497
m_pListWidget = new KviTalListWidget(this);
498
m_pLineEdit = new QLineEdit(this);
499
connect(m_pLineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(textChanged(const QString &)));
500
connect(m_pLineEdit,SIGNAL(returnPressed()),this,SLOT(addClicked()));
501
KviTalHBox * hBox = new KviTalHBox(this);
502
m_pAddButton = new QPushButton(__tr2qs("A&dd"),hBox);
503
connect(m_pAddButton,SIGNAL(clicked()),this,SLOT(addClicked()));
504
m_pRemoveButton = new QPushButton(__tr2qs("Re&move"),hBox);
505
connect(m_pRemoveButton,SIGNAL(clicked()),this,SLOT(removeClicked()));
507
m_pListWidget->addItems(*pOption);
508
m_pListWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
509
connect(m_pListWidget,SIGNAL(itemSelectionChanged()),this,SLOT(itemSelectionChanged()));
511
setStretchFactor(m_pListWidget,1);
512
setEnabled(bEnabled);
515
KviStringListSelector::~KviStringListSelector()
519
void KviStringListSelector::itemSelectionChanged()
522
if (m_pListWidget->selectedItems().count()) bSomeSelected = true;
523
else bSomeSelected = false;
525
m_pRemoveButton->setEnabled(isEnabled() && bSomeSelected);
528
void KviStringListSelector::textChanged(const QString &str)
531
m_pAddButton->setEnabled((str.length() > 0) && isEnabled());
534
void KviStringListSelector::setEnabled(bool bEnabled)
536
KviTalVBox::setEnabled(bEnabled);
537
m_pLineEdit->setEnabled(bEnabled);
538
m_pLabel->setEnabled(bEnabled);
539
QString txt = m_pLineEdit->text();
541
m_pAddButton->setEnabled(bEnabled && (txt.length() > 0));
544
if (m_pListWidget->selectedItems().count()) bSomeSelected = true;
545
else bSomeSelected = false;
547
m_pRemoveButton->setEnabled(bEnabled && bSomeSelected);
548
m_pListWidget->setEnabled(bEnabled);
551
void KviStringListSelector::commit()
553
unsigned int uCount = m_pListWidget->count();
555
for(unsigned int u=0;u<uCount;u++)
557
QString str = m_pListWidget->item(u)->text();
559
if(str.length() > 0)m_pOption->append(str);
563
void KviStringListSelector::addClicked()
565
QString str = m_pLineEdit->text();
567
if(str.length() > 0)m_pListWidget->insertItem(m_pListWidget->count(),str);
568
m_pLineEdit->setText("");
571
void KviStringListSelector::removeClicked()
574
while(u<m_pListWidget->count())
576
if(m_pListWidget->item(u)->isSelected())
578
m_pListWidget->takeItem(u);
586
KviColorSelector::KviColorSelector(QWidget * par,const QString & txt,QColor * pOption,bool bEnabled)
587
: KviTalHBox(par), KviSelectorInterface()
589
m_pLabel = new QLabel(txt,this);
591
m_pButton = new QPushButton(" ",this);
592
// m_pButton->setMinimumWidth(150);
593
connect(m_pButton,SIGNAL(clicked()),this,SLOT(changeClicked()));
596
setStretchFactor(m_pLabel,1);
598
setButtonPalette(pOption);
602
setEnabled(bEnabled);
605
void KviColorSelector::setButtonPalette(QColor * pOption)
607
QPalette pal(*pOption,palette().background().color());
608
m_memColor = *pOption;
609
m_pButton->setPalette(pal);
613
m_pButton->setIcon(pix);
616
void KviColorSelector::forceColor(QColor clr)
618
setButtonPalette(&clr);
621
void KviColorSelector::changeClicked()
623
QColor tmp = QColorDialog::getColor(m_memColor);
624
if(tmp.isValid())setButtonPalette(&tmp);
627
void KviColorSelector::commit()
629
*m_pOption = m_memColor;
632
void KviColorSelector::setEnabled(bool bEnabled)
634
KviTalHBox::setEnabled(bEnabled);
635
m_pLabel->setEnabled(bEnabled);
636
m_pButton->setEnabled(bEnabled);
640
KviFontSelector::KviFontSelector(QWidget * par,const QString & txt,QFont * pOption,bool bEnabled)
641
: KviTalHBox(par), KviSelectorInterface()
643
m_pLabel = new QLabel(txt,this);
645
m_pButton = new QPushButton("",this);
646
// m_pButton->setMinimumWidth(150);
647
connect(m_pButton,SIGNAL(clicked()),this,SLOT(changeClicked()));
650
setStretchFactor(m_pLabel,1);
652
setButtonFont(pOption);
656
setEnabled(bEnabled);
659
void KviFontSelector::setButtonFont(QFont * pOption)
661
m_pButton->setText(pOption->family());
662
m_pButton->setFont(*pOption);
665
void KviFontSelector::changeClicked()
668
QFont tmp = QFontDialog::getFont(&bOk,m_pButton->font());
673
void KviFontSelector::commit()
675
*m_pOption = m_pButton->font();
678
void KviFontSelector::setEnabled(bool bEnabled)
680
KviTalHBox::setEnabled(bEnabled);
681
m_pLabel->setEnabled(bEnabled);
682
m_pButton->setEnabled(bEnabled);
686
KviMircTextColorSelector::KviMircTextColorSelector(QWidget * par,const QString &txt,unsigned int * uFore,unsigned int * uBack,bool bEnabled)
687
: KviTalHBox(par), KviSelectorInterface()
689
m_pLabel = new QLabel(txt,this);
691
m_pButton = new QPushButton(__tr2qs("Sample Text"),this);
692
// m_pButton->setMinimumWidth(150);
693
connect(m_pButton,SIGNAL(clicked()),this,SLOT(buttonClicked()));
696
setStretchFactor(m_pLabel,1);
706
setEnabled(bEnabled);
708
m_pContextPopup = new KviTalPopupMenu(this);
710
m_pForePopup = new KviTalPopupMenu(this);
711
connect(m_pForePopup,SIGNAL(activated(int)),this,SLOT(foreSelected(int)));
713
for(i=0;i<KVI_MIRCCOLOR_MAX_FOREGROUND;i++)
716
tmp.fill(KVI_OPTION_MIRCCOLOR(i));
717
int id = m_pForePopup->insertItem(tmp,QString("x"));
718
m_pForePopup->setItemParameter(id,i);
720
m_pContextPopup->insertItem(__tr2qs("Foreground"),m_pForePopup);
722
m_pBackPopup = new KviTalPopupMenu(this);
723
connect(m_pBackPopup,SIGNAL(activated(int)),this,SLOT(backSelected(int)));
724
i = m_pBackPopup->insertItem(__tr2qs("Transparent"));
725
m_pBackPopup->setItemParameter(i,KVI_TRANSPARENT);
726
for(i=0;i<KVI_MIRCCOLOR_MAX_BACKGROUND;i++)
729
tmp.fill(KVI_OPTION_MIRCCOLOR(i));
730
int id = m_pBackPopup->insertItem(tmp,QString("x"));
731
m_pBackPopup->setItemParameter(id,i);
733
m_pContextPopup->insertItem(__tr2qs("Background"),m_pBackPopup);
736
KviMircTextColorSelector::~KviMircTextColorSelector()
740
void KviMircTextColorSelector::commit()
746
void KviMircTextColorSelector::setEnabled(bool bEnabled)
748
KviTalHBox::setEnabled(bEnabled);
749
m_pLabel->setEnabled(bEnabled);
750
m_pButton->setEnabled(bEnabled);
753
void KviMircTextColorSelector::setButtonPalette()
757
if(m_uBack > KVI_MIRCCOLOR_MAX_BACKGROUND)
759
if(m_uBack != KVI_TRANSPARENT)m_uBack = KVI_TRANSPARENT;
762
pal = QPalette(KVI_OPTION_MIRCCOLOR(m_uBack));
765
if(m_uFore > KVI_MIRCCOLOR_MAX_FOREGROUND)m_uFore = KVI_MIRCCOLOR_MAX_FOREGROUND;
767
pal.setColor(QPalette::ButtonText,KVI_OPTION_MIRCCOLOR(m_uFore));
768
pal.setColor(QPalette::Text,KVI_OPTION_MIRCCOLOR(m_uFore));
770
m_pButton->setPalette(pal);
773
void KviMircTextColorSelector::buttonClicked()
775
QPoint p = m_pButton->mapToGlobal(QPoint(0,m_pButton->height()));
776
m_pContextPopup->popup(p);
779
void KviMircTextColorSelector::foreSelected(int id)
782
m_uFore = m_pForePopup->itemParameter(id);
786
void KviMircTextColorSelector::backSelected(int id)
789
m_uBack = m_pBackPopup->itemParameter(id);
793
KviSoundSelector::KviSoundSelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled)
794
:KviFileSelector(par,txt,pOption,bEnabled)
796
m_pPlayButton = new QPushButton(__tr2qs("Play"),this);
797
connect(m_pPlayButton,SIGNAL(clicked()),this,SLOT(playSound()));
800
if(m_uFlags & VerticalLayout)
801
m_Layout->addWidget(m_pPlayButton,2,1);
803
m_Layout->addWidget(m_pPlayButton,0,3);
806
KviSoundSelector::~KviSoundSelector()
810
void KviSoundSelector::playSound()
812
KviKvsScript::run("snd.play $0",0,new KviKvsVariantList(new KviKvsVariant(m_pLineEdit->text())));
815
void KviSoundSelector::setEnabled(bool bEnabled)
817
KviFileSelector::setEnabled(bEnabled);
818
m_pPlayButton->setEnabled(bEnabled);
821
KviChanTreeViewItem::KviChanTreeViewItem(QTreeWidget* pList,QString szChan,QString szPass)
822
:QTreeWidgetItem(pList)
826
mask.fill('*',szPass.length());
831
KviChannelListSelector::KviChannelListSelector(QWidget * par,const QString & txt,QStringList * pOption,bool bEnabled)
832
: KviTalVBox(par), KviSelectorInterface()
834
m_pLabel = new QLabel(txt,this);
835
m_pTreeWidget = new QTreeWidget(this);
836
m_pTreeWidget->setRootIsDecorated(false);
837
m_pTreeWidget->setColumnCount(2);
838
QStringList columnLabels;
839
columnLabels.append(__tr2qs("Channel name"));
840
columnLabels.append(__tr2qs("Channel password"));
841
m_pTreeWidget->setHeaderLabels(columnLabels);
842
KviTalHBox* pEditsHBox = new KviTalHBox(this);
844
m_pChanLineEdit = new QLineEdit(pEditsHBox);
845
connect(m_pChanLineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(textChanged(const QString &)));
846
connect(m_pChanLineEdit,SIGNAL(returnPressed()),this,SLOT(addClicked()));
848
m_pPassLineEdit = new QLineEdit(pEditsHBox);
849
m_pPassLineEdit->setEchoMode(QLineEdit::Password);
850
connect(m_pPassLineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(textChanged(const QString &)));
851
connect(m_pPassLineEdit,SIGNAL(returnPressed()),this,SLOT(addClicked()));
854
KviTalHBox * hBox = new KviTalHBox(this);
855
m_pAddButton = new QPushButton(__tr2qs("A&dd"),hBox);
856
connect(m_pAddButton,SIGNAL(clicked()),this,SLOT(addClicked()));
857
m_pRemoveButton = new QPushButton(__tr2qs("Re&move"),hBox);
858
connect(m_pRemoveButton,SIGNAL(clicked()),this,SLOT(removeClicked()));
861
for ( QStringList::Iterator it = pOption->begin(); it != pOption->end(); ++it ) {
862
new KviChanTreeViewItem(m_pTreeWidget,(*it).section(':',0,0),(*it).section(':',1));
865
m_pTreeWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
866
m_pTreeWidget->setAllColumnsShowFocus(TRUE);
867
connect(m_pTreeWidget,SIGNAL(itemSelectionChanged()),this,SLOT(itemSelectionChanged()));
869
setStretchFactor(m_pTreeWidget,1);
870
setEnabled(bEnabled);
873
KviChannelListSelector::~KviChannelListSelector()
877
void KviChannelListSelector::commit()
880
register KviChanTreeViewItem* pItem;
881
for (int i=0;i<m_pTreeWidget->topLevelItemCount();i++)
883
pItem=(KviChanTreeViewItem*)m_pTreeWidget->topLevelItem(i);
884
m_pOption->append(pItem->text(0)+":"+pItem->pass());
888
void KviChannelListSelector::setEnabled(bool bEnabled)
890
m_pLabel->setEnabled(bEnabled);
891
m_pTreeWidget->setEnabled(bEnabled);
892
m_pChanLineEdit->setEnabled(bEnabled);
893
m_pPassLineEdit->setEnabled(bEnabled);
894
m_pAddButton->setEnabled(bEnabled);
895
m_pRemoveButton->setEnabled(bEnabled);
898
void KviChannelListSelector::textChanged(const QString &)
900
m_pAddButton->setEnabled(!m_pChanLineEdit->text().isEmpty());
903
void KviChannelListSelector::itemSelectionChanged()
907
void KviChannelListSelector::addClicked()
909
if(!m_pChanLineEdit->text().isEmpty())
911
new KviChanTreeViewItem(m_pTreeWidget,m_pChanLineEdit->text().trimmed(),m_pPassLineEdit->text().trimmed());
912
m_pChanLineEdit->clear();
913
m_pPassLineEdit->clear();
917
void KviChannelListSelector::removeClicked()
919
KviPointerList<QTreeWidgetItem> lst;
920
QList<QTreeWidgetItem *> items=m_pTreeWidget->selectedItems () ;
921
for (int i=0;i<items.count();i++)
923
lst.append((QTreeWidgetItem *)items.at(i));
925
lst.setAutoDelete(TRUE);
929
#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES
930
#include "kvi_selectors.moc"
931
#endif //!COMPILE_USE_STANDALONE_MOC_SOURCES