From a018e0493b306b95cbd72d2befb247a104057832 Mon Sep 17 00:00:00 2001 From: Niels Laute Date: Thu, 2 Dec 2021 13:02:12 +0100 Subject: [PATCH] [PowerRename] Add row highlighting (#14746) * Add Highlight property to ExplorerItem * Change property type * Initialize property * Update MainWindow.xaml * Update MainWindow.xaml * Update MainWindow.xaml * Updated brush Co-authored-by: Stefan Markovic --- .../PowerRenameUILib/ExplorerItem.cpp | 20 ++++++ .../PowerRenameUILib/ExplorerItem.h | 2 + .../PowerRenameUILib/ExplorerItem.idl | 1 + .../PowerRenameUILib/MainWindow.xaml | 68 ++++++++++++------- 4 files changed, 68 insertions(+), 23 deletions(-) diff --git a/src/modules/powerrename/PowerRenameUILib/ExplorerItem.cpp b/src/modules/powerrename/PowerRenameUILib/ExplorerItem.cpp index 2e6b1d7e29..1edb980375 100644 --- a/src/modules/powerrename/PowerRenameUILib/ExplorerItem.cpp +++ b/src/modules/powerrename/PowerRenameUILib/ExplorerItem.cpp @@ -13,6 +13,7 @@ namespace winrt::PowerRenameUILib::implementation m_id{ id }, m_idStr{ std::to_wstring(id) }, m_original{ original }, m_renamed{ renamed }, m_type{ type }, m_depth{ depth }, m_checked{ checked } { m_imagePath = (m_type == static_cast(ExplorerItemType::Folder)) ? folderImagePath : fileImagePath; + m_highlight = m_checked && !m_renamed.empty() ? Windows::UI::Xaml::Visibility::Visible : Windows::UI::Xaml::Visibility::Collapsed; } int32_t ExplorerItem::Id() @@ -50,6 +51,13 @@ namespace winrt::PowerRenameUILib::implementation { m_renamed = value; m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Renamed" }); + + auto visibility = m_checked && !m_renamed.empty() ? Windows::UI::Xaml::Visibility::Visible : Windows::UI::Xaml::Visibility::Collapsed; + if (m_highlight != visibility) + { + m_highlight = visibility; + m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Highlight" }); + } } } @@ -87,9 +95,21 @@ namespace winrt::PowerRenameUILib::implementation { m_checked = value; m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Checked" }); + + auto visibility = m_checked && !m_renamed.empty() ? Windows::UI::Xaml::Visibility::Visible : Windows::UI::Xaml::Visibility::Collapsed; + if (m_highlight != visibility) + { + m_highlight = visibility; + m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Highlight" }); + } } } + winrt::Windows::UI::Xaml::Visibility ExplorerItem::Highlight() + { + return m_highlight; + } + winrt::event_token ExplorerItem::PropertyChanged(winrt::Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler) { return m_propertyChanged.add(handler); diff --git a/src/modules/powerrename/PowerRenameUILib/ExplorerItem.h b/src/modules/powerrename/PowerRenameUILib/ExplorerItem.h index b16f0c6427..7480c228da 100644 --- a/src/modules/powerrename/PowerRenameUILib/ExplorerItem.h +++ b/src/modules/powerrename/PowerRenameUILib/ExplorerItem.h @@ -26,6 +26,7 @@ namespace winrt::PowerRenameUILib::implementation void Type(int32_t value); bool Checked(); void Checked(bool value); + winrt::Windows::UI::Xaml::Visibility Highlight(); Windows::Foundation::Collections::IObservableVector Children(); void Children(Windows::Foundation::Collections::IObservableVector const& value); winrt::event_token PropertyChanged(Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler); @@ -41,6 +42,7 @@ namespace winrt::PowerRenameUILib::implementation winrt::Windows::Foundation::Collections::IObservableVector m_children; int32_t m_type; bool m_checked; + winrt::Windows::UI::Xaml::Visibility m_highlight; winrt::event m_propertyChanged; }; } diff --git a/src/modules/powerrename/PowerRenameUILib/ExplorerItem.idl b/src/modules/powerrename/PowerRenameUILib/ExplorerItem.idl index c83dbf7add..cc13b8280d 100644 --- a/src/modules/powerrename/PowerRenameUILib/ExplorerItem.idl +++ b/src/modules/powerrename/PowerRenameUILib/ExplorerItem.idl @@ -12,5 +12,6 @@ namespace PowerRenameUILib String ImagePath { get; }; Int32 Type; Boolean Checked; + Windows.UI.Xaml.Visibility Highlight { get; }; } } diff --git a/src/modules/powerrename/PowerRenameUILib/MainWindow.xaml b/src/modules/powerrename/PowerRenameUILib/MainWindow.xaml index f85b8c3032..477a858acb 100644 --- a/src/modules/powerrename/PowerRenameUILib/MainWindow.xaml +++ b/src/modules/powerrename/PowerRenameUILib/MainWindow.xaml @@ -77,7 +77,7 @@ - + @@ -87,33 +87,55 @@ - + - - - - - - - + + + + + + + + + + + + + + + +