Maliit Plugins  0.92.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator
layout.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_LAYOUT_H
33 #define MALIIT_KEYBOARD_LAYOUT_H
34 
35 #include "key.h"
36 #include "keyarea.h"
37 #include "wordribbon.h"
38 
39 #include <QtCore>
40 
41 namespace MaliitKeyboard {
42 
43 class Layout;
44 typedef QSharedPointer<Layout> SharedLayout;
45 
46 // TODO: Implement hit test on Layout, one to check whether key was hit, one to check whether word candidate was hit.
47 // Should return invalid key/wc, or found key/wc.
48 // Would be used by Glass.
49 class Layout
50 {
51 public:
52  enum Orientation {
55  };
56 
57  enum Alignment {
59  Top,
62  };
63 
64  enum Panel {
70  };
71 
72  Q_ENUMS(Orientation)
73  Q_ENUMS(Panel)
74 
75 private:
77  QPoint m_origin;
87 
88  struct {
89  QVector<Key> left;
90  QVector<Key> right;
91  QVector<Key> center;
92  QVector<Key> extended;
93  } m_active_keys;
94 
97 
98 public:
99  explicit Layout();
100 
101  QSize screenSize() const;
102  void setScreenSize(const QSize &size);
103 
104  QPoint extendedPanelOffset() const;
105  void setExtendedPanelOffset(const QPoint &offset);
106 
107  Orientation orientation() const;
109 
110  Alignment alignment() const;
112 
113  Panel activePanel() const;
114  void setActivePanel(Panel panel);
115  QRect geometry(Panel panel) const;
116 
117  KeyArea activeKeyArea() const;
118  void setActiveKeyArea(const KeyArea &active);
119  QRect activeKeyAreaGeometry() const;
120 
121  KeyArea leftPanel() const;
122  void setLeftPanel(const KeyArea &left);
123  QRect leftPanelGeometry() const;
124 
125  KeyArea rightPanel() const;
126  void setRightPanel(const KeyArea &right);
127  QRect rightPanelGeometry() const;
128 
129  KeyArea centerPanel() const;
130  void setCenterPanel(const KeyArea &center);
131  QRect centerPanelGeometry() const;
132 
133  KeyArea extendedPanel() const;
134  void setExtendedPanel(const KeyArea &extended);
135  QRect extendedPanelGeometry() const;
136  QPoint extendedPanelOrigin() const;
137 
138  WordRibbon wordRibbon() const;
139  void setWordRibbon(const WordRibbon &ribbon);
140  QRect wordRibbonGeometry() const;
141 
142  QVector<Key> activeKeys() const;
143  void clearActiveKeys();
144  void appendActiveKey(const Key &key);
145  void removeActiveKey(const Key &key);
146 
147  Key magnifierKey() const;
148  QPoint magnifierKeyOrigin() const;
149  void setMagnifierKey(const Key &key);
150  void clearMagnifierKey();
151 
152 private:
153  // TODO: Move into .cpp file instead.
154  KeyArea lookup(Panel panel) const;
155  QPoint origin() const;
156  QPoint panelOrigin() const;
157 };
158 
159 } // namespace MaliitKeyboard
160 
161 #endif // MALIIT_KEYBOARD_LAYOUT_H