From dde789ef19fa3a3913805e452ac1e3400688e8a0 Mon Sep 17 00:00:00 2001 From: mickeyl Date: Thu, 15 Jan 2004 13:59:58 +0000 Subject: more libopie1 --> libopie2 with namespace cleanups and code layout cleanups --- (limited to 'libqtaux') diff --git a/libqtaux/libqtaux.pro b/libqtaux/libqtaux.pro index 2f7aa91..56ccc65 100644 --- a/libqtaux/libqtaux.pro +++ b/libqtaux/libqtaux.pro @@ -5,14 +5,16 @@ HEADERS = qcolordialog.h \ qsplitter.h \ qinputdialog.h \ \ - ocolorpopupmenu.h + ocolorpopupmenu.h \ + ocolorbutton.h SOURCES = qcolordialog.cpp \ qsplitter.cpp \ qinputdialog.cpp \ \ - ocolorpopupmenu.cpp + ocolorpopupmenu.cpp \ + ocolorbutton.cpp TARGET = qtaux2 INCLUDEPATH += $(OPIEDIR)/include diff --git a/libqtaux/ocolorbutton.cpp b/libqtaux/ocolorbutton.cpp new file mode 100644 index 0000000..d2ad873 --- a/dev/null +++ b/libqtaux/ocolorbutton.cpp @@ -0,0 +1,150 @@ +/* + This file is part of the Opie Project + Copyright (C) Robert Griebl + =. Copyright (C) The Opie Team + .=l. +           .>+-= + _;:,     .>    :=|. This program is free software; you can +.> <`_,   >  .   <= redistribute it and/or modify it under +:`=1 )Y*s>-.--   : the terms of the GNU Library General Public +.="- .-=="i,     .._ License as published by the Free Software + - .   .-<_>     .<> Foundation; either version 2 of the License, +     ._= =}       : or (at your option) any later version. +    .%`+i>       _;_. +    .i_,=:_.      -`: 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 "ocolorpopupmenu.h" +#include "ocolorbutton.h" + +/* OPIE */ +#include + +/* QT */ +#include +#include +#include + +using namespace Opie; + +struct OColorButtonPrivate +{ + QPopupMenu *m_menu; + QColor m_color; +}; + +/** + * This concstructs a Color Button with @param color as the start color + * It'll use a OColorPopupMenu internally + * + * @param parent The parent of the Color Button + * @param color The color from where to start on + * @param name @see QObject + */ +OColorButton::OColorButton ( QWidget *parent, const QColor &color, const char *name ) + : QPushButton ( parent, name ) +{ + d = new OColorButtonPrivate; + + d-> m_menu = new OColorPopupMenu ( color, 0, 0 ); + setPopup ( d-> m_menu ); + // setPopupDelay ( 0 ); + connect ( d-> m_menu, SIGNAL( colorSelected ( const QColor & )), this, SLOT( updateColor ( const QColor & ))); + + updateColor ( color ); + + QSize s = sizeHint ( ) + QSize ( 12, 0 ); + setMinimumSize ( s ); + setMaximumSize ( s. width ( ) * 2, s. height ( )); +} + +/** + * This destructs the object + */ +OColorButton::~OColorButton ( ) +{ + delete d; +} + +/** + * @return Returns the current color of the button + */ +QColor OColorButton::color ( ) const +{ + return d-> m_color; +} + +/** + * This method sets the color of the button + * @param c The color to be set. + */ +void OColorButton::setColor ( const QColor &c ) +{ + updateColor ( c ); +} + +/** + * @internal + */ +void OColorButton::updateColor ( const QColor &c ) +{ + d-> m_color = c; + + QImage img ( 16, 16, 32 ); + img. fill ( 0 ); + + int r, g, b; + c. rgb ( &r, &g, &b ); + + int w = img. width ( ); + int h = img. height ( ); + + int dx = w * 20 / 100; // 15% + int dy = h * 20 / 100; + + for ( int y = 0; y < h; y++ ) + { + for ( int x = 0; x < w; x++ ) + { + double alpha = 1.0; + + if ( x < dx ) + alpha *= ( double ( x + 1 ) / dx ); + else if ( x >= w - dx ) + alpha *= ( double ( w - x ) / dx ); + if ( y < dy ) + alpha *= ( double ( y + 1 ) / dy ); + else if ( y >= h - dy ) + alpha *= ( double ( h - y ) / dy ); + + int a = int ( alpha * 255.0 ); + if ( a < 0 ) + a = 0; + if ( a > 255 ) + a = 255; + + img. setPixel ( x, y, qRgba ( r, g, b, a )); + } + } + img. setAlphaBuffer ( true ); + + QPixmap pix; + pix. convertFromImage ( img ); + setPixmap ( pix ); + + emit colorSelected ( c ); +} + diff --git a/libqtaux/ocolorbutton.h b/libqtaux/ocolorbutton.h new file mode 100644 index 0000000..ca68f1f --- a/dev/null +++ b/libqtaux/ocolorbutton.h @@ -0,0 +1,80 @@ +/* + This file is part of the Opie Project + Copyright (C) Robert Griebl + =. Copyright (C) The Opie Team + .=l. +           .>+-= + _;:,     .>    :=|. This program is free software; you can +.> <`_,   >  .   <= redistribute it and/or modify it under +:`=1 )Y*s>-.--   : the terms of the GNU Library General Public +.="- .-=="i,     .._ License as published by the Free Software + - .   .-<_>     .<> Foundation; either version 2 of the License, +     ._= =}       : or (at your option) any later version. +    .%`+i>       _;_. +    .i_,=:_.      -`: 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 OCOLORBUTTON_H +#define OCOLORBUTTON_H + +/* QT*/ +#include + +class OColorButtonPrivate; +class QColor; + +namespace Opie +{ + +/** + * + * @short A Button which will show a OColorPopupMenu + * @author Robert Griebl ( sandman@handhelds.org ) + * @version 1.0 + * @see QPushButton + */ +class OColorButton : public QPushButton +{ + Q_OBJECT +public: + OColorButton ( QWidget *parent = 0, const QColor & = black, const char *name = 0 ); + virtual ~OColorButton ( ); + + QColor color ( ) const; + +signals: + /** + * emitted when a color gets selected + */ + void colorSelected ( const QColor & ); + +public slots: + virtual void setColor ( const QColor & ); + +protected slots: + /** + * @internal + */ + virtual void updateColor ( const QColor & ); + +private: + OColorButtonPrivate *d; +}; + +}; + +#endif + diff --git a/libqtaux/ocolorpopupmenu.cpp b/libqtaux/ocolorpopupmenu.cpp index 6a2321e..6c5f99c 100644 --- a/libqtaux/ocolorpopupmenu.cpp +++ b/libqtaux/ocolorpopupmenu.cpp @@ -33,10 +33,13 @@ #include "ocolorpopupmenu.h" #include "qcolordialog.h" +/* QT */ #include #include #include +using namespace Opie; + OColorPanelButton::OColorPanelButton( const QColor& color, QWidget* parent, const char* name ) : QFrame( parent, name ) { diff --git a/libqtaux/ocolorpopupmenu.h b/libqtaux/ocolorpopupmenu.h index 90cfbed..7ab3ca6 100644 --- a/libqtaux/ocolorpopupmenu.h +++ b/libqtaux/ocolorpopupmenu.h @@ -30,8 +30,10 @@ */ -#ifndef COLORPOPUPMENU_H -#define COLORPOPUPMENU_H +#ifndef OCOLORPOPUPMENU_H +#define OCOLORPOPUPMENU_H + +/* QT */ #include #include @@ -39,6 +41,9 @@ class QWidget; class QGridLayout; +namespace Opie +{ + /** * @class OColorPanelButton * @brief The OColorPanelButton class provides a button for color selection. @@ -252,4 +257,6 @@ protected slots: void moreColorClicked(); }; +}; + #endif // COLORPOPUPMENUANEL_H -- cgit v0.9.0.2