Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Unified Diff: ui/app_list/views/search_result_tile_item_list_view.cc

Issue 2949413002: Show separator in SearchResultTileItemListView (Closed)
Patch Set: Remove SearchResultSeparator Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/app_list/views/search_result_tile_item_list_view.cc
diff --git a/ui/app_list/views/search_result_tile_item_list_view.cc b/ui/app_list/views/search_result_tile_item_list_view.cc
index 446d70041c6298ad5d511d61838ac3ecd9143691..344db2a3a14e91c10ea7754e0be3f1e0760bab52 100644
--- a/ui/app_list/views/search_result_tile_item_list_view.cc
+++ b/ui/app_list/views/search_result_tile_item_list_view.cc
@@ -15,6 +15,7 @@
#include "ui/gfx/geometry/insets.h"
#include "ui/views/background.h"
#include "ui/views/border.h"
+#include "ui/views/controls/separator.h"
#include "ui/views/controls/textfield/textfield.h"
#include "ui/views/layout/box_layout.h"
@@ -27,9 +28,14 @@ constexpr int kBetweenTileSpacing = 2;
constexpr int kTopBottomPadding = 8;
// Layout constants used when fullscreen app list feature is enabled.
+constexpr size_t kMaxNumSearchResultTiles = 6;
constexpr int kItemListVerticalSpacing = 16;
constexpr int kItemListHorizontalSpacing = 12;
constexpr int kBetweenItemSpacing = 8;
+constexpr int kSeparatorLeftRightPadding = 4;
+constexpr int kSeparatorHeight = 36;
+
+constexpr SkColor kSeparatorColor = SkColorSetARGBMacro(0x1F, 0x00, 0x00, 0x00);
} // namespace
@@ -45,22 +51,36 @@ SearchResultTileItemListView::SearchResultTileItemListView(
views::BoxLayout::kHorizontal,
gfx::Insets(kItemListVerticalSpacing, kItemListHorizontalSpacing),
kBetweenItemSpacing));
+ for (size_t i = 0; i < kMaxNumSearchResultTiles; ++i) {
+ views::Separator* separator = new views::Separator;
+ separator->SetVisible(false);
+ separator->SetBorder(views::CreateEmptyBorder(
+ 0, kSeparatorLeftRightPadding, kSearchTileHeight - kSeparatorHeight,
+ kSeparatorLeftRightPadding));
+ separator->SetColor(kSeparatorColor);
+
+ separator_views_.push_back(separator);
+ AddChildView(separator);
+
+ SearchResultTileItemView* tile_item =
+ new SearchResultTileItemView(this, view_delegate);
+ tile_item->SetParentBackgroundColor(kCardBackgroundColor);
+ tile_views_.push_back(tile_item);
+ AddChildView(tile_item);
+ }
} else {
SetLayoutManager(new views::BoxLayout(
views::BoxLayout::kHorizontal, gfx::Insets(0, kHorizontalBorderSpacing),
kBetweenTileSpacing));
- }
-
- for (size_t i = 0; i < kNumSearchResultTiles; ++i) {
- SearchResultTileItemView* tile_item =
- new SearchResultTileItemView(this, view_delegate);
- tile_item->SetParentBackgroundColor(kCardBackgroundColor);
- if (!is_fullscreen_app_list_enabled_) {
+ for (size_t i = 0; i < kNumSearchResultTiles; ++i) {
+ SearchResultTileItemView* tile_item =
+ new SearchResultTileItemView(this, view_delegate);
+ tile_item->SetParentBackgroundColor(kCardBackgroundColor);
tile_item->SetBorder(
views::CreateEmptyBorder(kTopBottomPadding, 0, kTopBottomPadding, 0));
+ tile_views_.push_back(tile_item);
+ AddChildView(tile_item);
}
- tile_views_.push_back(tile_item);
- AddChildView(tile_item);
}
}
@@ -92,11 +112,42 @@ int SearchResultTileItemListView::GetYSize() {
int SearchResultTileItemListView::DoUpdate() {
std::vector<SearchResult*> display_results =
AppListModel::FilterSearchResultsByDisplayType(
- results(), SearchResult::DISPLAY_TILE, kNumSearchResultTiles);
- for (size_t i = 0; i < kNumSearchResultTiles; ++i) {
- SearchResult* item =
- i < display_results.size() ? display_results[i] : nullptr;
- tile_views_[i]->SetSearchResult(item);
+ results(), SearchResult::DISPLAY_TILE,
+ is_fullscreen_app_list_enabled_ ? kMaxNumSearchResultTiles
+ : kNumSearchResultTiles);
+
+ if (is_fullscreen_app_list_enabled_) {
+ SearchResult::ResultType previous_type = SearchResult::RESULT_UNKNOWN;
+
+ for (size_t i = 0; i < kMaxNumSearchResultTiles; ++i) {
+ if (i >= display_results.size()) {
+ separator_views_[i]->SetVisible(false);
+ tile_views_[i]->SetSearchResult(nullptr);
+ continue;
+ }
+
+ SearchResult* item = display_results[i];
+ tile_views_[i]->SetSearchResult(item);
+
+ if (i > 0 && item->result_type() != previous_type) {
+ // Add a separator to separate search results of different types.
+ // The strategy here is to only add a separator only if current search
+ // result type is different from the previous one. The strategy is
+ // based on the assumption that the search results are already
+ // separated in groups based on their result types.
+ separator_views_[i]->SetVisible(true);
+ } else {
+ separator_views_[i]->SetVisible(false);
+ }
+
+ previous_type = item->result_type();
+ }
+ } else {
+ for (size_t i = 0; i < kNumSearchResultTiles; ++i) {
+ SearchResult* item =
+ i < display_results.size() ? display_results[i] : nullptr;
+ tile_views_[i]->SetSearchResult(item);
+ }
}
set_container_score(
« no previous file with comments | « ui/app_list/views/search_result_tile_item_list_view.h ('k') | ui/app_list/views/search_result_tile_item_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698