diff options
Diffstat (limited to 'tqtinterface/qt4/src/widgets/tqradiobutton.cpp')
-rw-r--r-- | tqtinterface/qt4/src/widgets/tqradiobutton.cpp | 362 |
1 files changed, 0 insertions, 362 deletions
diff --git a/tqtinterface/qt4/src/widgets/tqradiobutton.cpp b/tqtinterface/qt4/src/widgets/tqradiobutton.cpp deleted file mode 100644 index 1c24676..0000000 --- a/tqtinterface/qt4/src/widgets/tqradiobutton.cpp +++ /dev/null @@ -1,362 +0,0 @@ -/**************************************************************************** -** -** Implementation of TQRadioButton class -** -** Created : 940222 -** -** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA. -** -** This file is part of the widgets module of the TQt GUI Toolkit. -** -** This file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free -** Software Foundation and appearing in the files LICENSE.GPL2 -** and LICENSE.GPL3 included in the packaging of this file. -** Alternatively you may (at your option) use any later version -** of the GNU General Public License if such license has been -** publicly approved by Trolltech ASA (or its successors, if any) -** and the KDE Free TQt Foundation. -** -** Please review the following information to ensure GNU General -** Public Licensing requirements will be met: -** http://trolltech.com/products/qt/licenses/licensing/opensource/. -** If you are unsure which license is appropriate for your use, please -** review the following information: -** http://trolltech.com/products/qt/licenses/licensing/licensingoverview -** or contact the sales department at [email protected]. -** -** This file may be used under the terms of the Q Public License as -** defined by Trolltech ASA and appearing in the file LICENSE.TQPL -** included in the packaging of this file. Licensees holding valid TQt -** Commercial licenses may use this file in accordance with the TQt -** Commercial License Agreement provided with the Software. -** -** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, -** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted -** herein. -** -**********************************************************************/ - -#include "tqradiobutton.h" -#ifndef TQT_NO_RADIOBUTTON -#include "tqbuttongroup.h" -#include "tqpainter.h" -#include "tqdrawutil.h" -#include "tqpixmap.h" -#include "tqpixmapcache.h" -#include "tqbitmap.h" -#include "tqtextstream.h" -#include "tqapplication.h" -#include "tqstyle.h" - -/*! - \class TQRadioButton tqradiobutton.h - \brief The TQRadioButton widget provides a radio button with a text or pixmap label. - - \ingroup basic - \mainclass - - TQRadioButton and TQCheckBox are both option buttons. That is, they - can be switched on (checked) or off (unchecked). The classes - differ in how the choices for the user are restricted. Check boxes - define "many of many" choices, whereas radio buttons provide a - "one of many" choice. In a group of radio buttons only one radio - button at a time can be checked; if the user selects another - button, the previously selected button is switched off. - - The easiest way to implement a "one of many" choice is simply to - put the radio buttons into TQButtonGroup. - - Whenever a button is switched on or off it emits the signal - toggled(). Connect to this signal if you want to trigger an action - each time the button changes state. Otherwise, use isChecked() to - see if a particular button is selected. - - Just like TQPushButton, a radio button can display text or a - pixmap. The text can be set in the constructor or with setText(); - the pixmap is set with setPixmap(). - - <img src=qradiobt-m.png> <img src=qradiobt-w.png> - - \important text, setText, text, pixmap, setPixmap, accel, setAccel, isToggleButton, setDown, isDown, isOn, state, autoRepeat, isExclusiveToggle, group, setAutoRepeat, toggle, pressed, released, clicked, toggled, state stateChanged - - \sa TQPushButton TQToolButton - \link guibooks.html#fowler GUI Design Handbook: Radio Button\endlink -*/ - -/*! - \property TQRadioButton::checked \brief Whether the radio button is - checked - - This property will not effect any other radio buttons unless they - have been placed in the same TQButtonGroup. The default value is - FALSE (unchecked). -*/ - -/*! - \property TQRadioButton::autoMask \brief whether the radio button - is automatically masked - - \sa TQWidget::setAutoMask() -*/ - -/*! - Constructs a radio button with no text. - - The \a parent and \a name arguments are sent on to the TQWidget - constructor. -*/ - -TQRadioButton::TQRadioButton( TQWidget *parent, const char *name ) - : TQButton( parent, name, TQt::WNoAutoErase | TQt::WMouseNoMask ) -{ - init(); -} - -/*! - Constructs a radio button with the text \a text. - - The \a parent and \a name arguments are sent on to the TQWidget - constructor. -*/ - -TQRadioButton::TQRadioButton( const TQString &text, TQWidget *parent, - const char *name ) - : TQButton( parent, name, TQt::WNoAutoErase | TQt::WMouseNoMask ) -{ - init(); - setText( text ); -} - - -/* - Initializes the radio button. -*/ - -void TQRadioButton::init() -{ - tqsetSizePolicy( TQSizePolicy( TQSizePolicy::Minimum, TQSizePolicy::Fixed ) ); - setToggleButton( TRUE ); -#ifndef TQT_NO_BUTTONGROUP - TQButtonGroup *bgrp = ::tqqt_cast<TQButtonGroup*>(parentWidget()); - if ( bgrp ) - bgrp->setRadioButtonExclusive( TRUE ); -#endif -} - -void TQRadioButton::setChecked( bool check ) -{ - setOn( check ); -} - - - - -/*! - \reimp -*/ -TQSize TQRadioButton::tqsizeHint() const -{ - // Any more complex, and we will use tqstyle().tqitemRect() - // NB: TQCheckBox::tqsizeHint() is similar - constPolish(); - - TQPainter p(this); - TQSize sz = tqstyle().tqitemRect(&p, TQRect(0, 0, 1, 1), TQt::ShowPrefix, FALSE, - pixmap(), text()).size(); - - return (tqstyle().tqsizeFromContents(TQStyle::CT_RadioButton, this, sz). - expandedTo(TQApplication::globalStrut())); -} - - -/*! - \reimp -*/ -bool TQRadioButton::hitButton( const TQPoint &pos ) const -{ - TQRect r = - TQStyle::tqvisualRect( tqstyle().subRect( TQStyle::SR_RadioButtonFocusRect, - this ), this ); - if ( tqApp->reverseLayout() ) { - r.setRight( width() ); - } else { - r.setLeft( 0 ); - } - return r.contains( pos ); -} - - -/*! - \reimp -*/ -void TQRadioButton::drawButton( TQPainter *paint ) -{ - TQPainter *p = paint; - TQRect irect = TQStyle::tqvisualRect( tqstyle().subRect(TQStyle::SR_RadioButtonIndicator, this), this ); - const TQColorGroup &cg = tqcolorGroup(); - -#if !defined( TQT_NO_TEXTSTREAM ) && !defined( TQ_WS_MACX ) -#ifdef USE_QT4 -printf("[WARNING] TQSharedDoubleBuffer double buffering has been disabled\n\r"); // Otherwise the widgets don't repaint properly in Qt4! -#else // USE_QT4 -# define SAVE_RADIOBUTTON_PIXMAPS -#endif // USE_QT4 -#endif -#if defined(SAVE_RADIOBUTTON_PIXMAPS) - TQString pmkey; // pixmap key - int kf = 0; - if ( isDown() ) - kf |= 1; - if ( isOn() ) - kf |= 2; - if ( isEnabled() ) - kf |= 4; - if( isActiveWindow() ) - kf |= 8; - if ( hasMouse() ) - kf |= 16; - if ( hasFocus() ) - kf |= 32; - - TQTextOStream os(&pmkey); - os << "$qt_radio_" << tqstyle().className() << "_" - << palette().serialNumber() << "_" << irect.width() << "x" << irect.height() << "_" << kf; - TQPixmap *pm = TQPixmapCache::find( pmkey ); - if ( pm ) { // pixmap exists - drawButtonLabel( p ); - p->drawPixmap( irect.topLeft(), *pm ); - return; - } - bool use_pm = TRUE; - TQPainter pmpaint; - int wx, wy; - if ( use_pm ) { - pm = new TQPixmap( irect.size() ); // create new pixmap - TQ_CHECK_PTR( pm ); - pm->fill(paletteBackgroundColor()); - TQPainter::redirect(this, pm); - pmpaint.begin(this); - p = &pmpaint; // draw in pixmap - wx = irect.x(); // save x,y coords - wy = irect.y(); - irect.moveTopLeft(TQPoint(0, 0)); - p->setBackgroundColor(paletteBackgroundColor()); - } -#endif - - TQStyle::SFlags flags = TQStyle::Style_Default; - if ( isEnabled() ) - flags |= TQStyle::Style_Enabled; - if ( hasFocus() ) - flags |= TQStyle::Style_HasFocus; - if ( isDown() ) - flags |= TQStyle::Style_Down; - if ( hasMouse() ) - flags |= TQStyle::Style_MouseOver; - if ( state() == TQButton::On ) - flags |= TQStyle::Style_On; - else if ( state() == TQButton::Off ) - flags |= TQStyle::Style_Off; - - tqstyle().tqdrawControl(TQStyle::CE_RadioButton, p, this, irect, cg, flags); - -#if defined(SAVE_RADIOBUTTON_PIXMAPS) - if ( use_pm ) { - pmpaint.end(); - TQPainter::redirect(this, NULL); - if ( backgroundPixmap() || backgroundMode() == TQt::X11ParentRelative ) { - TQBitmap bm( pm->size() ); - bm.fill( Qt::color0 ); - pmpaint.begin( &bm ); - tqstyle().tqdrawControlMask(TQStyle::CE_RadioButton, &pmpaint, this, irect); - pmpaint.end(); - pm->setMask( bm ); - } - p = paint; // draw in default tqdevice - p->drawPixmap( wx, wy, *pm ); - if (!TQPixmapCache::insert(pmkey, pm) ) // save in cache - delete pm; - } -#endif - - drawButtonLabel( p ); -} - - - -/*! - \reimp -*/ -void TQRadioButton::drawButtonLabel( TQPainter *p ) -{ - TQRect r = - TQStyle::tqvisualRect( tqstyle().subRect(TQStyle::SR_RadioButtonContents, - this), this ); - - TQStyle::SFlags flags = TQStyle::Style_Default; - if (isEnabled()) - flags |= TQStyle::Style_Enabled; - if (hasFocus()) - flags |= TQStyle::Style_HasFocus; - if (isDown()) - flags |= TQStyle::Style_Down; - if (state() == TQButton::On) - flags |= TQStyle::Style_On; - else if (state() == TQButton::Off) - flags |= TQStyle::Style_Off; - - tqstyle().tqdrawControl(TQStyle::CE_RadioButtonLabel, p, this, r, tqcolorGroup(), flags); -} - - -/*! - \reimp -*/ -void TQRadioButton::resizeEvent( TQResizeEvent* e ) -{ - TQButton::resizeEvent(e); - if ( isVisible() ) { - TQPainter p(this); - TQSize isz = tqstyle().tqitemRect(&p, TQRect(0, 0, 1, 1), TQt::ShowPrefix, FALSE, - pixmap(), text()).size(); - TQSize wsz = (tqstyle().tqsizeFromContents(TQStyle::CT_RadioButton, this, isz). - expandedTo(TQApplication::globalStrut())); - - update(wsz.width(), isz.width(), 0, wsz.height()); - } - if (autoMask()) - updateMask(); -} - -/*! - \reimp -*/ -void TQRadioButton::updateMask() -{ - TQRect irect = - TQStyle::tqvisualRect( tqstyle().subRect( TQStyle::SR_RadioButtonIndicator, - this ), this ); - - TQBitmap bm(width(), height()); - bm.fill(Qt::color0); - - TQPainter p( &bm, this ); - tqstyle().tqdrawControlMask(TQStyle::CE_RadioButton, &p, this, irect); - if ( ! text().isNull() || ( pixmap() && ! pixmap()->isNull() ) ) { - TQRect crect = - TQStyle::tqvisualRect( tqstyle().subRect( TQStyle::SR_RadioButtonContents, - this ), this ); - TQRect frect = - TQStyle::tqvisualRect( tqstyle().subRect( TQStyle::SR_RadioButtonFocusRect, - this ), this ); - TQRect label(crect.unite(frect)); - p.fillRect(label, Qt::color1); - } - p.end(); - - setMask(bm); -} - -#endif |