fix style issues as posted + removal of the static pixmap, no Assert()

though.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5431 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
André Pönitz 2002-10-17 09:51:18 +00:00
parent 2b62b66d31
commit 5a601958b2
3 changed files with 196 additions and 176 deletions

View File

@ -1,3 +1,8 @@
2002-10-17 André Pönitz <poenitz@lyx.org>
* QBrowseBox.[Ch]: fix style issues
2002-10-16 Angus Leeming <leeming@lyx.org> 2002-10-16 Angus Leeming <leeming@lyx.org>
* ui/moc/Makefile.am: * ui/moc/Makefile.am:

View File

@ -2,7 +2,7 @@
* \file QBrowseBox.C * \file QBrowseBox.C
* *
* Original file taken from klyx 0.10 sources: * Original file taken from klyx 0.10 sources:
* $Id: QBrowseBox.C,v 1.3 2002/10/15 18:29:01 larsbj Exp $ * $Id: QBrowseBox.C,v 1.4 2002/10/17 09:51:18 poenitz Exp $
* *
* \author Kalle Dalheimer ? * \author Kalle Dalheimer ?
* *
@ -26,111 +26,116 @@
QBrowseBox::QBrowseBox(int rows, int cols, QWidget * parent, QBrowseBox::QBrowseBox(int rows, int cols, QWidget * parent,
char const * name, WFlags fl) char const * name, WFlags fl)
: QGridView() : QGridView()
{ {
setNumRows( rows ); setNumRows(rows);
setNumCols( cols ); setNumCols(cols);
setCellWidth( width()/cols ); setCellWidth(width()/cols);
setCellHeight( height()/rows ); setCellHeight(height()/rows);
_texts = new QString[rows * cols]; texts_ = new QString[rows * cols];
_pixmaps = new QPixmap[rows * cols]; pixmaps_ = new QPixmap[rows * cols];
_activecell.setX( 0 ); activecell_.setX(0);
_activecell.setY( 0 ); activecell_.setY(0);
updateCell(0,0); updateCell(0, 0);
setMouseTracking( true ); setMouseTracking(true);
if( style().inherits( "QWindowsStyle" ) ) if (style().inherits("QWindowsStyle"))
setFrameStyle( QFrame::WinPanel | QFrame::Raised ); setFrameStyle(QFrame::WinPanel | QFrame::Raised);
else else
setFrameStyle( QFrame::Panel | QFrame::Raised ); setFrameStyle(QFrame::Panel | QFrame::Raised);
setFocusPolicy(QWidget::StrongFocus); setFocusPolicy(QWidget::StrongFocus);
} }
QBrowseBox::~QBrowseBox() QBrowseBox::~QBrowseBox()
{ {
delete [] _texts; delete [] texts_;
delete [] _pixmaps; delete [] pixmaps_;
} }
int QBrowseBox::coordsToIndex( int row, int col ) int QBrowseBox::coordsToIndex(int row, int col)
{ {
if( col<0 || col>numCols() || row<0 || row>numRows() ) if (col < 0 || col > numCols() || row < 0 || row > numRows())
qDebug( "coordsToIndex: invalid coords (%d, %d)\n", row, col ); qDebug("coordsToIndex: invalid coords (%d, %d)\n", row, col);
return row + col * numCols();
return row + col*numCols();
} }
void QBrowseBox::insertItem( const QString& text, int row, int col ) void QBrowseBox::insertItem(QString const & text, int row, int col)
{ {
_texts[ coordsToIndex( row, col ) ] = text; texts_[coordsToIndex(row, col)] = text;
} }
void QBrowseBox::insertItem( QPixmap pixmap, int row, int col ) void QBrowseBox::insertItem(char const * text, int x, int y)
{ {
_pixmaps[ coordsToIndex( row, col ) ] = pixmap; insertItem(QString(text), x, y);
} }
void QBrowseBox::insertItem(QPixmap pixmap, int row, int col)
{
pixmaps_[coordsToIndex(row, col)] = pixmap;
}
void QBrowseBox::insertItem( QPixmap pixmap) void QBrowseBox::insertItem( QPixmap pixmap)
{ {
int w = (pixmap.width()/numCols()); int w = pixmap.width() / numCols();
int h = (pixmap.height()/numRows()); int h = pixmap.height() / numRows();
for( int row = 0; row < numRows(); row++ ) for (int row = 0; row < numRows(); ++row)
for( int col = 0; col < numCols(); col++ ) for (int col = 0; col < numCols(); ++col) {
{ QPixmap small(w,h);
QPixmap small(w,h); bitBlt(&small,0,0,&pixmap,col*w,row*h,w,h,Qt::CopyROP,false);
bitBlt(&small,0,0,&pixmap,col*w,row*h,w,h,Qt::CopyROP,false); insertItem(small, row, col);
insertItem(small, row, col ); }
}
resize(pixmap.width() + (numCols()+1)*frameWidth(), resize(pixmap.width() + (numCols() + 1) * frameWidth(),
pixmap.height() +(numRows()+1)*frameWidth()); pixmap.height() + (numRows() + 1) * frameWidth());
} }
void QBrowseBox::removeItem( int row, int col )
void QBrowseBox::removeItem(int row, int col)
{ {
_texts[ coordsToIndex( row, col ) ] = ""; texts_[coordsToIndex(row, col)] = "";
_pixmaps[ coordsToIndex( row, col ) ].resize( 0, 0 ); pixmaps_[coordsToIndex(row, col)].resize(0, 0);
} }
void QBrowseBox::clear() void QBrowseBox::clear()
{ {
for( int row = 0; row < numRows(); row++ ) for (int row = 0; row < numRows(); ++row)
for( int col = 0; col < numCols(); col++ ) for (int col = 0; col < numCols(); ++col)
removeItem( row, col ); removeItem(row, col);
} }
QString QBrowseBox::text( int row, int col ) QString QBrowseBox::text(int row, int col)
{ {
if( col<0 || col >= numCols() || row<0 || row >= numRows() ) if (col < 0 || col >= numCols() || row < 0 || row >= numRows())
return ""; return "";
return _texts[ coordsToIndex( row, col ) ]; return texts_[coordsToIndex(row, col)];
} }
QPixmap QBrowseBox::pixmap( int row, int col ) QPixmap QBrowseBox::pixmap(int row, int col)
{ {
static QPixmap empty; if (col < 0 || col >= numCols() || row < 0 || row >= numRows())
return QPixmap();
if( col<0 || col>=numCols() || row<0 || row>=numRows() ) return pixmaps_[coordsToIndex(row, col)];
return empty;
return _pixmaps[ coordsToIndex( row, col ) ];
} }
void QBrowseBox::keyPressEvent( QKeyEvent* e )
void QBrowseBox::keyPressEvent(QKeyEvent * e)
{ {
switch( e->key()){ switch(e->key()) {
case Key_Up: case Key_Up:
moveUp(); moveUp();
break; break;
@ -144,139 +149,146 @@ void QBrowseBox::keyPressEvent( QKeyEvent* e )
moveRight(); moveRight();
break; break;
case Key_Return: case Key_Return:
emit selected( _activecell.x(), _activecell.y()); emit selected(activecell_.x(), activecell_.y());
break; break;
default: default:
e->ignore(); e->ignore();
} }
} }
void QBrowseBox::mouseReleaseEvent( QMouseEvent* e )
void QBrowseBox::mouseReleaseEvent(QMouseEvent * e)
{ {
qWarning("mouse release"); qWarning("mouse release");
emit selected( _activecell.x(), _activecell.y()); emit selected( activecell_.x(), activecell_.y());
} }
//void QBrowseBox::closeEvent( QCloseEvent* e)
//void QBrowseBox::closeEvent(QCloseEvent * e)
//{ //{
// e->accept(); // e->accept();
// qApp->exit_loop(); // qApp->exit_loop();
//} //}
void QBrowseBox::paintCell( class QPainter * painter, int row, int col ) void QBrowseBox::paintCell(QPainter * painter, int row, int col)
{ {
painter->setClipRect(cellGeometry(row,col));//, QPainter::CoordPainter); painter->setClipRect(cellGeometry(row,col));//, QPainter::CoordPainter);
bool ispixmap = false; bool ispixmap = false;
if( ! _pixmaps[coordsToIndex(row,col)].isNull() ) { if (!pixmaps_[coordsToIndex(row,col)].isNull()) {
painter->drawPixmap(0,0,_pixmaps[coordsToIndex(row,col)]); painter->drawPixmap(0,0,pixmaps_[coordsToIndex(row, col)]);
ispixmap = true; ispixmap = true;
} }
if( (_activecell.x()==row) && (_activecell.y()==col) ) { if (activecell_.x() == row && activecell_.y() == col) {
if( ispixmap ) if (ispixmap)
qDrawShadeRect( painter, 0, 0, cellWidth(), qDrawShadeRect(painter, 0, 0, cellWidth(),
cellHeight(), colorGroup(), false, 1 ); cellHeight(), colorGroup(), false, 1);
else else
qDrawShadePanel( painter, 0, 0, cellWidth(), qDrawShadePanel(painter, 0, 0, cellWidth(),
cellHeight(), colorGroup(), false, 1 ); cellHeight(), colorGroup(), false, 1);
} else { } else {
qDrawPlainRect( painter, 0, 0, cellWidth(), qDrawPlainRect(painter, 0, 0, cellWidth(),
cellHeight(), colorGroup().background(), 1 ); cellHeight(), colorGroup().background(), 1);
} }
if( ! _texts[ coordsToIndex( row, col ) ].isEmpty() ) { if (!texts_[coordsToIndex(row, col)].isEmpty()) {
painter->drawText( 0, 0, cellWidth(), painter->drawText(0, 0, cellWidth(),
cellHeight(), AlignLeft, cellHeight(), AlignLeft,
_texts[ coordsToIndex( row, col ) ] ); texts_[coordsToIndex(row, col)]);
} }
painter->setClipping(false); painter->setClipping(false);
} }
void QBrowseBox::resizeEvent( QResizeEvent* e ) void QBrowseBox::resizeEvent(QResizeEvent * e)
{ {
QGridView::resizeEvent(e); QGridView::resizeEvent(e);
setCellWidth( contentsRect().width()/numCols() ); setCellWidth(contentsRect().width() / numCols());
setCellHeight( contentsRect().height()/numRows() ); setCellHeight(contentsRect().height() / numRows());
} }
void QBrowseBox::mouseMoveEvent(QMouseEvent * e)
void QBrowseBox::mouseMoveEvent( QMouseEvent* e )
{ {
qWarning("mouseMoveEvent"); qWarning("mouseMoveEvent");
int x = e->pos().x(); int x = e->pos().x();
int y = e->pos().y(); int y = e->pos().y();
int cellx; int cellx;
int celly; int celly;
if( x < 0 || y < 0 || x > width() || y > height() ) { if (x < 0 || y < 0 || x > width() || y > height()) {
// outside the box // outside the box
cellx = -1; cellx = -1;
celly = -1; celly = -1;
} else { } else {
celly = (int)floor( ((double)x) / ((double)cellWidth()) ); #ifdef WITH_WARNINGS
cellx = (int)floor( ((double)y) / ((double)cellHeight()) ); #warning Is the switch of x and y intended here? (Andre)
} #endif
celly = (int)floor( ((double)x) / ((double)cellWidth()) );
cellx = (int)floor( ((double)y) / ((double)cellHeight()) );
}
if( (_activecell.x() != cellx) || (_activecell.y() != celly) ) if (activecell_.x() != cellx || activecell_.y() != celly) {
{ qWarning("update");
qWarning("update"); // mouse has been moved to another cell
// mouse has been moved to another cell int oldactivecellx = activecell_.x();
int oldactivecellx = _activecell.x(); int oldactivecelly = activecell_.y();
int oldactivecelly = _activecell.y(); activecell_.setX(cellx);
_activecell.setX( cellx ); activecell_.setY(celly);
_activecell.setY( celly ); // remove old highlighting
// remove old highlighting updateCell(oldactivecellx, oldactivecelly);
updateCell( oldactivecellx, oldactivecelly ); // set new highlighting
// set new highlighting updateCell(activecell_.x(), activecell_.y());
updateCell( _activecell.x(), _activecell.y() ); }
}
} }
void QBrowseBox::moveLeft( )
void QBrowseBox::moveLeft()
{ {
int const y = _activecell.y(); int const y = activecell_.y();
if (y>0) if (y>0)
_activecell.setY(y-1); activecell_.setY(y - 1);
updateCell(_activecell.x(), y); updateCell(activecell_.x(), y);
updateCell(_activecell.x(), _activecell.y()); updateCell(activecell_.x(), activecell_.y());
} }
void QBrowseBox::moveRight( )
void QBrowseBox::moveRight()
{ {
int const y = _activecell.y(); int const y = activecell_.y();
if (y<numCols()-1) if (y < numCols() - 1)
_activecell.setY(y+1); activecell_.setY(y+1);
updateCell(_activecell.x(), y); updateCell(activecell_.x(), y);
updateCell(_activecell.x(),_activecell.y()); updateCell(activecell_.x(), activecell_.y());
} }
void QBrowseBox::moveUp( )
void QBrowseBox::moveUp()
{ {
int const x = _activecell.x(); int const x = activecell_.x();
if (x>0) if (x > 0)
_activecell.setX(x-1); activecell_.setX(x - 1);
updateCell(x, _activecell.y()); updateCell(x, activecell_.y());
updateCell(_activecell.x(),_activecell.y()); updateCell(activecell_.x(), activecell_.y());
} }
void QBrowseBox::moveDown( )
void QBrowseBox::moveDown()
{ {
int const x = _activecell.x(); int const x = activecell_.x();
if (x<numRows()-1) if (x < numRows() - 1)
_activecell.setX(x+1); activecell_.setX(x + 1);
updateCell(x, _activecell.y()); updateCell(x, activecell_.y());
updateCell(_activecell.x(),_activecell.y()); updateCell(activecell_.x(), activecell_.y());
} }

