~ubuntu-branches/ubuntu/jaunty/kde4libs/jaunty-updates

« back to all changes in this revision

Viewing changes to plasma/delegate.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Harald Sitter
  • Date: 2008-12-11 18:26:08 UTC
  • mfrom: (1.1.24 upstream)
  • Revision ID: james.westby@ubuntu.com-20081211182608-tsu6p8ncbw1gnqxt
Tags: 4:4.1.85-0ubuntu1
* New upstream release
* Patches:
  + Removed 15_kfreebsd_support.diff from patches/series (doesn't apply and
    has no use for Ubuntu)
  + Redid 20_use_dejavu_as_default_font.diff
  + Completely removed kubuntu_09_fix_application_menu.diff (applied upstream)
  + Refreshed kubuntu_54_use_xdg_menu_prefix.diff
  + Dropped plasma/widgets/toolbutton.cpp from kubuntu_qt_ftbfs.diff (applied
    upstream)
  + Global quilt refresh

Show diffs side-by-side

added added

removed removed

Lines of Context:
253
253
 
254
254
    QFont titleFont(option.font);
255
255
 
 
256
    // draw icon
 
257
    QIcon decorationIcon = index.data(Qt::DecorationRole).value<QIcon>();
 
258
 
 
259
    if (index.data(d->roles[ColumnTypeRole]).toInt() == SecondaryActionColumn) {
 
260
        if (hover) {
 
261
            // Only draw on hover
 
262
            const int delta = floor((qreal)(option.decorationSize.width() - DelegatePrivate::ACTION_ICON_SIZE) / 2.0);
 
263
            decorationRect.adjust(delta, delta-1, -delta-1, -delta);
 
264
            decorationIcon.paint(painter, decorationRect, option.decorationAlignment);
 
265
        }
 
266
    } else {
 
267
        // as default always draw as main column
 
268
        decorationIcon.paint(painter, decorationRect, option.decorationAlignment);
 
269
    }
 
270
 
 
271
    painter->save();
 
272
 
 
273
    // draw title
 
274
    painter->setFont(titleFont);
 
275
    painter->drawText(titleRect, Qt::AlignLeft|Qt::AlignVCenter, titleText);
 
276
 
 
277
    if (hover || !uniqueTitle) {
 
278
        // draw sub-title, BUT only if:
 
279
        //   * it isn't a unique title, this allows two items to have the same title and be
 
280
        //          disambiguated by their subtitle
 
281
        //   * we are directed by the model that this item should never be treated as unique
 
282
        //          e.g. the documents list in the recently used tab
 
283
        //   * the mouse is hovered over the item, causing the additional information to be
 
284
        //          displayed
 
285
        //
 
286
        // the rational for this is that subtitle text should in most cases not be
 
287
        // required to understand the item itself and that showing all the subtexts in a
 
288
        // listing makes the information density very high, impacting both the speed at
 
289
        // which one can scan the list visually and the aesthetic qualities of the listing.
 
290
        painter->setPen(QPen(KColorScheme(QPalette::Active).foreground(KColorScheme::InactiveText), 1));
 
291
        painter->setFont(subTitleFont);
 
292
        painter->drawText(subTitleRect, Qt::AlignLeft|Qt::AlignVCenter, "  " + subTitleText);
 
293
    }
 
294
 
 
295
    painter->restore();
 
296
 
 
297
 
 
298
    painter->save();
 
299
    painter->setPen(Qt::NoPen);
 
300
    const QColor gradientColor = 
 
301
        KColorScheme(QPalette::Active).background(KColorScheme::NormalBackground).color();
 
