summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/opie-console/widget_layer.cpp2
-rw-r--r--noncore/apps/opie-console/widget_layer.h2
2 files changed, 2 insertions, 2 deletions
diff --git a/noncore/apps/opie-console/widget_layer.cpp b/noncore/apps/opie-console/widget_layer.cpp
index f428ed4..8d68857 100644
--- a/noncore/apps/opie-console/widget_layer.cpp
+++ b/noncore/apps/opie-console/widget_layer.cpp
@@ -1,157 +1,157 @@
/* ------------------------------------------------------------------------- */
/* */
/* widget_layer.cpp Widget Layer */
/* */
/* opie developers <opie@handhelds.org> */
/* */
/* ------------------------------------------------------------------------- */
#include "widget_layer.h"
#include <qclipboard.h>
#include <qregexp.h>
#include <qglobal.h>
#include <string.h>
//#include <
#include "common.h"
-WidgetLayer::WidgetLayer( QWidget *parent, const char *name ) : QFrame( parent, name )
+WidgetLayer::WidgetLayer( const Profile &config, QWidget *parent, const char *name ) : QFrame( parent, name )
{
// get the clipboard
m_clipboard = QApplication::clipboard();
// when data on clipboard changes, clear selection
QObject::connect( (QObject*) m_clipboard, SIGNAL( dataChanged() ),
(QObject*)this, SLOT( onClearSelection() ) );
// initialize vars:
m_lines = 1;
m_columns = 1;
m_resizing = false;
// just for demonstrating
//m_image = QArray<Character>( m_lines * m_columns );
m_image = QArray<Character>( 1 );
}
WidgetLayer::~WidgetLayer()
{
// clean up
delete m_image;
}
/* --------------------------------- audio ---------------------------------- */
void WidgetLayer::bell()
{
QApplication::beep();
}
/* --------------------------------- screen --------------------------------- */
void WidgetLayer::propagateSize()
{
QArray<Character> oldimage = m_image.copy();
int oldlines = m_lines;
int oldcolumns = m_columns;
makeImage();
// copy old image, to reduce flicker
if ( ! oldimage.isEmpty() )
{
int lins = QMIN( oldlines, m_lines );
int cols = QMIN( oldcolumns, m_columns );
for ( int lin = 0; lin < lins; ++lin )
{
memcpy( (void*) &m_image[m_columns*lin],
(void*) &oldimage[oldcolumns*lin],
cols*sizeof( Character ) );
}
}
else
clearImage();
delete oldimage;
m_resizing = true;
emit imageSizeChanged( m_lines, m_columns );
m_resizing = false;
}
void WidgetLayer::makeImage()
{
calcGeometry();
m_image = QArray<Character>( m_columns * m_lines );
clearImage();
}
void WidgetLayer::clearImage()
{
//should this belong here??
for ( int y = 0; y < m_lines; y++ )
for ( int x = 0; x < m_columns; x++ )
{
m_image[loc(x,y)].c = 0xff;
m_image[loc(x,y)].f = 0xff;
m_image[loc(x,y)].b = 0xff;
m_image[loc(x,y)].r = 0xff;
}
}
/* --------------------------------- selection ------------------------------ */
void WidgetLayer::pasteClipboard()
{
insertSelection();
}
void WidgetLayer::insertSelection()
{
QString text = QApplication::clipboard()->text();
if ( ! text.isNull() )
{
text.replace( QRegExp( "\n" ), "\r" );
insertText( text );
// selection should be unselected
emit selectionCleared();
}
}
void WidgetLayer::insertText( QString text )
{
// text is inserted as key event
QKeyEvent e( QEvent::KeyPress, 0, -1, 0, text);
emit keyPressed( &e );
}
void WidgetLayer::onClearSelection()
{
emit selectionCleared();
}
void WidgetLayer::setSelection( const QString& text )
{
// why get the clipboard, we have it as instance var...
QObject *m_clipboard = QApplication::clipboard();
// we know, that cliboard changes, when we change clipboard
QObject::disconnect( (QObject*) m_clipboard, SIGNAL( dataChanged() ),
(QObject*) this, SLOT( selectionCleared() ) );
QApplication::clipboard()->setText( text );
QObject::connect( (QObject*) m_clipboard, SIGNAL( dataChanged() ),
(QObject*) this, SLOT( selectionCleared() ) );
}
diff --git a/noncore/apps/opie-console/widget_layer.h b/noncore/apps/opie-console/widget_layer.h
index d821f1d..0056061 100644
--- a/noncore/apps/opie-console/widget_layer.h
+++ b/noncore/apps/opie-console/widget_layer.h
@@ -1,220 +1,220 @@
/* -------------------------------------------------------------------------- */
/* */
/* [widget_layer.h] Widget Layer */
/* */
/* -------------------------------------------------------------------------- */
// proposal of a widget Layer in opie-console
//
// fellow devels:
// just mail me (ibotty@web.de), what you additionally need from the main widget
// (or say in chat)
#ifndef WIDGET_LAYER_H
#define WIDGET_LAYER_H
// qt includes
#include <qapplication.h>
#include <qframe.h>
#include <qarray.h>
#include <qtimer.h>
#include <qkeycode.h>
#include <qclipboard.h>
// opie-console includes
#include "session.h"
#include "common.h"
-
+#include "profile.h"
/*
* given a pseudo location ( column, line ),
* returns the actual index, in the QArray<Character>
*/
#define loc(X,Y) ((Y)*m_columns+(X))
class WidgetLayer : public QFrame
{ Q_OBJECT
public:
/**
* constructor
* @param const Profile &config, the configuration for this widget
* @param QWidget *parent, the parent widget
* @param const char *name, the name of the widget, defaults to ""
*/
WidgetLayer( const Profile &config, QWidget *parent=0, const char *name=0 );
/**
* destructor
*/
virtual ~WidgetLayer();
public:
/**
* sets the image
* @param QArray<Character> const newimg, the new image
* @param int lines, lines count of newimg
* @param int columns, columns count of newimg
*/
virtual void setImage( QArray<Character> const newimg, int lines, int colums ) = 0;
/**
* annoy the user
*/
void bell();
/**
* @return int m_lines, the lines count
*/
int lines() { return m_lines; }
/**
* @return int m_columns, the columns count
*/
int columns() { return m_columns; }
/**
* insert current selection (currently this is only the clipboard)
*/
void insertSelection();
/**
* insert text
* @param QString text, the text to be inserted
*/
void insertText( QString text );
/**
* set selection (clipboard) to text
* @param const QString &text, the text to be selected
*/
void setSelection( const QString &text );
/**
* paste content of clipboard
*/
void pasteClipboard();
signals:
/**
* key was pressed
*/
void keyPressed( QKeyEvent *e );
/**
* whenever Mouse selects something
* @param int button, the button that us pressed :
* 0 left Button
* 3 Button released
* @param int x, x position
* @param int y, y position
*
* // numbering due to layout in old TEWidget
*/
void mousePressed( int button, int x, int y );
/**
* size of image changed
* @param int lines, line count of new size
* @param int columns, column count of new size
*/
void imageSizeChanged( int lines, int columns );
/**
* cursor in history changed
* @param int value, value of history cursor
*/
void historyCursorChanged( int value );
/**
* selection should be cleared
*/
void selectionCleared();
/**
* selection begin
* @param const int x, x position
* @param const int y, y position
*/
void selectionBegin( const int x, const int y );
/**
* selection extended
* (from begin (s.a.) to x, y)
* @param const int x, x position
* @param const int y, y position
*/
void selectionExtended( const int x, const int y );
/**
* selection end
* @param const bool lineBreakPreserve, preserve line breaks in selection
*/
void selectionEnd( const bool lineBreakPreserve );
// protected methods
protected:
// image operations
/**
* changes image, to suit new size
* TODO: find meaningful name!
*/
void propagateSize();
/**
*determines count of lines and columns
*/
virtual void calcGeometry() = 0;
/**
* makes an empty image
*/
void makeImage();
/**
* clears the image
*/
void clearImage();
protected slots:
/**
* clear selection
*/
void onClearSelection();
// protected vars
protected:
/**
* current Session
*/
Session *m_session;
/**
* current character image
*
* a Character at loc( column, line )
* has the actual index:
* ix = line * m_columns + column;
*
* use loc( x, y ) macro to access.
*/
QArray<Character> m_image;
/**
* lines count
*/
int m_lines;