PreferencesReplicant.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /*
  2. * Copyright 2010, Oliver Ruiz Dorantes. All rights reserved.
  3. * Copyright 2012, Dario Casalinuovo. All rights reserved.
  4. * Copyright 2021, Jaidyn Levesque. All rights reserved.
  5. * Distributed under the terms of the MIT License.
  6. */
  7. #include "PreferencesReplicant.h"
  8. #include <Box.h>
  9. #include <Catalog.h>
  10. #include <CheckBox.h>
  11. #include <ControlLook.h>
  12. #include <LayoutBuilder.h>
  13. #include "AppPreferences.h"
  14. #include "ReplicantStatusView.h"
  15. #undef B_TRANSLATION_CONTEXT
  16. #define B_TRANSLATION_CONTEXT "PreferencesReplicant"
  17. const uint32 kDisableReplicant = 'DSrp';
  18. const uint32 kPermanentReplicant ='PRpt';
  19. const uint32 kHideDeskbar = 'HCtk';
  20. PreferencesReplicant::PreferencesReplicant()
  21. : BView(B_TRANSLATE("Replicant"), B_WILL_DRAW)
  22. {
  23. BBox* replicantBox = new BBox("replicantBox");
  24. replicantBox->SetLabel(B_TRANSLATE("Deskbar replicant"));
  25. fDisableReplicant = new BCheckBox("DisableReplicant",
  26. B_TRANSLATE("Disable deskbar replicant"),
  27. new BMessage(kDisableReplicant));
  28. fDisableReplicant->SetEnabled(false); // Replicant is broken currently
  29. if (!AppPreferences::Get()->HideDeskbar)
  30. Looper()->PostMessage(new BMessage(kDisableReplicant));
  31. fPermanentReplicant = new BCheckBox("PermanentReplicant",
  32. B_TRANSLATE("Permanent deskbar replicant"), NULL);
  33. fPermanentReplicant->SetEnabled(false);
  34. fHideDeskbar = new BCheckBox("HideDeskbar",
  35. B_TRANSLATE("Hide field in Deskbar"), new BMessage(kHideDeskbar));
  36. fHideDeskbar->SetEnabled(false);
  37. const float spacing = be_control_look->DefaultItemSpacing();
  38. BLayoutBuilder::Group<>(replicantBox, B_VERTICAL)
  39. .SetInsets(spacing, spacing * 2, spacing, spacing)
  40. .Add(fDisableReplicant)
  41. .Add(fPermanentReplicant)
  42. .Add(fHideDeskbar)
  43. .End();
  44. BLayoutBuilder::Group<>(this, B_VERTICAL)
  45. .SetInsets(B_USE_DEFAULT_SPACING)
  46. .Add(replicantBox)
  47. .AddGlue()
  48. .End();
  49. }
  50. void
  51. PreferencesReplicant::AttachedToWindow()
  52. {
  53. fHideDeskbar->SetTarget(this);
  54. fDisableReplicant->SetTarget(this);
  55. fHideDeskbar->SetValue(
  56. AppPreferences::Get()->HideDeskbar);
  57. fDisableReplicant->SetValue(
  58. AppPreferences::Get()->DisableReplicant);
  59. }
  60. void
  61. PreferencesReplicant::MessageReceived(BMessage* message)
  62. {
  63. switch (message->what) {
  64. case kHideDeskbar:
  65. AppPreferences::Get()->HideDeskbar
  66. = fHideDeskbar->Value();
  67. break;
  68. case kDisableReplicant:
  69. AppPreferences::Get()->DisableReplicant
  70. = fDisableReplicant->Value();
  71. if (fDisableReplicant->Value() == true)
  72. ReplicantStatusView::RemoveReplicant();
  73. else
  74. ReplicantStatusView::InstallReplicant();
  75. break;
  76. default:
  77. BView::MessageReceived(message);
  78. }
  79. }