1
// =============================================================================
3
// --- kvi_maskeditor.cpp ---
5
// This file is part of the KVIrc IRC client distribution
6
// Copyright (C) 1999-2000 Szymon Stefanek (stefanek@tin.it)
8
// This program is FREE software. You can redistribute it and/or
9
// modify it under the terms of the GNU General Public License
10
// as published by the Free Software Foundation; either version 2
11
// of the License, or (at your opinion) any later version.
13
// This program is distributed in the HOPE that it will be USEFUL,
14
// but WITHOUT ANY WARRANTY; without even the implied warranty of
15
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
// See the GNU General Public License for more details.
18
// You should have received a copy of the GNU General Public License
19
// along with this program. If not, write to the Free Software Foundation,
20
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
// =============================================================================
24
#define _KVI_DEBUG_CHECK_RANGE_
25
#define _KVI_DEBUG_CLASS_NAME_ "KviMaskEditor"
29
#include "kvi_banmask.h"
30
#include "kvi_label.h"
31
#include "kvi_listview.h"
32
#include "kvi_locale.h"
33
#include "kvi_maskeditor.h"
34
#include "kvi_pushbutton.h"
36
KviMaskEditor::KviMaskEditor(QWidget *parent)
39
setFrameStyle(QFrame::WinPanel | QFrame::Raised);
40
setFocusPolicy(ClickFocus);
42
QGridLayout *g = new QGridLayout(this, 5, 1, 2, 2);
44
m_pLabel = new KviLabel("", this);
45
g->addWidget(m_pLabel, 0, 0);
48
m_pMaskBox = new KviListView(this);
49
m_pMaskBox->setFocusPolicy(ClickFocus);
50
m_pMaskBox->setFocusProxy(this);
51
m_pMaskBox->addColumn(_CHAR_2_QSTRING(_i18n_(" - Mask - List - ")));
52
m_pMaskBox->addColumn(_CHAR_2_QSTRING(_i18n_("Set by")));
53
m_pMaskBox->addColumn(_CHAR_2_QSTRING(_i18n_("Set at")));
54
m_pMaskBox->setMultiSelection(true);
55
g->addWidget(m_pMaskBox, 1, 0);
57
m_pRemoveMask = new KviPushButton(_i18n_("&Remove"), this);
58
m_pRemoveMask->setFocusPolicy(ClickFocus);
59
m_pRemoveMask->setFocusProxy(this);
60
connect(m_pRemoveMask, SIGNAL(clicked()), this, SLOT(removeMaskClicked()));
61
g->addWidget(m_pRemoveMask, 2, 0);
63
m_pCommit = new KviPushButton(_i18n_("&OK"), this);
64
m_pCommit->setFocusPolicy(ClickFocus);
65
m_pCommit->setFocusProxy(this);
66
connect(m_pCommit, SIGNAL(clicked()), this, SLOT(commitChanges()));
67
g->addWidget(m_pCommit, 3, 0);
69
KviPushButton *b = new KviPushButton(_i18n_("&Cancel"), this);
70
b->setFocusPolicy(ClickFocus);
71
b->setFocusProxy(this);
72
connect(b, SIGNAL(clicked()), this, SLOT(cancelClicked()));
73
g->addWidget(b, 4, 0);
76
KviMaskEditor::~KviMaskEditor()
81
void KviMaskEditor::doEdit(
82
QObject *receiver, const char *slot, QPtrList<KviBanMask> *maskList, const char *masksLabel, bool canCommit)
84
disconnect(this, SIGNAL(masksEditCompleted(const char *)), 0, 0);
85
connect(this, SIGNAL(masksEditCompleted(const char *)), receiver, slot);
86
KviStr mLabel(KviStr::Format, "<b>%s List</b>", masksLabel);
87
m_pLabel->setText(mLabel.ptr());
88
setMasks(maskList, masksLabel);
89
m_pCommit->setEnabled(canCommit);
90
m_pRemoveMask->setEnabled(canCommit && (m_pMaskBox->childCount() > 0));
91
m_szMasksRemoved = "";
96
void KviMaskEditor::setMasks(QPtrList<KviBanMask> *maskList, const char *masksLabel)
99
m_pMaskBox->setColumnText(0, _CHAR_2_QSTRING(masksLabel));
100
KviListViewItem *i = 0;
101
for( KviBanMask *b = maskList->first(); b; b = maskList->next() ) {
102
i = new KviListViewItem(m_pMaskBox,
103
_CHAR_2_QSTRING(b->mask.ptr()), _CHAR_2_QSTRING(b->setBy.ptr()), _CHAR_2_QSTRING(b->setAt.ptr())
108
void KviMaskEditor::setCanCommit(bool bCanCommit)
110
m_pCommit->setEnabled(bCanCommit);
111
m_pRemoveMask->setEnabled(bCanCommit && (m_pMaskBox->childCount() > 0));
114
void KviMaskEditor::removeMaskClicked()
116
KviListViewItem *it = m_pMaskBox->firstChild();
118
if( it->isSelected() ) {
119
if( m_szMasksRemoved.hasData() )
120
m_szMasksRemoved += " ";
121
m_szMasksRemoved += it->text(0);
122
KviListViewItem *tmp = it;
123
it = it->nextSibling();
125
} else it = it->nextSibling();
127
m_pRemoveMask->setEnabled(m_pMaskBox->childCount() > 0);
130
void KviMaskEditor::commitChanges()
132
emit masksEditCompleted(m_szMasksRemoved.ptr());
135
void KviMaskEditor::cancelClicked()
137
emit masksEditCompleted("");
140
#include "m_kvi_maskeditor.moc"