summaryrefslogtreecommitdiffstats
path: root/quanta/dialogs/specialchardialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'quanta/dialogs/specialchardialog.cpp')
-rw-r--r--quanta/dialogs/specialchardialog.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/quanta/dialogs/specialchardialog.cpp b/quanta/dialogs/specialchardialog.cpp
new file mode 100644
index 00000000..e8f662ea
--- /dev/null
+++ b/quanta/dialogs/specialchardialog.cpp
@@ -0,0 +1,88 @@
+/***************************************************************************
+ specialchardialog.cpp
+ -------------------
+
+ copyright : (C) 2004 - Michal Rudolf
+ email : mrudolf@kdewebdev.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <qfile.h>
+#include <qpushbutton.h>
+#include <qtextstream.h>
+#include <qregexp.h>
+
+#include <klocale.h>
+#include <kstandarddirs.h>
+#include <klistbox.h>
+#include <klineedit.h>
+
+#include "specialchardialog.h"
+#include "resource.h"
+
+SpecialCharDialog::SpecialCharDialog( QWidget* parent, const char* name, bool modal, WFlags fl)
+ :SpecialCharDialogS( parent, name, modal, fl )
+{
+ connect ( FilterLineEdit, SIGNAL(textChanged(const QString&)),
+ SLOT(filterChars(const QString&)) );
+ connect ( CharsListBox, SIGNAL(doubleClicked(QListBoxItem*)),
+ SLOT(insertCode()) );
+ connect (buttonOk, SIGNAL(clicked()), SLOT(insertCode()));
+ connect (buttonChar, SIGNAL(clicked()), SLOT(insertChar()));
+ connect (buttonCancel, SIGNAL(clicked()), SLOT(cancel()));
+ filterChars("");
+}
+
+SpecialCharDialog::~SpecialCharDialog()
+{
+}
+
+void SpecialCharDialog::filterChars(const QString& filter)
+{
+ CharsListBox->clear();
+ if (filter.isEmpty())
+ CharsListBox->insertStringList(charList);
+ else {
+ for (QStringList::ConstIterator it = charList.begin(); it != charList.end(); ++it)
+ if ( (*it).contains(filter, false) )
+ CharsListBox->insertItem(*it);
+ }
+ if (CharsListBox->currentItem() == -1 && CharsListBox->count())
+ CharsListBox->setCurrentItem(0);
+}
+
+QString SpecialCharDialog::selection()
+{
+ return m_selection;
+}
+
+void SpecialCharDialog::insertCode()
+{
+ QString selected = CharsListBox->text(CharsListBox->currentItem());
+ int begin = selected.find("(&")+1;
+ int length = selected.find(";)") - begin + 1;
+ m_selection = selected.mid(begin, length);
+ done(QDialog::Accepted);
+}
+
+void SpecialCharDialog::insertChar()
+{
+ m_selection = CharsListBox->text(CharsListBox->currentItem()).left(1);
+ done(QDialog::Accepted);
+}
+
+void SpecialCharDialog::cancel()
+{
+ m_selection = "";
+ done(QDialog::Rejected);
+}
+
+#include "specialchardialog.moc"