1
/* * This file is part of Maliit framework *
3
* Copyright (C) 2010, 2011 Nokia Corporation and/or its subsidiary(-ies).
6
* Contact: maliit-discuss@lists.maliit.org
8
* This library is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU Lesser General Public
10
* License version 2.1 as published by the Free Software Foundation
11
* and appearing in the file LICENSE.LGPL included in the packaging
15
// Based on mpreeditinjectionevent.cpp from libmeegotouch
20
#include "preeditinjectionevent.h"
21
#include "preeditinjectionevent_p.h"
23
static int sPreeditEventNumber = -1;
24
static QMutex sPreeditInjectionMutex;
28
PreeditInjectionEventPrivate::PreeditInjectionEventPrivate(const QString &preedit, int eventCursorPos)
30
eventCursorPosition(eventCursorPos),
38
PreeditInjectionEventPrivate::~PreeditInjectionEventPrivate()
44
///////////////////////
45
// class implementation
48
PreeditInjectionEvent::PreeditInjectionEvent(const QString &preedit)
49
: QEvent(PreeditInjectionEvent::eventNumber()),
50
d_ptr(new PreeditInjectionEventPrivate(preedit, -1))
55
PreeditInjectionEvent::PreeditInjectionEvent(const QString &preedit, int eventCursorPosition)
56
: QEvent(PreeditInjectionEvent::eventNumber()),
57
d_ptr(new PreeditInjectionEventPrivate(preedit, eventCursorPosition))
62
PreeditInjectionEvent::~PreeditInjectionEvent()
68
QString PreeditInjectionEvent::preedit() const
70
Q_D(const PreeditInjectionEvent);
74
int PreeditInjectionEvent::eventCursorPosition() const
76
Q_D(const PreeditInjectionEvent);
77
return d->eventCursorPosition;
80
void PreeditInjectionEvent::setReplacement(int replacementStart, int replacementLength)
82
Q_D(PreeditInjectionEvent);
83
d->replacementStart = replacementStart;
84
d->replacementLength = replacementLength;
87
int PreeditInjectionEvent::replacementStart() const
89
Q_D(const PreeditInjectionEvent);
90
return d->replacementStart;
93
int PreeditInjectionEvent::replacementLength() const
95
Q_D(const PreeditInjectionEvent);
96
return d->replacementLength;
101
QEvent::Type PreeditInjectionEvent::eventNumber()
103
if (sPreeditEventNumber < 0) {
104
// no event number yet registered, do it now
105
sPreeditInjectionMutex.lock();
107
if (sPreeditEventNumber < 0) {
108
sPreeditEventNumber = QEvent::registerEventType();
111
sPreeditInjectionMutex.unlock();
114
return static_cast<QEvent::Type>(sPreeditEventNumber);