summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/widget_layer.cpp26
-rw-r--r--noncore/apps/opie-console/widget_layer.h27
2 files changed, 36 insertions, 17 deletions
diff --git a/noncore/apps/opie-console/widget_layer.cpp b/noncore/apps/opie-console/widget_layer.cpp
index 28227e4..f428ed4 100644
--- a/noncore/apps/opie-console/widget_layer.cpp
+++ b/noncore/apps/opie-console/widget_layer.cpp
@@ -19,12 +19,10 @@
19 19
20#include "common.h" 20#include "common.h"
21 21
22 22
23#define loc(X,Y) ((Y)*m_columns+(X))
24 23
25 24WidgetLayer::WidgetLayer( QWidget *parent, const char *name ) : QFrame( parent, name )
26WidgetLayer::WidgetLayer( QObject *parent, const char *name ) : QObject( parent, name )
27{ 25{
28 // get the clipboard 26 // get the clipboard
29 m_clipboard = QApplication::clipboard(); 27 m_clipboard = QApplication::clipboard();
30 28
@@ -36,14 +34,19 @@ WidgetLayer::WidgetLayer( QObject *parent, const char *name ) : QObject( parent
36 m_lines = 1; 34 m_lines = 1;
37 m_columns = 1; 35 m_columns = 1;
38 m_resizing = false; 36 m_resizing = false;
39 37
40 m_image = QArray<Character>(); 38 // just for demonstrating
39 //m_image = QArray<Character>( m_lines * m_columns );
40 m_image = QArray<Character>( 1 );
41
41} 42}
42 43
44
43WidgetLayer::~WidgetLayer() 45WidgetLayer::~WidgetLayer()
44{ 46{
45 // clean up! 47 // clean up
48 delete m_image;
46} 49}
47 50
48/* --------------------------------- audio ---------------------------------- */ 51/* --------------------------------- audio ---------------------------------- */
49 52
@@ -57,42 +60,41 @@ void WidgetLayer::bell()
57 60
58 61
59void WidgetLayer::propagateSize() 62void WidgetLayer::propagateSize()
60{ 63{
61 QArray<Character> oldimage = m_image; 64 QArray<Character> oldimage = m_image.copy();
62 int oldlines = m_lines; 65 int oldlines = m_lines;
63 int oldcolumns = m_columns; 66 int oldcolumns = m_columns;
64 67
65 makeImage(); 68 makeImage();
66 69
67 // copy old image, to reduce flicker 70 // copy old image, to reduce flicker
68 if ( oldimage ) 71 if ( ! oldimage.isEmpty() )
69 { 72 {
70 //FIXME: is it possible to do this with QArray.dublicate()?
71
72 int lins = QMIN( oldlines, m_lines ); 73 int lins = QMIN( oldlines, m_lines );
73 int cols = QMIN( oldcolumns, m_columns ); 74 int cols = QMIN( oldcolumns, m_columns );
74 for ( int lin = 0; lin < lins; ++lin ) 75 for ( int lin = 0; lin < lins; ++lin )
75 { 76 {
76 memcpy( (void*) &m_image[m_columns*lin], 77 memcpy( (void*) &m_image[m_columns*lin],
77 (void*) &oldimage[oldcolumns*lin], 78 (void*) &oldimage[oldcolumns*lin],
78 cols*sizeof( Character ) ); 79 cols*sizeof( Character ) );
79 } 80 }
80 //free( oldimage );
81 } 81 }
82 else 82 else
83 clearImage(); 83 clearImage();
84 84
85 delete oldimage;
86
85 m_resizing = true; 87 m_resizing = true;
86 emit imageSizeChanged( m_lines, m_columns ); 88 emit imageSizeChanged( m_lines, m_columns );
87 m_resizing = false; 89 m_resizing = false;
88} 90}
89 91
90void WidgetLayer::makeImage() 92void WidgetLayer::makeImage()
91{ 93{
92 calcGeometry(); 94 calcGeometry();
93 m_image = QArray<Character>(); 95 m_image = QArray<Character>( m_columns * m_lines );
94 clearImage(); 96 clearImage();
95} 97}
96 98
97void WidgetLayer::clearImage() 99void WidgetLayer::clearImage()
98{ 100{
diff --git a/noncore/apps/opie-console/widget_layer.h b/noncore/apps/opie-console/widget_layer.h
index 07ec12a..99d248e 100644
--- a/noncore/apps/opie-console/widget_layer.h
+++ b/noncore/apps/opie-console/widget_layer.h
@@ -14,8 +14,10 @@
14#define WIDGET_LAYER_H 14#define WIDGET_LAYER_H
15 15
16// qt includes 16// qt includes
17#include <qapplication.h> 17#include <qapplication.h>
18#include <qframe.h>
19#include <qarray.h>
18#include <qtimer.h> 20#include <qtimer.h>
19#include <qkeycode.h> 21#include <qkeycode.h>
20#include <qclipboard.h> 22#include <qclipboard.h>
21 23
@@ -23,17 +25,26 @@
23// opie-console includes 25// opie-console includes
24#include "session.h" 26#include "session.h"
25#include "common.h" 27#include "common.h"
26 28
27class WidgetLayer : public QObject 29/*
30 * given a pseudo location ( column, line ),
31 * returns the actual index, in the QArray<Character>
32 */
33#define loc(X,Y) ((Y)*m_columns+(X))
34
35
36
37
38class WidgetLayer : public QFrame
28{ Q_OBJECT 39{ Q_OBJECT
29 40
30public: 41public:
31 42
32 /** 43 /**
33 * constructor 44 * constructor
34 */ 45 */
35 WidgetLayer( QObject *parent=0, const char *name=0 ); 46 WidgetLayer( QWidget *parent=0, const char *name=0 );
36 47
37 /** 48 /**
38 * destructor 49 * destructor
39 */ 50 */
@@ -42,9 +53,9 @@ public:
42public: 53public:
43 /** 54 /**
44 * sets the image 55 * sets the image
45 */ 56 */
46 virtual void setImage( const Character* const newimg, int lines, int colums ) = 0; 57 virtual void setImage( QArray<Character> const newimg, int lines, int colums );
47 58
48 /** 59 /**
49 * annoy the user 60 * annoy the user
50 */ 61 */
@@ -140,9 +151,9 @@ protected:
140 */ 151 */
141 void propagateSize(); 152 void propagateSize();
142 153
143 /** 154 /**
144 * 155 *determines count of lines and columns
145 */ 156 */
146 virtual void calcGeometry() = 0; 157 virtual void calcGeometry() = 0;
147 158
148 /** 159 /**
@@ -172,8 +183,14 @@ protected:
172 Session *m_session; 183 Session *m_session;
173 184
174 /** 185 /**
175 * current character image 186 * current character image
187 *
188 * a Character at loc( column, line )
189 * has the actual index:
190 * ix = line * m_columns + column;
191 *
192 * use loc( x, y ) macro to access.
176 */ 193 */
177 QArray<Character> m_image; 194 QArray<Character> m_image;
178 195
179 /** 196 /**
@@ -191,9 +208,9 @@ protected:
191 */ 208 */
192 QClipboard* m_clipboard; 209 QClipboard* m_clipboard;
193 210
194 /** 211 /**
195 * whether widget was resized 212 * whether widget is resizing
196 */ 213 */
197 bool m_resizing; 214 bool m_resizing;
198}; 215};
199 216