diff options
author | Timothy Pearson <[email protected]> | 2011-11-06 15:56:40 -0600 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2011-11-06 15:56:40 -0600 |
commit | e16866e072f94410321d70daedbcb855ea878cac (patch) | |
tree | ee3f52eabde7da1a0e6ca845fb9c2813cf1558cf /tdeui/kpanelapplet.cpp | |
parent | a58c20c1a7593631a1b50213c805507ebc16adaf (diff) | |
download | tdelibs-e16866e072f94410321d70daedbcb855ea878cac.tar.gz tdelibs-e16866e072f94410321d70daedbcb855ea878cac.zip |
Actually move the kde files that were renamed in the last commit
Diffstat (limited to 'tdeui/kpanelapplet.cpp')
-rw-r--r-- | tdeui/kpanelapplet.cpp | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/tdeui/kpanelapplet.cpp b/tdeui/kpanelapplet.cpp new file mode 100644 index 000000000..ece71ad54 --- /dev/null +++ b/tdeui/kpanelapplet.cpp @@ -0,0 +1,198 @@ +/***************************************************************** + +Copyright (c) 2000 Matthias Elter + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +******************************************************************/ + +#include <tqptrlist.h> + +#include "kpanelapplet.h" +#include "kpanelapplet.moc" +#include <kapplication.h> +#include <kconfig.h> + +class KPanelApplet::KPanelAppletPrivate +{ +public: + KPanelAppletPrivate() + : customMenu(0), + hasFocus(false) + {} + + const TQPopupMenu* customMenu; + KSharedConfig::Ptr sharedConfig; + TQPtrList<TQObject> watchedForFocus; + bool hasFocus; +}; + +KPanelApplet::KPanelApplet(const TQString& configFile, Type type, + int actions, TQWidget *parent, const char *name, WFlags f) + : TQFrame(parent, name, f) + , _type(type) + , _position( pBottom ) + , _tqalignment( LeftTop ) + , _config(0) + , _actions(actions) + , d(new KPanelApplet::KPanelAppletPrivate()) +{ + setFrameStyle(NoFrame); + TQPalette pal(palette()); + if(pal.active().mid() != pal.inactive().mid()){ + pal.setInactive(pal.active()); + setPalette(pal); + } + setBackgroundOrigin( AncestorOrigin ); + + d->sharedConfig = KSharedConfig::openConfig(configFile, kapp && kapp->config()->isImmutable()); + _config = d->sharedConfig; +} + +KPanelApplet::~KPanelApplet() +{ + d->watchedForFocus.clear(); + needsFocus(false); + delete d; +} + +void KPanelApplet::setPosition( Position p ) +{ + if( _position == p ) return; + _position = p; + positionChange( p ); +} + +void KPanelApplet::tqsetAlignment( Alignment a ) +{ + if( _tqalignment == a ) return; + _tqalignment = a; + alignmentChange( a ); +} + +// FIXME: Remove implementation for KDE 4 +void KPanelApplet::positionChange( Position ) +{ + orientationChange( orientation() ); + TQResizeEvent e( size(), size() ); + resizeEvent( &e ); + popupDirectionChange( popupDirection() ); +} + +Qt::Orientation KPanelApplet::orientation() const +{ + if( _position == pTop || _position == pBottom ) { + return Qt::Horizontal; + } else { + return Qt::Vertical; + } +} + +// FIXME: Remove for KDE 4 +KPanelApplet::Direction KPanelApplet::popupDirection() +{ + switch( _position ) { + case pTop: return Down; + case pRight: return Left; + case pLeft: return Right; + default: + case pBottom: return Up; + } +} + +void KPanelApplet::action( Action a ) +{ + if ( (a & About) ) + about(); + if ( (a & Help) ) + help(); + if ( (a & Preferences) ) + preferences(); + if ( (a & ReportBug) ) + reportBug(); +} + +const TQPopupMenu* KPanelApplet::customMenu() const +{ + return d->customMenu; +} + +void KPanelApplet::setCustomMenu(const TQPopupMenu* menu) +{ + d->customMenu = menu; +} + +void KPanelApplet::watchForFocus(TQWidget* widget, bool watch) +{ + if (!widget) + { + return; + } + + if (watch) + { + if (d->watchedForFocus.find(TQT_TQOBJECT(widget)) == -1) + { + d->watchedForFocus.append(TQT_TQOBJECT(widget)); + widget->installEventFilter(this); + } + } + else if (d->watchedForFocus.find(TQT_TQOBJECT(widget)) != -1) + { + d->watchedForFocus.remove(TQT_TQOBJECT(widget)); + widget->removeEventFilter(this); + } +} + +void KPanelApplet::needsFocus(bool focus) +{ + if (focus == d->hasFocus) + { + return; + } + + d->hasFocus = focus; + emit requestFocus(focus); +} + +bool KPanelApplet::eventFilter(TQObject *o, TQEvent * e) +{ + if (d->watchedForFocus.find(o) != -1) + { + if (e->type() == TQEvent::MouseButtonRelease || + e->type() == TQEvent::FocusIn) + { + needsFocus(true); + } + else if (e->type() == TQEvent::FocusOut) + { + needsFocus(false); + } + } + + return TQFrame::eventFilter(o, e); +} + +KSharedConfig::Ptr KPanelApplet::sharedConfig() const +{ + return d->sharedConfig; +} + +void KPanelApplet::virtual_hook( int, void* ) +{ /*BASE::virtual_hook( id, data );*/ } + |