Maliit Plugins  0.92.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator
glass.h
Go to the documentation of this file.
1 /*
2  * This file is part of Maliit Plugins
3  *
4  * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
5  *
6  * Contact: Mohammad Anwari <Mohammad.Anwari@nokia.com>
7  *
8  * Redistribution and use in source and binary forms, with or without modification,
9  * are permitted provided that the following conditions are met:
10  *
11  * Redistributions of source code must retain the above copyright notice, this list
12  * of conditions and the following disclaimer.
13  * Redistributions in binary form must reproduce the above copyright notice, this list
14  * of conditions and the following disclaimer in the documentation and/or other materials
15  * provided with the distribution.
16  * Neither the name of Nokia Corporation nor the names of its contributors may be
17  * used to endorse or promote products derived from this software without specific
18  * prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
21  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
22  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
23  * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  *
30  */
31 
32 #ifndef MALIIT_KEYBOARD_GLASS_H
33 #define MALIIT_KEYBOARD_GLASS_H
34 
35 #include "models/key.h"
36 #include "models/wordcandidate.h"
37 #include "models/layout.h"
38 
39 #include <QtGui>
40 
41 #include <maliit/plugins/abstractwidgetssurface.h>
42 
43 namespace MaliitKeyboard {
44 
45 class GlassPrivate;
46 
47 class Glass
48  : public QObject
49 {
50  Q_OBJECT
51  Q_DISABLE_COPY(Glass)
52  Q_DECLARE_PRIVATE(Glass)
53 
54 public:
55  explicit Glass(QObject *parent = 0);
56  virtual ~Glass();
57 
58  void setSurface(const QSharedPointer<Maliit::Plugins::AbstractGraphicsViewSurface> &surface);
59  void setExtendedSurface(const QSharedPointer<Maliit::Plugins::AbstractGraphicsViewSurface> &surface);
60 
61  void addLayout(const SharedLayout &layout);
62  void clearLayouts();
63 
64  // Key signals:
65  Q_SIGNAL void keyPressed(const Key &key,
66  const SharedLayout &layout);
67  Q_SIGNAL void keyLongPressed(const Key &key,
68  const SharedLayout &layout);
69  Q_SIGNAL void keyReleased(const Key &key,
70  const SharedLayout &layout);
71  Q_SIGNAL void keyEntered(const Key &key,
72  const SharedLayout &layout);
73  Q_SIGNAL void keyExited(const Key &key,
74  const SharedLayout &layout);
75 
76  // WordCandidate signals:
77  Q_SIGNAL void wordCandidatePressed(const WordCandidate &candidate,
78  const SharedLayout &layout);
79  Q_SIGNAL void wordCandidateReleased(const WordCandidate &candidate,
80  const SharedLayout &layout);
81 
82  // KeyArea signals:
83  Q_SIGNAL void keyAreaPressed(Layout::Panel panel, const SharedLayout &layout);
84  Q_SIGNAL void keyAreaReleased(Layout::Panel panel, const SharedLayout &layout);
85 
86  Q_SIGNAL void switchLeft(const SharedLayout &layout);
87  Q_SIGNAL void switchRight(const SharedLayout &layout);
88  Q_SIGNAL void keyboardClosed();
89 
90 protected:
92  virtual bool eventFilter(QObject *obj,
93  QEvent *ev);
95 
96 private:
97  Q_SLOT void onLongPressTriggered();
98  bool handlePressReleaseEvent(QEvent *ev, const QSharedPointer<Maliit::Plugins::AbstractGraphicsViewSurface> &eventSurface);
99 
100  const QScopedPointer<GlassPrivate> d_ptr;
101 };
102 
103 } // namespace MaliitKeyboard
104 
105 #endif // MALIIT_KEYBOARD_GLASS_H