#include "friendlistitemdelegate.h"
#include "friendlistitem.h"
-const int BACKGROUND_LEFT = 0;
-const int BACKGROUND_TOP = 0;
-const int BACKGROUND_WIDTH = 368;
-const int BACKGROUND_HEIGHT = 141;
-const int IMAGE_LEFT = 9;
-const int IMAGE_TOP = 0;
+const int BACKGROUND_TOP_WIDTH = 368;
+const int BACKGROUND_TOP_HEIGHT = 20;
+const int BACKGROUND_MIDDLE_X = 0;
+const int BACKGROUND_MIDDLE_Y = BACKGROUND_TOP_HEIGHT;
+const int BACKGROUND_MIDDLE_WIDTH = 368;
+const int BACKGROUND_MIDDLE_HEIGHT = 106;
+const int BACKGROUND_BOTTOM_X = 0;
+const int BACKGROUND_BOTTOM_Y = BACKGROUND_MIDDLE_Y + BACKGROUND_MIDDLE_HEIGHT;
+const int BACKGROUND_BOTTOM_WIDTH = 368;
+const int BACKGROUND_BOTTOM_HEIGHT = 15;
+const int IMAGE_X = 9;
+const int IMAGE_Y = 0;
const int IMAGE_WIDTH = 60;
const int IMAGE_HEIGHT = 60;
-const int CLOCK_LEFT = 71;
-const int CLOCK_TOP = 53;
-const int ENVELOPE_LEFT = 71;
-const int ENVELOPE_TOP = 77;
-const int COMPASS_LEFT = 71;
-const int COMPASS_TOP = 101;
+const int CLOCK_X = 71;
+const int CLOCK_Y = 53;
+const int ENVELOPE_X = 71;
+const int ENVELOPE_Y = 77;
+const int COMPASS_X = 71;
+const int COMPASS_Y = 101;
const int ICON_WIDTH = 24;
const int ICON_HEIGHT = 24;
-const QString BACKGROUND_PATH = QString(":/resources/list_item.png");
+const QString BACKGROUND_TOP_PATH = QString(":/resources/list_item_top.png");
+const QString BACKGROUND_MIDDLE_PATH = QString(":/resources/list_item_middle.png");
+const QString BACKGROUND_BOTTOM_PATH = QString(":/resources/list_item_bottom.png");
const QString CLOCK_PATH = QString(":/resources/clock.png");
const QString ENVELOPE_PATH = QString(":/resources/envelope.png");
const QString COMPASS_PATH = QString(":/resources/compass.png");
FriendListItemDelegate::FriendListItemDelegate()
+ : m_currentIndex(-1)
{
}
const QModelIndex &index) const
{
QRect itemRect = option.rect;
-
+ itemRect = QRect(itemRect.left(), itemRect.top(), 368, 141);
+ qDebug() << "Item rect: " << itemRect;
//Draw selected background
- if(option.state & QStyle::State_Selected){
+ if(option.state & QStyle::State_Selected) {
+
+ QRect topRect = QRect(itemRect.left(), itemRect.top(), BACKGROUND_TOP_WIDTH,
+ BACKGROUND_TOP_HEIGHT);
+ painter->drawPixmap(topRect, QPixmap(BACKGROUND_TOP_PATH));
- QRect backRect = QRect(itemRect.left() + BACKGROUND_LEFT, itemRect.top() + BACKGROUND_TOP,
- BACKGROUND_WIDTH, BACKGROUND_HEIGHT);
- painter->drawPixmap(backRect, QPixmap(BACKGROUND_PATH));
+ QRect middleRect = QRect(topRect.left(), topRect.bottom() + 1, BACKGROUND_MIDDLE_WIDTH,
+ BACKGROUND_MIDDLE_HEIGHT);
+ painter->drawPixmap(middleRect, QPixmap(BACKGROUND_MIDDLE_PATH));
+ QRect bottomRect = QRect(topRect.left(), middleRect.bottom() + 1, BACKGROUND_BOTTOM_WIDTH,
+ BACKGROUND_BOTTOM_HEIGHT);
+ painter->drawPixmap(bottomRect, QPixmap(BACKGROUND_BOTTOM_PATH));
}
//Draw background
else {
- QRect backRect = QRect(itemRect.left() + BACKGROUND_LEFT, itemRect.top() + BACKGROUND_TOP,
- BACKGROUND_WIDTH, BACKGROUND_HEIGHT);
- painter->drawPixmap(backRect, QPixmap(BACKGROUND_PATH));
+ QRect topRect = QRect(itemRect.left(), itemRect.top(), BACKGROUND_TOP_WIDTH,
+ BACKGROUND_TOP_HEIGHT);
+ painter->drawPixmap(topRect, QPixmap(BACKGROUND_TOP_PATH));
+ QRect middleRect = QRect(topRect.left(), topRect.bottom() + 1, BACKGROUND_MIDDLE_WIDTH,
+ BACKGROUND_MIDDLE_HEIGHT);
+ painter->drawPixmap(middleRect, QPixmap(BACKGROUND_MIDDLE_PATH));
+ QRect bottomRect = QRect(topRect.left(), middleRect.bottom() + 1, BACKGROUND_BOTTOM_WIDTH,
+ BACKGROUND_BOTTOM_HEIGHT);
+ painter->drawPixmap(bottomRect, QPixmap(BACKGROUND_BOTTOM_PATH));
}
+ //index.model()->layoutChanged();
+
//Draw image
QString image = index.data(FriendListItem::Image).toString();
- QRect imageRect = QRect(itemRect.left() + IMAGE_LEFT, itemRect.top() + IMAGE_TOP,
+ QRect imageRect = QRect(itemRect.left() + IMAGE_X, itemRect.top() + IMAGE_Y,
IMAGE_WIDTH, IMAGE_HEIGHT);
painter->drawPixmap(imageRect, QPixmap(image));
QPen whitePen(QColor(Qt::white), 1, Qt::SolidLine);
painter->setPen(whitePen);
painter->setFont(QFont( "Nokia Sans", 18, QFont::Normal));
- painter->drawText(nameRect, Qt::AlignLeft, name, &nameRect);
+ painter->drawText(nameRect, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, name, &nameRect);
//Draw clock
- QRect clockRect = QRect(itemRect.left() + CLOCK_LEFT, itemRect.top() + CLOCK_TOP,
+ QRect clockRect = QRect(itemRect.left() + CLOCK_X, itemRect.top() + CLOCK_Y,
ICON_WIDTH, ICON_HEIGHT);
painter->drawPixmap(clockRect, QPixmap(CLOCK_PATH));
//Draw updated
- QRect updatedRect = QRect(clockRect.right() + 10, clockRect.top(), itemRect.width(),
- itemRect.height());
+ QRect updatedRect = QRect(clockRect.right() + 10, clockRect.top(), itemRect.width()
+ - (itemRect.left() + CLOCK_X), itemRect.height());
QString updated = index.data(FriendListItem::Updated).toString();
QPen grayPen(QColor::fromRgb(152,152,152), 1, Qt::SolidLine);
painter->setPen(grayPen);
painter->setFont(QFont( "Nokia Sans", 13, QFont::Normal));
- painter->drawText(updatedRect, Qt::AlignLeft | Qt::AlignTop, updated, &updatedRect);
+ painter->drawText(updatedRect, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, updated,
+ &updatedRect);
//Draw envelope
- QRect envelopeRect = QRect(itemRect.left() + ENVELOPE_LEFT, itemRect.top() + ENVELOPE_TOP,
+ QRect envelopeRect = QRect(itemRect.left() + ENVELOPE_X, itemRect.top() + ENVELOPE_Y,
ICON_WIDTH, ICON_HEIGHT);
painter->drawPixmap(envelopeRect, QPixmap(ENVELOPE_PATH));
//Draw status text
- QRect statusTextRect = QRect(envelopeRect.right() + 10, envelopeRect.top(), itemRect.width(),
+ QRect statusTextRect = QRect(envelopeRect.right() + 10, envelopeRect.top(),
+ itemRect.width() -(itemRect.left() + ENVELOPE_X) ,
itemRect.height());
QString statusText = index.data(FriendListItem::StatusText).toString();
- painter->drawText(statusTextRect, Qt::AlignLeft | Qt::AlignTop, statusText, &statusTextRect);
+ painter->drawText(statusTextRect, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, statusText,
+ &statusTextRect);
//Draw compass
- QRect compassRect = QRect(itemRect.left() + COMPASS_LEFT, itemRect.top() + COMPASS_TOP,
- ICON_WIDTH, ICON_HEIGHT);
+ QRect compassRect = QRect(itemRect.left() + COMPASS_X, itemRect.top() + COMPASS_Y,
+ ICON_WIDTH - (itemRect.left() + COMPASS_X), ICON_HEIGHT);
painter->drawPixmap(compassRect, QPixmap(COMPASS_PATH));
//Draw location
QRect locationRect = QRect(compassRect.right() + 10, compassRect.top(), itemRect.width(),
itemRect.height());
QString location = index.data(FriendListItem::Location).toString();
- painter->drawText(locationRect, Qt::AlignLeft | Qt::AlignTop, location, &locationRect);
+ painter->drawText(locationRect, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, location,
+ &locationRect);
}
QSize FriendListItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
- return QSize(BACKGROUND_WIDTH, BACKGROUND_HEIGHT);
+ qDebug() << __PRETTY_FUNCTION__;
+
+ if(option.state & QStyle::State_Selected) {
+ return QSize(BACKGROUND_TOP_WIDTH, BACKGROUND_TOP_HEIGHT + BACKGROUND_MIDDLE_HEIGHT +
+ BACKGROUND_BOTTOM_HEIGHT);
+ }
+ else {
+ return QSize(BACKGROUND_TOP_WIDTH, BACKGROUND_TOP_HEIGHT + BACKGROUND_MIDDLE_HEIGHT +
+ BACKGROUND_BOTTOM_HEIGHT);
+ }
}