From 4f3517efd69b1b4a016799e3875b6c72e9fb1a3b Mon Sep 17 00:00:00 2001 From: llornkcor Date: Sat, 14 Jun 2003 18:02:08 +0000 Subject: in libopie --- (limited to 'noncore/apps/tinykate/libkate/microkde') diff --git a/noncore/apps/tinykate/libkate/microkde/qcolordialog.cpp b/noncore/apps/tinykate/libkate/microkde/qcolordialog.cpp deleted file mode 100644 index fe999b6..0000000 --- a/noncore/apps/tinykate/libkate/microkde/qcolordialog.cpp +++ b/dev/null @@ -1,1631 +0,0 @@ -/**************************************************************************** -** $Id$ -** -** Implementation of KColorDialog class -** -** Created : 990222 -** -** Copyright (C) 1999-2000 Trolltech AS. All rights reserved. -** -** This file is part of the dialogs module of the Qt GUI Toolkit. -** -** This file may be distributed under the terms of the Q Public License -** as defined by Trolltech AS of Norway and appearing in the file -** LICENSE.QPL included in the packaging of this file. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition -** licenses may use this file in accordance with the Qt Commercial License -** Agreement provided with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for -** information about Qt Commercial License Agreements. -** See http://www.trolltech.com/qpl/ for QPL licensing information. -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#include "qcolordialog.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//////////// QWellArray BEGIN - -#include - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of qwellarray.cpp and qcolordialog.cpp. -// This header file may change from version to version without notice, -// or even be removed. -// -// - - -#include - - -struct QWellArrayData; - -class QWellArray : public QTableView -{ - Q_OBJECT - Q_PROPERTY( int numCols READ numCols ) - Q_PROPERTY( int numRows READ numRows ) - Q_PROPERTY( int selectedColumn READ selectedColumn ) - Q_PROPERTY( int selectedRow READ selectedRow ) - -public: - QWellArray( QWidget *parent=0, const char *name=0, bool popup = FALSE ); - - ~QWellArray() {} - QString cellContent( int row, int col ) const; - // ### Paul !!! virtual void setCellContent( int row, int col, const QString &); - - // ##### Obsolete since not const - int numCols() { return nCols; } - int numRows() { return nRows; } - - int numCols() const { return nCols; } - int numRows() const { return nRows; } - - // ##### Obsolete since not const - int selectedColumn() { return selCol; } - int selectedRow() { return selRow; } - - int selectedColumn() const { return selCol; } - int selectedRow() const { return selRow; } - - virtual void setSelected( int row, int col ); - - void setCellSize( int w, int h ) { setCellWidth(w);setCellHeight( h ); } - - QSize sizeHint() const; - - virtual void setDimension( int rows, int cols ); - virtual void setCellBrush( int row, int col, const QBrush & ); - QBrush cellBrush( int row, int col ); - -signals: - void selected( int row, int col ); - -protected: - virtual void setCurrent( int row, int col ); - - virtual void drawContents( QPainter *, int row, int col, const QRect& ); - void drawContents( QPainter * ); - - void paintCell( QPainter*, int row, int col ); - void mousePressEvent( QMouseEvent* ); - void mouseReleaseEvent( QMouseEvent* ); - void mouseMoveEvent( QMouseEvent* ); - void keyPressEvent( QKeyEvent* ); - void focusInEvent( QFocusEvent* ); - void focusOutEvent( QFocusEvent* ); - -private: - int curRow; - int curCol; - int selRow; - int selCol; - int nCols; - int nRows; - bool smallStyle; - QWellArrayData *d; - -private: // Disabled copy constructor and operator= -#if defined(Q_DISABLE_COPY) - QWellArray( const QWellArray & ); - QWellArray& operator=( const QWellArray & ); -#endif -}; - - - -// non-interface ... - - - -struct QWellArrayData { - QBrush *brush; -}; - -// NOT REVISED -/* WARNING, NOT - \class QWellArray qwellarray_p.h - \brief .... - - .... - - \ingroup advanced -*/ - -QWellArray::QWellArray( QWidget *parent, const char * name, bool popup ) - : QTableView( parent, name, - popup ? (WStyle_Customize|WStyle_Tool|WStyle_NoBorder) : 0 ) -{ - d = 0; - setFocusPolicy( StrongFocus ); - setBackgroundMode( PaletteButton ); - nCols = 7; - nRows = 7; - int w = 24; // cell width - int h = 21; // cell height - smallStyle = popup; - - if ( popup ) { - w = h = 18; - if ( style() == WindowsStyle ) - setFrameStyle( QFrame::WinPanel | QFrame::Raised ); - else - setFrameStyle( QFrame::Panel | QFrame::Raised ); - setMargin( 1 ); - setLineWidth( 2 ); - } - setNumCols( nCols ); - setNumRows( nRows ); - setCellWidth( w ); - setCellHeight( h ); - curCol = 0; - curRow = 0; - selCol = -1; - selRow = -1; - - if ( smallStyle ) - setMouseTracking( TRUE ); - setOffset( 5 , 10 ); - - resize( sizeHint() ); - -} - - -QSize QWellArray::sizeHint() const -{ - constPolish(); - int f = frameWidth() * 2; - int w = nCols * cellWidth() + f; - int h = nRows * cellHeight() + f; - return QSize( w, h ); -} - - -void QWellArray::paintCell( QPainter* p, int row, int col ) -{ - int w = cellWidth( col ); // width of cell in pixels - int h = cellHeight( row ); // height of cell in pixels - int b = 1; - - if ( !smallStyle ) - b = 3; - - const QColorGroup & g = colorGroup(); - p->setPen( QPen( black, 0, SolidLine ) ); - if ( !smallStyle && row ==selRow && col == selCol && - style() != MotifStyle ) { - int n = 2; - p->drawRect( n, n, w-2*n, h-2*n ); - } - - - if ( style() == WindowsStyle ) { - qDrawWinPanel( p, b, b , w - 2*b, h - 2*b, - g, TRUE ); - b += 2; - } else { - if ( smallStyle ) { - qDrawShadePanel( p, b, b , w - 2*b, h - 2*b, - g, TRUE, 2 ); - b += 2; - } else { - int t = ( row == selRow && col == selCol ) ? 2 : 0; - b -= t; - qDrawShadePanel( p, b, b , w - 2*b, h - 2*b, - g, TRUE, 2 ); - b += 2 + t; - } - } - - - if ( (row == curRow) && (col == curCol) ) { - if ( smallStyle ) { - p->setPen ( white ); - p->drawRect( 1, 1, w-2, h-2 ); - p->setPen ( black ); - p->drawRect( 0, 0, w, h ); - p->drawRect( 2, 2, w-4, h-4 ); - b = 3; - } else if ( hasFocus() ) { - style().drawFocusRect(p, QRect(0,0,w,h), g ); - } - } - drawContents( p, row, col, QRect(b, b, w - 2*b, h - 2*b) ); -} - -/*! - Pass-through to QTableView::drawContents() to avoid hiding. -*/ -void QWellArray::drawContents( QPainter *p ) -{ - QTableView::drawContents(p); -} - -/*! - Reimplement this function to change the contents of the well array. - */ -void QWellArray::drawContents( QPainter *p, int row, int col, const QRect &r ) -{ - - if ( d ) { - p->fillRect( r, d->brush[row*nCols+col] ); - } else { - p->fillRect( r, white ); - p->setPen( black ); - p->drawLine( r.topLeft(), r.bottomRight() ); - p->drawLine( r.topRight(), r.bottomLeft() ); - } -} - - -/*\reimp -*/ -void QWellArray::mousePressEvent( QMouseEvent* e ) -{ - // The current cell marker is set to the cell the mouse is pressed - // in. - QPoint pos = e->pos(); - setCurrent( findRow( pos.y() ), findCol( pos.x() ) ); -} - -/*\reimp -*/ -void QWellArray::mouseReleaseEvent( QMouseEvent* ) -{ - // The current cell marker is set to the cell the mouse is clicked - // in. - setSelected( curRow, curCol ); -} - - -/*\reimp -*/ -void QWellArray::mouseMoveEvent( QMouseEvent* e ) -{ - // The current cell marker is set to the cell the mouse is - // clicked in. - if ( smallStyle ) { - QPoint pos = e->pos(); - setCurrent( findRow( pos.y() ), findCol( pos.x() ) ); - } -} - -/* - Sets the cell currently having the focus. This is not necessarily - the same as the currently selected cell. -*/ - -void QWellArray::setCurrent( int row, int col ) -{ - - if ( (curRow == row) && (curCol == col) ) - return; - - if ( row < 0 || col < 0 ) - row = col = -1; - - int oldRow = curRow; - int oldCol = curCol; - - curRow = row; - curCol = col; - - updateCell( oldRow, oldCol ); - updateCell( curRow, curCol ); -} - - -/*! - Sets the currently selected cell to \a row, \a col. If \a row or \a - col are less than zero, the current cell is unselected. - - Does not set the position of the focus indicator. -*/ - -void QWellArray::setSelected( int row, int col ) -{ - if ( (selRow == row) && (selCol == col) ) - return; - - int oldRow = selRow; - int oldCol = selCol; - - if ( row < 0 || col < 0 ) - row = col = -1; - - selCol = col; - selRow = row; - - updateCell( oldRow, oldCol ); - updateCell( selRow, selCol ); - if ( row >= 0 ) - emit selected( row, col ); - - if ( isVisible() && parentWidget() && parentWidget()->inherits("QPopupMenu") ) - parentWidget()->close(); - -} - - - -/*!\reimp -*/ -void QWellArray::focusInEvent( QFocusEvent* ) -{ - updateCell( curRow, curCol ); -} - - -/*! - Sets the size of the well array to be \c rows cells by \c cols. - Resets any brush info set by setCellBrush(). - - Must be called by reimplementors. - */ -void QWellArray::setDimension( int rows, int cols ) -{ - nRows = rows; - nCols = cols; - if ( d ) { - if ( d->brush ) - delete[] d->brush; - delete d; - d = 0; - } - setNumCols( nCols ); - setNumRows( nRows ); -} - -void QWellArray::setCellBrush( int row, int col, const QBrush &b ) -{ - if ( !d ) { - d = new QWellArrayData; - d->brush = new QBrush[nRows*nCols]; - } - if ( row >= 0 && row < nRows && col >= 0 && col < nCols ) - d->brush[row*nCols+col] = b; -#ifdef CHECK_RANGE - else - qWarning( "QWellArray::setCellBrush( %d, %d ) out of range", row, col ); -#endif -} - - - -/*! - Returns the brush set for the cell at \a row, \a col. If no brush is set, - \c NoBrush is returned. -*/ - -QBrush QWellArray::cellBrush( int row, int col ) -{ - if ( d && row >= 0 && row < nRows && col >= 0 && col < nCols ) - return d->brush[row*nCols+col]; - return NoBrush; -} - - - -/*!\reimp -*/ - -void QWellArray::focusOutEvent( QFocusEvent* ) -{ - updateCell( curRow, curCol ); -} - -/*\reimp -*/ -void QWellArray::keyPressEvent( QKeyEvent* e ) -{ - switch( e->key() ) { // Look at the key code - case Key_Left: // If 'left arrow'-key, - if( curCol > 0 ) { // and cr't not in leftmost col - setCurrent( curRow, curCol - 1); // set cr't to next left column - int edge = leftCell(); // find left edge - if ( curCol < edge ) // if we have moved off edge, - setLeftCell( edge - 1 ); // scroll view to rectify - } - break; - case Key_Right: // Correspondingly... - if( curCol < numCols()-1 ) { - setCurrent( curRow, curCol + 1); - int edge = lastColVisible(); - if ( curCol >= edge ) - setLeftCell( leftCell() + 1 ); - } - break; - case Key_Up: - if( curRow > 0 ) { - setCurrent( curRow - 1, curCol); - int edge = topCell(); - if ( curRow < edge ) - setTopCell( edge - 1 ); - } else if ( smallStyle ) - focusNextPrevChild( FALSE ); - break; - case Key_Down: - if( curRow < numRows()-1 ) { - setCurrent( curRow + 1, curCol); - int edge = lastRowVisible(); - if ( curRow >= edge ) - setTopCell( topCell() + 1 ); - } else if ( smallStyle ) - focusNextPrevChild( TRUE ); - break; - case Key_Space: - case Key_Return: - case Key_Enter: - setSelected( curRow, curCol ); - break; - default: // If not an interesting key, - e->ignore(); // we don't accept the event - return; - } - -} - -//////////// QWellArray END - -static bool initrgb = FALSE; -static QRgb stdrgb[6*8]; -static QRgb cusrgb[2*8]; - - -static void initRGB() -{ - if ( initrgb ) - return; - initrgb = TRUE; - int i = 0; - for ( int g = 0; g < 4; g++ ) - for ( int r = 0; r < 4; r++ ) - for ( int b = 0; b < 3; b++ ) - stdrgb[i++] = qRgb( r*255/3, g*255/3, b*255/2 ); - - for ( i = 0; i < 2*8; i++ ) - cusrgb[i] = qRgb(0xff,0xff,0xff); -} - -/*! - Returns the number of custom colors supported by - KColorDialog. All color dialogs share the same custom colors. -*/ -int KColorDialog::customCount() -{ - return 2*8; -} - -/*! - Returns custom color number \a i as a QRgb. - */ -QRgb KColorDialog::customColor( int i ) -{ - initRGB(); - if ( i < 0 || i >= customCount() ) { -#ifdef CHECK_RANGE - qWarning( "KColorDialog::customColor() index %d out of range", i ); -#endif - i = 0; - } - return cusrgb[i]; -} - -/*! - Sets custom color number \a i to the QRgb value \a c. -*/ -void KColorDialog::setCustomColor( int i, QRgb c ) -{ - initRGB(); - if ( i < 0 || i >= customCount() ) { -#ifdef CHECK_RANGE - qWarning( "KColorDialog::customColor() index %d out of range", i ); -#endif - return; - } - cusrgb[i] = c; -} - -static inline void rgb2hsv( QRgb rgb, int&h, int&s, int&v ) -{ - QColor c; - c.setRgb( rgb ); - c.getHsv(h,s,v); -} - -class QColorWell : public QWellArray -{ -public: - QColorWell( QWidget *parent, int r, int c, QRgb *vals ) - :QWellArray( parent, "" ), values( vals ), mousePressed( FALSE ), oldCurrent( -1, -1 ) - { setDimension(r,c); setWFlags( WResizeNoErase ); } - QSizePolicy sizePolicy() const; - -protected: - void drawContents( QPainter *, int row, int col, const QRect& ); - void drawContents( QPainter *p ) { QWellArray::drawContents(p); } - void mousePressEvent( QMouseEvent *e ); - void mouseMoveEvent( QMouseEvent *e ); - void mouseReleaseEvent( QMouseEvent *e ); -#ifndef QT_NO_DRAGANDDROP - void dragEnterEvent( QDragEnterEvent *e ); - void dragLeaveEvent( QDragLeaveEvent *e ); - void dragMoveEvent( QDragMoveEvent *e ); - void dropEvent( QDropEvent *e ); -#endif - -private: - QRgb *values; - bool mousePressed; - QPoint pressPos; - QPoint oldCurrent; - -}; - -QSizePolicy QColorWell::sizePolicy() const -{ - return QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ); -} - -void QColorWell::drawContents( QPainter *p, int row, int col, const QRect &r ) -{ - int i = row + col*numRows(); - p->fillRect( r, QColor( values[i] ) ); -} - -void QColorWell::mousePressEvent( QMouseEvent *e ) -{ - oldCurrent = QPoint( selectedRow(), selectedColumn() ); - QWellArray::mousePressEvent( e ); - mousePressed = TRUE; - pressPos = e->pos(); -} - -void QColorWell::mouseMoveEvent( QMouseEvent *e ) -{ - QWellArray::mouseMoveEvent( e ); -#ifndef QT_NO_DRAGANDDROP - if ( !mousePressed ) - return; - if ( ( pressPos - e->pos() ).manhattanLength() > QApplication::startDragDistance() ) { - setCurrent( oldCurrent.x(), oldCurrent.y() ); - int i = findRow( e->y() ) + findCol( e->x() ) * numRows(); - QColor col( values[ i ] ); - QColorDrag *drg = new QColorDrag( col, this ); - QPixmap pix( cellWidth(), cellHeight() ); - pix.fill( col ); - QPainter p( &pix ); - p.drawRect( 0, 0, pix.width(), pix.height() ); - p.end(); - drg->setPixmap( pix ); - mousePressed = FALSE; - drg->dragCopy(); - } -#endif -} - -#ifndef QT_NO_DRAGANDDROP -void QColorWell::dragEnterEvent( QDragEnterEvent *e ) -{ - setFocus(); - if ( QColorDrag::canDecode( e ) ) - e->accept(); - else - e->ignore(); -} - -void QColorWell::dragLeaveEvent( QDragLeaveEvent * ) -{ - if ( hasFocus() ) - parentWidget()->setFocus(); -} - -void QColorWell::dragMoveEvent( QDragMoveEvent *e ) -{ - if ( QColorDrag::canDecode( e ) ) { - setCurrent( findRow( e->pos().y() ), findCol( e->pos().x() ) ); - e->accept(); - } else - e->ignore(); -} - -void QColorWell::dropEvent( QDropEvent *e ) -{ - if ( QColorDrag::canDecode( e ) ) { - int i = findRow( e->pos().y() ) + findCol( e->pos().x() ) * numRows(); - QColor col; - QColorDrag::decode( e, col ); - values[ i ] = col.rgb(); - repaint( FALSE ); - e->accept(); - } else { - e->ignore(); - } -} - -#endif // QT_NO_DRAGANDDROP - -void QColorWell::mouseReleaseEvent( QMouseEvent *e ) -{ - if ( !mousePressed ) - return; - QWellArray::mouseReleaseEvent( e ); - mousePressed = FALSE; -} - -class QColorPicker : public QFrame -{ - Q_OBJECT -public: - QColorPicker(QWidget* parent=0, const char* name=0); - ~QColorPicker(); - -public slots: - void setCol( int h, int s ); - -signals: - void newCol( int h, int s ); - -protected: - QSize sizeHint() const; - QSizePolicy sizePolicy() const; - void drawContents(QPainter* p); - void mouseMoveEvent( QMouseEvent * ); - void mousePressEvent( QMouseEvent * ); - -private: - int hue; - int sat; - - QPoint colPt(); - int huePt( const QPoint &pt ); - int satPt( const QPoint &pt ); - void setCol( const QPoint &pt ); - - QPixmap *pix; -}; - -static int pWidth = 200; -static int pHeight = 200; - -class QColorLuminancePicker : public QWidget -{ - Q_OBJECT -public: - QColorLuminancePicker(QWidget* parent=0, const char* name=0); - ~QColorLuminancePicker(); - -public slots: - void setCol( int h, int s, int v ); - void setCol( int h, int s ); - -signals: - void newHsv( int h, int s, int v ); - -protected: -// QSize sizeHint() const; -// QSizePolicy sizePolicy() const; - void paintEvent( QPaintEvent*); - void mouseMoveEvent( QMouseEvent * ); - void mousePressEvent( QMouseEvent * ); - -private: - enum { foff = 3, coff = 4 }; //frame and contents offset - int val; - int hue; - int sat; - - int y2val( int y ); - int val2y( int val ); - void setVal( int v ); - - QPixmap *pix; -}; - - -int QColorLuminancePicker::y2val( int y ) -{ - int d = height() - 2*coff - 1; - return 255 - (y - coff)*255/d; -} - -int QColorLuminancePicker::val2y( int v ) -{ - int d = height() - 2*coff - 1; - return coff + (255-v)*d/255; -} - -QColorLuminancePicker::QColorLuminancePicker(QWidget* parent, - const char* name) - :QWidget( parent, name ) -{ - hue = 100; val = 100; sat = 100; - pix = 0; - // setBackgroundMode( NoBackground ); -} - -QColorLuminancePicker::~QColorLuminancePicker() -{ - delete pix; -} - -void QColorLuminancePicker::mouseMoveEvent( QMouseEvent *m ) -{ - setVal( y2val(m->y()) ); -} -void QColorLuminancePicker::mousePressEvent( QMouseEvent *m ) -{ - setVal( y2val(m->y()) ); -} - -void QColorLuminancePicker::setVal( int v ) -{ - if ( val == v ) - return; - val = QMAX( 0, QMIN(v,255)); - delete pix; pix=0; - repaint( FALSE ); //### - emit newHsv( hue, sat, val ); -} - -//receives from a hue,sat chooser and relays. -void QColorLuminancePicker::setCol( int h, int s ) -{ - setCol( h, s, val ); - emit newHsv( h, s, val ); -} - -void QColorLuminancePicker::paintEvent( QPaintEvent * ) -{ - int w = width() - 5; - - QRect r( 0, foff, w, height() - 2*foff ); - int wi = r.width() - 2; - int hi = r.height() - 2; - if ( !pix || pix->height() != hi || pix->width() != wi ) { - delete pix; - QImage img( wi, hi, 32 ); - int y; - for ( y = 0; y < hi; y++ ) { - QColor c( hue, sat, y2val(y+coff), QColor::Hsv ); - QRgb r = c.rgb(); - int x; - for ( x = 0; x < wi; x++ ) - img.setPixel( x, y, r ); - } - pix = new QPixmap; - pix->convertFromImage(img); - } - QPainter p(this); - p.drawPixmap( 1, coff, *pix ); - QColorGroup g = colorGroup(); - qDrawShadePanel( &p, r, g, TRUE ); - p.setPen( g.foreground() ); - p.setBrush( g.foreground() ); - QPointArray a; - int y = val2y(val); - a.setPoints( 3, w, y, w+5, y+5, w+5, y-5 ); - erase( w, 0, 5, height() ); - p.drawPolygon( a ); -} - -void QColorLuminancePicker::setCol( int h, int s , int v ) -{ - val = v; - hue = h; - sat = s; - delete pix; pix=0; - repaint( FALSE );//#### -} - -QPoint QColorPicker::colPt() -{ return QPoint( (360-hue)*(pWidth-1)/360, (255-sat)*(pHeight-1)/255 ); } -int QColorPicker::huePt( const QPoint &pt ) -{ return 360 - pt.x()*360/(pWidth-1); } -int QColorPicker::satPt( const QPoint &pt ) -{ return 255 - pt.y()*255/(pHeight-1) ; } -void QColorPicker::setCol( const QPoint &pt ) -{ setCol( huePt(pt), satPt(pt) ); } - -QColorPicker::QColorPicker(QWidget* parent, const char* name ) - : QFrame( parent, name ) -{ - hue = 0; sat = 0; - setCol( 150, 255 ); - - QImage img( pWidth, pHeight, 32 ); - int x,y; - for ( y = 0; y < pHeight; y++ ) - for ( x = 0; x < pWidth; x++ ) { - QPoint p( x, y ); - img.setPixel( x, y, QColor(huePt(p), satPt(p), - 200, QColor::Hsv).rgb() ); - } - pix = new QPixmap; - pix->convertFromImage(img); - setBackgroundMode( NoBackground ); -} - -QColorPicker::~QColorPicker() -{ - delete pix; -} - -QSize QColorPicker::sizeHint() const -{ - return QSize( pWidth + 2*frameWidth(), pHeight + 2*frameWidth() ); -} - -QSizePolicy QColorPicker::sizePolicy() const -{ - return QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ); -} - -void QColorPicker::setCol( int h, int s ) -{ - int nhue = QMIN( QMAX(0,h), 360 ); - int nsat = QMIN( QMAX(0,s), 255); - if ( nhue == hue && nsat == sat ) - return; - QRect r( colPt(), QSize(20,20) ); - hue = nhue; sat = nsat; - r = r.unite( QRect( colPt(), QSize(20,20) ) ); - r.moveBy( contentsRect().x()-9, contentsRect().y()-9 ); - // update( r ); - repaint( r, FALSE ); -} - -void QColorPicker::mouseMoveEvent( QMouseEvent *m ) -{ - QPoint p = m->pos() - contentsRect().topLeft(); - setCol( p ); - emit newCol( hue, sat ); -} - -void QColorPicker::mousePressEvent( QMouseEvent *m ) -{ - QPoint p = m->pos() - contentsRect().topLeft(); - setCol( p ); - emit newCol( hue, sat ); -} - -void QColorPicker::drawContents(QPainter* p) -{ - QRect r = contentsRect(); - - p->drawPixmap( r.topLeft(), *pix ); - QPoint pt = colPt() + r.topLeft(); - p->setPen( QPen(black) ); - - p->fillRect( pt.x()-9, pt.y(), 20, 2, black ); - p->fillRect( pt.x(), pt.y()-9, 2, 20, black ); - -} - -class QColorShowLabel; - - - -class QColIntValidator: public QIntValidator -{ -public: - QColIntValidator( int bottom, int top, - QWidget * parent, const char *name = 0 ) - :QIntValidator( bottom, top, parent, name ) {} - - QValidator::State validate( QString &, int & ) const; -}; - -QValidator::State QColIntValidator::validate( QString &s, int &pos ) const -{ - State state = QIntValidator::validate(s,pos); - if ( state == Valid ) { - long int val = s.toLong(); - // This is not a general solution, assumes that top() > 0 and - // bottom >= 0 - if ( val < 0 ) { - s = "0"; - pos = 1; - } else if ( val > top() ) { - s.setNum( top() ); - pos = s.length(); - } - } - return state; -} - - - -class QColNumLineEdit : public QLineEdit -{ -public: - QColNumLineEdit( QWidget *parent, const char* name = 0 ) - : QLineEdit( parent, name ) { setMaxLength( 3 );} - QSize sizeHint() const { - return QSize( 30, //##### - QLineEdit::sizeHint().height() ); } - void setNum( int i ) { - QString s; - s.setNum(i); - bool block = signalsBlocked(); - blockSignals(TRUE); - setText( s ); - blockSignals(block); - } - int val() const { return text().toInt(); } -}; - - -class QColorShower : public QWidget -{ - Q_OBJECT -public: - QColorShower( QWidget *parent, const char *name = 0 ); - - //things that don't emit signals - void setHsv( int h, int s, int v ); - - int currentAlpha() const { return alphaEd->val(); } - void setCurrentAlpha( int a ) { alphaEd->setNum( a ); } - void showAlpha( bool b ); - - - QRgb currentColor() const { return curCol; } - -public slots: - void setRgb( QRgb rgb ); - -signals: - void newCol( QRgb rgb ); -private slots: - void rgbEd(); - void hsvEd(); -private: - void showCurrentColor(); - int hue, sat, val; - QRgb curCol; - QColNumLineEdit *hEd; - QColNumLineEdit *sEd; - QColNumLineEdit *vEd; - QColNumLineEdit *rEd; - QColNumLineEdit *gEd; - QColNumLineEdit *bEd; - QColNumLineEdit *alphaEd; - QLabel *alphaLab; - QColorShowLabel *lab; - bool rgbOriginal; -}; - -class QColorShowLabel : public QFrame -{ - Q_OBJECT - -public: - QColorShowLabel( QWidget *parent ) :QFrame( parent ) { - setFrameStyle( QFrame::Panel|QFrame::Sunken ); - setBackgroundMode( PaletteBackground ); - setAcceptDrops( TRUE ); - mousePressed = FALSE; - } - void setColor( QColor c ) { col = c; } - -signals: - void colorDropped( QRgb ); - -protected: - void drawContents( QPainter *p ); - void mousePressEvent( QMouseEvent *e ); - void mouseMoveEvent( QMouseEvent *e ); - void mouseReleaseEvent( QMouseEvent *e ); -#ifndef QT_NO_DRAGANDDROP - void dragEnterEvent( QDragEnterEvent *e ); - void dragLeaveEvent( QDragLeaveEvent *e ); - void dropEvent( QDropEvent *e ); -#endif - -private: - QColor col; - bool mousePressed; - QPoint pressPos; - -}; - -void QColorShowLabel::drawContents( QPainter *p ) -{ - p->fillRect( contentsRect(), col ); -} - -void QColorShower::showAlpha( bool b ) -{ - if ( b ) { - alphaLab->show(); - alphaEd->show(); - } else { - alphaLab->hide(); - alphaEd->hide(); - } -} - -void QColorShowLabel::mousePressEvent( QMouseEvent *e ) -{ - mousePressed = TRUE; - pressPos = e->pos(); -} - -void QColorShowLabel::mouseMoveEvent( QMouseEvent *e ) -{ -#ifndef QT_NO_DRAGANDDROP - if ( !mousePressed ) - return; - if ( ( pressPos - e->pos() ).manhattanLength() > QApplication::startDragDistance() ) { - QColorDrag *drg = new QColorDrag( col, this ); - QPixmap pix( 30, 20 ); - pix.fill( col ); - QPainter p( &pix ); - p.drawRect( 0, 0, pix.width(), pix.height() ); - p.end(); - drg->setPixmap( pix ); - mousePressed = FALSE; - drg->dragCopy(); - } -#endif -} - -#ifndef QT_NO_DRAGANDDROP -void QColorShowLabel::dragEnterEvent( QDragEnterEvent *e ) -{ - if ( QColorDrag::canDecode( e ) ) - e->accept(); - else - e->ignore(); -} - -void QColorShowLabel::dragLeaveEvent( QDragLeaveEvent * ) -{ -} - -void QColorShowLabel::dropEvent( QDropEvent *e ) -{ - if ( QColorDrag::canDecode( e ) ) { - QColorDrag::decode( e, col ); - repaint( FALSE ); - emit colorDropped( col.rgb() ); - e->accept(); - } else { - e->ignore(); - } -} -#endif // QT_NO_DRAGANDDROP - -void QColorShowLabel::mouseReleaseEvent( QMouseEvent * ) -{ - if ( !mousePressed ) - return; - mousePressed = FALSE; -} - -QColorShower::QColorShower( QWidget *parent, const char *name ) - :QWidget( parent, name) -{ - curCol = qRgb( -1, -1, -1 ); - QColIntValidator *val256 = new QColIntValidator( 0, 255, this ); - QColIntValidator *val360 = new QColIntValidator( 0, 360, this ); - - QGridLayout *gl = new QGridLayout( this, 1, 1, 6 ); - lab = new QColorShowLabel( this ); - lab->setMinimumWidth( 60 ); //### - gl->addMultiCellWidget(lab, 0,-1,0,0); - connect( lab, SIGNAL( colorDropped( QRgb ) ), - this, SIGNAL( newCol( QRgb ) ) ); - connect( lab, SIGNAL( colorDropped( QRgb ) ), - this, SLOT( setRgb( QRgb ) ) ); - - hEd = new QColNumLineEdit( this ); - hEd->setValidator( val360 ); - QLabel *l = new QLabel( hEd, KColorDialog::tr("Hu&e:"), this ); - l->setAlignment( AlignRight|AlignVCenter ); - gl->addWidget( l, 0, 1 ); - gl->addWidget( hEd, 0, 2 ); - - sEd = new QColNumLineEdit( this ); - sEd->setValidator( val256 ); - l = new QLabel( sEd, KColorDialog::tr("&Sat:"), this ); - l->setAlignment( AlignRight|AlignVCenter ); - gl->addWidget( l, 1, 1 ); - gl->addWidget( sEd, 1, 2 ); - - vEd = new QColNumLineEdit( this ); - vEd->setValidator( val256 ); - l = new QLabel( vEd, KColorDialog::tr("&Val:"), this ); - l->setAlignment( AlignRight|AlignVCenter ); - gl->addWidget( l, 2, 1 ); - gl->addWidget( vEd, 2, 2 ); - - rEd = new QColNumLineEdit( this ); - rEd->setValidator( val256 ); - l = new QLabel( rEd, KColorDialog::tr("&Red:"), this ); - l->setAlignment( AlignRight|AlignVCenter ); - gl->addWidget( l, 0, 3 ); - gl->addWidget( rEd, 0, 4 ); - - gEd = new QColNumLineEdit( this ); - gEd->setValidator( val256 ); - l = new QLabel( gEd, KColorDialog::tr("&Green:"), this ); - l->setAlignment( AlignRight|AlignVCenter ); - gl->addWidget( l, 1, 3 ); - gl->addWidget( gEd, 1, 4 ); - - bEd = new QColNumLineEdit( this ); - bEd->setValidator( val256 ); - l = new QLabel( bEd, KColorDialog::tr("Bl&ue:"), this ); - l->setAlignment( AlignRight|AlignVCenter ); - gl->addWidget( l, 2, 3 ); - gl->addWidget( bEd, 2, 4 ); - - alphaEd = new QColNumLineEdit( this ); - alphaEd->setValidator( val256 ); - alphaLab = new QLabel( alphaEd, KColorDialog::tr("A&lpha channel:"), this ); - alphaLab->setAlignment( AlignRight|AlignVCenter ); - gl->addMultiCellWidget( alphaLab, 3, 3, 1, 3 ); - gl->addWidget( alphaEd, 3, 4 ); - alphaEd->hide(); - alphaLab->hide(); - - connect( hEd, SIGNAL(textChanged(const QString&)), this, SLOT(hsvEd()) ); - connect( sEd, SIGNAL(textChanged(const QString&)), this, SLOT(hsvEd()) ); - connect( vEd, SIGNAL(textChanged(const QString&)), this, SLOT(hsvEd()) ); - - connect( rEd, SIGNAL(textChanged(const QString&)), this, SLOT(rgbEd()) ); - connect( gEd, SIGNAL(textChanged(const QString&)), this, SLOT(rgbEd()) ); - connect( bEd, SIGNAL(textChanged(const QString&)), this, SLOT(rgbEd()) ); -} - -void QColorShower::showCurrentColor() -{ - lab->setColor( currentColor() ); - lab->repaint(FALSE); //### -} - -void QColorShower::rgbEd() -{ - rgbOriginal = TRUE; - curCol = qRgb( rEd->val(), gEd->val(), bEd->val() ); - rgb2hsv(currentColor(), hue, sat, val ); - - hEd->setNum( hue ); - sEd->setNum( sat ); - vEd->setNum( val ); - - showCurrentColor(); - emit newCol( currentColor() ); -} - -void QColorShower::hsvEd() -{ - rgbOriginal = FALSE; - hue = hEd->val(); - sat = sEd->val(); - val = vEd->val(); - - curCol = QColor( hue, sat, val, QColor::Hsv ).rgb(); - - rEd->setNum( qRed(currentColor()) ); - gEd->setNum( qGreen(currentColor()) ); - bEd->setNum( qBlue(currentColor()) ); - - showCurrentColor(); - emit newCol( currentColor() ); -} - -void QColorShower::setRgb( QRgb rgb ) -{ - rgbOriginal = TRUE; - curCol = rgb; - - rgb2hsv( currentColor(), hue, sat, val ); - - hEd->setNum( hue ); - sEd->setNum( sat ); - vEd->setNum( val ); - - rEd->setNum( qRed(currentColor()) ); - gEd->setNum( qGreen(currentColor()) ); - bEd->setNum( qBlue(currentColor()) ); - - showCurrentColor(); -} - -void QColorShower::setHsv( int h, int s, int v ) -{ - rgbOriginal = FALSE; - hue = h; val = v; sat = s; //Range check### - curCol = QColor( hue, sat, val, QColor::Hsv ).rgb(); - - hEd->setNum( hue ); - sEd->setNum( sat ); - vEd->setNum( val ); - - rEd->setNum( qRed(currentColor()) ); - gEd->setNum( qGreen(currentColor()) ); - bEd->setNum( qBlue(currentColor()) ); - - - showCurrentColor(); -} - -class KColorDialogPrivate : public QObject -{ -Q_OBJECT -public: - KColorDialogPrivate( KColorDialog *p ); - QRgb currentColor() const { return cs->currentColor(); } - void setCurrentColor( QRgb rgb ); - - int currentAlpha() const { return cs->currentAlpha(); } - void setCurrentAlpha( int a ) { cs->setCurrentAlpha( a ); } - void showAlpha( bool b ) { cs->showAlpha( b ); } - -private slots: - void addCustom(); - - void newHsv( int h, int s, int v ); - void newColorTypedIn( QRgb rgb ); - void newCustom( int, int ); - void newStandard( int, int ); -private: - QColorPicker *cp; - QColorLuminancePicker *lp; - QWellArray *custom; - QWellArray *standard; - QColorShower *cs; - int nextCust; - bool compact; -}; - -//sets all widgets to display h,s,v -void KColorDialogPrivate::newHsv( int h, int s, int v ) -{ - cs->setHsv( h, s, v ); - cp->setCol( h, s ); - lp->setCol( h, s, v ); -} - -//sets all widgets to display rgb -void KColorDialogPrivate::setCurrentColor( QRgb rgb ) -{ - cs->setRgb( rgb ); - newColorTypedIn( rgb ); -} - -//sets all widgets exept cs to display rgb -void KColorDialogPrivate::newColorTypedIn( QRgb rgb ) -{ - int h, s, v; - rgb2hsv(rgb, h, s, v ); - cp->setCol( h, s ); - lp->setCol( h, s, v); -} - -void KColorDialogPrivate::newCustom( int r, int c ) -{ - int i = r+2*c; - setCurrentColor( cusrgb[i] ); - nextCust = i; - standard->setSelected(-1,-1); -} - -void KColorDialogPrivate::newStandard( int r, int c ) -{ - setCurrentColor( stdrgb[r+c*6] ); - custom->setSelected(-1,-1); -} - -KColorDialogPrivate::KColorDialogPrivate( KColorDialog *dialog ) : - QObject(dialog) -{ - compact = FALSE; - // small displays (e.g. PDAs cannot fit the full color dialog, - // so just use the color picker. - if ( qApp->desktop()->width() < 480 || qApp->desktop()->height() < 350 ) - compact = TRUE; - - nextCust = 0; - const int lumSpace = 3; - int border = 12; - if ( compact ) - border = 6; - QHBoxLayout *topLay = new QHBoxLayout( dialog, border, 6 ); - QVBoxLayout *leftLay = 0; - - if ( !compact ) - leftLay = new QVBoxLayout( topLay ); - - initRGB(); - - if ( !compact ) { - standard = new QColorWell( dialog, 6, 8, stdrgb ); - standard->setCellSize( 28, 24 ); - QLabel * lab = new QLabel( standard, - KColorDialog::tr( "&Basic colors"), dialog ); - connect( standard, SIGNAL(selected(int,int)), SLOT(newStandard(int,int))); - leftLay->addWidget( lab ); - leftLay->addWidget( standard ); - - - leftLay->addStretch(); - - custom = new QColorWell( dialog, 2, 8, cusrgb ); - custom->setCellSize( 28, 24 ); - custom->setAcceptDrops( TRUE ); - - connect( custom, SIGNAL(selected(int,int)), SLOT(newCustom(int,int))); - lab = new QLabel( custom, KColorDialog::tr( "&Custom colors") , dialog ); - leftLay->addWidget( lab ); - leftLay->addWidget( custom ); - - QPushButton *custbut = - new QPushButton( KColorDialog::tr("&Define Custom Colors >>"), - dialog ); - custbut->setEnabled( FALSE ); - leftLay->addWidget( custbut ); - } else { - // better color picker size for small displays - pWidth = 150; - pHeight = 100; - } - - QVBoxLayout *rightLay = new QVBoxLayout( topLay ); - - QHBoxLayout *pickLay = new QHBoxLayout( rightLay ); - - - QVBoxLayout *cLay = new QVBoxLayout( pickLay ); - cp = new QColorPicker( dialog ); - cp->setFrameStyle( QFrame::Panel + QFrame::Sunken ); - cLay->addSpacing( lumSpace ); - cLay->addWidget( cp ); - cLay->addSpacing( lumSpace ); - - lp = new QColorLuminancePicker( dialog ); - lp->setFixedWidth( 20 ); //### - pickLay->addWidget( lp ); - - connect( cp, SIGNAL(newCol(int,int)), lp, SLOT(setCol(int,int)) ); - connect( lp, SIGNAL(newHsv(int,int,int)), this, SLOT(newHsv(int,int,int)) ); - - rightLay->addStretch(); - - cs = new QColorShower( dialog ); - connect( cs, SIGNAL(newCol(QRgb)), this, SLOT(newColorTypedIn(QRgb))); - rightLay->addWidget( cs ); - - QHBoxLayout *buttons; - if ( compact ) - buttons = new QHBoxLayout( rightLay ); - else - buttons = new QHBoxLayout( leftLay ); - - QPushButton *ok, *cancel; - ok = new QPushButton( KColorDialog::tr("OK"), dialog ); - connect( ok, SIGNAL(clicked()), dialog, SLOT(accept()) ); - ok->setDefault(TRUE); - cancel = new QPushButton( KColorDialog::tr("Cancel"), dialog ); - connect( cancel, SIGNAL(clicked()), dialog, SLOT(reject()) ); - buttons->addWidget( ok ); - buttons->addWidget( cancel ); - buttons->addStretch(); - - if ( !compact ) { - QPushButton *addCusBt = new QPushButton( - KColorDialog::tr("&Add To Custom Colors"), - dialog ); - rightLay->addWidget( addCusBt ); - connect( addCusBt, SIGNAL(clicked()), this, SLOT(addCustom()) ); - } -} - -void KColorDialogPrivate::addCustom() -{ - cusrgb[nextCust] = cs->currentColor(); - custom->repaint( FALSE ); //### - nextCust = (nextCust+1) % 16; -} - - -// BEING REVISED: jo -/*! - \class KColorDialog qcolordialog.h - \brief The KColorDialog class provides a dialog widget for specifying colors. - \ingroup dialogs - - The color dialog's function is to allow users to choose colors - - for instance, you might use this in a drawing program to allow the - user to set the brush color. - - This version of Qt only provides modal color dialogs. The static - getColor() function shows the dialog and allows the user to specify a color, - while getRgba() does the same but allows the user to specify a color with an - alpha channel (transparency) value. - - The user can store customCount() different custom colors. The custom - colors are shared by all color dialogs, and remembered during the - execution of the program. Use setCustomColor() to set the - custom colors, and customColor() to get them. - - -*/ - -/*! - Constructs a default color dialog. Use setColor() for setting an initial value. - - \sa getColor() -*/ - -KColorDialog::KColorDialog(QWidget* parent, const char* name, bool modal) : - QDialog(parent, name, modal ) -{ - setSizeGripEnabled( TRUE ); - d = new KColorDialogPrivate( this ); -} - - -/*! - Pops up a modal color dialog letting the user choose a color and returns - that color. The color is initially set to \a initial. Returns an \link QColor::isValid() invalid\endlink color if the user cancels - the dialog. All colors allocated by the dialog will be deallocated - before this function returns. -*/ - -QColor KColorDialog::getColor( QColor initial, QWidget *parent, - const char *name ) -{ - int allocContext = QColor::enterAllocContext(); - KColorDialog *dlg = new KColorDialog( parent, name, TRUE ); //modal - if ( parent && parent->icon() && !parent->icon()->isNull() ) - dlg->setIcon( *parent->icon() ); - else if ( qApp->mainWidget() && qApp->mainWidget()->icon() && !qApp->mainWidget()->icon()->isNull() ) - dlg->setIcon( *qApp->mainWidget()->icon() ); - - dlg->setCaption( KColorDialog::tr( "Select color" ) ); - dlg->setColor( initial ); - int resultCode = dlg->exec(); - QColor::leaveAllocContext(); - QColor result; - if ( resultCode == QDialog::Accepted ) - result = dlg->color(); - QColor::destroyAllocContext(allocContext); - delete dlg; - return result; -} - - -/*! - Pops up a modal color dialog, letting the user choose a color and an - alpha channel value. The color+alpha is initially set to \a initial. - - If \a ok is non-null, \c *ok is set to TRUE if the user clicked OK, - and FALSE if the user clicked Cancel. - - If the user clicks Cancel the \a initial value is returned. -*/ - -QRgb KColorDialog::getRgba( QRgb initial, bool *ok, - QWidget *parent, const char* name ) -{ - int allocContext = QColor::enterAllocContext(); - KColorDialog *dlg = new KColorDialog( parent, name, TRUE ); //modal - dlg->setColor( initial ); - dlg->setSelectedAlpha( qAlpha(initial) ); - int resultCode = dlg->exec(); - QColor::leaveAllocContext(); - QRgb result = initial; - if ( resultCode == QDialog::Accepted ) { - QRgb c = dlg->color().rgb(); - int alpha = dlg->selectedAlpha(); - result = qRgba( qRed(c), qGreen(c), qBlue(c), alpha ); - } - if ( ok ) - *ok = resultCode == QDialog::Accepted; - - QColor::destroyAllocContext(allocContext); - delete dlg; - return result; -} - - - - - -/*! - Returns the color currently selected in the dialog. - - \sa setColor() -*/ - -QColor KColorDialog::color() const -{ - return QColor(d->currentColor()); -} - - -/*! Destructs the dialog and frees any memory it allocated. - -*/ - -KColorDialog::~KColorDialog() -{ - //d inherits QObject, so it is deleted by Qt. -} - - -/*! - Sets the color shown in the dialog to \a c. - - \sa color() -*/ - -void KColorDialog::setColor( QColor c ) -{ - d->setCurrentColor( c.rgb() ); -} - - - - -/*! - Sets the initial alpha channel value to \a a, and show the alpha channel - entry box. -*/ - -void KColorDialog::setSelectedAlpha( int a ) -{ - d->showAlpha( TRUE ); - d->setCurrentAlpha( a ); -} - - -/*! - Returns the value selected for the alpha channel. -*/ - -int KColorDialog::selectedAlpha() const -{ - return d->currentAlpha(); -} - - -#include "qcolordialog.moc" - diff --git a/noncore/apps/tinykate/libkate/microkde/qcolordialog.h b/noncore/apps/tinykate/libkate/microkde/qcolordialog.h deleted file mode 100644 index c55dcf4..0000000 --- a/noncore/apps/tinykate/libkate/microkde/qcolordialog.h +++ b/dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** $Id$ -** -** Definition of KColorDialog class -** -** Created : 990222 -** -** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. -** -** This file is part of the dialogs module of the Qt GUI Toolkit. -** -** This file may be distributed under the terms of the Q Public License -** as defined by Trolltech AS of Norway and appearing in the file -** LICENSE.QPL included in the packaging of this file. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition -** licenses may use this file in accordance with the Qt Commercial License -** Agreement provided with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for -** information about Qt Commercial License Agreements. -** See http://www.trolltech.com/qpl/ for QPL licensing information. -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#ifndef KColorDialog_H -#define KColorDialog_H - -#ifndef QT_H -#include -#endif // QT_H - -class KColorDialogPrivate; - -class Q_EXPORT KColorDialog : public QDialog -{ - Q_OBJECT - -public: - static QColor getColor( QColor, QWidget *parent=0, const char* name=0 ); // ### 3.0: make const QColor& - static QRgb getRgba( QRgb, bool* ok = 0, - QWidget *parent=0, const char* name=0 ); - - - static int customCount(); - static QRgb customColor( int ); - static void setCustomColor( int, QRgb ); - -private: - ~KColorDialog(); - - KColorDialog( QWidget* parent=0, const char* name=0, bool modal=FALSE ); - void setColor( QColor ); // ### 3.0: make const QColor& - QColor color() const; - -private: - void setSelectedAlpha( int ); - int selectedAlpha() const; - - void showCustom( bool=TRUE ); -private: - KColorDialogPrivate *d; - friend class KColorDialogPrivate; - -private: // Disabled copy constructor and operator= -#if defined(Q_DISABLE_COPY) - KColorDialog( const KColorDialog & ); - KColorDialog& operator=( const KColorDialog & ); -#endif -}; - -#endif //KColorDialog_H diff --git a/noncore/apps/tinykate/libkate/microkde/xmltree.cc b/noncore/apps/tinykate/libkate/microkde/xmltree.cc deleted file mode 100644 index 27db5b3..0000000 --- a/noncore/apps/tinykate/libkate/microkde/xmltree.cc +++ b/dev/null @@ -1,322 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2001 Simon Hausmann - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include - -#include - -#include - -using namespace Opie; - -XMLElement::XMLElement() - : m_parent( 0 ), m_next( 0 ), m_prev( 0 ), m_first( 0 ), m_last( 0 ) -{ -} - -XMLElement::~XMLElement() -{ - XMLElement *n = m_first; - - while ( n ) - { - XMLElement *tmp = n; - n = n->m_next; - delete tmp; - } -} - -void XMLElement::appendChild( XMLElement *child ) -{ - if ( child->m_parent ) - child->m_parent->removeChild( child ); - - child->m_parent = this; - - if ( m_last ) - m_last->m_next = child; - - child->m_prev = m_last; - - if ( !m_first ) - m_first = child; - - m_last = child; -} - -void XMLElement::insertAfter( XMLElement *newChild, XMLElement *refChild ) -{ - assert( newChild != refChild ); - - if ( refChild == m_last ) - { - appendChild( newChild ); - return; - } - - assert( refChild ); - assert( refChild->m_parent ); - assert( refChild->m_parent == this ); - - if ( newChild->m_parent && newChild != refChild ) - newChild->m_parent->removeChild( newChild ); - - newChild->m_parent = this; - - XMLElement *next = refChild->m_next; - - refChild->m_next = newChild; - - newChild->m_prev = refChild; - newChild->m_next = next; - - if ( next ) - next->m_prev = newChild; -} - -QString XMLElement::attribute( const QString &attr ) const -{ - AttributeMap::ConstIterator it = m_attributes.find( attr ); - if ( it == m_attributes.end() ) - return QString::null; - return it.data(); -} - -void XMLElement::setAttribute( const QString &attr, const QString &value ) -{ - m_attributes.replace( attr, value ); -} - -void XMLElement::insertBefore( XMLElement *newChild, XMLElement *refChild ) -{ - assert( refChild ); - assert( refChild->m_parent ); - assert( refChild->m_parent == this ); - assert( newChild != refChild ); - - if ( newChild->m_parent && newChild != refChild ) - newChild->m_parent->removeChild( newChild ); - - newChild->m_parent = this; - - XMLElement *prev = refChild->m_prev; - - refChild->m_prev = newChild; - - newChild->m_prev = prev; - newChild->m_next = refChild; - - if ( prev ) - prev->m_next = newChild; - - if ( refChild == m_first ) - m_first = newChild; -} - -void XMLElement::removeChild( XMLElement *child ) -{ - if ( child->m_parent != this ) - return; - - if ( m_first == child ) - m_first = child->m_next; - - if ( m_last == child ) - m_last = child->m_prev; - - if ( child->m_prev ) - child->m_prev->m_next = child->m_next; - - if ( child->m_next ) - child->m_next->m_prev = child->m_prev; - - child->m_parent = 0; - child->m_prev = 0; - child->m_next = 0; -} - -void XMLElement::save( QTextStream &s, uint indent ) -{ - if ( !m_value.isEmpty() ) - { - s << Qtopia::escapeString( m_value ); - return; - } - - for ( uint i = 0; i < indent; ++i ) - s << " "; - - s << "<" << m_tag; - - if ( !m_attributes.isEmpty() ) - { - s << " "; - AttributeMap::ConstIterator it = m_attributes.begin(); - AttributeMap::ConstIterator end = m_attributes.end(); - for (; it != end; ++it ) - { - s << it.key() << "=\"" << Qtopia::escapeString( it.data() ) << "\""; - s << " "; - } - } - - if ( m_last ) - { - if ( ( m_first && !m_first->value().isEmpty() ) || !m_parent ) - s << ">"; - else - s << ">" << endl; - - int newIndent = indent; - if ( m_parent ) - newIndent++; - - XMLElement *n = m_first; - while ( n ) - { - n->save( s, newIndent ); - n = n->nextChild(); - } - - if ( m_last && m_last->value().isEmpty() && m_parent ) - for ( uint i = 0; i < indent; ++i ) - s << " "; - - if ( m_parent ) - s << "" << endl; - } - else - s << "/>" << endl; -} - -class Handler : public QXmlDefaultHandler -{ -public: - Handler() : m_node( 0 ), m_root( 0 ) {} - - XMLElement *root() const { return m_root; } - - virtual bool startDocument(); - virtual bool endDocument(); - virtual bool startElement( const QString &ns, const QString &ln, const QString &qName, - const QXmlAttributes &attr ); - virtual bool endElement( const QString &ns, const QString &ln, const QString &qName ); - virtual bool characters( const QString &ch ); - -private: - XMLElement *m_node; - XMLElement *m_root; -}; - -bool Handler::startDocument() -{ - m_root = m_node = new XMLElement; - - return true; -} - -bool Handler::endDocument() -{ - return m_root == m_node; -} - -bool Handler::startElement( const QString &, const QString &, const QString &qName, - const QXmlAttributes &attr ) -{ - XMLElement *bm = new XMLElement; - - XMLElement::AttributeMap attributes; - for ( int i = 0; i < attr.length(); ++i ) - attributes[ attr.qName( i ) ] = attr.value( i ); - - bm->setAttributes( attributes ); - - bm->setTagName( qName ); - - m_node->appendChild( bm ); - m_node = bm; - - return true; -} - -bool Handler::endElement( const QString &, const QString &, const QString & ) -{ - if ( m_node == m_root ) - return false; - - m_node = m_node->parent(); - return true; -} - -bool Handler::characters( const QString &ch ) -{ - XMLElement *textNode = new XMLElement; - textNode->setValue( ch ); - m_node->appendChild( textNode ); - return true; -} - -XMLElement *XMLElement::namedItem( const QString &name ) -{ - XMLElement *e = m_first; - - for (; e; e = e->nextChild() ) - if ( e->tagName() == name ) - return e; - - return 0; -} - -XMLElement *XMLElement::clone() const -{ - XMLElement *res = new XMLElement; - - res->setTagName( m_tag ); - res->setValue( m_value ); - res->setAttributes( m_attributes ); - - XMLElement *e = m_first; - for (; e; e = e->m_next ) - res->appendChild( e->clone() ); - - return res; -} - -XMLElement *XMLElement::load( const QString &fileName ) -{ - QFile f( fileName ); - if ( !f.open( IO_ReadOnly ) ) - return 0; - - QTextStream stream( &f ); - stream.setEncoding( QTextStream::UnicodeUTF8 ); - QXmlInputSource src( stream ); - QXmlSimpleReader reader; - Handler handler; - - reader.setFeature( "http://trolltech.com/xml/features/report-whitespace-only-CharData", false ); - reader.setContentHandler( &handler ); - reader.parse( src ); - - return handler.root();; -} - -/* vim: et sw=4 - */ diff --git a/noncore/apps/tinykate/libkate/microkde/xmltree.h b/noncore/apps/tinykate/libkate/microkde/xmltree.h deleted file mode 100644 index 4a6b6d9..0000000 --- a/noncore/apps/tinykate/libkate/microkde/xmltree.h +++ b/dev/null @@ -1,117 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2000,2001 Simon Hausmann - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - - -#ifndef __bookmarks_h__ -#define __bookmarks_h__ - -#include -#include -#include - -namespace Opie -{ - -/** - * A small xml lib written by Simon Hausmann. - */ -class XMLElement -{ -public: - typedef QMap AttributeMap; - - /** - * The constructor of XMLElement - */ - XMLElement(); - ~XMLElement(); - - /** appendChild appends a child to the XMLElement behind the last element. - * The ownership of the child get's transfered to the - * this XMLElement. - * If child is already the child of another parent - * it's get removed from the other parent first. - */ - void appendChild( XMLElement *child ); - - /** inserts newChild after refChild. If newChild is the child - * of another parent the child will get removed. - * The ownership of child gets transfered. - * - */ - void insertAfter( XMLElement *newChild, XMLElement *refChild ); - - /** same as insertAfter but the element get's inserted before refChild. - * - */ - void insertBefore( XMLElement *newChild, XMLElement *refChild ); - - /** removeChild removes the child from the XMLElement. - * The ownership gets dropped. You need to delete the - * child yourself. - */ - void removeChild( XMLElement *child ); - - /** parent() returns the parent of this XMLElement - * If there is no parent 0l gets returned - */ - XMLElement *parent() const { return m_parent; } - XMLElement *firstChild() const { return m_first; } - XMLElement *nextChild() const { return m_next; } - XMLElement *prevChild() const { return m_prev; } - XMLElement *lastChild() const { return m_last; } - - void setTagName( const QString &tag ) { m_tag = tag; } - QString tagName() const { return m_tag; } - - void setValue( const QString &val ) { m_value = val; } - QString value() const { return m_value; } - - void setAttributes( const AttributeMap &attrs ) { m_attributes = attrs; } - AttributeMap attributes() const { return m_attributes; } - AttributeMap &attributes() { return m_attributes; } - - QString attribute( const QString & ) const; - void setAttribute( const QString &attr, const QString &value ); - void save( QTextStream &stream, uint indent = 0 ); - - XMLElement *namedItem( const QString &name ); - - XMLElement *clone() const; - - static XMLElement *load( const QString &fileName ); - -private: - QString m_tag; - QString m_value; - AttributeMap m_attributes; - - XMLElement *m_parent; - XMLElement *m_next; - XMLElement *m_prev; - XMLElement *m_first; - XMLElement *m_last; - - XMLElement( const XMLElement &rhs ); - XMLElement &operator=( const XMLElement &rhs ); -}; - -} // namespace Opie - -#endif -- cgit v0.9.0.2