diff options
author | Kevin Smith <git@kismith.co.uk> | 2012-11-02 21:30:40 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2012-12-23 11:44:45 (GMT) |
commit | 0a1d592c7bc85e537b8aa8425d8cbce7b48f915a (patch) | |
tree | d97a7eb6f7f2d30bc7806bde5ad6e3fff34b4924 /Swift/QtUI/QtStatusWidget.cpp | |
parent | 8f922ebfe8b1fd8c7d394da0ebeaf02f04c8e48f (diff) | |
download | swift-0a1d592c7bc85e537b8aa8425d8cbce7b48f915a.zip swift-0a1d592c7bc85e537b8aa8425d8cbce7b48f915a.tar.bz2 |
Save recent status messages and allow easy setting.
Change-Id: I5baaa2cf28cbc344bf442c4a74e0c9ff3ba31ea1
Diffstat (limited to 'Swift/QtUI/QtStatusWidget.cpp')
-rw-r--r-- | Swift/QtUI/QtStatusWidget.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/Swift/QtUI/QtStatusWidget.cpp b/Swift/QtUI/QtStatusWidget.cpp index 0e2731a..fc1e764 100644 --- a/Swift/QtUI/QtStatusWidget.cpp +++ b/Swift/QtUI/QtStatusWidget.cpp @@ -23,10 +23,11 @@ #include "Swift/QtUI/QtLineEdit.h" #include "Swift/QtUI/QtSwiftUtil.h" #include <Swift/Controllers/StatusUtil.h> +#include <Swift/Controllers/StatusCache.h> namespace Swift { -QtStatusWidget::QtStatusWidget(QWidget *parent) : QWidget(parent), editCursor_(Qt::IBeamCursor), viewCursor_(Qt::PointingHandCursor) { +QtStatusWidget::QtStatusWidget(StatusCache* statusCache, QWidget *parent) : QWidget(parent), statusCache_(statusCache), editCursor_(Qt::IBeamCursor), viewCursor_(Qt::PointingHandCursor) { isClicking_ = false; connecting_ = false; setMaximumHeight(24); @@ -134,6 +135,14 @@ void QtStatusWidget::generateList() { item->setStatusTip(item->toolTip()); item->setData(Qt::UserRole, QVariant(type)); } + std::vector<StatusCache::PreviousStatus> previousStatuses = statusCache_->getMatches(Q2PSTRING(text), 8); + foreach (StatusCache::PreviousStatus savedStatus, previousStatuses) { + QListWidgetItem* item = new QListWidgetItem(P2QSTRING(savedStatus.first), menu_); + item->setIcon(icons_[savedStatus.second]); + item->setToolTip(item->text()); + item->setStatusTip(item->toolTip()); + item->setData(Qt::UserRole, QVariant(savedStatus.second)); + } foreach (StatusShow::Type type, icons_.keys()) { QListWidgetItem* item = new QListWidgetItem(P2QSTRING(statusShowTypeToFriendlyName(type)), menu_); item->setIcon(icons_[type]); @@ -141,8 +150,20 @@ void QtStatusWidget::generateList() { item->setStatusTip(item->toolTip()); item->setData(Qt::UserRole, QVariant(type)); } + resizeMenu(); } +void QtStatusWidget::resizeMenu() { + int height = menu_->sizeHintForRow(0) * menu_->count(); + int marginLeft; + int marginTop; + int marginRight; + int marginBottom; + menu_->getContentsMargins(&marginLeft, &marginTop, &marginRight, &marginBottom); + height += marginTop + marginBottom; + + menu_->setGeometry(menu_->x(), menu_->y(), menu_->width(), height); +} void QtStatusWidget::handleClicked() { editing_ = true; @@ -197,7 +218,7 @@ void QtStatusWidget::viewMode() { disconnect(qApp, SIGNAL(focusChanged(QWidget*, QWidget*)), this, SLOT(handleApplicationFocusChanged(QWidget*, QWidget*))); editing_ = false; menu_->hide(); - stack_->setCurrentIndex(0); + stack_->setCurrentIndex(0); } void QtStatusWidget::handleEditComplete() { @@ -205,6 +226,7 @@ void QtStatusWidget::handleEditComplete() { statusText_ = newStatusText_; viewMode(); emit onChangeStatusRequest(selectedStatusType_, statusText_); + statusCache_->addRecent(Q2PSTRING(statusText_), selectedStatusType_); } void QtStatusWidget::handleEditCancelled() { |