Tuning the look of the location search panel with empty search history
[situare] / src / ui / locationsearchpanel.cpp
index 648a202..beb9b0c 100644 (file)
@@ -56,8 +56,8 @@ LocationSearchPanel::LocationSearchPanel(QWidget *parent)
                                      PANEL_MARGIN_RIGHT, PANEL_MARGIN_BOTTOM);
 
     m_resultsLabel = new QLabel(this);
+    m_resultsLabel->hide();
     headerLayout->addWidget(m_resultsLabel, 0, Qt::AlignCenter);
-    setHeaderText(0);
 
     // --- SEARCH HISTORY LIST VIEW ---
     m_searchHistoryListView = new SearchHistoryListView(this);
@@ -76,7 +76,7 @@ LocationSearchPanel::LocationSearchPanel(QWidget *parent)
             SIGNAL(locationItemClicked(const GeoCoordinate&, const GeoCoordinate&)));
 
     connect(m_locationListView, SIGNAL(listItemSelectionChanged()),
-            this, SLOT(setRouteButtonDisabled()));
+            this, SLOT(onListItemSelectionChanged()));
 
     QVBoxLayout *resultsListViewLayout = new QVBoxLayout;
     resultsListViewLayout->setContentsMargins(PANEL_MARGIN_LEFT, PANEL_MARGIN_TOP,
@@ -92,13 +92,21 @@ LocationSearchPanel::LocationSearchPanel(QWidget *parent)
     const int MARGIN_LEFT = 0;
     panelLayout->setContentsMargins(MARGIN_LEFT, PANEL_MARGIN_TOP,
                                     PANEL_MARGIN_RIGHT, PANEL_MARGIN_BOTTOM);
+    m_noSearchLabel = new QLabel();
+    m_noSearchLabel->setText("No search history");
+    m_noSearchLabel->setAlignment(Qt::AlignCenter);
+
+    QPalette m_noSearchPalette = palette();
+    m_noSearchPalette.setColor(QPalette::Foreground, Qt::white);
+    m_noSearchLabel->setPalette(m_noSearchPalette);
 
     panelLayout->addWidget(resultsHeaderWidget);
+    panelLayout->addWidget(m_noSearchLabel, Qt::AlignCenter);
     panelLayout->addLayout(resultsListViewLayout);
 
     // --- CONTEXT BUTTONS ---
-    m_routeButton = new ImageButton(":res/images/compass.png", "", "", this);
-    m_routeButton->setDisabled(true);
+    m_routeButton = new ImageButton(":res/images/route_to_location.png",
+                                    ":res/images/route_to_location_s.png", "", this);
     connect(m_routeButton, SIGNAL(clicked()),
             this, SLOT(routeToSelectedLocation()));
 
@@ -108,20 +116,20 @@ LocationSearchPanel::LocationSearchPanel(QWidget *parent)
     connect(searchLocationButton, SIGNAL(clicked()),
             this, SIGNAL(requestSearchLocation()));
 
-    m_clearLocationListButton = new ImageButton(":/res/images/clear_btn.png",
-                                                ":/res/images/clear_btn_s.png",
-                                                ":/res/images/clear_btn_d.png", this);
+    m_clearLocationListButton = new ImageButton(":/res/images/back.png",
+                                                ":/res/images/back_s.png",
+                                                ":/res/images/back_d.png", this);
     m_clearLocationListButton->setDisabled(true);
 
     connect(m_clearLocationListButton, SIGNAL(clicked()),
             this, SLOT(showSearchHistoryListView()));
 
-    m_contextButtonLayout->addWidget(m_routeButton);
-    m_contextButtonLayout->addWidget(searchLocationButton);
-    m_contextButtonLayout->addWidget(m_clearLocationListButton);
+    m_itemButtonsLayout->addWidget(m_routeButton);
+    m_genericButtonsLayout->addWidget(searchLocationButton);
+    m_genericButtonsLayout->addWidget(m_clearLocationListButton);
 
+    showEmptyPanel(true);
     readSettings();
-    showSearchHistoryListView();
 }
 
 LocationSearchPanel::~LocationSearchPanel()
