2
#include "quickviewsurfacefactory.h"
3
#include "quickviewsurfacefactory_p.h"
5
#include <maliit/plugins/abstractsurface.h>
6
#include <maliit/plugins/quickviewsurface.h>
11
using Maliit::Plugins::AbstractSurface;
16
QuickViewSurfaceImpl::QuickViewSurfaceImpl(QuickViewSurfaceFactory *factory, AbstractSurface::Options options,
17
const QSharedPointer<QuickViewSurfaceImpl> &parent)
27
mWindow.reset(new QQuickView(0));
29
QWindow *parentWindow = parent->mWindow.data();
30
mWindow->setTransientParent(parentWindow);
31
parentWindow->installEventFilter(this);
32
connect(parentWindow, SIGNAL(xChanged(int)), this, SLOT(updatePosition()));
33
connect(parentWindow, SIGNAL(yChanged(int)), this, SLOT(updatePosition()));
36
mWindow->setFlags(Qt::Dialog | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint
37
| Qt::X11BypassWindowManagerHint | Qt::WindowDoesNotAcceptFocus);
39
QSurfaceFormat format;
40
format.setAlphaBufferSize(8);
41
mWindow->setFormat(format);
42
mWindow->setColor(QColor(Qt::transparent));
47
QuickViewSurfaceImpl::~QuickViewSurfaceImpl()
51
void QuickViewSurfaceImpl::show()
57
void QuickViewSurfaceImpl::hide()
63
QSize QuickViewSurfaceImpl::size() const
65
return mWindow->size();
68
void QuickViewSurfaceImpl::setSize(const QSize &size)
70
const QSize& desktopSize = QGuiApplication::screens().first()->size();
72
// stand-alone Maliit server
73
if (mOptions & PositionCenterBottom) {
74
mWindow->setGeometry(QRect(QPoint((desktopSize.width() - size.width()) / 2,
75
desktopSize.height() - size.height()), size));
77
mWindow->resize(size);
81
QPoint QuickViewSurfaceImpl::relativePosition() const
83
return mRelativePosition;
86
void QuickViewSurfaceImpl::setRelativePosition(const QPoint &position)
88
mRelativePosition = position;
89
QPoint parentPosition(0, 0);
91
parentPosition = mParent->mWindow->position();
93
mWindow->setPosition(parentPosition + mRelativePosition);
96
QSharedPointer<AbstractSurface> QuickViewSurfaceImpl::parent() const
101
QPoint QuickViewSurfaceImpl::translateEventPosition(const QPoint &eventPosition,
102
const QSharedPointer<AbstractSurface> &eventSurface) const
105
return eventPosition;
107
QSharedPointer<QuickViewSurfaceImpl> windowedSurface = qSharedPointerDynamicCast<QuickViewSurfaceImpl>(eventSurface);
108
if (!windowedSurface)
111
return -mWindow->position() + eventPosition + windowedSurface->mWindow->position();
114
void QuickViewSurfaceImpl::setActive(bool active)
120
QRegion QuickViewSurfaceImpl::inputMethodArea()
122
if (!mWindow->isVisible())
125
return QRegion(mWindow->geometry());
128
QQuickView *QuickViewSurfaceImpl::view() const
130
return mWindow.data();
133
bool QuickViewSurfaceImpl::eventFilter(QObject *, QEvent *event)
135
if (event->type() == QEvent::Move) {
142
void QuickViewSurfaceImpl::updateVisibility()
144
mWindow->setVisible(mActive && mVisible);
147
void QuickViewSurfaceImpl::updatePosition()
149
setRelativePosition(mRelativePosition);
152
QuickViewSurfaceFactory::QuickViewSurfaceFactory()
156
QuickViewSurfaceFactory::~QuickViewSurfaceFactory()
160
QSize QuickViewSurfaceFactory::screenSize() const
162
return QGuiApplication::screens().first()->size();
165
bool QuickViewSurfaceFactory::supported(Maliit::Plugins::AbstractSurface::Options options) const
167
return options & Maliit::Plugins::AbstractSurface::TypeQuick2;
170
QSharedPointer<Maliit::Plugins::AbstractSurface> QuickViewSurfaceFactory::create(Maliit::Plugins::AbstractSurface::Options options,
171
const QSharedPointer<Maliit::Plugins::AbstractSurface> &parent)
173
QSharedPointer<QuickViewSurfaceImpl> defaultSurfaceParent(qSharedPointerDynamicCast<QuickViewSurfaceImpl>(parent));
174
if (options & Maliit::Plugins::AbstractSurface::TypeQuick2) {
175
QSharedPointer<QuickViewSurfaceImpl> newSurface(new QuickViewSurfaceImpl(this, options, defaultSurfaceParent));
176
surfaces.push_back(newSurface);
179
return QSharedPointer<AbstractSurface>();
182
void QuickViewSurfaceFactory::activate()
186
Q_FOREACH(QWeakPointer<QuickViewSurfaceImpl> weakSurface, surfaces) {
187
QSharedPointer<QuickViewSurfaceImpl> surface = weakSurface.toStrongRef();
189
surface->setActive(true);
193
void QuickViewSurfaceFactory::deactivate()
197
Q_FOREACH(QWeakPointer<QuickViewSurfaceImpl> weakSurface, surfaces) {
198
QSharedPointer<QuickViewSurfaceImpl> surface = weakSurface.toStrongRef();
200
surface->setActive(false);
204
} // namespace Server
205
} // namespace Maliit