OSDWidget::OSDWidget( QWidget *parent, const char *name ) : QWidget( parent ) , m_duration( 2000 ) , m_timer( new QTimer( this ) ) , m_alignment( Middle ) , m_screen( 0 ) , m_y( MARGIN ) , m_drawShadow( true ) , m_rating( 0 ) , m_volume( 0 ) , m_showVolume( false ) { Qt::WindowFlags flags; flags = Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint; // The best of both worlds. On Windows, setting the widget as a popup avoids a task manager entry. On linux, a popup steals focus. // Therefore we go need to do it platform specific :( #ifdef Q_OS_WIN flags |= Qt::Popup; #else flags |= Qt::Window | Qt::X11BypassWindowManagerHint; #endif setWindowFlags( flags ); setObjectName( name ); setFocusPolicy( Qt::NoFocus ); unsetColors(); m_timer->setSingleShot( true ); connect( m_timer, SIGNAL( timeout() ), SLOT( hide() ) ); //or crashes, KWindowSystem bug I think, crashes in QWidget::icon() kapp->setTopWidget( this ); }
void OSDPreviewWidget::setUseCustomColors(const bool use, const QColor& fg) { if( use ) setTextColor( fg ); else unsetColors(); }
bool OSDWidget::event( QEvent *e ) { switch( e->type() ) { case QEvent::ApplicationPaletteChange: if( !AmarokConfig::osdUseCustomColors() ) unsetColors(); //use new palette's colours return true; default: return QWidget::event( e ); } }
OSDWidget::OSDWidget( const QString &appName, QWidget *parent, const char *name ) : QWidget( parent, name, WNoAutoErase | WStyle_Customize | WX11BypassWM | WStyle_StaysOnTop | WStyle_Tool ) , m_appName( appName ) , m_duration( 5000 ) , m_shadow( true ) , m_alignment( Middle ) , m_screen( 0 ) , m_y( MARGIN ) , m_dirty( false ) { setFocusPolicy( NoFocus ); setBackgroundMode( NoBackground ); unsetColors(); connect( &timer, SIGNAL( timeout() ), SLOT( hide() ) ); connect( &timerMin, SIGNAL( timeout() ), SLOT( minReached() ) ); }
void Amarok::OSD::applySettings() { DEBUG_BLOCK setAlignment( static_cast<OSDWidget::Alignment>( AmarokConfig::osdAlignment() ) ); setDuration( AmarokConfig::osdDuration() ); setEnabled( AmarokConfig::osdEnabled() ); setOffset( AmarokConfig::osdYOffset() ); setScreen( AmarokConfig::osdScreen() ); setFont( AmarokConfig::osdFont() ); if( AmarokConfig::osdUseCustomColors() ) setTextColor( AmarokConfig::osdTextColor() ); else unsetColors(); setTranslucent( AmarokConfig::osdUseTranslucency() ); }
OSDWidget::OSDWidget( QWidget *parent, const char *name ) : QWidget( parent ) , m_duration( 2000 ) , m_timer( new QTimer( this ) ) , m_alignment( Middle ) , m_screen( 0 ) , m_y( MARGIN ) , m_drawShadow( true ) , m_rating( 0 ) , m_volume( The::engineController()->volume() ) , m_showVolume( false ) , m_hideWhenFullscreenWindowIsActive( false ) { Qt::WindowFlags flags; flags = Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint; // The best of both worlds. On Windows, setting the widget as a popup avoids a task manager entry. On linux, a popup steals focus. // Therefore we go need to do it platform specific :( //This is no longer true. Qt::Window steals focus on X11, Qt:Tool does not. Not sure if we even need the ifdefs any more... #ifdef Q_OS_WIN flags |= Qt::Tool; #else flags |= Qt::Tool | Qt::X11BypassWindowManagerHint; #endif setWindowFlags( flags ); setObjectName( name ); setFocusPolicy( Qt::NoFocus ); unsetColors(); setFont(QFont("sans-serif")); #ifdef Q_WS_X11 KWindowSystem::setType( winId(), NET::Notification ); #endif m_timer->setSingleShot( true ); connect( m_timer, SIGNAL( timeout() ), SLOT( hide() ) ); //or crashes, KWindowSystem bug I think, crashes in QWidget::icon() kapp->setTopWidget( this ); }