You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
311 lines
7.7 KiB
311 lines
7.7 KiB
/*
|
|
* Copyright (C) 2006
|
|
* Siraj Razick <siraj@kdemail.net>
|
|
* PhobosK <phobosk@mail.kbfx.net>
|
|
* see Also AUTHORS
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU Library General Public License version 2 as
|
|
* published by the Free Software Foundation
|
|
*
|
|
* This program 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 General Public License for more details
|
|
*
|
|
* You should have received a copy of the GNU Library General Public
|
|
* License along with this program; if not, write to the
|
|
* Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#include "kbfxtooltip.h"
|
|
|
|
KbfxToolTip::KbfxToolTip ( TQWidget * parent, const char *name, WFlags fl ) :
|
|
TQWidget ( parent, name,
|
|
fl | WStyle_Customize | WRepaintNoErase | WStyle_NoBorder |
|
|
WDestructiveClose | TQt::WPaintDesktop | TQt::WType_Popup | TQt::
|
|
WPaintClever | TQt::WNoAutoErase | TQt::WResizeNoErase | TQt::
|
|
WStaticContents | TQt::WNoAutoErase )
|
|
{
|
|
_animate = ConfigInit ().m_ToolTipAnimation;
|
|
m_fontTooltipFont = ConfigInit ().m_fontTooltipFont;
|
|
|
|
logo = ( KbfxPlasmaPixmapProvider::PixmapPathCheck ( ConfigInit().m_SpinxTooltipLogo ) ) ?
|
|
TQImage ( ConfigInit().m_SpinxTooltipLogo )
|
|
: TQImage ( ConfigInit().m_SpinxTooltipLogoDefault );
|
|
|
|
tooltip_win = ( KbfxPlasmaPixmapProvider::PixmapPathCheck ( ConfigInit ().m_SpinxTooltipWindow ) ) ?
|
|
TQImage ( ConfigInit ().m_SpinxTooltipWindow )
|
|
: TQImage ( ConfigInit ().m_SpinxTooltipWindowDefault );
|
|
|
|
tooltip_mask = ( KbfxPlasmaPixmapProvider::PixmapPathCheck ( ConfigInit().m_SpinxTooltipMask ) ) ?
|
|
TQImage ( ConfigInit().m_SpinxTooltipMask )
|
|
: TQImage ( ConfigInit().m_SpinxTooltipMaskDefault );
|
|
|
|
dude_img = ( KbfxPlasmaPixmapProvider::PixmapPathCheck ( ConfigInit ().m_SpinxDudeImage ) ) ?
|
|
TQImage ( ConfigInit ().m_SpinxDudeImage )
|
|
: TQImage ( ConfigInit ().m_SpinxDudeImageDefault );
|
|
|
|
setUserImage ();
|
|
setBoundBox ();
|
|
setBackground ( TQPixmap () );
|
|
setWindow ( TQPixmap () );
|
|
KbfxPlasmaPixmapProvider::PixmapPathCheck ( ConfigInit ().m_ToolTipAvatar ) ?
|
|
setAnimationImage ( ConfigInit ().m_ToolTipAvatar )
|
|
: setAnimationImage ( ConfigInit ().m_ToolTipAvatarDefault );
|
|
|
|
_hide_timer = new TQTimer ( this );
|
|
_update_timer = new TQTimer ( this );
|
|
_move_timer = new TQTimer ( this );
|
|
|
|
connect ( _hide_timer, TQ_SIGNAL ( timeout () ), this, TQ_SLOT ( hide () ) );
|
|
connect ( _hide_timer, TQ_SIGNAL ( timeout () ), _agent, TQ_SLOT ( hide () ) );
|
|
connect ( _update_timer, TQ_SIGNAL ( timeout () ), this, TQ_SLOT ( logoMove () ) );
|
|
|
|
TQCursor kbfxCursor;
|
|
kbfxCursor.setShape ( TQt::PointingHandCursor );
|
|
this->setCursor ( ( const TQCursor ) kbfxCursor );
|
|
}
|
|
|
|
KbfxToolTip::~KbfxToolTip ()
|
|
{
|
|
delete _hide_timer;
|
|
delete _move_timer;
|
|
delete _update_timer;
|
|
delete _window;
|
|
delete _agent;
|
|
delete _agent_anim;
|
|
}
|
|
|
|
void
|
|
KbfxToolTip::setWindow ( TQPixmap win )
|
|
{
|
|
TQImage m_win_img;
|
|
|
|
( win.isNull () ) ?
|
|
m_win_img = tooltip_win
|
|
: m_win_img = win.convertToImage ();
|
|
|
|
m_win_img = m_win_img.smoothScale ( _bg.width (), 13 );
|
|
// _window = new TQLabel (this, "", TQt::WStaticContents | TQt::WNoAutoErase);
|
|
_window = new TQLabel ( this, "" );
|
|
_window->resize ( _bg.width (), 13 );
|
|
TQPixmap pm;
|
|
pm.convertFromImage(m_win_img);
|
|
_window->setBackgroundPixmap ( pm );
|
|
if ( _animate )
|
|
_window->show ();
|
|
else
|
|
_window->hide ();
|
|
}
|
|
|
|
void
|
|
KbfxToolTip::setAnimationImage ( TQString path )
|
|
{
|
|
/*
|
|
_agent = new TQLabel (this, "",
|
|
TQt::WStaticContents |
|
|
TQt::WNoAutoErase | TQt::WPaintDesktop);
|
|
*/
|
|
_agent = new TQLabel ( this,"" );
|
|
_agent->resize ( 100, 100 );
|
|
|
|
_agent_anim = new TQMovie ( path );
|
|
TQPixmap agent_mask = _agent_anim->framePixmap ();
|
|
_agent->setBackgroundPixmap ( agent_mask );
|
|
if ( agent_mask.mask () )
|
|
_agent->setMask ( *agent_mask.mask () );
|
|
_agent->repaint ();
|
|
|
|
/*FIXME:Need to remove Hard Coded Values */
|
|
_agent->move ( 200, 0 );
|
|
|
|
if ( _animate )
|
|
_agent->show ();
|
|
else
|
|
_agent->close ();
|
|
}
|
|
|
|
|
|
void
|
|
KbfxToolTip::setBackground ( TQPixmap bg )
|
|
{
|
|
|
|
( bg.isNull () ) ?
|
|
_bg = tooltip_mask
|
|
: _bg = bg.convertToImage ();
|
|
|
|
/* animation check : Auto streatch */
|
|
if ( _animate )
|
|
{
|
|
TQImage m_tmp = _bg;
|
|
_bg = m_tmp.smoothScale ( _bg.width () + 100, _bg.height () );
|
|
}
|
|
|
|
TQPixmap pm;
|
|
pm.convertFromImage(_bg);
|
|
this->setBackgroundPixmap ( pm );
|
|
|
|
TQPixmap m_tmp ( _bg );
|
|
if ( m_tmp.mask () )
|
|
this->setMask ( ( *m_tmp.mask () ) );
|
|
this->resize ( _bg.width (), _bg.height () );
|
|
_maxW = _bg.width ();
|
|
}
|
|
|
|
void
|
|
KbfxToolTip::setStartPos ( int _x_, int _y_ )
|
|
{
|
|
_x = _x_;
|
|
_y = _y_;
|
|
_logo_move_x = 100;
|
|
if ( _animate )
|
|
{
|
|
_logo_move_x = 0;
|
|
_hide_timer->start ( 10000, TRUE );
|
|
_move_timer->start ( _agent_anim->speed (), FALSE );
|
|
_update_timer->start ( 2, FALSE );
|
|
}
|
|
|
|
move ( _x, _y );
|
|
}
|
|
|
|
void
|
|
KbfxToolTip::logoMove ()
|
|
{
|
|
TQPainter p;
|
|
|
|
if ( _logo_move_x < _bg.width () - 68 )
|
|
{
|
|
_logo_move_x += 1;
|
|
_window->repaint ();
|
|
|
|
p.begin ( _window );
|
|
p.drawPixmap ( TQRect ( _logo_move_x, 0, logo.width (), logo.height () ),
|
|
TQPixmap ( logo ) );
|
|
p.end ();
|
|
}
|
|
else
|
|
{
|
|
p.begin ( _window );
|
|
p.drawPixmap ( TQRect ( _bg.width () - 68, 0, logo.width (), logo.height () ),
|
|
TQPixmap ( logo ) );
|
|
p.end ();
|
|
}
|
|
|
|
TQPixmap agent_mask = _agent_anim->framePixmap ();
|
|
_agent->setBackgroundPixmap ( agent_mask );
|
|
if ( agent_mask.mask () )
|
|
_agent->setMask ( *agent_mask.mask () );
|
|
_agent->repaint ();
|
|
}
|
|
|
|
void
|
|
KbfxToolTip::setAnimated ( bool b )
|
|
{
|
|
_animate = b;
|
|
}
|
|
|
|
|
|
void
|
|
KbfxToolTip::setLabelText ( TQString str )
|
|
{
|
|
_label_text = str;
|
|
}
|
|
|
|
void
|
|
KbfxToolTip::setHeadingText ( TQString str )
|
|
{
|
|
_heading_text = str;
|
|
}
|
|
|
|
void
|
|
KbfxToolTip::setVersionText ( TQString str )
|
|
{
|
|
_version_text = str;
|
|
}
|
|
|
|
void
|
|
KbfxToolTip::hideToolTip ()
|
|
{
|
|
_move_timer->stop ();
|
|
_hide_timer->stop ();
|
|
|
|
_agent->close ();
|
|
this->hide ();
|
|
this->close ();
|
|
}
|
|
|
|
|
|
void
|
|
KbfxToolTip::setUserImage ()
|
|
{
|
|
TQImage userimage = dude_img;
|
|
userimage = userimage.smoothScale ( 48, 48 );
|
|
_dude = TQPixmap ( userimage );
|
|
}
|
|
|
|
void
|
|
KbfxToolTip::setBoundBox ()
|
|
{
|
|
_dude_box = ( KbfxPlasmaPixmapProvider::PixmapPathCheck ( ConfigInit ().m_SpinxTooltipDudebox ) ) ?
|
|
TQPixmap ( ConfigInit ().m_SpinxTooltipDudebox )
|
|
: TQPixmap ( ConfigInit ().m_SpinxTooltipDudeboxDefault );
|
|
}
|
|
|
|
|
|
void
|
|
KbfxToolTip::paintEvent ( TQPaintEvent * pe )
|
|
{
|
|
|
|
const TQRect r = pe->rect ();
|
|
TQFont *let = new TQFont (m_fontTooltipFont);
|
|
|
|
TQPainter p;
|
|
p.begin ( this );
|
|
p.setBackgroundMode ( TQt::TransparentMode );
|
|
p.drawPixmap ( TQRect ( 7, 16, _dude_box.width (), _dude_box.height () ),
|
|
_dude_box );
|
|
int _paddingX = ( ( _dude_box.height () - _dude.height () ) / 2 ) + 16;
|
|
p.drawPixmap ( TQRect
|
|
( _paddingX - ( 55 - 48 ), _paddingX, _dude.width (),
|
|
_dude.height () ), _dude );
|
|
|
|
if ( _animate )
|
|
{}
|
|
else
|
|
{
|
|
|
|
p.drawPixmap ( TQRect ( 126, 0, logo.width (), logo.height () ),
|
|
TQPixmap ( TQImage (ConfigInit ().m_SpinxTooltipLogo ) ) );
|
|
}
|
|
|
|
let->setBold ( TRUE );
|
|
let->setPointSize ( 10 );
|
|
p.setFont ( *let );
|
|
p.setPen ( TQColor ( 61, 94, 129 ) );
|
|
p.drawText ( _dude_box.width () + 15, 30, TQString("KBFX") );
|
|
|
|
p.setPen ( TQColor ( 0, 0, 0 ) );
|
|
let->setBold ( FALSE );
|
|
let->setPointSize ( 8 );
|
|
p.setFont ( *let );
|
|
p.drawText ( ( _animate ) ? _dude_box.width () + 50 : _dude_box.width () + 4,
|
|
_dude_box.height () + 30, TQString ( "Version " ).append ( APPLICATION_VERSION ) );
|
|
|
|
p.setPen ( ConfigInit ().m_fontTooltipColor );
|
|
let->setBold ( TRUE );
|
|
let->setPointSize ( 8 );
|
|
p.setFont ( *let );
|
|
|
|
|
|
p.drawText ( _dude_box.width () + 15, 43, ConfigInit ().m_ToolTipText );
|
|
p.end ();
|
|
delete let;
|
|
}
|
|
|
|
#include "kbfxtooltip.moc"
|