View File

@ -3,7 +3,7 @@
* \file QBrowseBox.h * \file QBrowseBox.h
* *
* Original file taken from klyx 0.10 sources: * Original file taken from klyx 0.10 sources:
* $Id: QBrowseBox.h,v 1.1 2002/10/09 08:59:02 leuven Exp $ * $Id: QBrowseBox.h,v 1.2 2002/10/17 09:51:18 poenitz Exp $
* *
* \author Kalle Dalheimer ? * \author Kalle Dalheimer ?
* *
@ -16,7 +16,6 @@
#include "qgridview.h" #include "qgridview.h"
#include <qwidget.h> #include <qwidget.h>
#include <qarray.h>
class QString; class QString;
@ -28,45 +27,49 @@ class QBrowseBox : public QGridView
{ {
Q_OBJECT Q_OBJECT
public: public:
QBrowseBox( int rows , int cols, QWidget* parent = 0 , const char* name=0 , WFlags f =0 ); QBrowseBox(int rows, int cols, QWidget * parent = 0,
char const * name = 0, WFlags f = 0);
~QBrowseBox(); ~QBrowseBox();
void insertItem( const QString& text, int x, int y ); void insertItem(QString const & text, int x, int y);
void insertItem( const char* text, int x, int y ) { insertItem( QString( text ), x, y ); } void insertItem(char const * text, int x, int y);
void insertItem( QPixmap pixmap, int x, int y ); void insertItem(QPixmap pixmap, int x, int y);
void insertItem( QPixmap pixmap); void insertItem(QPixmap pixmap);
void removeItem( int x, int y ); void removeItem(int x, int y);
void clear(); void clear();
QString text( int x, int y ); QString text(int x, int y);
QPixmap pixmap( int x, int y); QPixmap pixmap(int x, int y);
// int exec( const QPoint& pos ); // int exec(QPoint const & pos);
// int exec( int x, int y ); // int exec(int x, int y);
// int exec( const QWidget* trigger ); // int exec(QWidget * trigger);
signals: signals:
void selected(int, int); void selected(int, int);
protected: protected:
virtual void keyPressEvent( QKeyEvent* e ); virtual void keyPressEvent(QKeyEvent * e);
virtual void resizeEvent( QResizeEvent* e ); virtual void resizeEvent(QResizeEvent * e);
virtual void mouseReleaseEvent( QMouseEvent* e ); virtual void mouseReleaseEvent(QMouseEvent * e);
// virtual void closeEvent( QCloseEvent* e ); // virtual void closeEvent(QCloseEvent * e);
virtual void mouseMoveEvent( QMouseEvent* e ); virtual void mouseMoveEvent(QMouseEvent * e);
virtual void paintCell( QPainter *, int, int ); virtual void paintCell(QPainter *, int x, int y);
private: private:
void moveLeft(); // make sure the automatically generated one is not used
void moveRight(); QBrowseBox & operator=(QBrowseBox const &);
void moveUp();
void moveDown();
int coordsToIndex( int x, int y );
QString* _texts; void moveLeft();
QPixmap* _pixmaps; void moveRight();
QPoint _activecell; void moveUp();
void moveDown();
int coordsToIndex(int x, int y);
QString * texts_;
QPixmap* pixmaps_;
QPoint activecell_;
}; };