302
    if (option.direction == Qt::LeftToRight) {
 
303
        if (((titleRect.width() + 40) > option.rect.width() ||
 
304
            (subTitleRect.width() + 40) > option.rect.width()) && 
 
305
            (titleRect.width() > 120 || subTitleRect.width() > 120)) {
 
306
            QLinearGradient gr;
 
307
            QRect gradientRect(option.rect.width() - 30, titleRect.y(),
 
308
                  80, titleRect.height() + subTitleRect.height());
 
309
            // draw it on the right side
 
310
            gr.setStart(gradientRect.topLeft());
 
311
            gr.setFinalStop(gradientRect.topRight());
 
312
            gr.setColorAt(0.0, Qt::transparent);
 
313
            gr.setColorAt(0.7, gradientColor);
 
314
            painter->setBrush(QBrush(gr));
 
315
            painter->drawRect(gradientRect);
 
316
        }
 
317
 
 
318
    } else {
 
319
        if ((titleRect.width() + 40 > option.rect.width() || 
 
320
            subTitleRect.width() + 40 > option.rect.width()) &&
 
321
            (titleRect.width() > 120 || subTitleRect.width() > 120)) {
 
322
            QLinearGradient gr;
 
323
            QRect gradientRect(option.rect.x() - 25, titleRect.y(),
 
324
                                60, titleRect.height() + subTitleRect.height());
 
325
            gr.setStart(gradientRect.topRight());
 
326
            gr.setFinalStop(gradientRect.topLeft());
 
327
            gr.setColorAt(0.0, Qt::transparent);
 
328
            gr.setColorAt(0.6, gradientColor);
 
329
            painter->setBrush(QBrush(gr));
 
330
            painter->drawRect(gradientRect);
 
331
        }
 
332
    }
 
333
    
 
334
    painter->restore(); 
 
335
 
256
336
    if (hover) {
257
337
        painter->save();
258
338
        painter->setRenderHint(QPainter::Antialiasing);
323
403
        painter->restore();
324
404
    }
325
405
 
326
 
    // draw icon
327
 
    QIcon decorationIcon = index.data(Qt::DecorationRole).value<QIcon>();
328
 
 
329
 
    if (index.data(d->roles[ColumnTypeRole]).toInt() == SecondaryActionColumn) {
330
 
        if (hover) {
331
 
            // Only draw on hover
332
 
            const int delta = floor((qreal)(option.decorationSize.width() - DelegatePrivate::ACTION_ICON_SIZE) / 2.0);
333
 
            decorationRect.adjust(delta, delta-1, -delta-1, -delta);
334
 
            decorationIcon.paint(painter, decorationRect, option.decorationAlignment);
335
 
        }
336
 
    } else {
337
 
        // as default always draw as main column
338
 
        decorationIcon.paint(painter, decorationRect, option.decorationAlignment);
339
 
    }
340
 
 
341
 
    painter->save();
342
 
 
343
 
    // draw title
344
 
    painter->setFont(titleFont);
345
 
    painter->drawText(titleRect, Qt::AlignLeft|Qt::AlignVCenter, titleText);
346
 
 
347
 
    if (hover || !uniqueTitle) {
348
 
        // draw sub-title, BUT only if:
349
 
        //   * it isn't a unique title, this allows two items to have the same title and be
350
 
        //          disambiguated by their subtitle
351
 
        //   * we are directed by the model that this item should never be treated as unique
352
 
        //          e.g. the documents list in the recently used tab
353
 
        //   * the mouse is hovered over the item, causing the additional information to be
354
 
        //          displayed
355
 
        //
356
 
        // the rational for this is that subtitle text should in most cases not be
357
 
        // required to understand the item itself and that showing all the subtexts in a
358
 
        // listing makes the information density very high, impacting both the speed at
359
 
        // which one can scan the list visually and the aesthetic qualities of the listing.
360
 
        painter->setPen(QPen(KColorScheme(QPalette::Active).foreground(KColorScheme::InactiveText), 1));
361
 
        painter->setFont(subTitleFont);
362
 
        painter->drawText(subTitleRect, Qt::AlignLeft|Qt::AlignVCenter, "  " + subTitleText);
363
 
    }
364
 
 
365
 
    painter->restore();
366
406
 
367
407
}
368
408