27 #include <QDomElement>
29 #include <QDomDocument>
30 #include <QXmlStreamWriter>
34 #include <kfiledialog.h>
35 #include <kinputdialog.h>
36 #include <kio/netaccess.h>
37 #include <kactioncollection.h>
40 #include <kmessagebox.h>
42 #include <ksqueezedtextlabel.h>
43 #include <kstandarddirs.h>
44 #include <kstandardaction.h>
46 #include <ktemporaryfile.h>
47 #include <kxmlguifactory.h>
50 #include <QPushButton>
53 #include <QTextStream>
55 #include <QVBoxLayout>
57 #include <QToolButton>
63 #include <KTreeWidgetSearchLine>
65 QAction *KWalletEditor::_newFolderAction =0;
66 QAction *KWalletEditor::_deleteFolderAction =0;
67 QAction *KWalletEditor::_exportAction =0;
68 QAction *KWalletEditor::_saveAsAction =0;
69 QAction *KWalletEditor::_mergeAction =0;
70 QAction *KWalletEditor::_importAction =0;
71 KAction *KWalletEditor::_newEntryAction =0;
72 KAction *KWalletEditor::_renameEntryAction =0;
73 KAction *KWalletEditor::_deleteEntryAction =0;
74 KAction *KWalletEditor::_copyPassAction =0;
75 QAction *KWalletEditor::_alwaysShowContentsAction =0;
76 QAction *KWalletEditor::_alwaysHideContentsAction =0;
82 :
QWidget(parent), _displayedItem(0), _actionCollection(0), _alwaysShowContents(false) {
86 _splitter->setStretchFactor(0, 1);
87 _splitter->setStretchFactor(1, 2);
88 _contextMenu =
new KMenu(
this);
91 _saveChanges->setIcon(KIcon(
QLatin1String(
"document-save" )));
97 _searchLine =
new KTreeWidgetSearchLine(_entryListFrame, _entryList);
98 _searchLine->setClickMessage(i18n(
"Search"));
103 _entryStack->setEnabled(
true);
107 _mapEditorShowHide =
new QCheckBox(i18n(
"&Show values"), _entryStack->widget(2));
108 connect(_mapEditorShowHide, SIGNAL(toggled(
bool)),
this, SLOT(showHideMapEditorValue(
bool)));
109 _mapEditor =
new KWMapEditor(_currentMap, _entryStack->widget(2));
114 KConfigGroup cg(KGlobal::config(),
"WalletEditor");
116 if (splitterSize.
size() != 2) {
117 splitterSize.
clear();
118 splitterSize.
append(_splitter->width()/2);
119 splitterSize.
append(_splitter->width()/2);
121 _splitter->setSizes(splitterSize);
122 _alwaysShowContents = cg.readEntry(
"AlwaysShowContents",
false);
124 _searchLine->setFocus();
131 SLOT(listContextMenuRequested(
QPoint)));
137 connect(_passwordValue, SIGNAL(textChanged()),
138 this, SLOT(entryEditted()));
139 connect(_mapEditor, SIGNAL(dirty()),
140 this, SLOT(entryEditted()));
142 connect(_undoChanges, SIGNAL(clicked()),
143 this, SLOT(restoreEntry()));
144 connect(_saveChanges, SIGNAL(clicked()),
145 this, SLOT(saveEntry()));
147 connect(_showContents, SIGNAL(clicked()),
148 this, SLOT(showPasswordContents()));
149 connect(_hideContents, SIGNAL(clicked()),
150 this, SLOT(hidePasswordContents()));
161 KConfigGroup cg(KGlobal::config(),
"WalletEditor");
162 cg.writeEntry(
"SplitterSize", _splitter->sizes());
163 cg.writeEntry(
"AlwaysShowContents", _alwaysShowContents);
177 Q_ASSERT(wallet != 0);
183 connect(_w, SIGNAL(walletOpened(
bool)),
this, SLOT(walletOpened(
bool)));
186 connect(_w, SIGNAL(folderListUpdated()),
this, SLOT(updateFolderList()));
194 showHideMapEditorValue(
false);
197 _searchLine->setFocus();
200 KActionCollection* KWalletEditor::actionCollection()
202 if (_actionCollection == 0) {
203 _actionCollection =
new KActionCollection(
this);
205 return _actionCollection;
208 void KWalletEditor::createActions(KActionCollection* actionCollection) {
209 _newFolderAction = actionCollection->addAction(
QLatin1String(
"create_folder" ));
210 _newFolderAction->
setText( i18n(
"&New Folder...") );
213 _deleteFolderAction = actionCollection->addAction(
QLatin1String(
"delete_folder" ) );
214 _deleteFolderAction->
setText( i18n(
"&Delete Folder") );
216 _mergeAction = actionCollection->addAction(
QLatin1String(
"wallet_merge" ));
217 _mergeAction->
setText( i18n(
"&Import Wallet...") );
219 _importAction= actionCollection->addAction(
QLatin1String(
"wallet_import" ) );
220 _importAction->
setText( i18n(
"&Import XML...") );
222 _exportAction = actionCollection->addAction(
QLatin1String(
"wallet_export" ) );
223 _exportAction->
setText( i18n(
"&Export as XML...") );
225 _saveAsAction = KStandardAction::saveAs(0, 0, actionCollection);
227 _copyPassAction = actionCollection->addAction(
QLatin1String(
"copy_action" ) );
228 _copyPassAction->setText( i18n(
"&Copy") );
229 _copyPassAction->setShortcut( Qt::Key_C + Qt::CTRL );
230 _copyPassAction->setEnabled(
false);
232 _newEntryAction = actionCollection->addAction(
QLatin1String(
"new_entry" ) );
233 _newEntryAction->setText( i18n(
"&New..." ) );
234 _newEntryAction->setShortcut( Qt::Key_Insert );
235 _newEntryAction->setEnabled(
false);
237 _renameEntryAction = actionCollection->addAction(
QLatin1String(
"rename_entry" ) );
238 _renameEntryAction->setText( i18n(
"&Rename" ) );
239 _renameEntryAction->setShortcut( Qt::Key_F2 );
240 _renameEntryAction->setEnabled(
false);
242 _deleteEntryAction = actionCollection->addAction(
QLatin1String(
"delete_entry" ) );
243 _deleteEntryAction->setText( i18n(
"&Delete" ) );
244 _deleteEntryAction->setShortcut( Qt::Key_Delete );
245 _deleteEntryAction->setEnabled(
false);
247 _alwaysShowContentsAction = actionCollection->addAction(
QLatin1String(
"always_show_contents" ));
248 _alwaysShowContentsAction->
setText( i18n(
"Always show contents") );
251 _alwaysHideContentsAction = actionCollection->addAction(
QLatin1String(
"always_hide_contents") );
252 _alwaysHideContentsAction->
setText( i18n(
"Always hide contents") );
256 void KWalletEditor::connectActions()
265 connect(_mergeAction, SIGNAL(triggered(
bool)), SLOT(importWallet()));
268 connect(_importAction, SIGNAL(triggered(
bool)), SLOT(importXML()));
271 connect(_exportAction, SIGNAL(triggered(
bool)), SLOT(exportXML()));
274 connect(_saveAsAction, SIGNAL(triggered(
bool)), SLOT(saveAs()));
277 connect(_newEntryAction, SIGNAL(triggered(
bool)), SLOT(newEntry()));
279 connect(_renameEntryAction, SIGNAL(triggered(
bool)), SLOT(renameEntry()));
281 connect(_deleteEntryAction, SIGNAL(triggered(
bool)), SLOT(deleteEntry()));
283 connect(_copyPassAction, SIGNAL(triggered(
bool)), SLOT(copyPassword()));
286 _showContents->addAction(_alwaysShowContentsAction);
287 _alwaysShowContentsAction->
setChecked(_alwaysShowContents);
288 connect(_alwaysShowContentsAction, SIGNAL(triggered(
bool)), SLOT(onAlwaysShowContents(
bool)));
290 _hideContents->addAction(_alwaysHideContentsAction);
291 _alwaysHideContentsAction->
setChecked(!_alwaysShowContents);
292 connect(_alwaysHideContentsAction, SIGNAL(triggered(
bool)), SLOT(onAlwaysHideContents(
bool)));
295 void KWalletEditor::disconnectActions()
304 disconnect(_mergeAction, SIGNAL(triggered(
bool)),
this, SLOT(importWallet()));
307 disconnect(_importAction, SIGNAL(triggered(
bool)),
this, SLOT(importXML()));
310 disconnect(_exportAction, SIGNAL(triggered(
bool)),
this, SLOT(exportXML()));
313 disconnect(_saveAsAction, SIGNAL(triggered(
bool)),
this, SLOT(saveAs()));
316 disconnect(_newEntryAction, SIGNAL(triggered(
bool)),
this, SLOT(newEntry()));
318 disconnect(_renameEntryAction, SIGNAL(triggered(
bool)),
this, SLOT(renameEntry()));
320 disconnect(_deleteEntryAction, SIGNAL(triggered(
bool)),
this, SLOT(deleteEntry()));
322 disconnect(_copyPassAction, SIGNAL(triggered(
bool)),
this, SLOT(copyPassword()));
325 disconnect(_alwaysShowContentsAction, SIGNAL(triggered(
bool)),
this, SLOT(onAlwaysShowContents(
bool)));
326 disconnect(_alwaysHideContentsAction, SIGNAL(triggered(
bool)),
this, SLOT(onAlwaysHideContents(
bool)));
337 void KWalletEditor::updateFolderList(
bool checkEntries) {
372 switch (_w->entryType(*j)) {
373 case KWallet::Wallet::Password:
376 case KWallet::Wallet::Stream:
379 case KWallet::Wallet::Map:
382 case KWallet::Wallet::Unknown:
393 _currentFolder.
clear();
394 _entryTitle->clear();
408 int rc = KMessageBox::warningContinueCancel(
this, i18n(
"Are you sure you wish to delete the folder '%1' from the wallet?", fi->
name()),
QString(),KStandardGuiItem::del());
409 if (rc == KMessageBox::Continue) {
410 bool rc = _w->removeFolder(fi->
name());
412 KMessageBox::sorry(
this, i18n(
"Error deleting folder."));
415 _currentFolder.
clear();
416 _entryTitle->clear();
431 n = KInputDialog::getText(i18n(
"New Folder"),
432 i18n(
"Please choose a name for the new folder:"),
442 int rc = KMessageBox::questionYesNo(
this, i18n(
"Sorry, that folder name is in use. Try again?"),
QString(), KGuiItem(i18n(
"Try Again")), KGuiItem(i18n(
"Do Not Try")));
456 void KWalletEditor::saveEntry() {
459 _saveChanges->setEnabled(
false);
460 _undoChanges->setEnabled(
false);
462 if (item && _w && item->
parent()) {
465 if (ci->
entryType() == KWallet::Wallet::Password) {
466 rc = _w->writePassword(item->
text(0), _passwordValue->toPlainText());
467 }
else if (ci->
entryType() == KWallet::Wallet::Map) {
469 rc = _w->writeMap(item->
text(0), _currentMap);
480 KMessageBox::sorry(
this, i18n(
"Error saving entry. Error code: %1", rc));
484 void KWalletEditor::restoreEntry() {
489 void KWalletEditor::entryEditted() {
490 _saveChanges->setEnabled(
true);
491 _undoChanges->setEnabled(
true);
497 if ( _saveChanges->isEnabled() && _displayedItem && (_displayedItem != item) ){
499 i18n(
"The contents of the current item has changed.\nDo you want to save changes?"))) {
502 _saveChanges->setEnabled(
false);
503 _undoChanges->setEnabled(
false);
510 _contextMenu->clear();
511 _contextMenu->setEnabled(
true);
513 _newEntryAction->setEnabled(
false);
514 _renameEntryAction->setEnabled(
false);
515 _deleteEntryAction->setEnabled(
false);
520 _contextMenu->addTitle(_contextMenu->fontMetrics().elidedText(
521 item->
text(0), Qt::ElideMiddle, 200 ) );
524 switch (item->
type()) {
534 _w->setFolder(fi->
name());
538 _contextMenu->addAction( _newEntryAction );
539 _contextMenu->addAction( _renameEntryAction );
540 _contextMenu->addAction( _deleteEntryAction );
541 _newEntryAction->setEnabled(
true);
542 _renameEntryAction->setEnabled(
true);
543 _deleteEntryAction->setEnabled(
true);
545 if (ci->
entryType() == KWallet::Wallet::Password) {
547 if (_w->readPassword(item->
text(0), pass) == 0) {
548 _entryStack->setCurrentIndex(4);
549 _entryName->setText(i18n(
"Password: %1",
551 _passwordValue->setText(pass);
552 _saveChanges->setEnabled(
false);
553 _undoChanges->setEnabled(
false);
556 _contextMenu->addSeparator();
557 _contextMenu->addAction( _copyPassAction );
558 if(_alwaysShowContents) {
561 }
else if (ci->
entryType() == KWallet::Wallet::Map) {
562 _entryStack->setCurrentIndex(2);
563 if (_w->readMap(item->
text(0), _currentMap) == 0) {
565 _entryName->setText(i18n(
"Name-Value Map: %1", item->
text(0)));
566 _saveChanges->setEnabled(
false);
567 _undoChanges->setEnabled(
false);
568 showHideMapEditorValue(_mapEditorShowHide->
isChecked());
570 }
else if (ci->
entryType() == KWallet::Wallet::Stream) {
571 _entryStack->setCurrentIndex(3);
573 if (_w->readEntry(item->
text(0), ba) == 0) {
574 _entryName->setText(i18n(
"Binary Data: %1",
576 _saveChanges->setEnabled(
false);
577 _undoChanges->setEnabled(
false);
587 if (ci->
entryType() == KWallet::Wallet::Unknown) {
589 _contextMenu->setEnabled(
false);
592 _contextMenu->addAction( _newEntryAction );
593 _newEntryAction->setEnabled(
true);
600 _w->setFolder(fi->
name());
603 _entryStack->setCurrentIndex(0);
608 _contextMenu->addAction( _newFolderAction );
609 _contextMenu->addAction( _deleteFolderAction );
615 _w->setFolder(fi->
name());
618 _entryStack->setCurrentIndex(0);
624 _contextMenu->addAction( _deleteEntryAction );
625 _deleteEntryAction->setEnabled(
true);
630 _contextMenu->addAction( _newFolderAction );
634 _currentFolder = fi->
name();
636 _iconTitle->setPixmap(fi->
getFolderIcon(KIconLoader::Toolbar));
639 _displayedItem = item;
642 void KWalletEditor::updateEntries(
const QString& folder) {
645 _w->setFolder(folder);
664 entrySelectionChanged(0L);
674 entrySelectionChanged(0L);
684 entrySelectionChanged(0L);
694 entrySelectionChanged(0L);
709 switch (_w->entryType(*i)) {
710 case KWallet::Wallet::Password:
713 case KWallet::Wallet::Stream:
716 case KWallet::Wallet::Map:
719 case KWallet::Wallet::Unknown:
726 if (fi->
name() == _currentFolder) {
731 _entryStack->setCurrentIndex(0);
735 void KWalletEditor::listContextMenuRequested(
const QPoint& pos) {
736 if (!_contextMenu->isEnabled()) {
744 void KWalletEditor::copyPassword() {
748 if (_w->readPassword(item->
text(0), pass) == 0) {
755 void KWalletEditor::newEntry() {
772 _w->setFolder(fi->
name());
778 n = KInputDialog::getText(i18n(
"New Entry"),
779 i18n(
"Please choose a name for the new entry:"),
790 int rc = KMessageBox::questionYesNo(
this, i18n(
"Sorry, that entry already exists. Try again?"),
QString(), KGuiItem(i18n(
"Try Again")), KGuiItem(i18n(
"Do Not Try")));
799 if (_w && item && !n.
isEmpty()) {
807 KMessageBox::error(
this, i18n(
"An unexpected error occurred trying to add the new entry"));
810 _w->setFolder(fi->
name());
816 KMessageBox::error(
this, i18n(
"An unexpected error occurred trying to add the new entry"));
820 if (ci->
entryType() == KWallet::Wallet::Password) {
821 _w->writePassword(n,
QString());
822 }
else if (ci->
entryType() == KWallet::Wallet::Map) {
824 }
else if (ci->
entryType() == KWallet::Wallet::Stream) {
839 void KWalletEditor::renameEntry() {
848 void KWalletEditor::listItemChanged(
QTreeWidgetItem* item,
int column) {
849 if (item && column == 0) {
856 if (t == i->
name()) {
864 if (_w->renameEntry(i->
name(), t) == 0) {
868 KMessageBox::error(
this, i18n(
"An unexpected error occurred trying to rename the entry"));
871 if (ci->
entryType() == KWallet::Wallet::Password) {
872 _entryName->setText(i18n(
"Password: %1", item->
text(0)));
873 }
else if (ci->
entryType() == KWallet::Wallet::Map) {
874 _entryName->setText(i18n(
"Name-Value Map: %1", item->
text(0)));
875 }
else if (ci->
entryType() == KWallet::Wallet::Stream) {
876 _entryName->setText(i18n(
"Binary Data: %1", item->
text(0)));
885 void KWalletEditor::deleteEntry() {
888 int rc = KMessageBox::warningContinueCancel(
this, i18n(
"Are you sure you wish to delete the item '%1'?", item->
text(0)),
QString(),KStandardGuiItem::del());
889 if (rc == KMessageBox::Continue) {
892 KMessageBox::error(
this, i18n(
"An unexpected error occurred trying to delete the entry"));
896 _w->removeEntry(item->
text(0));
905 void KWalletEditor::changePassword()
911 void KWalletEditor::walletOpened(
bool success) {
920 KMessageBox::sorry(
this, i18n(
"Unable to open the requested wallet."));
926 void KWalletEditor::hidePasswordContents() {
927 _entryStack->setCurrentIndex(4);
931 void KWalletEditor::showPasswordContents() {
932 _entryStack->setCurrentIndex(1);
936 void KWalletEditor::showHideMapEditorValue(
bool show) {
947 void KWalletEditor::importWallet() {
948 KUrl url = KFileDialog::getOpenUrl(KUrl(),
QLatin1String(
"*.kwl" ),
this);
954 if (!KIO::NetAccess::download(url, tmpFile,
this)) {
955 KMessageBox::sorry(
this, i18n(
"Unable to access wallet '<b>%1</b>'.", url.prettyUrl()));
959 KWallet::Wallet *w = KWallet::Wallet::openWallet(tmpFile,
winId(), KWallet::Wallet::Path);
960 if (w && w->isOpen()) {
964 if (!w->setFolder(*f)) {
968 if (!_w->hasFolder(*f)) {
969 _w->createFolder(*f);
981 bool hasEntry = _w->hasEntry(me.
key());
982 if (hasEntry && mp ==
Prompt) {
992 if (mp ==
Yes || mp ==
No) {
999 }
else if (hasEntry && mp ==
Never) {
1002 _w->writeMap(me.
key(), me.
value());
1012 bool hasEntry = _w->hasEntry(pe.
key());
1013 if (hasEntry && mp ==
Prompt) {
1023 if (mp ==
Yes || mp ==
No) {
1030 }
else if (hasEntry && mp ==
Never) {
1033 _w->writePassword(pe.
key(), pe.
value());
1047 bool hasEntry = _w->hasEntry(ee.
key());
1048 if (hasEntry && mp ==
Prompt) {
1058 if (mp ==
Yes || mp ==
No) {
1065 }
else if (hasEntry && mp ==
Never) {
1068 _w->writeEntry(ee.
key(), ee.
value());
1076 KIO::NetAccess::removeTempFile(tmpFile);
1077 updateFolderList(
true);
1082 void KWalletEditor::importXML() {
1083 KUrl url = KFileDialog::getOpenUrl( KUrl(),
QLatin1String(
"*.xml" ),
this);
1084 if (url.isEmpty()) {
1089 if (!KIO::NetAccess::download(url, tmpFile,
this)) {
1090 KMessageBox::sorry(
this, i18n(
"Unable to access XML file '<b>%1</b>'.", url.prettyUrl()));
1095 if (!qf.open(QIODevice::ReadOnly)) {
1096 KMessageBox::sorry(
this, i18n(
"Error opening XML file '<b>%1</b>' for input.", url.prettyUrl()));
1097 KIO::NetAccess::removeTempFile(tmpFile);
1102 if (!doc.setContent(&qf)) {
1103 KMessageBox::sorry(
this, i18n(
"Error reading XML file '<b>%1</b>' for input.", url.prettyUrl()));
1104 KIO::NetAccess::removeTempFile(tmpFile);
1110 KMessageBox::sorry(
this, i18n(
"Error: XML file does not contain a wallet."));
1111 KIO::NetAccess::removeTempFile(tmpFile);
1129 if (!_w->hasFolder(fname)) {
1130 _w->createFolder(fname);
1132 _w->setFolder(fname);
1134 while (!enode.
isNull()) {
1138 bool hasEntry = _w->hasEntry(ename);
1139 if (hasEntry && mp ==
Prompt) {
1142 bd->
setLabel(i18n(
"Folder '<b>%1</b>' already contains an entry '<b>%2</b>'. Do you wish to replace it?",
Qt::escape(fname),
Qt::escape(ename)));
1149 if (mp ==
Yes || mp ==
No) {
1156 }
else if (hasEntry && mp ==
Never) {
1162 _w->writePassword(ename, e.
text());
1164 _w->writeEntry(ename, KCodecs::base64Decode(e.
text().
toLatin1()));
1168 while (!mapNode.
isNull()) {
1175 _w->writeMap(ename, map);
1182 KIO::NetAccess::removeTempFile(tmpFile);
1183 updateFolderList(
true);
1188 void KWalletEditor::exportXML() {
1192 xml.setAutoFormatting(
true);
1193 xml.writeStartDocument();
1204 switch (_w->entryType(*j)) {
1205 case KWallet::Wallet::Password:
1208 if (_w->readPassword(*j, pass) == 0) {
1211 xml.writeCharacters(pass);
1212 xml.writeEndElement();
1216 case KWallet::Wallet::Stream:
1219 if (_w->readEntry(*j, ba) == 0) {
1222 xml.writeCharacters(
QLatin1String( KCodecs::base64Encode(ba) ));
1223 xml.writeEndElement();
1227 case KWallet::Wallet::Map:
1230 if (_w->readMap(*j, map) == 0) {
1236 xml.writeCharacters(k.value());
1237 xml.writeEndElement();
1239 xml.writeEndElement();
1243 case KWallet::Wallet::Unknown:
1248 xml.writeEndElement();
1251 xml.writeEndElement();
1252 xml.writeEndDocument();
1255 KUrl url = KFileDialog::getSaveUrl(KUrl(),
QLatin1String(
"*.xml" ),
this);
1257 if (!url.isEmpty()) {
1258 KIO::NetAccess::dircopy(KUrl::fromPath(tf.fileName()), url,
this);
1268 void KWalletEditor::saveAs() {
1269 KUrl url = KFileDialog::getSaveUrl(KUrl(),
QLatin1String(
"*.kwl" ),
this);
1270 if (!url.isEmpty()) {
1276 KIO::NetAccess::dircopy(KUrl::fromPath(path), url,
this);
1286 disconnectActions();
1298 void KWalletEditor::onSearchTextChanged(
const QString& text)
1300 static bool treeIsExpanded =
false;
1302 if (treeIsExpanded) {
1307 treeIsExpanded =
false;
1310 if (!treeIsExpanded) {
1312 treeIsExpanded =
true;
1322 void KWalletEditor::onAlwaysShowContents(
bool checked)
1324 _alwaysShowContents = checked;
1325 _alwaysHideContentsAction->
setChecked(!_alwaysShowContents);
1326 showPasswordContents();
1329 void KWalletEditor::onAlwaysHideContents(
bool checked)
1331 _alwaysShowContents = !checked;
1332 _alwaysShowContentsAction->
setChecked(_alwaysShowContents);
1334 hidePasswordContents();
1338 #include "kwalleteditor.moc"
void setText(const QString &text)
This class is intended to avoid coupling between the main window and it's contained widgets that hand...
QString attribute(const QString &name, const QString &defValue) const
void enableContextFolderActions(bool enable)
KWalletEditor(QWidget *parent, const char *name=0)
virtual void hideEvent(QHideEvent *)
KWalletFolderItem * getFolder(const QString &name)
const_iterator constBegin() const
void setIcon(const QIcon &icon)
bool contains(const QString &str, Qt::CaseSensitivity cs) const
QPixmap getFolderIcon(KIconLoader::Group group)
void enableFolderActions(bool enable)
void setWallet(KWallet::Wallet *wallet, bool isPath=false)
KWalletContainerItem * getContainer(KWallet::Wallet::EntryType type)
const_iterator insert(const T &value)
bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
QDomNode nextSibling() const
QDomElement toElement() const
void enableWalletActions(bool enable)
int count(const T &value) const
void append(const T &value)
void setObjectName(const QString &name)
const_iterator constEnd() const
void setWallet(KWallet::Wallet *w)
virtual void showEvent(QShowEvent *)
QFuture< void > map(Sequence &sequence, MapFunction function)
const QString & name() const
void setMargin(int margin)
void showColumn(int column)
bool contains(const T &value) const
const Key key(const T &value) const
void setNewWallet(bool newWallet)
QDomNode firstChild() const
QByteArray toLatin1() const
KWallet::Wallet::EntryType entryType()
bool contains(const QString &itemKey)
QString escape(const QString &plain)
virtual void setLabel(const QString &label)
bool existsFolder(const QString &name)
void setName(const QString &n)
QString fromLatin1(const char *str, int size)
void setText(const QString &text, Mode mode)
const_iterator constEnd() const
const_iterator constBegin() const
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QString text(int column) const
const T value(const Key &key) const
void hideColumn(int column)