diff options
Diffstat (limited to 'kicker')
-rw-r--r-- | kicker/kicker/buttons/knewbutton.cpp | 273 | ||||
-rw-r--r-- | kicker/kicker/buttons/knewbutton.h | 26 | ||||
-rw-r--r-- | kicker/kicker/ui/k_new_mnu.cpp | 5 |
3 files changed, 29 insertions, 275 deletions
diff --git a/kicker/kicker/buttons/knewbutton.cpp b/kicker/kicker/buttons/knewbutton.cpp index a05027628..df9463639 100644 --- a/kicker/kicker/buttons/knewbutton.cpp +++ b/kicker/kicker/buttons/knewbutton.cpp @@ -55,26 +55,28 @@ KNewButton::KNewButton( TQWidget* parent ) : KButton( parent ), m_oldPos(0,0) { + + setTitle(i18n("K Menu")); Q_ASSERT( !m_self ); m_self = this; - m_hoverTimer = -1; m_openTimer = -1; - m_active = false; + m_hoverTimer = -1; m_mouseInside = false; m_drag = false; - - setIconAlignment((TQ_Alignment)(AlignTop|AlignRight)); - setAcceptDrops(true); - setIcon("kmenu-suse"); - setDrawArrow(false); - - m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_basic.mng")); - m_movie->connectUpdate(this, TQT_SLOT(updateMovie())); - m_movie->connectStatus(TQT_TQOBJECT(this), TQT_SLOT(slotStatus(int))); - m_movie->connectResize(this, TQT_SLOT(slotSetSize(const TQSize&))); - + + setIcon("kmenu"); + setIcon(KickerSettings::customKMenuIcon()); + TQApplication::desktop()->screen()->installEventFilter(this); - setMouseTracking(true); + + if (KickerSettings::showKMenuText()) + { + setButtonText(KickerSettings::kMenuText()); + setFont(KickerSettings::buttonFont()); + setTextColor(KickerSettings::buttonTextColor()); + } + + tqrepaint(); } KNewButton::~KNewButton() @@ -82,28 +84,15 @@ KNewButton::~KNewButton() if ( m_self == this ) m_self = 0; setMouseTracking(false); - delete m_movie; } -void KNewButton::slotStatus(int status) -{ - if(status == TQMovie::EndOfLoop) - slotStopAnimation(); -} -TQColor KNewButton::borderColor() const +void KNewButton::drawButton(TQPainter *p) { - TQImage img = m_active_pixmap.convertToImage(); - - for (int i = 0; i < img.width(); ++i) { - QRgb rgb = img.pixel(orientation() == Qt::Horizontal ? img.width() - i - 1 : - i, 2); - - if (tqGreen(rgb) > 0x50) - return rgb; - } - - return img.pixel( orientation() == Qt::Horizontal ? img.width() - 2 : 2, 2); + if (KickerSettings::showDeepButtons()) + PanelPopupButton::drawDeepButton(p); + else + PanelPopupButton::drawButton(p); } void KNewButton::show() @@ -111,103 +100,12 @@ void KNewButton::show() KButton::show(); if (KickerSettings::firstRun()) { - TQTimer::singleShot(500,this,TQT_SLOT(slotExecMenu())); + TQTimer::singleShot(0,this,TQT_SLOT(slotExecMenu())); KickerSettings::setFirstRun(false); KickerSettings::writeConfig(); } } -void KNewButton::updateMovie() -{ - m_oldPos = TQPoint( -1, -1 ); - drawEye(); - - if (!m_active && m_movie->running()) - m_movie->pause(); -} - -void KNewButton::setPopupDirection(KPanelApplet::Direction d) -{ - KButton::setPopupDirection(d); - - delete m_movie; - - switch (d) { - case KPanelApplet::Left: - setIconAlignment((TQ_Alignment)(AlignTop|AlignLeft)); - m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_vertical.mng")); - break; - case KPanelApplet::Right: - setIconAlignment((TQ_Alignment)(AlignTop|AlignRight)); - m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_vertical.mng")); - break; - case KPanelApplet::Up: - setIconAlignment((TQ_Alignment)(AlignTop|AlignHCenter)); - m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_basic.mng")); - break; - case KPanelApplet::Down: - setIconAlignment((TQ_Alignment)(AlignBottom|AlignHCenter)); - m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_flipped.mng")); - } - - m_movie->connectUpdate(this, TQT_SLOT(updateMovie())); - m_movie->connectStatus(TQT_TQOBJECT(this), TQT_SLOT(slotStatus(int))); - m_movie->connectResize(this, TQT_SLOT(slotSetSize(const TQSize&))); -} - -void KNewButton::slotSetSize(const TQSize& s) -{ - m_iconSize = s; -} - -double KNewButton::buttonScaleFactor(const TQSize& s) const -{ - double sf = 1.0; - - switch (popupDirection()) { - case KPanelApplet::Left: - case KPanelApplet::Right: -// sf = kMin(double(s.width()) / m_iconSize.height(), double(s.height()) / m_iconSize.width()); -// break; - case KPanelApplet::Up: - case KPanelApplet::Down: - sf = kMin(double(s.width()) / m_iconSize.width(), double(s.height()) / m_iconSize.height()); - break; - } - - if (sf > 0.8) sf = 1.0; - return sf; -} - -int KNewButton::widthForHeight(int height) const -{ - int r = m_iconSize.width() * buttonScaleFactor(TQSize(m_iconSize.width(), height)); - - if (!m_movie->running() && height != m_active_pixmap.height()) - { - KNewButton* that = const_cast<KNewButton*>(this); - TQTimer::singleShot(0, that, TQT_SLOT(slotStopAnimation())); - } - - return r; -} - -int KNewButton::preferredDimension(int panelDim) const -{ - return kMax(m_icon.width(), m_icon.height()); -} - -int KNewButton::heightForWidth(int width) const -{ - int r = m_iconSize.width() * buttonScaleFactor(TQSize(width, m_iconSize.height())); - if (!m_movie->running() && width != m_active_pixmap.width()) - { - KNewButton* that = const_cast<KNewButton*>(this); - TQTimer::singleShot(0, that, TQT_SLOT(slotStopAnimation())); - } - return r; -} - bool KNewButton::eventFilter(TQObject *o, TQEvent *e) { if (e->type() == TQEvent::MouseButtonRelease || @@ -223,75 +121,9 @@ bool KNewButton::eventFilter(TQObject *o, TQEvent *e) } } - if (KickerSettings::kickoffDrawGeekoEye() && e->type() == TQEvent::MouseMove) - { - TQMouseEvent *me = TQT_TQMOUSEEVENT(e); - if ((me->state() & Qt::MouseButtonMask) == Qt::NoButton) - drawEye(); - } - return KButton::eventFilter(o, e); } -void KNewButton::drawEye() -{ -#define eye_x 62 -#define eye_y 13 - TQPoint mouse = TQCursor::pos(); - TQPoint me = mapToGlobal(TQPoint(eye_x, eye_y)); - double a = atan2(mouse.y() - me.y(), mouse.x() - me.x()); - int dx = int(2.1 * cos(a)); - int dy = int(2.1 * sin(a)); - - TQPoint newpos(eye_x+dx,eye_y+dy); - if (newpos!=m_oldPos) { - m_oldPos = newpos; - TQPixmap pixmap = m_active_pixmap; - - double sf = 1.0; - - if(!m_movie->framePixmap().isNull()) - { - pixmap = m_movie->framePixmap(); - pixmap.detach(); - m_iconSize = pixmap.size(); - sf = buttonScaleFactor(size()); - - if (KickerSettings::kickoffDrawGeekoEye()) { - TQPainter p(&pixmap); - p.setPen(white); - p.setBrush(white); - // p.setPen(TQColor(110,185,55)); - p.drawRect(eye_x+dx, eye_y+dy, 2, 2); - p. end(); - } - } - - TQWMatrix matrix; - switch (popupDirection()) { - case KPanelApplet::Left: - matrix.scale(sf, -sf); - matrix.rotate(90); - break; - case KPanelApplet::Up: - matrix.scale(sf, sf); - break; - case KPanelApplet::Right: - matrix.scale(sf, -sf); - matrix.rotate(90); - break; - case KPanelApplet::Down: - matrix.scale(sf, sf); - break; - } - m_active_pixmap = pixmap.xForm(matrix); - - repaint(false); - } -#undef eye_x -#undef eye_y -} - void KNewButton::enterEvent(TQEvent* e) { KButton::enterEvent(e); @@ -315,15 +147,8 @@ void KNewButton::enterEvent(TQEvent* e) } m_active = true; - m_movie->unpause(); - m_movie->restart(); } -void KNewButton::rewindMovie() -{ - m_oldPos = TQPoint( -1, -1 ); - m_movie->unpause(); -} void KNewButton::dragEnterEvent(TQDragEnterEvent* /*e*/) { @@ -369,31 +194,12 @@ void KNewButton::mouseMoveEvent(TQMouseEvent* e) } } -void KNewButton::slotStopAnimation() -{ - m_active = false; - m_movie->pause(); - m_movie->restart(); - TQTimer::singleShot(200, this, TQT_SLOT(rewindMovie())); -} - -const TQPixmap& KNewButton::labelIcon() const -{ - return m_active_pixmap; -} - void KNewButton::slotExecMenu() { - if (m_openTimer != -1) - killTimer(m_openTimer); - - m_openTimer = startTimer(TQApplication::doubleClickInterval() * 3); if (m_active) { m_active = false; - m_movie->pause(); - m_movie->restart(); } KButton::slotExecMenu(); @@ -401,40 +207,12 @@ void KNewButton::slotExecMenu() assert(!KickerTip::tippingEnabled()); assert(dynamic_cast<KMenu*>(m_popup)); - disconnect(dynamic_cast<KMenu*>(m_popup), TQT_SIGNAL(aboutToHide()), this, - TQT_SLOT(slotStopAnimation())); - connect(dynamic_cast<KMenu*>(m_popup), TQT_SIGNAL(aboutToHide()), - TQT_SLOT(slotStopAnimation())); - m_popup->move(KickerLib::popupPosition(popupDirection(), m_popup, this)); // I wish KMenu would properly done itself when it closes. But it doesn't. - bool useEffect = true; // could be TQApplication::isEffectEnabled() - useEffect = false; // too many TQt bugs to be useful - if (m_drag) - useEffect = false; - m_drag = false; // once is enough - if (useEffect) - { - switch (popupDirection()) { - case KPanelApplet::Left: - qScrollEffect(m_popup, TQEffects::LeftScroll); - break; - case KPanelApplet::Up: - qScrollEffect(m_popup, TQEffects::UpScroll); - break; - case KPanelApplet::Right: - qScrollEffect(m_popup, TQEffects::RightScroll); - break; - case KPanelApplet::Down: - qScrollEffect(m_popup, TQEffects::DownScroll); - break; - } - } - else - static_cast<KMenu*>(m_popup)->show(); + static_cast<KMenu*>(m_popup)->show(); } void KNewButton::timerEvent(TQTimerEvent* e) @@ -447,9 +225,4 @@ void KNewButton::timerEvent(TQTimerEvent* e) killTimer(m_hoverTimer); m_hoverTimer = -1; } - if (e->timerId() == m_openTimer) - { - killTimer(m_openTimer); - m_openTimer = -1; - } } diff --git a/kicker/kicker/buttons/knewbutton.h b/kicker/kicker/buttons/knewbutton.h index bcb8b8743..bc926cf0d 100644 --- a/kicker/kicker/buttons/knewbutton.h +++ b/kicker/kicker/buttons/knewbutton.h @@ -28,7 +28,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "kbutton.h" -#include <tqmovie.h> #include <tqpoint.h> /** @@ -43,25 +42,10 @@ public: ~KNewButton(); static KNewButton *self() { return m_self; } - void loadConfig( const KConfigGroup& config ); - - virtual const TQPixmap& labelIcon() const; - - virtual int widthForHeight(int height) const; - virtual int preferredDimension(int panelDim) const; - virtual int heightForWidth(int width) const; - TQColor borderColor() const; + //virtual void setPopupDirection(KPanelApplet::Direction d); - virtual void setPopupDirection(KPanelApplet::Direction d); - -private slots: - void slotStatus(int); - void slotSetSize(const TQSize&); - void slotStopAnimation(); - void rewindMovie(); - void updateMovie(); protected: virtual void show(); @@ -78,17 +62,15 @@ protected: void timerEvent(TQTimerEvent*); private: - void drawEye(); - double buttonScaleFactor(const TQSize& s) const; - TQMovie* m_movie; + void drawButton(TQPainter *p); TQPixmap m_active_pixmap; TQPoint m_oldPos; TQSize m_iconSize; TQRect m_sloppyRegion; - int m_hoverTimer; int m_openTimer; - bool m_active; + int m_hoverTimer; + bool m_active; bool m_mouseInside; bool m_drag; diff --git a/kicker/kicker/ui/k_new_mnu.cpp b/kicker/kicker/ui/k_new_mnu.cpp index 993065d0f..1a25aa10b 100644 --- a/kicker/kicker/ui/k_new_mnu.cpp +++ b/kicker/kicker/ui/k_new_mnu.cpp @@ -1700,8 +1700,6 @@ void KMenu::setOrientation(MenuOrientation orientation) TQPixmap pix( 64, footer->height() ); TQPainter p( &pix ); p.fillRect( 0, 0, 64, footer->height(), m_branding->colorGroup().brush( TQColorGroup::Base ) ); - p.fillRect( 0, m_orientation == BottomUp ? footer->height() - 2 : 0, - 64, 3, KNewButton::self()->borderColor() ); p.end(); footer->setPaletteBackgroundPixmap( pix ); } @@ -3500,7 +3498,8 @@ void KMenu::updateMedia() } m_systemView->insertItem( iconName, userLabel.isEmpty() ? label : userLabel, descr, "system:/media/" + name, nId++, -1 ); - + ++it; + ++it; ++it; // skip separator } } |