summaryrefslogtreecommitdiffabout
path: root/pwmanager/pwmanager/advcommeditimpl.cpp
authorulf69 <ulf69>2004-09-15 17:53:22 (UTC)
committer ulf69 <ulf69>2004-09-15 17:53:22 (UTC)
commitd3925ba5bd25224bc4a60d3d6a107c464994a1ea (patch) (side-by-side diff)
tree60f69da1d2b79ee3081e7ef5c09a46470ca6eda0 /pwmanager/pwmanager/advcommeditimpl.cpp
parentce83a3479d23b9e8a59c745ccd0a0b14f64ef4e8 (diff)
downloadkdepimpi-d3925ba5bd25224bc4a60d3d6a107c464994a1ea.zip
kdepimpi-d3925ba5bd25224bc4a60d3d6a107c464994a1ea.tar.gz
kdepimpi-d3925ba5bd25224bc4a60d3d6a107c464994a1ea.tar.bz2
initial revision
Diffstat (limited to 'pwmanager/pwmanager/advcommeditimpl.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--pwmanager/pwmanager/advcommeditimpl.cpp149
1 files changed, 149 insertions, 0 deletions
diff --git a/pwmanager/pwmanager/advcommeditimpl.cpp b/pwmanager/pwmanager/advcommeditimpl.cpp
new file mode 100644
index 0000000..59e5e5b
--- a/dev/null
+++ b/pwmanager/pwmanager/advcommeditimpl.cpp
@@ -0,0 +1,149 @@
+/***************************************************************************
+ * *
+ * copyright (C) 2004 by Michael Buesch *
+ * email: mbuesch@freenet.de *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License version 2 *
+ * as published by the Free Software Foundation. *
+ * *
+ ***************************************************************************/
+
+
+/***************************************************************************
+ * copyright (C) 2004 by Ulf Schenk
+ * This file is originaly based on version 1.0.1 of pwmanager
+ * and was modified to run on embedded devices that run microkde
+ *
+ * $Id$
+ **************************************************************************/
+
+#include "advcommeditimpl.h"
+#include "htmlgen.h"
+#include "htmlparse.h"
+#include "pwmexception.h"
+#include "subtbleditimpl.h"
+
+#include <qlineedit.h>
+#include <qlabel.h>
+
+#include <khtml_part.h>
+#include <khtmlview.h>
+
+
+AdvCommEditImpl::AdvCommEditImpl(QWidget* parent,
+ const char* name,
+ WFlags fl)
+ : advCommEdit(parent, name, fl)
+{
+ dta = new HtmlComment;
+ preview = new KHTMLPart(previewDummy);
+ preview->view()->resize(previewDummy->size());
+ preview->show();
+}
+
+AdvCommEditImpl::~AdvCommEditImpl()
+{
+ delete dta;
+ delete preview;
+}
+
+void AdvCommEditImpl::okButton_slot()
+{
+ updateTitle();
+ done(0);
+}
+
+void AdvCommEditImpl::cancelButton_slot()
+{
+ done(1);
+}
+
+void AdvCommEditImpl::addSubtblButton_slot()
+{
+ SubTblEditImpl editor(this);
+ if (editor.exec())
+ return;
+ QString subTitle(editor.getTitle());
+ HtmlComment::SubTable subTbl;
+ subTbl.setTitle(subTitle);
+ subTbl.setEntries(editor.getEntries());
+ dta->addSubtable(subTbl);
+ entryListBox->insertItem(subTitle);
+ updatePreview();
+}
+
+void AdvCommEditImpl::editButton_slot()
+{
+ int index = curIndex();
+ if (index == -1)
+ return;
+ SubTblEditImpl editor(this);
+ HtmlComment::SubTable subTbl = dta->subtableAt(index);
+ editor.setContent(subTbl.getTitle(), subTbl.getEntryList());
+ if (editor.exec())
+ return;
+ QString subTitle(editor.getTitle());
+ subTbl.setTitle(subTitle);
+ subTbl.setEntries(editor.getEntries());
+ dta->setSubtblAt(index, subTbl);
+ entryListBox->changeItem(subTitle, index);
+ updatePreview();
+}
+
+void AdvCommEditImpl::delButton_slot()
+{
+ int index = curIndex();
+ if (index == -1)
+ return;
+ dta->eraseSubtable(index);
+ entryListBox->removeItem(index);
+ updatePreview();
+}
+
+void AdvCommEditImpl::updatePreview()
+{
+ updateTitle();
+ HtmlGen htmlGen;
+ htmlGen.styleSheetDummy(false);
+ QString code(htmlGen.genHtmlComment(dta));
+ if (code.isEmpty())
+ return;
+ preview->begin();
+ preview->write(code);
+ preview->end();
+}
+
+void AdvCommEditImpl::updateTitle()
+{
+ dta->setTitle(titleLineEdit->text());
+}
+
+QString AdvCommEditImpl::getHtmlDta()
+{
+ HtmlGen htmlGen;
+ return htmlGen.genHtmlComment(dta);
+}
+
+void AdvCommEditImpl::setHtmlDta(const QString &str)
+{
+ if (str.isEmpty())
+ return;
+ PWM_ASSERT(HtmlGen::isHtml(str));
+ HtmlParse htmlParse;
+ if (!htmlParse.parseHtmlComment(str, dta)) {
+ printWarn("AdvCommEditImpl::setHtmlDta(): parseHtmlComment() failed!");
+ return;
+ }
+ titleLineEdit->setText(dta->getTitle());
+ const vector<HtmlComment::SubTable> *subTbls = dta->getSubTableList();
+ vector<HtmlComment::SubTable>::const_iterator i = subTbls->begin(),
+ end = subTbls->end();
+ while (i != end) {
+ entryListBox->insertItem(i->getTitle());
+ ++i;
+ }
+ updatePreview();
+}
+
+#include "advcommeditimpl.moc"