summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/widget_layer.cpp11
-rw-r--r--noncore/apps/opie-console/widget_layer.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/noncore/apps/opie-console/widget_layer.cpp b/noncore/apps/opie-console/widget_layer.cpp
index 8d68857..3584d32 100644
--- a/noncore/apps/opie-console/widget_layer.cpp
+++ b/noncore/apps/opie-console/widget_layer.cpp
@@ -1,157 +1,168 @@
1/* ------------------------------------------------------------------------- */ 1/* ------------------------------------------------------------------------- */
2/* */ 2/* */
3/* widget_layer.cpp Widget Layer */ 3/* widget_layer.cpp Widget Layer */
4/* */ 4/* */
5/* opie developers <opie@handhelds.org> */ 5/* opie developers <opie@handhelds.org> */
6/* */ 6/* */
7/* ------------------------------------------------------------------------- */ 7/* ------------------------------------------------------------------------- */
8 8
9 9
10 10
11#include "widget_layer.h" 11#include "widget_layer.h"
12 12
13#include <qclipboard.h> 13#include <qclipboard.h>
14#include <qregexp.h> 14#include <qregexp.h>
15#include <qglobal.h> 15#include <qglobal.h>
16 16
17#include <string.h> 17#include <string.h>
18//#include < 18//#include <
19 19
20#include "common.h" 20#include "common.h"
21 21
22 22
23 23
24WidgetLayer::WidgetLayer( const Profile &config, QWidget *parent, const char *name ) : QFrame( parent, name ) 24WidgetLayer::WidgetLayer( const Profile &config, QWidget *parent, const char *name ) : QFrame( parent, name )
25{ 25{
26 // get the clipboard 26 // get the clipboard
27 m_clipboard = QApplication::clipboard(); 27 m_clipboard = QApplication::clipboard();
28 28
29 // when data on clipboard changes, clear selection 29 // when data on clipboard changes, clear selection
30 QObject::connect( (QObject*) m_clipboard, SIGNAL( dataChanged() ), 30 QObject::connect( (QObject*) m_clipboard, SIGNAL( dataChanged() ),
31 (QObject*)this, SLOT( onClearSelection() ) ); 31 (QObject*)this, SLOT( onClearSelection() ) );
32 32
33 // initialize vars: 33 // initialize vars:
34 m_lines = 1; 34 m_lines = 1;
35 m_columns = 1; 35 m_columns = 1;
36 m_resizing = false; 36 m_resizing = false;
37 37
38 // just for demonstrating 38 // just for demonstrating
39 //m_image = QArray<Character>( m_lines * m_columns ); 39 //m_image = QArray<Character>( m_lines * m_columns );
40 m_image = QArray<Character>( 1 ); 40 m_image = QArray<Character>( 1 );
41 41
42} 42}
43 43
44 44
45WidgetLayer::~WidgetLayer() 45WidgetLayer::~WidgetLayer()
46{ 46{
47 // clean up 47 // clean up
48 delete m_image; 48 delete m_image;
49} 49}
50 50
51/* --------------------------------- audio ---------------------------------- */ 51/* --------------------------------- audio ---------------------------------- */
52 52
53void WidgetLayer::bell() 53void WidgetLayer::bell()
54{ 54{
55 QApplication::beep(); 55 QApplication::beep();
56} 56}
57 57
58 58
59/* --------------------------------- screen --------------------------------- */ 59/* --------------------------------- screen --------------------------------- */
60 60
61 61
62void WidgetLayer::propagateSize() 62void WidgetLayer::propagateSize()
63{ 63{
64 QArray<Character> oldimage = m_image.copy(); 64 QArray<Character> oldimage = m_image.copy();
65 int oldlines = m_lines; 65 int oldlines = m_lines;
66 int oldcolumns = m_columns; 66 int oldcolumns = m_columns;
67 67
68 makeImage(); 68 makeImage();
69 69
70 // copy old image, to reduce flicker 70 // copy old image, to reduce flicker
71 if ( ! oldimage.isEmpty() ) 71 if ( ! oldimage.isEmpty() )
72 { 72 {
73 int lins = QMIN( oldlines, m_lines ); 73 int lins = QMIN( oldlines, m_lines );
74 int cols = QMIN( oldcolumns, m_columns ); 74 int cols = QMIN( oldcolumns, m_columns );
75 for ( int lin = 0; lin < lins; ++lin ) 75 for ( int lin = 0; lin < lins; ++lin )
76 { 76 {
77 memcpy( (void*) &m_image[m_columns*lin], 77 memcpy( (void*) &m_image[m_columns*lin],
78 (void*) &oldimage[oldcolumns*lin], 78 (void*) &oldimage[oldcolumns*lin],
79 cols*sizeof( Character ) ); 79 cols*sizeof( Character ) );
80 } 80 }
81 } 81 }
82 else 82 else
83 clearImage(); 83 clearImage();
84 84
85 delete oldimage; 85 delete oldimage;
86 86
87 m_resizing = true; 87 m_resizing = true;
88 emit imageSizeChanged( m_lines, m_columns ); 88 emit imageSizeChanged( m_lines, m_columns );
89 m_resizing = false; 89 m_resizing = false;
90} 90}
91 91
92void WidgetLayer::makeImage() 92void WidgetLayer::makeImage()
93{ 93{
94 calcGeometry(); 94 calcGeometry();
95 m_image = QArray<Character>( m_columns * m_lines ); 95 m_image = QArray<Character>( m_columns * m_lines );
96 clearImage(); 96 clearImage();
97} 97}
98 98
99void WidgetLayer::clearImage() 99void WidgetLayer::clearImage()
100{ 100{
101 //should this belong here?? 101 //should this belong here??
102 for ( int y = 0; y < m_lines; y++ ) 102 for ( int y = 0; y < m_lines; y++ )
103 for ( int x = 0; x < m_columns; x++ ) 103 for ( int x = 0; x < m_columns; x++ )
104 { 104 {
105 m_image[loc(x,y)].c = 0xff; 105 m_image[loc(x,y)].c = 0xff;
106 m_image[loc(x,y)].f = 0xff; 106 m_image[loc(x,y)].f = 0xff;
107 m_image[loc(x,y)].b = 0xff; 107 m_image[loc(x,y)].b = 0xff;
108 m_image[loc(x,y)].r = 0xff; 108 m_image[loc(x,y)].r = 0xff;
109 } 109 }
110} 110}
111 111
112/* --------------------------------- selection ------------------------------ */ 112/* --------------------------------- selection ------------------------------ */
113 113
114void WidgetLayer::pasteClipboard() 114void WidgetLayer::pasteClipboard()
115{ 115{
116 insertSelection(); 116 insertSelection();
117} 117}
118 118
119 119
120void WidgetLayer::insertSelection() 120void WidgetLayer::insertSelection()
121{ 121{
122 QString text = QApplication::clipboard()->text(); 122 QString text = QApplication::clipboard()->text();
123 if ( ! text.isNull() ) 123 if ( ! text.isNull() )
124 { 124 {
125 text.replace( QRegExp( "\n" ), "\r" ); 125 text.replace( QRegExp( "\n" ), "\r" );
126 insertText( text ); 126 insertText( text );
127 // selection should be unselected 127 // selection should be unselected
128 emit selectionCleared(); 128 emit selectionCleared();
129 } 129 }
130} 130}
131 131
132void WidgetLayer::insertText( QString text ) 132void WidgetLayer::insertText( QString text )
133{ 133{
134 // text is inserted as key event 134 // text is inserted as key event
135 QKeyEvent e( QEvent::KeyPress, 0, -1, 0, text); 135 QKeyEvent e( QEvent::KeyPress, 0, -1, 0, text);
136 emit keyPressed( &e ); 136 emit keyPressed( &e );
137} 137}
138 138
139void WidgetLayer::onClearSelection() 139void WidgetLayer::onClearSelection()
140{ 140{
141 emit selectionCleared(); 141 emit selectionCleared();
142} 142}
143 143
144void WidgetLayer::setSelection( const QString& text ) 144void WidgetLayer::setSelection( const QString& text )
145{ 145{
146 // why get the clipboard, we have it as instance var... 146 // why get the clipboard, we have it as instance var...
147 QObject *m_clipboard = QApplication::clipboard(); 147 QObject *m_clipboard = QApplication::clipboard();
148 148
149 // we know, that cliboard changes, when we change clipboard 149 // we know, that cliboard changes, when we change clipboard
150 QObject::disconnect( (QObject*) m_clipboard, SIGNAL( dataChanged() ), 150 QObject::disconnect( (QObject*) m_clipboard, SIGNAL( dataChanged() ),
151 (QObject*) this, SLOT( selectionCleared() ) ); 151 (QObject*) this, SLOT( selectionCleared() ) );
152 152
153 QApplication::clipboard()->setText( text ); 153 QApplication::clipboard()->setText( text );
154 154
155 QObject::connect( (QObject*) m_clipboard, SIGNAL( dataChanged() ), 155 QObject::connect( (QObject*) m_clipboard, SIGNAL( dataChanged() ),
156 (QObject*) this, SLOT( selectionCleared() ) ); 156 (QObject*) this, SLOT( selectionCleared() ) );
157} 157}
158
159
160/////////
161// special font characters
162/////////
163unsigned short vt100_graphics[32] =
164{ // 0/8 1/9 2/10 3/11 4/12 5/13 6/14 7/15
165 0x0020, 0x25C6, 0x2592, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0,
166 0x00b1, 0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c,
167 0xF800, 0xF801, 0x2500, 0xF803, 0xF804, 0x251c, 0x2524, 0x2534,
168 0x252c, 0x2502, 0x2264, 0x2265, 0x03C0, 0x2260, 0x00A3, 0x00b7
diff --git a/noncore/apps/opie-console/widget_layer.h b/noncore/apps/opie-console/widget_layer.h
index 01a4614..2ca0f88 100644
--- a/noncore/apps/opie-console/widget_layer.h
+++ b/noncore/apps/opie-console/widget_layer.h
@@ -1,255 +1,256 @@
1/* -------------------------------------------------------------------------- */ 1/* -------------------------------------------------------------------------- */
2/* */ 2/* */
3/* [widget_layer.h] Widget Layer */ 3/* [widget_layer.h] Widget Layer */
4/* */ 4/* */
5/* -------------------------------------------------------------------------- */ 5/* -------------------------------------------------------------------------- */
6 6
7// proposal of a widget Layer in opie-console 7// proposal of a widget Layer in opie-console
8// 8//
9// fellow devels: 9// fellow devels:
10// just mail me (ibotty@web.de), what you additionally need from the main widget 10// just mail me (ibotty@web.de), what you additionally need from the main widget
11// (or say in chat) 11// (or say in chat)
12 12
13#ifndef WIDGET_LAYER_H 13#ifndef WIDGET_LAYER_H
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> 18#include <qframe.h>
19#include <qarray.h> 19#include <qarray.h>
20#include <qtimer.h> 20#include <qtimer.h>
21#include <qkeycode.h> 21#include <qkeycode.h>
22#include <qclipboard.h> 22#include <qclipboard.h>
23 23
24 24
25// opie-console includes 25// opie-console includes
26#include "session.h" 26#include "session.h"
27#include "common.h" 27#include "common.h"
28#include "profile.h" 28#include "profile.h"
29/* 29/*
30 * given a pseudo location ( column, line ), 30 * given a pseudo location ( column, line ),
31 * returns the actual index, in the QArray<Character> 31 * returns the actual index, in the QArray<Character>
32 */ 32 */
33#define loc(X,Y) ((Y)*m_columns+(X)) 33#define loc(X,Y) ((Y)*m_columns+(X))
34 34
35 35
36 36
37unsigned short vt100_graphics[32];
37 38
38class WidgetLayer : public QFrame 39class WidgetLayer : public QFrame
39{ Q_OBJECT 40{ Q_OBJECT
40 41
41public: 42public:
42 43
43 /** 44 /**
44 * constructor 45 * constructor
45 * @param const Profile &config, the configuration for this widget 46 * @param const Profile &config, the configuration for this widget
46 * @param QWidget *parent, the parent widget 47 * @param QWidget *parent, the parent widget
47 * @param const char *name, the name of the widget, defaults to "" 48 * @param const char *name, the name of the widget, defaults to ""
48 */ 49 */
49 WidgetLayer( const Profile& config, QWidget *parent=0, const char *name=0 ); 50 WidgetLayer( const Profile& config, QWidget *parent=0, const char *name=0 );
50 51
51 /** 52 /**
52 * destructor 53 * destructor
53 */ 54 */
54 virtual ~WidgetLayer(); 55 virtual ~WidgetLayer();
55 56
56public: 57public:
57 /** 58 /**
58 * sets the image 59 * sets the image
59 * @param QArray<Character> const newimg, the new image 60 * @param QArray<Character> const newimg, the new image
60 * @param int lines, lines count of newimg 61 * @param int lines, lines count of newimg
61 * @param int columns, columns count of newimg 62 * @param int columns, columns count of newimg
62 */ 63 */
63 virtual void setImage( QArray<Character> const newimg, int lines, int colums ) = 0; 64 virtual void setImage( QArray<Character> const newimg, int lines, int colums ) = 0;
64 65
65 /** 66 /**
66 * annoy the user 67 * annoy the user
67 */ 68 */
68 void bell(); 69 void bell();
69 70
70 /** 71 /**
71 * @return int m_lines, the lines count 72 * @return int m_lines, the lines count
72 */ 73 */
73 int lines(){ return m_lines; } 74 int lines(){ return m_lines; }
74 75
75 /** 76 /**
76 * @return int m_columns, the columns count 77 * @return int m_columns, the columns count
77 */ 78 */
78 int columns(){ return m_columns; } 79 int columns(){ return m_columns; }
79 80
80 /** 81 /**
81 * insert current selection (currently this is only the clipboard) 82 * insert current selection (currently this is only the clipboard)
82 */ 83 */
83 void insertSelection(); 84 void insertSelection();
84 85
85 /** 86 /**
86 * insert text 87 * insert text
87 * @param QString text, the text to be inserted 88 * @param QString text, the text to be inserted
88 */ 89 */
89 void insertText( QString text ); 90 void insertText( QString text );
90 91
91 /** 92 /**
92 * set selection (clipboard) to text 93 * set selection (clipboard) to text
93 * @param const QString &text, the text to be selected 94 * @param const QString &text, the text to be selected
94 */ 95 */
95 void setSelection( const QString &text ); 96 void setSelection( const QString &text );
96 97
97 /** 98 /**
98 * paste content of clipboard 99 * paste content of clipboard
99 */ 100 */
100 void pasteClipboard(); 101 void pasteClipboard();
101 102
102 103
103 /** 104 /**
104 * reload configuration 105 * reload configuration
105 * @param const Profile& config, the config to be used (may be the same as in constructor) 106 * @param const Profile& config, the config to be used (may be the same as in constructor)
106 */ 107 */
107 virtual void reloadConfig( const Profile& config ) = 0; 108 virtual void reloadConfig( const Profile& config ) = 0;
108 109
109 110
110 /** 111 /**
111 * sets the scrollbar (if implemented by successor of this class) 112 * sets the scrollbar (if implemented by successor of this class)
112 */ 113 */
113 virtual void setScroll( int cursor, int slines ); 114 virtual void setScroll( int cursor, int slines );
114 115
115 /** 116 /**
116 * scrolls (if implemented, by successor of this class) 117 * scrolls (if implemented, by successor of this class)
117 * @param int value, how much the widget should scroll up (positive value) or down (negative value) 118 * @param int value, how much the widget should scroll up (positive value) or down (negative value)
118 */ 119 */
119 virtual void scroll( int value ); 120 virtual void scroll( int value );
120 121
121signals: 122signals:
122 123
123 /** 124 /**
124 * key was pressed 125 * key was pressed
125 */ 126 */
126 void keyPressed( QKeyEvent *e ); 127 void keyPressed( QKeyEvent *e );
127 128
128 /** 129 /**
129 * whenever Mouse selects something 130 * whenever Mouse selects something
130 * @param int button, the button that us pressed : 131 * @param int button, the button that us pressed :
131 * 0left Button 132 * 0left Button
132 * 3Button released 133 * 3Button released
133 * @param int x, x position 134 * @param int x, x position
134 * @param int y, y position 135 * @param int y, y position
135 * 136 *
136 * // numbering due to layout in old TEWidget 137 * // numbering due to layout in old TEWidget
137 */ 138 */
138 void mousePressed( int button, int x, int y ); 139 void mousePressed( int button, int x, int y );
139 140
140 /** 141 /**
141 * size of image changed 142 * size of image changed
142 * @param int lines, line count of new size 143 * @param int lines, line count of new size
143 * @param int columns, column count of new size 144 * @param int columns, column count of new size
144 */ 145 */
145 void imageSizeChanged( int lines, int columns ); 146 void imageSizeChanged( int lines, int columns );
146 147
147 /** 148 /**
148 * cursor in history changed 149 * cursor in history changed
149 * @param int value, value of history cursor 150 * @param int value, value of history cursor
150 */ 151 */
151 void historyCursorChanged( int value ); 152 void historyCursorChanged( int value );
152 153
153 /** 154 /**
154 * selection should be cleared 155 * selection should be cleared
155 */ 156 */
156 void selectionCleared(); 157 void selectionCleared();
157 158
158 /** 159 /**
159 * selection begin 160 * selection begin
160 * @param const int x, x position 161 * @param const int x, x position
161 * @param const int y, y position 162 * @param const int y, y position
162 */ 163 */
163 void selectionBegin( const int x, const int y ); 164 void selectionBegin( const int x, const int y );
164 165
165 /** 166 /**
166 * selection extended 167 * selection extended
167 * (from begin (s.a.) to x, y) 168 * (from begin (s.a.) to x, y)
168 * @param const int x, x position 169 * @param const int x, x position
169 * @param const int y, y position 170 * @param const int y, y position
170 */ 171 */
171 void selectionExtended( const int x, const int y ); 172 void selectionExtended( const int x, const int y );
172 173
173 /** 174 /**
174 * selection end 175 * selection end
175 * @param const bool lineBreakPreserve, preserve line breaks in selection 176 * @param const bool lineBreakPreserve, preserve line breaks in selection
176 */ 177 */
177 void selectionEnd( const bool lineBreakPreserve ); 178 void selectionEnd( const bool lineBreakPreserve );
178 179
179 180
180 181
181// protected methods 182// protected methods
182protected: 183protected:
183 184
184 // image operations 185 // image operations
185 186
186 /** 187 /**
187 * changes image, to suit new size 188 * changes image, to suit new size
188 * TODO: find meaningful name! 189 * TODO: find meaningful name!
189 */ 190 */
190 void propagateSize(); 191 void propagateSize();
191 192
192 /** 193 /**
193 *determines count of lines and columns 194 *determines count of lines and columns
194 */ 195 */
195 virtual void calcGeometry() = 0; 196 virtual void calcGeometry() = 0;
196 197
197 /** 198 /**
198 * makes an empty image 199 * makes an empty image
199 */ 200 */
200 void makeImage(); 201 void makeImage();
201 202
202 /** 203 /**
203 * clears the image 204 * clears the image
204 */ 205 */
205 void clearImage(); 206 void clearImage();
206 207
207protected slots: 208protected slots:
208 209
209 /** 210 /**
210 * clear selection 211 * clear selection
211 */ 212 */
212 void onClearSelection(); 213 void onClearSelection();
213 214
214 215
215// protected vars 216// protected vars
216protected: 217protected:
217 218
218 /** 219 /**
219 * current Session 220 * current Session
220 */ 221 */
221 Session *m_session; 222 Session *m_session;
222 223
223 /** 224 /**
224 * current character image 225 * current character image
225 * 226 *
226 * a Character at loc( column, line ) 227 * a Character at loc( column, line )
227 * has the actual index: 228 * has the actual index:
228 * ix = line * m_columns + column; 229 * ix = line * m_columns + column;
229 * 230 *
230 * use loc( x, y ) macro to access. 231 * use loc( x, y ) macro to access.
231 */ 232 */
232 QArray<Character> m_image; 233 QArray<Character> m_image;
233 234
234 /** 235 /**
235 * lines count 236 * lines count
236 */ 237 */
237 int m_lines; 238 int m_lines;
238 239
239 /** 240 /**
240 * columns count 241 * columns count
241 */ 242 */
242 int m_columns; 243 int m_columns;
243 244
244 /** 245 /**
245 * clipboard 246 * clipboard
246 */ 247 */
247 QClipboard* m_clipboard; 248 QClipboard* m_clipboard;
248 249
249 /** 250 /**
250 * whether widget is resizing 251 * whether widget is resizing
251 */ 252 */
252 bool m_resizing; 253 bool m_resizing;
253}; 254};
254 255
255#endif // WIDGET_LAYER_H 256#endif // WIDGET_LAYER_H