@@ -146,29 +154,12 @@ LocationSearchPanel::~LocationSearchPanel()
     settings.setValue(SETTINGS_SEARCH_HISTORY, searchHistories);
 }
 
-void LocationSearchPanel::prependSearchHistory(QString searchString, QDateTime dateTime)
-{
-    qDebug() << __PRETTY_FUNCTION__;
-
-    const int SEARCH_HISTORY_LIMIT = 10;
-    static int counter = 0;
-
-    if (m_searchHistoryListView->count() >= SEARCH_HISTORY_LIMIT)
-        m_searchHistoryListView->removeLastItem();
-
-    SearchHistoryListItem *item = new SearchHistoryListItem();
-    item->setSearchHistoryData(searchString, dateTime);
-    m_searchHistoryListView->prependListItem(QString::number(counter++), item);
-}
-
 void LocationSearchPanel::clearListsSelections()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
     m_locationListView->clearItemSelection();
     m_searchHistoryListView->clearItemSelection();
-
-    setRouteButtonDisabled();
 }
 
 void LocationSearchPanel::hideEvent(QHideEvent *event)
@@ -193,17 +184,22 @@ void LocationSearchPanel::populateLocationListView(const QList<Location> &locati
         m_locationListView->addListItem(QString::number(i), item);
     }
 
-    const int FIRST_LOCATION_ITEM_INDEX = 0;
-    const int ONE_LOCATION_ITEM = 1;
+    m_locationListView->scrollToTop();
+}
 
-    if (locations.size() == ONE_LOCATION_ITEM) {
-        ListItem *item = m_locationListView->listItemAt(FIRST_LOCATION_ITEM_INDEX);
+void LocationSearchPanel::prependSearchHistory(QString searchString, QDateTime dateTime)
+{
+    qDebug() << __PRETTY_FUNCTION__;
 
-        if (item)
-            m_locationListView->setSelectedItem(item);
-    }
+    const int SEARCH_HISTORY_LIMIT = 10;
+    static int counter = 0;
 
-    m_locationListView->scrollToTop();
+    if (m_searchHistoryListView->count() >= SEARCH_HISTORY_LIMIT)
+        m_searchHistoryListView->removeLastItem();
+
+    SearchHistoryListItem *item = new SearchHistoryListItem();
+    item->setSearchHistoryData(searchString, dateTime);
+    m_searchHistoryListView->prependListItem(QString::number(counter++), item);
 }
 
 void LocationSearchPanel::readSettings()
@@ -215,6 +211,9 @@ void LocationSearchPanel::readSettings()
     QSettings settings(DIRECTORY_NAME, FILE_NAME);
     QList<QVariant> searchHistories = settings.value(SETTINGS_SEARCH_HISTORY).toList();
 
+    if (searchHistories.count() > 0)
+            showSearchHistoryListView();
+
     //Read from end to begin so items are prepended in correct order
     for (int i = searchHistories.count() - 1; i >= 0; --i) {
         QList<QVariant> searchHistory = searchHistories.at(i).toList();
@@ -243,11 +242,17 @@ void LocationSearchPanel::setHeaderText(int count)
     m_resultsLabel->setText(tr("Search results: %1").arg(count));
 }
 
-void LocationSearchPanel::setRouteButtonDisabled()
+void LocationSearchPanel::showEmptyPanel(bool show)
 {
-    qDebug() << __PRETTY_FUNCTION__;
-
-    m_routeButton->setDisabled(m_locationListView->selectedItems().isEmpty());
+    if (show) {
+        m_noSearchLabel->show();
+        m_searchHistoryListView->hide();
+        m_locationListView->hide();
+    }
+    else {
+        m_noSearchLabel->hide();
+        m_resultsLabel->show();
+    }
 }
 
 void LocationSearchPanel::showLocationListView(int locationItemsCount)
@@ -259,6 +264,7 @@ void LocationSearchPanel::showLocationListView(int locationItemsCount)
     setHeaderText(locationItemsCount);
     m_clearLocationListButton->setEnabled(true);
     m_locationListView->show();
+    showEmptyPanel(false);
 }
 
 void LocationSearchPanel::showSearchHistoryListView()