TWindow::TWindow(int32 pixelCount) : BWindow(BRect(0, 0, 0, 0), B_TRANSLATE_SYSTEM_NAME("Magnify"), B_TITLED_WINDOW, B_OUTLINE_RESIZE) { GetPrefs(pixelCount); // add info view BRect infoRect(Bounds()); infoRect.InsetBy(-1, -1); fInfo = new TInfoView(infoRect); AddChild(fInfo); fFontHeight = FontHeight(fInfo, true); fInfoHeight = (fFontHeight * 2) + (3 * 5); BRect fbRect(0, 0, (fHPixelCount*fPixelSize), (fHPixelCount*fPixelSize)); if (InfoIsShowing()) fbRect.OffsetBy(10, fInfoHeight); fFatBits = new TMagnify(fbRect, this); fInfo->AddChild(fFatBits); fFatBits->SetSelection(fShowInfo); fInfo->SetMagView(fFatBits); ResizeWindow(fHPixelCount, fVPixelCount); UpdateInfoBarOnResize(); AddShortcut('S', B_COMMAND_KEY, new BMessage(msg_save)); AddShortcut('C', B_COMMAND_KEY, new BMessage(msg_copy_image)); AddShortcut('T', B_COMMAND_KEY, new BMessage(msg_show_info)); AddShortcut('H', B_COMMAND_KEY, new BMessage(msg_add_cross_hair)); AddShortcut('H', B_SHIFT_KEY, new BMessage(msg_remove_cross_hair)); AddShortcut('G', B_COMMAND_KEY, new BMessage(msg_toggle_grid)); AddShortcut('F', B_COMMAND_KEY, new BMessage(msg_freeze)); AddShortcut('I', B_COMMAND_KEY, new BMessage(msg_stick)); AddShortcut('-', B_COMMAND_KEY, new BMessage(msg_shrink)); AddShortcut('=', B_COMMAND_KEY, new BMessage(msg_grow)); AddShortcut('/', B_COMMAND_KEY, new BMessage(msg_make_square)); AddShortcut(',', B_COMMAND_KEY, new BMessage(msg_shrink_pixel)); AddShortcut('.', B_COMMAND_KEY, new BMessage(msg_grow_pixel)); }
bool ContactItemDelegate::pageHitTest(const QSize &size, const QPoint &point, ContactsView::Page &hitPage) const { /* Point is from an origin of 0,0 in an item of the given size. Perform hit testing on * the page switch buttons. */ QRect chatRect(size.width()-5-16+1, 5-1, 16, 16); QRect infoRect(size.width()-5-16+1, size.height()-8-16+1, 16, 16); if (chatRect.contains(point)) { hitPage = ContactsView::ContactChatPage; return true; } else if (infoRect.contains(point)) { hitPage = ContactsView::ContactInfoPage; return true; } else return false; }
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { QStyleOptionViewItem newOption; newOption = option; newOption.state &= ~QStyle::State_HasFocus; newOption.palette.setColor( QPalette::Disabled, QPalette::Text, Qt::black ); QTableWidget* pWidget = static_cast<QTableWidget*>( parent() ); RecentTableWidgetItem* pItem = static_cast<RecentTableWidgetItem*>(pWidget->item(index.row(), index.column())); painter->setFont(fontTitle); QFontMetrics tfm(fontTitle); int fontTitleSize = tfm.height(); QRect titleRect( newOption.rect.x(), newOption.rect.y(), newOption.rect.width(), fontTitleSize ); painter->drawText( titleRect, Qt::TextSingleLine, tfm.elidedText(pItem->title, Qt::ElideRight, newOption.rect.width() )); painter->setFont(fontInfo); QFontMetrics ifm(fontInfo); int fontAuthorSize = ifm.height(); QRect infoRect( newOption.rect.x(), newOption.rect.y() + fontTitleSize, newOption.rect.width(), fontAuthorSize ); int percentWidth = ifm.boundingRect(pItem->percent).width(); infoRect.adjust(0,0,-percentWidth,0); painter->drawText( infoRect, Qt::TextSingleLine, ifm.elidedText(pItem->info, Qt::ElideRight, infoRect.width() ) ); QRect percentRect( infoRect.right(), infoRect.top(), percentWidth, infoRect.height() ); painter->drawText( percentRect, Qt::TextSingleLine, pItem->percent ); if (index.flags() & Qt::ItemIsSelectable) { Qt::GlobalColor lineColor = Qt::black; int lineWidth = newOption.state & QStyle::State_Selected ? 5:0; QPen pen(lineColor, lineWidth, Qt::SolidLine); painter->setPen(pen); painter->drawLine(newOption.rect.left(), newOption.rect.bottom()-lineWidth/2, newOption.rect.right(), newOption.rect.bottom()-lineWidth/2); } }
void GM_SettingsListDelegate::paint(QPainter* painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { QStyleOptionViewItemV4 opt = option; initStyleOption(&opt, index); const QWidget* w = opt.widget; const QStyle* style = w ? w->style() : QApplication::style(); const Qt::LayoutDirection direction = w ? w->layoutDirection() : QApplication::layoutDirection(); const int height = opt.rect.height(); const int center = height / 2 + opt.rect.top(); // Prepare title font QFont titleFont = opt.font; titleFont.setBold(true); titleFont.setPointSize(titleFont.pointSize() + 1); const QFontMetrics titleMetrics(titleFont); #ifdef Q_OS_WIN const QPalette::ColorRole colorRole = QPalette::Text; #else const QPalette::ColorRole colorRole = opt.state & QStyle::State_Selected ? QPalette::HighlightedText : QPalette::Text; #endif int leftPosition = m_padding; int rightPosition = opt.rect.right() - m_padding - 16; // 16 for remove button // Draw background style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, w); // Draw checkbox const int checkboxSize = 18; const int checkboxYPos = center - (checkboxSize / 2); QStyleOptionViewItemV4 opt2 = opt; opt2.checkState == Qt::Checked ? opt2.state |= QStyle::State_On : opt2.state |= QStyle::State_Off; QRect styleCheckBoxRect = style->subElementRect(QStyle::SE_ViewItemCheckIndicator, &opt2, w); styleCheckBoxRect.setRect(leftPosition, checkboxYPos, styleCheckBoxRect.width(), styleCheckBoxRect.height()); QRect visualCheckBoxRect = style->visualRect(direction, opt.rect, styleCheckBoxRect); opt2.rect = visualCheckBoxRect; style->drawPrimitive(QStyle::PE_IndicatorViewItemCheck, &opt2, painter, w); leftPosition = styleCheckBoxRect.right() + m_padding; // Draw icon const int iconSize = 32; const int iconYPos = center - (iconSize / 2); QRect iconRect(leftPosition, iconYPos, iconSize, iconSize); QRect visualIconRect = style->visualRect(direction, opt.rect, iconRect); QPixmap pixmap = index.data(Qt::DecorationRole).value<QIcon>().pixmap(iconSize); painter->drawPixmap(visualIconRect, pixmap); leftPosition = iconRect.right() + m_padding; // Draw script name const QString &name = index.data(Qt::DisplayRole).toString(); const int leftTitleEdge = leftPosition + 2; const int rightTitleEdge = rightPosition - m_padding; const int leftPosForVersion = titleMetrics.width(name) + m_padding; QRect nameRect(leftTitleEdge, opt.rect.top() + m_padding, rightTitleEdge - leftTitleEdge, titleMetrics.height()); QRect visualNameRect = style->visualRect(direction, opt.rect, nameRect); painter->setFont(titleFont); style->drawItemText(painter, visualNameRect, Qt::AlignLeft, opt.palette, true, name, colorRole); // Draw version const QString &version = index.data(Qt::UserRole).toString(); QRect versionRect(nameRect.x() + leftPosForVersion, nameRect.y(), rightTitleEdge - leftPosForVersion, titleMetrics.height()); QFont versionFont = titleFont; versionFont.setBold(false); painter->setFont(versionFont); style->drawItemText(painter, versionRect, Qt::AlignLeft, opt.palette, true, version, colorRole); // Draw description const int infoYPos = nameRect.bottom() + opt.fontMetrics.leading(); QRect infoRect(visualNameRect.x(), infoYPos, nameRect.width(), opt.fontMetrics.height()); const QString &info = opt.fontMetrics.elidedText(index.data(Qt::UserRole + 1).toString(), Qt::ElideRight, infoRect.width()); painter->setFont(opt.font); style->drawItemText(painter, infoRect, Qt::TextSingleLine | Qt::AlignLeft, opt.palette, true, info, colorRole); // Draw remove button const int removeIconSize = 16; const int removeIconYPos = center - (removeIconSize / 2); QRect removeIconRect(rightPosition, removeIconYPos, removeIconSize, removeIconSize); QRect visualRemoveIconRect = style->visualRect(direction, opt.rect, removeIconRect); painter->drawPixmap(visualRemoveIconRect, m_removePixmap); }