Fixed list view selection to work as expected. Selection is cleared
[situare] / src / ui / friendlistpanel.cpp
index 4f8d230..bc9d87c 100644 (file)
@@ -63,6 +63,7 @@ FriendListPanel::FriendListPanel(QWidget *parent)
     m_friendListHeaderWidget->setAutoFillBackground(true);
 
     m_routeButton = new QPushButton(tr("Route to friend"));
+    m_routeButton->setDisabled(true);
 
     QPalette labelPalette = m_friendListHeaderWidget->palette();
     labelPalette.setColor(QPalette::Background, Qt::black);
@@ -79,7 +80,8 @@ FriendListPanel::FriendListPanel(QWidget *parent)
     m_friendListView->setItemDelegate(new FriendListItemDelegate(this));
 
     QVBoxLayout *listViewLayout = new QVBoxLayout;
-    listViewLayout->setContentsMargins(PANEL_MARGIN_LEFT, 0, PANEL_MARGIN_RIGHT, 0);
+    listViewLayout->setContentsMargins(PANEL_MARGIN_LEFT, PANEL_MARGIN_TOP,
+                                       PANEL_MARGIN_RIGHT, PANEL_MARGIN_BOTTOM);
     listViewLayout->addWidget(m_friendListView);
 
     friendListPanelLayout->addWidget(m_routeButton);
@@ -95,6 +97,9 @@ FriendListPanel::FriendListPanel(QWidget *parent)
     connect(m_routeButton, SIGNAL(clicked()),
             this, SLOT(routeToSelectedFriend()));
 
+    connect(m_friendListView, SIGNAL(clicked(QModelIndex)),
+            this, SLOT(setRouteButtonDisabled()));
+
     /// @todo remove old filterLayout when new panel are merged
 
     //////////////////////////////////////////////////////////////////////////
@@ -219,6 +224,8 @@ void FriendListPanel::hideEvent(QHideEvent *event)
     QWidget::hideEvent(event);
     updateKeyboardGrabbing();
     clearFiltering();
+
+    m_friendListView->clearSelection();
 }
 
 void FriendListPanel::routeToSelectedFriend()
@@ -252,6 +259,13 @@ void FriendListPanel::updateKeyboardGrabbing()
     }
 }
 
+void FriendListPanel::setRouteButtonDisabled()
+{
+    qDebug() << __PRETTY_FUNCTION__;
+
+    m_routeButton->setDisabled(m_friendListView->selectedItems().isEmpty());
+}
+
 void FriendListPanel::showEvent(QShowEvent *event)
 {
     qDebug() << __PRETTY_FUNCTION__;