summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2010-05-23 12:10:55 (GMT)
committerKevin Smith <git@kismith.co.uk>2010-05-23 19:05:31 (GMT)
commit391f5f49b76a847113e1e27013a5d6027070bbd0 (patch)
treea3fde8ecee56ac9ba92c78de51906e177a958d17 /Swift/QtUI/QtRosterHeader.cpp
parent3dbd488df47475a6164345506a53d41cbc04d780 (diff)
downloadswift-391f5f49b76a847113e1e27013a5d6027070bbd0.zip
swift-391f5f49b76a847113e1e27013a5d6027070bbd0.tar.bz2
Start creating a prettier roster header.
Diffstat (limited to 'Swift/QtUI/QtRosterHeader.cpp')
-rw-r--r--Swift/QtUI/QtRosterHeader.cpp174
1 files changed, 83 insertions, 91 deletions
diff --git a/Swift/QtUI/QtRosterHeader.cpp b/Swift/QtUI/QtRosterHeader.cpp
index 88fbf7b..3ab12dd 100644
--- a/Swift/QtUI/QtRosterHeader.cpp
+++ b/Swift/QtUI/QtRosterHeader.cpp
@@ -17,84 +17,68 @@
namespace Swift {
QtRosterHeader::QtRosterHeader(QWidget* parent) : QWidget(parent) {
- QVBoxLayout* vLayout = new QVBoxLayout();
- vLayout->setSpacing(0);
- vLayout->setContentsMargins(0,0,0,0);
- setLayout(vLayout);
+ QHBoxLayout* topLayout = new QHBoxLayout();
+ topLayout->setSpacing(0);
+ topLayout->setContentsMargins(0,0,0,0);
+ setLayout(topLayout);
+ setMinimumHeight(64);
+ setMaximumHeight(64);
- toolBar_ = new QToolBar(this);
- vLayout->addWidget(toolBar_);
+ avatarLabel_ = new QLabel(this);
+ avatarLabel_->setMinimumSize(64, 64);
+ avatarLabel_->setMaximumSize(64, 64);
+ setAvatar(":/icons/avatar.png");
+ avatarLabel_->setScaledContents(true);
+ topLayout->addWidget(avatarLabel_);
- statusWidget_ = new QtStatusWidget(this);
- toolBar_->addWidget(statusWidget_);
- statusWidget_->setMaximumWidth(60);
- connect(statusWidget_, SIGNAL(onChangeStatusRequest(StatusShow::Type)), this, SLOT(handleChangeStatusRequest(StatusShow::Type)));
+ QVBoxLayout* rightLayout = new QVBoxLayout();
+ rightLayout->setSpacing(4);
+ rightLayout->setContentsMargins(4,4,4,4);
+ topLayout->addLayout(rightLayout);
nameLabel_ = new QLabel(this);
setName("Me");
- toolBar_->addWidget(nameLabel_);
- //nameLabel_->setMaximumWidth(width() - 5 - statusWidget_->width());
-
- expandedLayout_ = new QHBoxLayout();
- expandedLayout_->setContentsMargins(0,0,0,0);
- expandedLayout_->setSpacing(0);
-
- avatarLabel_ = new QLabel(this);
- setAvatar(":/icons/avatar.png");
- expandedLayout_->addWidget(avatarLabel_);
-
- statusEdit_ = new QtTextEdit(this);
- expandedLayout_->addWidget(statusEdit_);
- statusEdit_->resize(statusEdit_->width(), 64);
- statusEdit_->setAcceptRichText(false);
- statusEdit_->setReadOnly(false);
- setStatusText("");
-
- vLayout->addLayout(expandedLayout_);
- expanded_ = false;
- avatarLabel_->hide();
- statusEdit_->hide();
- connect(statusEdit_, SIGNAL(returnPressed()), this, SLOT(emitStatus()));
-
- setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed));
+ rightLayout->addWidget(nameLabel_);
+
+
+ statusWidget_ = new QtStatusWidget(this);
+ connect(statusWidget_, SIGNAL(onChangeStatusRequest(StatusShow::Type, const QString&)), this, SLOT(handleChangeStatusRequest(StatusShow::Type, const QString&)));
+ rightLayout->addWidget(statusWidget_);
+ show();
+ //statusWidget_->setMaximumWidth(60);
+
+ // statusEdit_ = new QtTextEdit(this);
+ // expandedLayout_->addWidget(statusEdit_);
+ // statusEdit_->resize(statusEdit_->width(), 64);
+ // statusEdit_->setAcceptRichText(false);
+ // statusEdit_->setReadOnly(false);
+ // setStatusText("");
+ // connect(statusEdit_, SIGNAL(returnPressed()), this, SLOT(emitStatus()));
+
+ //setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed));
}
-void QtRosterHeader::mousePressEvent(QMouseEvent* event) {
- if (nameLabel_->underMouse() || (toolBar_->underMouse() && !statusWidget_->underMouse())) {
- toggleExpanded();
- event->accept();
- } else {
- event->ignore();
- }
+// void QtRosterHeader::mousePressEvent(QMouseEvent* event) {
+// if (nameLabel_->underMouse() || (toolBar_->underMouse() && !statusWidget_->underMouse())) {
+// toggleExpanded();
+// event->accept();
+// } else {
+// event->ignore();
+// }
-}
+// }
-void QtRosterHeader::toggleExpanded() {
- expanded_ = !expanded_;
- if (expanded_) {
- expandedLayout_->setContentsMargins(5,5,5,5);
- expandedLayout_->setSpacing(11);
- avatarLabel_->show();
- statusEdit_->show();
- } else {
- expandedLayout_->setContentsMargins(0,0,0,0);
- expandedLayout_->setSpacing(0);
- avatarLabel_->hide();
- statusEdit_->hide();
- }
-}
-void QtRosterHeader::handleChangeStatusRequest(StatusShow::Type type) {
- Q_UNUSED(type);
- emitStatus();
+void QtRosterHeader::handleChangeStatusRequest(StatusShow::Type type, const QString& text) {
+ emit onChangeStatusRequest(type, text);
}
-void QtRosterHeader::emitStatus() {
- emit onChangeStatusRequest(statusWidget_->getSelectedStatusShow(), statusEdit_->toPlainText());
-}
+//void QtRosterHeader::emitStatus() {
+// emit onChangeStatusRequest(statusWidget_->getSelectedStatusShow(), statusEdit_->toPlainText());
+//}
void QtRosterHeader::setStatusText(const QString& statusMessage) {
- statusEdit_->setText(statusMessage);
+ statusWidget_->setStatusText(statusMessage);
}
void QtRosterHeader::setStatusType(StatusShow::Type type) {
@@ -103,40 +87,48 @@ void QtRosterHeader::setStatusType(StatusShow::Type type) {
void QtRosterHeader::setName(const QString& name) {
name_ = name;
- resizeNameLabel();
-}
-
-void QtRosterHeader::resizeNameLabel() {
QString escapedName = name_;
escapedName.replace("<","&lt;");
- nameLabel_->setText("<b>" + escapedName + "</b>");
- return;
- //FIXME: Make this not an infinite loop, so it can be continued.
-
- int reductionCount = 0;
- while (nameLabel_->sizeHint().width() + statusWidget_->width() + 30 > width()) {
- //qDebug() << nameLabel_->sizeHint().width() << " " << statusWidget_->width() << " " << width();
- reductionCount++;
- QString reducedName = name_;
- reducedName.remove(name_.length() - reductionCount, reductionCount);
- reducedName.replace("<","&lt;");
- nameLabel_->setText("<b>" + reducedName + + "...</b>");
- // qDebug() << "Shrunk " << escapedName << " down to " << reducedName;
- }
- nameLabel_->setToolTip(name_);
+ nameLabel_->setText("<b>" + escapedName + "</b>");
+// resizeNameLabel();
}
-void QtRosterHeader::resizeEvent(QResizeEvent* event) {
- QWidget::resizeEvent(event);
- resizeNameLabel();
-}
+// void QtRosterHeader::resizeNameLabel() {
+// QString escapedName = name_;
+// escapedName.replace("<","&lt;");
+// nameLabel_->setText("<b>" + escapedName + "</b>");
+// return;
+// //FIXME: Make this not an infinite loop, so it can be continued.
+
+// int reductionCount = 0;
+// while (nameLabel_->sizeHint().width() + statusWidget_->width() + 30 > width()) {
+// //qDebug() << nameLabel_->sizeHint().width() << " " << statusWidget_->width() << " " << width();
+// reductionCount++;
+// QString reducedName = name_;
+// reducedName.remove(name_.length() - reductionCount, reductionCount);
+// reducedName.replace("<","&lt;");
+// nameLabel_->setText("<b>" + reducedName + + "...</b>");
+// // qDebug() << "Shrunk " << escapedName << " down to " << reducedName;
+// }
+// nameLabel_->setToolTip(name_);
+// }
+
+//void QtRosterHeader::resizeEvent(QResizeEvent* event) {
+// QWidget::resizeEvent(event);
+// resizeNameLabel();
+//}
void QtRosterHeader::setAvatar(const QString& path) {
- avatarLabel_->setPixmap(QIcon(path).pixmap(64, 64));
+ QIcon avatar(path);
+ if (avatar.isNull()) {
+ qDebug() << "Setting null avatar";
+ avatar = QIcon(":/icons/avatar.png");
+ }
+ avatarLabel_->setPixmap(avatar.pixmap(64, 64));
}
-QSize QtRosterHeader::sizeHint() const {
- return minimumSizeHint();
-}
+//QSize QtRosterHeader::sizeHint() const {
+// return minimumSizeHint();
+//}
}