rockbox/rbutil/rbutilqt/comboboxviewdelegate.cpp
Dominik Riebeling 99408dd45e Add custom delegate for showing the mountpoint combo box entries.
The delegate will be used for the dropdown list and show both mountpoint (left
aligned) and label / size information (right aligned). This improves
readability compared to the previous implementation. Also, the mountpoint
itself is now the text of the combo box and the additional information is in
the Qt::UserRole to avoid having to handle a user entered mountpoint separately
(since previously the mountpoint was stored in Qt::UserRole, but an edited item
would have the value in Qt::TextRole).

Disable editing the combo box entry for release builds, it shouldn't be needed
by users.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30144 a1c6a512-1295-4272-9138-f99709370657
2011-07-16 22:08:03 +00:00

55 lines
1.9 KiB
C++

/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2011 by Dominik Riebeling
* $Id$
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <QtGui>
#include <qdebug.h>
#include "comboboxviewdelegate.h"
void ComboBoxViewDelegate::paint(QPainter *painter,
const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QPen pen;
QFont font;
pen = painter->pen();
font = painter->font();
painter->save();
// paint selection
if(option.state & QStyle::State_Selected) {
painter->setPen(QPen(Qt::NoPen));
painter->setBrush(QApplication::palette().highlight());
painter->drawRect(option.rect);
painter->restore();
painter->save();
pen.setColor(QApplication::palette().color(QPalette::HighlightedText));
}
else {
pen.setColor(QApplication::palette().color(QPalette::Text));
}
// draw data (text)
painter->setPen(pen);
painter->drawText(option.rect, Qt::AlignLeft, index.data().toString());
// draw user data right aligned, italic
font.setItalic(true);
painter->setFont(font);
painter->drawText(option.rect, Qt::AlignRight, index.data(Qt::UserRole).toString());
painter->restore();
}