void PieView::paintEvent(QPaintEvent *event) { QItemSelectionModel *selections = selectionModel(); QStyleOptionViewItem option = viewOptions(); QBrush background = option.palette.base(); QPen foreground(option.palette.color(QPalette::WindowText)); QPainter painter(viewport()); painter.setRenderHint(QPainter::Antialiasing); painter.fillRect(event->rect(), background); painter.setPen(foreground); QRect pieRect = QRect(margin, margin, pieSize, pieSize); if (validItems > 0) { // »æÖÆÔ²Ðαý״ͼ painter.save(); painter.translate(pieRect.x() - horizontalScrollBar()->value(), pieRect.y() - verticalScrollBar()->value()); painter.drawEllipse(0, 0, pieSize, pieSize); double startAngle = 0.0; int row; for (row = 0; row < model()->rowCount(rootIndex()); ++row) { QModelIndex index = model()->index(row, 1, rootIndex()); double value = model()->data(index).toDouble(); if (value > 0.0) { double angle = 360*value/totalValue; QModelIndex colorIndex = model()->index(row, 0, rootIndex()); QColor color = QColor(model()->data(colorIndex, Qt::DecorationRole).toString()); if (currentIndex() == index) painter.setBrush(QBrush(color, Qt::Dense4Pattern)); else if (selections->isSelected(index)) painter.setBrush(QBrush(color, Qt::Dense3Pattern)); else painter.setBrush(QBrush(color)); painter.drawPie(0, 0, pieSize, pieSize, int(startAngle*16), int(angle*16)); startAngle += angle; } } painter.restore(); // »æÖƱý״ͼÅԱߵÄͼʾ int keyNumber = 0; for (row = 0; row < model()->rowCount(rootIndex()); ++row) { QModelIndex index = model()->index(row, 1, rootIndex()); double value = model()->data(index).toDouble(); if (value > 0.0) { QModelIndex labelIndex = model()->index(row, 0, rootIndex()); QStyleOptionViewItem option = viewOptions(); option.rect = visualRect(labelIndex); if (selections->isSelected(labelIndex)) option.state |= QStyle::State_Selected; if (currentIndex() == labelIndex) option.state |= QStyle::State_HasFocus; itemDelegate()->paint(&painter, option, labelIndex); keyNumber++; } } } }
void PartitionBarsView::drawSection( QPainter* painter, const QRect& rect_, int x, int width, const QModelIndex& index ) { QColor color = index.isValid() ? index.data( Qt::DecorationRole ).value< QColor >() : ColorUtils::unknownDisklabelColor(); bool isFreeSpace = index.isValid() ? index.data( PartitionModel::IsFreeSpaceRole ).toBool() : true; QRect rect = rect_; const int y = rect.y(); const int height = rect.height(); const int radius = qMax( 1, CORNER_RADIUS - ( VIEW_HEIGHT - height ) / 2 ); painter->setClipRect( x, y, width, height ); painter->translate( 0.5, 0.5 ); rect.adjust( 0, 0, -1, -1 ); if ( selectionMode() != QAbstractItemView::NoSelection && // no hover without selection m_hoveredIndex.isValid() && index == m_hoveredIndex ) { if ( canBeSelected( index ) ) painter->setBrush( color.lighter( 115 ) ); else painter->setBrush( color ); } else { painter->setBrush( color ); } QColor borderColor = color.darker(); painter->setPen( borderColor ); painter->drawRoundedRect( rect, radius, radius ); // Draw shade if ( !isFreeSpace ) rect.adjust( 2, 2, -2, -2 ); QLinearGradient gradient( 0, 0, 0, height / 2 ); qreal c = isFreeSpace ? 0 : 1; gradient.setColorAt( 0, QColor::fromRgbF( c, c, c, 0.3 ) ); gradient.setColorAt( 1, QColor::fromRgbF( c, c, c, 0 ) ); painter->setPen( Qt::NoPen ); painter->setBrush( gradient ); painter->drawRoundedRect( rect, radius, radius ); if ( selectionMode() != QAbstractItemView::NoSelection && index.isValid() && selectionModel() && !selectionModel()->selectedIndexes().isEmpty() && selectionModel()->selectedIndexes().first() == index ) { painter->setPen( QPen( borderColor, 1 ) ); QColor highlightColor = QPalette().highlight().color(); highlightColor = highlightColor.lighter( 500 ); highlightColor.setAlpha( 120 ); painter->setBrush( highlightColor ); QRect selectionRect = rect; selectionRect.setX( x + 1 ); selectionRect.setWidth( width - 3 ); //account for the previous rect.adjust if ( rect.x() > selectionRect.x() ) //hack for first item selectionRect.adjust( rect.x() - selectionRect.x(), 0, 0, 0 ); if ( rect.right() < selectionRect.right() ) //hack for last item selectionRect.adjust( 0, 0, - ( selectionRect.right() - rect.right() ), 0 ); selectionRect.adjust( SELECTION_MARGIN, SELECTION_MARGIN, -SELECTION_MARGIN, -SELECTION_MARGIN ); painter->drawRoundedRect( selectionRect, radius - 1, radius - 1 ); } painter->translate( -0.5, -0.5 ); }
void SideBarView::slotWidgetActivated ( QModelIndex i ) { selectionModel()->clearSelection(); selectionModel()->select(i, QItemSelectionModel::SelectCurrent|QItemSelectionModel::Rows); }
QModelIndexList FeedListView::selectedFeeds() { return selectionModel()->selectedRows(); }
void FeedListView::selectionChanged(const QItemSelection& sel, const QItemSelection& desel) { Q_UNUSED(desel); Q_UNUSED(sel); enableRemove(selectionModel()->selectedRows().count() > 0); }
void RepoTreeView::updateRepoActions() { RepoItem *item = NULL; QItemSelection selected = selectionModel()->selection(); QModelIndexList indexes = selected.indexes(); if (indexes.size() != 0) { const QModelIndex& index = indexes.at(0); QStandardItem *it = ((RepoTreeModel *)model())->itemFromIndex(index); if (it && it->type() == REPO_ITEM_TYPE) { item = (RepoItem *)it; } } if (!item) { // No repo item is selected download_action_->setEnabled(false); open_local_folder_action_->setEnabled(false); unsync_action_->setEnabled(false); toggle_auto_sync_action_->setEnabled(false); view_on_web_action_->setEnabled(false); show_detail_action_->setEnabled(false); return; } LocalRepo r; seafApplet->rpcClient()->getLocalRepo(item->repo().id, &r); item->setLocalRepo(r); if (item->localRepo().isValid()) { const LocalRepo& local_repo = item->localRepo(); download_action_->setEnabled(false); open_local_folder_action_->setData(QVariant::fromValue(local_repo)); open_local_folder_action_->setEnabled(true); unsync_action_->setData(QVariant::fromValue(local_repo)); unsync_action_->setEnabled(true); toggle_auto_sync_action_->setData(QVariant::fromValue(local_repo)); toggle_auto_sync_action_->setEnabled(true); if (local_repo.auto_sync) { toggle_auto_sync_action_->setText(tr("Disable auto sync")); toggle_auto_sync_action_->setToolTip(tr("Disable auto sync")); toggle_auto_sync_action_->setIcon(QIcon(":/images/pause.png")); } else { toggle_auto_sync_action_->setText(tr("Enable auto sync")); toggle_auto_sync_action_->setToolTip(tr("Enable auto sync")); toggle_auto_sync_action_->setIcon(QIcon(":/images/play.png")); } } else { download_action_->setEnabled(true); download_action_->setData(QVariant::fromValue(item->repo())); open_local_folder_action_->setEnabled(false); unsync_action_->setEnabled(false); toggle_auto_sync_action_->setEnabled(false); } view_on_web_action_->setEnabled(true); view_on_web_action_->setData(item->repo().id); show_detail_action_->setEnabled(true); show_detail_action_->setData(QVariant::fromValue(item->repo())); }
void QmlConsoleView::resizeEvent(QResizeEvent *e) { static_cast<QmlConsoleItemDelegate *>(itemDelegate())->emitSizeHintChanged( selectionModel()->currentIndex()); QTreeView::resizeEvent(e); }