#include "kitemlistroleeditor.h"
#include <KDebug>
+#include <kio/global.h>
#include <QKeyEvent>
KItemListRoleEditor::KItemListRoleEditor(QWidget *parent) :
KTextEdit(parent),
- m_index(0),
- m_role()
+ m_role(),
+ m_blockFinishedSignal(false)
{
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setAcceptRichText(false);
+ enableFindReplace(false);
document()->setDocumentMargin(0);
if (parent) {
{
}
-void KItemListRoleEditor::setIndex(int index)
-{
- m_index = index;
-}
-
-int KItemListRoleEditor::index() const
-{
- return m_index;
-}
-
void KItemListRoleEditor::setRole(const QByteArray& role)
{
m_role = role;
bool KItemListRoleEditor::eventFilter(QObject* watched, QEvent* event)
{
if (watched == parentWidget() && event->type() == QEvent::Resize) {
- emit roleEditingFinished(m_index, m_role, toPlainText());
+ emitRoleEditingFinished();
}
return KTextEdit::eventFilter(watched, event);
if (event->type() == QEvent::FocusOut) {
QFocusEvent* focusEvent = static_cast<QFocusEvent*>(event);
if (focusEvent->reason() != Qt::PopupFocusReason) {
- emit roleEditingFinished(m_index, m_role, toPlainText());
+ emitRoleEditingFinished();
}
}
return KTextEdit::event(event);
{
switch (event->key()) {
case Qt::Key_Escape:
- emit roleEditingCanceled(m_index, m_role, toPlainText());
+ // Emitting the signal roleEditingCanceled might result
+ // in losing the focus. Per default losing the focus emits
+ // a roleEditingFinished signal (see KItemListRoleEditor::event),
+ // which is not wanted in this case.
+ m_blockFinishedSignal = true;
+ emit roleEditingCanceled(m_role, KIO::encodeFileName(toPlainText()));
+ m_blockFinishedSignal = false;
event->accept();
return;
case Qt::Key_Enter:
case Qt::Key_Return:
- emit roleEditingFinished(m_index, m_role, toPlainText());
+ emitRoleEditingFinished();
event->accept();
return;
default:
}
}
+void KItemListRoleEditor::emitRoleEditingFinished()
+{
+ if (!m_blockFinishedSignal) {
+ emit roleEditingFinished(m_role, KIO::encodeFileName(toPlainText()));
+ }
+}
+
#include "kitemlistroleeditor.moc"