From: Jussi Laitinen Date: Thu, 29 Apr 2010 07:54:28 +0000 (+0300) Subject: Modified FriendListItem constructor. X-Git-Tag: v0.3~11^2~14 X-Git-Url: https://vcs.maemo.org/git/?p=situare;a=commitdiff_plain;h=99689be83e3005d8e1f97add6b0cbb435b3343a7 Modified FriendListItem constructor. --- diff --git a/images.qrc b/images.qrc index 25da8f4..8218c07 100644 --- a/images.qrc +++ b/images.qrc @@ -16,5 +16,6 @@ res/images/list_item_middle.png res/images/list_item_top.png res/images/list_item.png + res/images/dummy_image.png diff --git a/src/ui/friendlistitem.cpp b/src/ui/friendlistitem.cpp index 359683b..7bb7f5c 100644 --- a/src/ui/friendlistitem.cpp +++ b/src/ui/friendlistitem.cpp @@ -37,113 +37,151 @@ #include "friendlistitem.h" #include "user/user.h" -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_X = 75; -const int CLOCK_Y = 53; -const int ENVELOPE_X = 75; -const int ENVELOPE_Y = 77; -const int COMPASS_X = 75; -const int COMPASS_Y = 101; -const int ICON_WIDTH = 24; -const int ICON_HEIGHT = 24; - -const QString BACKGROUND_TOP_PATH = QString(":/res/images/list_item_top.png"); -const QString BACKGROUND_MIDDLE_PATH = QString(":/res/images/list_item_middle.png"); -const QString BACKGROUND_BOTTOM_PATH = QString(":/res/images/list_item_bottom.png"); + +const int ITEM_MIN_WIDTH = 368; +const int ITEM_MAX_WIDTH = 368; +const int ITEM_MIN_HEIGHT = 141; +const int ITEM_MAX_HEIGHT = 240; +const int ICON_MARGIN = 5; + +const QString BACKGROUND_PATH = QString(":/res/images/list_item.png"); const QString CLOCK_PATH = QString(":/res/images/clock.png"); const QString ENVELOPE_PATH = QString(":/res/images/envelope.png"); const QString COMPASS_PATH = QString(":/res/images/compass.png"); +const int MAXIMUM_CHARS = 32; + FriendListItem::FriendListItem(QWidget *parent) : QWidget(parent) , m_expanded(false) { - QGridLayout *layout = new QGridLayout(this); + QVBoxLayout *layout = new QVBoxLayout(this); this->setLayout(layout); - m_childWidget = new QWidget(this); - QPalette palette = m_childWidget->palette(); - palette.setColor(QPalette::Foreground, QColor::fromRgb(152, 152, 152)); - m_childWidget->setPalette(palette); - QFont font = QFont("Nokia Sans", 13, QFont::Normal); - m_childWidget->setFont(font); + QHBoxLayout *topLayout = new QHBoxLayout(this); + topLayout->setMargin(0); + topLayout->setSpacing(0); + + QHBoxLayout *bottomLayout = new QHBoxLayout(this); + bottomLayout->setMargin(0); + bottomLayout->setSpacing(0); + + m_infoWidget = new QWidget(this); QFormLayout *infoLayout = new QFormLayout(this); - m_childWidget->setLayout(infoLayout); + infoLayout->setMargin(0); + infoLayout->setSpacing(0); + m_infoWidget->setLayout(infoLayout); QLabel *clockLabel = new QLabel(this); clockLabel->setPixmap(QPixmap(CLOCK_PATH)); - clockLabel->setMinimumSize(ICON_WIDTH, ICON_HEIGHT); + clockLabel->setContentsMargins(0, 0, ICON_MARGIN, 0); QLabel *envelopeLabel = new QLabel(this); envelopeLabel->setPixmap(QPixmap(ENVELOPE_PATH)); - envelopeLabel->setMinimumSize(ICON_WIDTH, ICON_HEIGHT); + envelopeLabel->setContentsMargins(0, 0, ICON_MARGIN, 0); QLabel *compassLabel = new QLabel(this); compassLabel->setPixmap(QPixmap(COMPASS_PATH)); - compassLabel->setMinimumSize(ICON_WIDTH, ICON_HEIGHT); + compassLabel->setContentsMargins(0, 0, ICON_MARGIN, 0); m_imageLabel = new QLabel(this); + m_imageLabel->setFixedSize(IMAGE_WIDTH, IMAGE_HEIGHT); m_nameLabel = new QLabel("", this); + m_nameLabel->setFixedHeight(IMAGE_HEIGHT); m_updatedLabel = new QLabel("", this); m_updatedLabel->setWordWrap(true); - m_updatedLabel->setMinimumWidth(ICON_WIDTH); m_statusTextLabel = new QLabel("", this); m_statusTextLabel->setWordWrap(true); - m_statusTextLabel->setMinimumWidth(ICON_WIDTH); m_locationLabel = new QLabel("", this); m_locationLabel->setWordWrap(true); - m_locationLabel->setMinimumWidth(ICON_WIDTH); infoLayout->addRow(clockLabel, m_updatedLabel); infoLayout->addRow(envelopeLabel, m_statusTextLabel); infoLayout->addRow(compassLabel, m_locationLabel); - infoLayout->setLabelAlignment(Qt::AlignTop); - infoLayout->setFormAlignment(Qt::AlignCenter); + topLayout->addWidget(m_imageLabel); + topLayout->addWidget(m_nameLabel); - QPalette childPal = m_childWidget->palette(); - childPal.setColor(QPalette::Background, Qt::red); - m_childWidget->setPalette(childPal); + QLabel *tmp = new QLabel(this); + bottomLayout->addSpacerItem(new QSpacerItem(IMAGE_WIDTH, IMAGE_HEIGHT)); + bottomLayout->addWidget(m_infoWidget, 1); - //m_childWidget->setGeometry(75, 53, 368-75-5, 141-53-5); - - layout->addWidget(m_imageLabel, 0, 0); - layout->addWidget(m_nameLabel, 0, 1); - layout->addWidget(m_childWidget, 1, 1); + layout->addLayout(topLayout, 0); + layout->addLayout(bottomLayout, 1); this->setObjectName("listItem"); + m_infoWidget->setObjectName("infoWidget"); + m_nameLabel->setObjectName("nameLabel"); this->setStyleSheet("#listItem { border-image: url(:/res/images/list_item.png) 20%; " \ - "border-width: 20px 14px 16px 14px; }"); - - this->setMinimumSize(368, 141); + "border-width: 20px 14px 16px 14px; } " \ + "QLabel { font-size: 13pt; color: #989898; }" \ + "#nameLabel { font-size: 18pt; color: #ffffff }"); -// this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + this->setMinimumSize(ITEM_MIN_WIDTH, ITEM_MIN_HEIGHT); + this->setMaximumSize(ITEM_MAX_WIDTH, ITEM_MAX_HEIGHT); } void FriendListItem::setData(const User &user) { + m_user = user; + + shortenTexts(); + m_imageLabel->setPixmap(QPixmap(":/res/images/dummy_Avatar.png")); - m_nameLabel->setText(user.name()); - m_updatedLabel->setText(user.timestamp()); - m_statusTextLabel->setText(user.note()); - m_locationLabel->setText(user.address()); + m_nameLabel->setText(m_shortenedName); + m_updatedLabel->setText(m_shortenedUpdated); + m_statusTextLabel->setText(m_shortenedStatusText); + m_locationLabel->setText(m_shortenedLocation); m_image = user.profileImageUrl().toString(); - QFontMetrics fontMetrics = QFontMetrics(QFont("Nokia Sans", 13, QFont::Normal)); +} - qDebug() << "Status text metrics: " << fontMetrics.boundingRect(user.note()); +void FriendListItem::shortenTexts() +{ + if (m_user.name().length() > MAXIMUM_CHARS) { + m_shortenedName = m_user.name().left(MAXIMUM_CHARS-3).append("..."); + } + else { + m_shortenedName = m_user.name(); + } + if (m_user.timestamp().length() > MAXIMUM_CHARS) { + m_shortenedUpdated = m_user.timestamp().left(MAXIMUM_CHARS-3).append("..."); + } + else { + m_shortenedUpdated = m_user.timestamp(); + } + if (m_user.note().length() > MAXIMUM_CHARS) { + m_shortenedStatusText = m_user.note().left(MAXIMUM_CHARS-3).append("..."); + } + else { + m_shortenedStatusText = m_user.note(); + } + if (m_user.address().length() > MAXIMUM_CHARS) { + m_shortenedLocation = m_user.address().left(MAXIMUM_CHARS-3).append("..."); + } + else { + m_shortenedLocation = m_user.address(); + } +} + +void FriendListItem::toggleHeight() +{ + if (m_expanded) { + m_nameLabel->setText(m_shortenedName); + m_updatedLabel->setText(m_shortenedUpdated); + m_statusTextLabel->setText(m_shortenedStatusText); + m_locationLabel->setText(m_shortenedLocation); + m_expanded = false; + + } + else { + m_nameLabel->setText(m_user.name()); + m_updatedLabel->setText(m_user.timestamp()); + m_statusTextLabel->setText(m_user.note()); + m_locationLabel->setText(m_user.address()); + m_expanded = true; + } } void FriendListItem::mousePressEvent(QMouseEvent *event) @@ -155,94 +193,15 @@ void FriendListItem::mouseReleaseEvent(QMouseEvent *event) { qDebug() << __PRETTY_FUNCTION__; - if (event->pos() == m_mousePosition) { - - emit changeState(); - - if (m_expanded) { - m_expanded = false; - this->setGeometry(0, 0, this->width(), 141); - m_childWidget->setGeometry(75, 53, 368-75-5, 141-53-5); - m_childWidget->updateGeometry(); - - } - else { - m_expanded = true; - this->setGeometry(0, 0, this->width(), 200); - m_childWidget->setGeometry(75, 53, 368-75-5, 250-53-5); - m_childWidget->updateGeometry(); - } - - updateGeometry(); - emit changeState(); - } + if (event->pos() == m_mousePosition) + toggleHeight(); } -QSize FriendListItem::sizeHint() const +void FriendListItem::paintEvent(QPaintEvent *) { - qDebug() << __PRETTY_FUNCTION__ << " " << m_expanded; - - if (m_expanded) - return QSize(this->width(), 250); - else - return QSize(this->width(), 141); -} + QStyleOption option; + option.init(this); -void FriendListItem::paintEvent(QPaintEvent *event) -{ - QStyleOption opt; - opt.init(this); QPainter painter(this); - style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this); - - QRect itemRect = event->rect(); - -// if (m_expanded) -// itemRect = QRect(0, 0, 568, 200); -// else -// itemRect = QRect(0, 0, 568, 141); -// -// //Draw background -// QRect topRect = QRect(itemRect.left(), itemRect.top(), BACKGROUND_TOP_WIDTH, -// BACKGROUND_TOP_HEIGHT); -// painter.drawPixmap(topRect, QPixmap(BACKGROUND_TOP_PATH)); -// qDebug() << "Top rect : " << topRect; -// -// QRect middleRect = QRect(topRect.left(), topRect.bottom() + 1, BACKGROUND_MIDDLE_WIDTH, -// itemRect.height() - BACKGROUND_BOTTOM_HEIGHT - BACKGROUND_TOP_HEIGHT); -// painter.drawPixmap(middleRect, QPixmap(BACKGROUND_MIDDLE_PATH)); -// qDebug() << "Middle rect: " << middleRect; -// -// QRect bottomRect = QRect(topRect.left(), middleRect.bottom() + 1, BACKGROUND_BOTTOM_WIDTH, -// BACKGROUND_BOTTOM_HEIGHT); -// painter.drawPixmap(bottomRect, QPixmap(BACKGROUND_BOTTOM_PATH)); -// qDebug() << "Bottom rect: " << bottomRect; -// -// //Draw image -// QString image = QString(":/res/images/dummy_Avatar.png"); -// QRect imageRect = QRect(itemRect.left() + IMAGE_X, itemRect.top() + IMAGE_Y, -// IMAGE_WIDTH, IMAGE_HEIGHT); -// painter.drawPixmap(imageRect, QPixmap(image)); -// -// //Draw name -// QRect nameRect = QRect(itemRect.left() + IMAGE_WIDTH + 11, itemRect.top() + 15, itemRect.width(), -// itemRect.height()); -// QPen whitePen(QColor(Qt::white), 1, Qt::SolidLine); -// painter.setPen(whitePen); -// painter.setFont(QFont( "Nokia Sans", 18, QFont::Normal)); -// painter.drawText(nameRect, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, m_name, &nameRect); - -// //Draw image -// QString image = QString(":/res/images/dummy_Avatar.png"); -// QRect imageRect = QRect(IMAGE_X, IMAGE_Y, -// IMAGE_WIDTH, IMAGE_HEIGHT); -// painter.drawPixmap(imageRect, QPixmap(image)); -// -// //Draw name -// QRect nameRect = QRect(IMAGE_WIDTH + 11, 15, itemRect.width(), -// 50); -// QPen whitePen(QColor(Qt::white), 1, Qt::SolidLine); -// painter.setPen(whitePen); -// painter.setFont(QFont( "Nokia Sans", 18, QFont::Normal)); -// painter.drawText(nameRect, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, m_name, &nameRect); + style()->drawPrimitive(QStyle::PE_Widget, &option, &painter, this); } diff --git a/src/ui/friendlistitem.h b/src/ui/friendlistitem.h index b356dc5..8a75e0a 100644 --- a/src/ui/friendlistitem.h +++ b/src/ui/friendlistitem.h @@ -51,8 +51,12 @@ protected: ******************************************************************************/ public: enum ListRole { Name, Image, Distance, Updated, StatusText, Location }; +// +// QSize sizeHint() const; - QSize sizeHint() const; +private: + void toggleHeight(); + void shortenTexts(); signals: void changeState(); @@ -67,11 +71,15 @@ private: QLabel *m_locationLabel; QLabel *m_imageLabel; QLabel *m_nameLabel; - QString m_name; + QString m_shortenedName; + QString m_shortenedUpdated; + QString m_shortenedStatusText; + QString m_shortenedLocation; QString m_image; bool m_expanded; QPoint m_mousePosition; - QWidget *m_childWidget; + QWidget *m_infoWidget; + User m_user; }; #endif // FRIENDLISTITEM_H diff --git a/src/ui/friendlistview.cpp b/src/ui/friendlistview.cpp index 8300234..1c3e4d6 100644 --- a/src/ui/friendlistview.cpp +++ b/src/ui/friendlistview.cpp @@ -32,10 +32,6 @@ FriendListView::FriendListView(QWidget *parent) m_friendListLayout->setStretch(0, 0); m_friendListLayout->setSizeConstraint(QLayout::SetFixedSize); - QPalette pal = this->palette(); - pal.setColor(QPalette::Background, Qt::green); - this->setPalette(pal); - this->setLayout(m_friendListLayout); } diff --git a/src/ui/listviewscreen.cpp b/src/ui/listviewscreen.cpp index 6a946de..e5b6045 100644 --- a/src/ui/listviewscreen.cpp +++ b/src/ui/listviewscreen.cpp @@ -41,66 +41,22 @@ ListViewScreen::ListViewScreen(QWidget *parent) : QWidget(parent) { //DEBUG -// FriendListView *friendListView = new FriendListView(this); -// friendListView->setItemDelegate(new FriendListItemDelegate()); - -// FriendListItem *item1 = new FriendListItem(); -// item1->setData(FriendListItem::Name, "Name 1"); -// item1->setData(FriendListItem::Updated, "2 days ago"); -// QString test = QString("Hello Maemo Situare! Hello Maemo Situare! "); -// test.append("Hello Maemo Situare! "); -// test.append("Hello Maemo Situare! "); -// test.append("Hello Maemo Situare! "); -// test.append("Hello Maemo Situare! "); -// item1->setData(FriendListItem::StatusText, test); -// item1->setData(FriendListItem::Location, "Kiviharjunlenkki 1E, 91910 Oulu"); -// item1->setData(FriendListItem::Image, ":/resources/dummy_Avatar.png"); -// FriendListItem *item2 = new FriendListItem(); -// item2->setData(FriendListItem::Name, "Name 2"); -// item2->setData(FriendListItem::Updated, "2 days ago"); -// item2->setData(FriendListItem::StatusText, "Hello Maemo Situare!"); -// item2->setData(FriendListItem::Location, "Kiviharjunlenkki 1E, 91910 Oulu"); -// item2->setData(FriendListItem::Image, ":/resources/dummy_Avatar.png"); -// FriendListItem *item3 = new FriendListItem(); -// item3->setData(FriendListItem::Name, "Name 3"); -// item3->setData(FriendListItem::Updated, "2 days ago"); -// item3->setData(FriendListItem::StatusText, "Hello Maemo Situare!"); -// item3->setData(FriendListItem::Location, "Kiviharjunlenkki 1E, 91910 Oulu"); -// item3->setData(FriendListItem::Image, ":/resources/dummy_Avatar.png"); -// FriendListItem *item4 = new FriendListItem(); -// item4->setData(FriendListItem::Name, "Name 4"); -// item4->setData(FriendListItem::Updated, "2 days ago"); -// item4->setData(FriendListItem::StatusText, "Hello Maemo Situare!"); -// item4->setData(FriendListItem::Location, "Kiviharjunlenkki 1E, 91910 Oulu"); -// item4->setData(FriendListItem::Image, ":/resources/dummy_Avatar.png"); -// FriendListItem *item5 = new FriendListItem(); -// item5->setData(FriendListItem::Name, "Name 5"); -// item5->setData(FriendListItem::Updated, "2 days ago"); -// item5->setData(FriendListItem::StatusText, "Hello Maemo Situare!"); -// item5->setData(FriendListItem::Location, "Kiviharjunlenkki 1E, 91910 Oulu"); -// item5->setData(FriendListItem::Image, ":/resources/dummy_Avatar.png"); -// FriendListItem *item6 = new FriendListItem(); -// item6->setData(FriendListItem::Name, "Name 6"); -// item6->setData(FriendListItem::Updated, "2 days ago"); -// item6->setData(FriendListItem::StatusText, "Hello Maemo Situare!"); -// item6->setData(FriendListItem::Location, "Kiviharjunlenkki 1E, 91910 Oulu"); -// item6->setData(FriendListItem::Image, ":/resources/dummy_Avatar.png"); -// friendListView->addItem(item1); -// friendListView->addItem(item2); -// friendListView->addItem(item3); -// friendListView->addItem(item4); -// friendListView->addItem(item5); -// friendListView->addItem(item6); - FriendListView *friendListView = new FriendListView(this); User user1(QString("Kiviharjunlenkki 1E, 91910 Oulu"), QPointF(25.5, 65), QString("User 1"), - QString("Hello Maemo Situare!"), QUrl("http://static.ak.fbcdn.net/pics/q_silhouette.gif"), QString("2 days ago"), false, QString(), + QString("Hello Maemo Situare!"), QUrl("http://static.ak.fbcdn.net/pics/q_silhouette.gif"), QString("2 days ago" \ + " 2 days ago 2 days ago 2 days ago"), false, QString(), QString(), 12.2); User user2(QString("Kiviharjunlenkki 1E, 91910 Oulu"), QPointF(25.5, 65), QString("User 2"), QString("Hello Maemo Situare! Hello Maemo Situare! Hello Maemo Situare!"), QUrl("http://static.ak.fbcdn.net/pics/q_silhouette.gif"), QString("2 days ago"), false, QString(), QString(), 12.2); + User user3(QString("Kiviharjunlenkki 1E, 91910 Oulu"), QPointF(25.5, 65), QString("User 2"), + QString("Hello Maemo Situare! Hello Maemo Situare! Hello Maemo Situare!" \ + "Hello Maemo Situare! Hello Maemo Situare! Hello Maemo Situare! " \ + "Hello Maemo Situare! Hello Maemo Situare! Hello Maemo Situare! "), + QUrl("http://static.ak.fbcdn.net/pics/q_silhouette.gif"), QString("2 days ago"), false, QString(), + QString(), 12.2); FriendListItem *item1 = new FriendListItem(friendListView); item1->setData(user1); FriendListItem *item2 = new FriendListItem(friendListView); @@ -110,7 +66,7 @@ ListViewScreen::ListViewScreen(QWidget *parent) FriendListItem *item4 = new FriendListItem(friendListView); item4->setData(user2); FriendListItem *item5 = new FriendListItem(friendListView); - item5->setData(user1); + item5->setData(user3); FriendListItem *item6 = new FriendListItem(friendListView); item6->setData(user1); diff --git a/src/user/user.cpp b/src/user/user.cpp index 6bb83f8..e8d6e51 100644 --- a/src/user/user.cpp +++ b/src/user/user.cpp @@ -21,6 +21,10 @@ #include "user.h" +User::User() +{ +} + User::User(QString address, QPointF coordinates, QString name, QString note, QUrl imageUrl, QString timestamp, bool type, QString userId, QString units, double value) : m_address(address) diff --git a/src/user/user.h b/src/user/user.h index 968003a..07d8ecd 100644 --- a/src/user/user.h +++ b/src/user/user.h @@ -36,6 +36,8 @@ class User { public: + User(); + /** * @brief Default constructor, initializes member data *