From 6307bc57390303de47879a06c0f6b1d9e242f4a1 Mon Sep 17 00:00:00 2001 From: John Scipione Date: Sun, 10 Dec 2023 00:28:14 -0500 Subject: [PATCH] Tracker: Refactor Default settings to be in one place Create TrackerDefaults.h to share default setting values between TrackerSettings.cpp and SettingsView.cpp instead of duplicating the default value in both places. There is now one source of truth if we ever want to change a setting it won't cause regressions to the Defaults and Revert button state. TODO Does not yet include Disk auto-mount settings. Add HideDotFiles to the defaultable list for Windows settings and make its default false (was true in some places). Fix issues with the Defaults button not enabling Enable type- ahead filtering and Generate image thumbnails as it should. Move default color constants to TrackerDefaults.h, remove TODO. Rename kSpaceBarAlpha to kDefaultSpaceBarAlpha matching rest. Create RGBTOHEX(c) macro to convert rgb_color to a (hex) number for HexScalarValue to set the default space bar colors. Saving these old hex values in the commit message: UsedSpaceColor: 0xc000cb00 FreeSpaceColor: 0xc0ffffff WarningSpaceColor: 0xc0cb0000 Reorder setting to match display order. I've gone way over 80 in TrackerSettings and SettingsViews due to long variable names. Change-Id: Iafd6dfc5e738562d73967558e1f151fc7fed5866 Reviewed-on: https://review.haiku-os.org/c/haiku/+/7196 Tested-by: Commit checker robot Reviewed-by: waddlesplash --- src/kits/tracker/SettingsViews.cpp | 120 ++++++++++++--------------- src/kits/tracker/TrackerDefaults.h | 43 ++++++++++ src/kits/tracker/TrackerSettings.cpp | 67 ++++++++------- 3 files changed, 133 insertions(+), 97 deletions(-) create mode 100644 src/kits/tracker/TrackerDefaults.h diff --git a/src/kits/tracker/SettingsViews.cpp b/src/kits/tracker/SettingsViews.cpp index f4adea1f05..e7f8f1d1cc 100644 --- a/src/kits/tracker/SettingsViews.cpp +++ b/src/kits/tracker/SettingsViews.cpp @@ -54,22 +54,12 @@ All rights reserved. #include "DeskWindow.h" #include "Model.h" #include "Tracker.h" +#include "TrackerDefaults.h" #include "WidgetAttributeText.h" static const uint32 kSpaceBarSwitchColor = 'SBsc'; -//TODO: defaults should be set in one place only (TrackerSettings.cpp) while -// being accessible from here. -// What about adding DefaultValue(), IsDefault() etc... methods to -// xxxValueSetting ? -static const uint8 kSpaceBarAlpha = 192; -static const rgb_color kDefaultUsedSpaceColor = { 0, 203, 0, kSpaceBarAlpha }; -static const rgb_color kDefaultFreeSpaceColor - = { 255, 255, 255, kSpaceBarAlpha }; -static const rgb_color kDefaultWarningSpaceColor - = { 203, 0, 0, kSpaceBarAlpha }; - static void send_bool_notices(uint32 what, const char* name, bool value) @@ -180,11 +170,11 @@ DesktopSettingsView::DesktopSettingsView() fShowDisksIconRadioButton(NULL), fMountVolumesOntoDesktopRadioButton(NULL), fMountSharedVolumesOntoDesktopCheckBox(NULL), - fShowDisksIcon(false), - fMountVolumesOntoDesktop(false), - fMountSharedVolumesOntoDesktop(false), + fShowDisksIcon(kDefaultShowDisksIcon), + fMountVolumesOntoDesktop(kDefaultMountVolumesOntoDesktop), + fMountSharedVolumesOntoDesktop(kDefaultMountSharedVolumesOntoDesktop), fIntegrateNonBootBeOSDesktops(false), - fEjectWhenUnmounting(false) + fEjectWhenUnmounting(kDefaultEjectWhenUnmounting) { fShowDisksIconRadioButton = new BRadioButton("", B_TRANSLATE("Show Disks icon"), @@ -289,8 +279,7 @@ DesktopSettingsView::MessageReceived(BMessage* message) fMountSharedVolumesOntoDesktopCheckBox->Value() == 1); // Send the notification message: - tracker->SendNotices(kVolumesOnDesktopChanged,\ - ¬ificationMessage); + tracker->SendNotices(kVolumesOnDesktopChanged, ¬ificationMessage); // Tell the settings window the contents have changed: Window()->PostMessage(kSettingsContentsModified); @@ -310,10 +299,10 @@ DesktopSettingsView::SetDefaults() // ToDo: Avoid the duplication of the default values. TrackerSettings settings; - settings.SetShowDisksIcon(false); - settings.SetMountVolumesOntoDesktop(true); - settings.SetMountSharedVolumesOntoDesktop(true); - settings.SetEjectWhenUnmounting(true); + settings.SetShowDisksIcon(kDefaultShowDisksIcon); + settings.SetMountVolumesOntoDesktop(kDefaultMountVolumesOntoDesktop); + settings.SetMountSharedVolumesOntoDesktop(kDefaultMountSharedVolumesOntoDesktop); + settings.SetEjectWhenUnmounting(kDefaultEjectWhenUnmounting); ShowCurrentSettings(); _SendNotices(); @@ -325,10 +314,10 @@ DesktopSettingsView::IsDefaultable() const { TrackerSettings settings; - return settings.ShowDisksIcon() != false - || settings.MountVolumesOntoDesktop() != true - || settings.MountSharedVolumesOntoDesktop() != true - || settings.EjectWhenUnmounting() != true; + return settings.ShowDisksIcon() != kDefaultShowDisksIcon + || settings.MountVolumesOntoDesktop() != kDefaultMountVolumesOntoDesktop + || settings.MountSharedVolumesOntoDesktop() != kDefaultMountSharedVolumesOntoDesktop + || settings.EjectWhenUnmounting() != kDefaultEjectWhenUnmounting; } @@ -422,13 +411,14 @@ WindowsSettingsView::WindowsSettingsView() fHideDotFilesCheckBox(NULL), fTypeAheadFilteringCheckBox(NULL), fGenerateImageThumbnailsCheckBox(NULL), - fShowFullPathInTitleBar(false), - fSingleWindowBrowse(false), - fShowNavigator(false), - fTransparentSelection(false), - fSortFolderNamesFirst(false), - fHideDotFiles(false), - fTypeAheadFiltering(false) + fShowFullPathInTitleBar(kDefaultShowFullPathInTitleBar), + fSingleWindowBrowse(kDefaultSingleWindowBrowse), + fShowNavigator(kDefaultShowNavigator), + fTransparentSelection(kDefaultTransparentSelection), + fSortFolderNamesFirst(kDefaultSortFolderNamesFirst), + fHideDotFiles(kDefaultHideDotFiles), + fTypeAheadFiltering(kDefaultTypeAheadFiltering), + fGenerateImageThumbnails(kDefaultGenerateImageThumbnails) { fShowFullPathInTitleBarCheckBox = new BCheckBox("", B_TRANSLATE("Show folder location in title tab"), @@ -569,12 +559,9 @@ WindowsSettingsView::MessageReceived(BMessage* message) { settings.SetHideDotFiles( fHideDotFilesCheckBox->Value() == 1); - - // Make the notification message and send it to the tracker: send_bool_notices(kHideDotFilesChanged, "HideDotFiles", fHideDotFilesCheckBox->Value() == 1); - Window()->PostMessage(kSettingsContentsModified); break; } @@ -617,49 +604,49 @@ WindowsSettingsView::SetDefaults() TrackerSettings settings; - if (settings.ShowFullPathInTitleBar()) { - settings.SetShowFullPathInTitleBar(false); + if (settings.ShowFullPathInTitleBar() != kDefaultShowFullPathInTitleBar) { + settings.SetShowFullPathInTitleBar(kDefaultShowFullPathInTitleBar); tracker->SendNotices(kWindowsShowFullPathChanged); } - if (settings.SingleWindowBrowse()) { - settings.SetSingleWindowBrowse(false); + if (settings.SingleWindowBrowse() != kDefaultSingleWindowBrowse) { + settings.SetSingleWindowBrowse(kDefaultSingleWindowBrowse); tracker->SendNotices(kSingleWindowBrowseChanged); } - if (settings.ShowNavigator()) { - settings.SetShowNavigator(false); + if (settings.ShowNavigator() != kDefaultShowNavigator) { + settings.SetShowNavigator(kDefaultShowNavigator); tracker->SendNotices(kShowNavigatorChanged); } - if (!settings.TransparentSelection()) { - settings.SetTransparentSelection(true); + if (settings.TransparentSelection() != kDefaultTransparentSelection) { + settings.SetTransparentSelection(kDefaultTransparentSelection); send_bool_notices(kTransparentSelectionChanged, - "TransparentSelection", true); + "TransparentSelection", kDefaultTransparentSelection); } - if (!settings.SortFolderNamesFirst()) { - settings.SetSortFolderNamesFirst(true); + if (settings.SortFolderNamesFirst() != kDefaultSortFolderNamesFirst) { + settings.SetSortFolderNamesFirst(kDefaultSortFolderNamesFirst); send_bool_notices(kSortFolderNamesFirstChanged, - "SortFolderNamesFirst", true); + "SortFolderNamesFirst", kDefaultSortFolderNamesFirst); } - if (!settings.HideDotFiles()) { - settings.SetHideDotFiles(true); + if (settings.HideDotFiles() != kDefaultHideDotFiles) { + settings.SetHideDotFiles(kDefaultHideDotFiles); send_bool_notices(kHideDotFilesChanged, - "HideDotFiles", true); + "HideDotFiles", kDefaultHideDotFiles); } - if (settings.TypeAheadFiltering()) { - settings.SetTypeAheadFiltering(false); + if (settings.TypeAheadFiltering() != kDefaultTypeAheadFiltering) { + settings.SetTypeAheadFiltering(kDefaultTypeAheadFiltering); send_bool_notices(kTypeAheadFilteringChanged, - "TypeAheadFiltering", true); + "TypeAheadFiltering", kDefaultTypeAheadFiltering); } - if (settings.GenerateImageThumbnails()) { - settings.SetGenerateImageThumbnails(false); + if (settings.GenerateImageThumbnails() != kDefaultGenerateImageThumbnails) { + settings.SetGenerateImageThumbnails(kDefaultGenerateImageThumbnails); send_bool_notices(kGenerateImageThumbnailsChanged, - "GenerateImageThumbnails", true); + "GenerateImageThumbnails", kDefaultGenerateImageThumbnails); } ShowCurrentSettings(); @@ -671,13 +658,14 @@ WindowsSettingsView::IsDefaultable() const { TrackerSettings settings; - return settings.ShowFullPathInTitleBar() != false - || settings.SingleWindowBrowse() != false - || settings.ShowNavigator() != false - || settings.TransparentSelection() != true - || settings.SortFolderNamesFirst() != true - || settings.TypeAheadFiltering() != false - || settings.GenerateImageThumbnails() != true; + return settings.ShowFullPathInTitleBar() != kDefaultShowFullPathInTitleBar + || settings.SingleWindowBrowse() != kDefaultSingleWindowBrowse + || settings.ShowNavigator() != kDefaultShowNavigator + || settings.TransparentSelection() != kDefaultTransparentSelection + || settings.SortFolderNamesFirst() != kDefaultSortFolderNamesFirst + || settings.HideDotFiles() != kDefaultHideDotFiles + || settings.TypeAheadFiltering() != kDefaultTypeAheadFiltering + || settings.GenerateImageThumbnails() != kDefaultGenerateImageThumbnails; } @@ -895,7 +883,7 @@ SpaceBarSettingsView::MessageReceived(BMessage* message) case kSpaceBarColorChanged: { rgb_color color = fColorControl->ValueAsColor(); - color.alpha = kSpaceBarAlpha; + color.alpha = kDefaultSpaceBarAlpha; // alpha is ignored by BColorControl but is checked // in equalities @@ -939,7 +927,7 @@ SpaceBarSettingsView::SetDefaults() if (!settings.ShowVolumeSpaceBar()) { settings.SetShowVolumeSpaceBar(true); - send_bool_notices(kShowVolumeSpaceBar, "ShowVolumeSpaceBar", true); + send_bool_notices(kShowVolumeSpaceBar, "ShowVolumeSpaceBar", kDefaultShowVolumeSpaceBar); } if (settings.UsedSpaceColor() != kDefaultUsedSpaceColor @@ -960,7 +948,7 @@ SpaceBarSettingsView::IsDefaultable() const { TrackerSettings settings; - return settings.ShowVolumeSpaceBar() != true + return settings.ShowVolumeSpaceBar() != kDefaultShowVolumeSpaceBar || settings.UsedSpaceColor() != kDefaultUsedSpaceColor || settings.FreeSpaceColor() != kDefaultFreeSpaceColor || settings.WarningSpaceColor() != kDefaultWarningSpaceColor; diff --git a/src/kits/tracker/TrackerDefaults.h b/src/kits/tracker/TrackerDefaults.h new file mode 100644 index 0000000000..04ca437f43 --- /dev/null +++ b/src/kits/tracker/TrackerDefaults.h @@ -0,0 +1,43 @@ +/* + * Copyright 2023 Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * John Scipione, jscipione@gmail.com + */ +#ifndef _TRACKER_DEFAULTS_H +#define _TRACKER_DEFAULTS_H + + +static const bool kDefaultShowDisksIcon = false; +static const bool kDefaultMountVolumesOntoDesktop = true; +static const bool kDefaultMountSharedVolumesOntoDesktop = true; +static const bool kDefaultEjectWhenUnmounting = true; + +static const bool kDefaultDesktopFilePanelRoot = true; +static const bool kDefaultShowSelectionWhenInactive = true; + +static const bool kDefaultShowFullPathInTitleBar = false; +static const bool kDefaultSingleWindowBrowse = false; +static const bool kDefaultShowNavigator = false; +static const bool kDefaultTransparentSelection = true; +static const bool kDefaultSortFolderNamesFirst = true; +static const bool kDefaultHideDotFiles = false; +static const bool kDefaultTypeAheadFiltering = false; +static const bool kDefaultGenerateImageThumbnails = true; + +static const int32 kDefaultRecentApplications = 10; +static const int32 kDefaultRecentDocuments = 10; +static const int32 kDefaultRecentFolders = 10; + +static const bool kDefaultShowVolumeSpaceBar = true; +static const uint8 kDefaultSpaceBarAlpha = 192; +static const rgb_color kDefaultUsedSpaceColor = { 0, 203, 0, kDefaultSpaceBarAlpha }; +static const rgb_color kDefaultFreeSpaceColor = { 255, 255, 255, kDefaultSpaceBarAlpha }; +static const rgb_color kDefaultWarningSpaceColor = { 203, 0, 0, kDefaultSpaceBarAlpha }; + +static const bool kDefaultDontMoveFilesToTrash = false; +static const bool kDefaultAskBeforeDeleteFile = true; + + +#endif // _TRACKER_DEFAULTS_H diff --git a/src/kits/tracker/TrackerSettings.cpp b/src/kits/tracker/TrackerSettings.cpp index ce326f3ad6..c1fea317d1 100644 --- a/src/kits/tracker/TrackerSettings.cpp +++ b/src/kits/tracker/TrackerSettings.cpp @@ -38,9 +38,13 @@ All rights reserved. #include #include "Tracker.h" +#include "TrackerDefaults.h" #include "WidgetAttributeText.h" +#define RGBTOHEX(c) ((c.alpha << 24) | (c.red << 16) | (c.green << 8) | (c.blue)) + + class TTrackerState : public Settings { public: static TTrackerState* Get(); @@ -210,54 +214,55 @@ TTrackerState::LoadSettingsIfNeeded() // Set default settings before reading from disk - Add(fShowDisksIcon = new BooleanValueSetting("ShowDisksIcon", false)); + Add(fShowDisksIcon = new BooleanValueSetting("ShowDisksIcon", kDefaultShowDisksIcon)); Add(fMountVolumesOntoDesktop - = new BooleanValueSetting("MountVolumesOntoDesktop", true)); - Add(fMountSharedVolumesOntoDesktop = - new BooleanValueSetting("MountSharedVolumesOntoDesktop", true)); + = new BooleanValueSetting("MountVolumesOntoDesktop", kDefaultMountVolumesOntoDesktop)); + Add(fMountSharedVolumesOntoDesktop = new BooleanValueSetting( + "MountSharedVolumesOntoDesktop", kDefaultMountSharedVolumesOntoDesktop)); Add(fEjectWhenUnmounting - = new BooleanValueSetting("EjectWhenUnmounting", true)); + = new BooleanValueSetting("EjectWhenUnmounting", kDefaultEjectWhenUnmounting)); + + Add(fDesktopFilePanelRoot // deprecated + = new BooleanValueSetting("DesktopFilePanelRoot", kDefaultDesktopFilePanelRoot)); + Add(fShowSelectionWhenInactive // deprecated + = new BooleanValueSetting("ShowSelectionWhenInactive", kDefaultShowSelectionWhenInactive)); - Add(fDesktopFilePanelRoot - = new BooleanValueSetting("DesktopFilePanelRoot", true)); Add(fShowFullPathInTitleBar - = new BooleanValueSetting("ShowFullPathInTitleBar", false)); - Add(fShowSelectionWhenInactive - = new BooleanValueSetting("ShowSelectionWhenInactive", true)); - Add(fTransparentSelection - = new BooleanValueSetting("TransparentSelection", true)); - Add(fSortFolderNamesFirst - = new BooleanValueSetting("SortFolderNamesFirst", true)); - Add(fHideDotFiles = new BooleanValueSetting("HideDotFiles", false)); - Add(fTypeAheadFiltering - = new BooleanValueSetting("TypeAheadFiltering", false)); - Add(fGenerateImageThumbnails - = new BooleanValueSetting("GenerateImageThumbnails", true)); + = new BooleanValueSetting("ShowFullPathInTitleBar", kDefaultShowFullPathInTitleBar)); Add(fSingleWindowBrowse - = new BooleanValueSetting("SingleWindowBrowse", false)); - Add(fShowNavigator = new BooleanValueSetting("ShowNavigator", false)); + = new BooleanValueSetting("SingleWindowBrowse", kDefaultSingleWindowBrowse)); + Add(fShowNavigator = new BooleanValueSetting("ShowNavigator", kDefaultShowNavigator)); + Add(fTransparentSelection + = new BooleanValueSetting("TransparentSelection", kDefaultTransparentSelection)); + Add(fSortFolderNamesFirst + = new BooleanValueSetting("SortFolderNamesFirst", kDefaultSortFolderNamesFirst)); + Add(fHideDotFiles = new BooleanValueSetting("HideDotFiles", kDefaultHideDotFiles)); + Add(fTypeAheadFiltering + = new BooleanValueSetting("TypeAheadFiltering", kDefaultTypeAheadFiltering)); + Add(fGenerateImageThumbnails + = new BooleanValueSetting("GenerateImageThumbnails", kDefaultGenerateImageThumbnails)); Add(fRecentApplicationsCount - = new ScalarValueSetting("RecentApplications", 10, "", "")); + = new ScalarValueSetting("RecentApplications", kDefaultRecentApplications, "", "")); Add(fRecentDocumentsCount - = new ScalarValueSetting("RecentDocuments", 10, "", "")); + = new ScalarValueSetting("RecentDocuments", kDefaultRecentDocuments, "", "")); Add(fRecentFoldersCount - = new ScalarValueSetting("RecentFolders", 10, "", "")); + = new ScalarValueSetting("RecentFolders", kDefaultRecentFolders, "", "")); Add(fShowVolumeSpaceBar - = new BooleanValueSetting("ShowVolumeSpaceBar", true)); - + = new BooleanValueSetting("ShowVolumeSpaceBar", kDefaultShowVolumeSpaceBar)); Add(fUsedSpaceColor - = new HexScalarValueSetting("UsedSpaceColor", 0xc000cb00, "", "")); + = new HexScalarValueSetting("UsedSpaceColor", RGBTOHEX(kDefaultUsedSpaceColor), "", "")); Add(fFreeSpaceColor - = new HexScalarValueSetting("FreeSpaceColor", 0xc0ffffff, "", "")); + = new HexScalarValueSetting("FreeSpaceColor", RGBTOHEX(kDefaultFreeSpaceColor), "", "")); Add(fWarningSpaceColor - = new HexScalarValueSetting("WarningSpaceColor", 0xc0cb0000, "", "")); + = new HexScalarValueSetting("WarningSpaceColor", RGBTOHEX(kDefaultWarningSpaceColor), + "", "")); Add(fDontMoveFilesToTrash - = new BooleanValueSetting("DontMoveFilesToTrash", false)); + = new BooleanValueSetting("DontMoveFilesToTrash", kDefaultDontMoveFilesToTrash)); Add(fAskBeforeDeleteFile - = new BooleanValueSetting("AskBeforeDeleteFile", true)); + = new BooleanValueSetting("AskBeforeDeleteFile", kDefaultAskBeforeDeleteFile)); TryReadingSettings();