void K3bDeviceTreeToolTip::maybeTip( const QPoint& pos ) { if( !parentWidget() || !m_view ) return; K3bDeviceBranchViewItem* item = dynamic_cast<K3bDeviceBranchViewItem*>( m_view->itemAt( pos ) ); if( !item ) return; K3bDevice::Device* dev = static_cast<K3bDeviceBranch*>( item->branch() )->device(); QFrame* tooltip = new QFrame( parentWidget() ); tooltip->setFrameStyle( QFrame::Panel | QFrame::Raised ); tooltip->setFrameShape( QFrame::StyledPanel ); QGridLayout* lay = new QGridLayout( tooltip, 2, 2, tooltip->frameWidth()*2 /*margin*/, 6 /*spacing*/ ); QString text = k3bappcore->mediaCache()->medium( dev ).longString(); int detailsStart = text.find( "<p>", 3 ); QString details = text.mid( detailsStart ); text.truncate( detailsStart ); QLabel* label = new QLabel( text, tooltip ); label->setMargin( 9 ); lay->addMultiCellWidget( label, 0, 0, 0, 1 ); label = new QLabel( details, tooltip ); label->setMargin( 9 ); label->setAlignment( Qt::Vertical ); lay->addMultiCellWidget( label, 1, 2, 0, 0 ); label = new QLabel( tooltip ); lay->addWidget( label, 2, 1 ); lay->setColStretch( 0, 1 ); if( K3bTheme* theme = k3bappcore->themeManager()->currentTheme() ) { tooltip->setPaletteBackgroundColor( theme->backgroundColor() ); tooltip->setPaletteForegroundColor( theme->foregroundColor() ); K3bTheme::PixmapType pm; int c = k3bappcore->mediaCache()->medium( dev ).content(); if( c & (K3bMedium::CONTENT_VIDEO_CD|K3bMedium::CONTENT_VIDEO_DVD) ) pm = K3bTheme::MEDIA_VIDEO; else if( c & K3bMedium::CONTENT_AUDIO && c & K3bMedium::CONTENT_DATA ) pm = K3bTheme::MEDIA_MIXED; else if( c & K3bMedium::CONTENT_AUDIO ) pm = K3bTheme::MEDIA_AUDIO; else if( c & K3bMedium::CONTENT_DATA ) pm = K3bTheme::MEDIA_DATA; else { K3bDevice::DiskInfo di = k3bappcore->mediaCache()->diskInfo( dev ); if( di.diskState() == K3bDevice::STATE_EMPTY ) pm = K3bTheme::MEDIA_EMPTY; else pm = K3bTheme::MEDIA_NONE; } label->setPixmap( theme->pixmap( pm ) ); } // the tooltip will take care of deleting the widget tip( m_view->itemRect( item ), tooltip ); }
QWidgetResizeHandler::QWidgetResizeHandler(QWidget *parent, QWidget *cw) : QObject(parent), widget(parent), childWidget(cw ? cw : parent), fw(0), extrahei(0), buttonDown(false), moveResizeMode(false), sizeprotect(true), movingEnabled(true) { mode = Nowhere; widget->setMouseTracking(true); QFrame *frame = qobject_cast<QFrame*>(widget); range = frame ? frame->frameWidth() : RANGE; range = qMax(RANGE, range); activeForMove = activeForResize = true; widget->installEventFilter(this); }