PreferencesBehavior.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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 "PreferencesBehavior.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. #undef B_TRANSLATION_CONTEXT
  15. #define B_TRANSLATION_CONTEXT "PreferencesBehavior"
  16. const uint32 kToCurrentWorkspace = 'CBcw';
  17. const uint32 kRaiseOnMessageReceived = 'FCmr';
  18. const uint32 kRaiseUserIsTyping = 'FCit';
  19. const uint32 kMarkUnreadWindow = 'MKuw';
  20. const uint32 kDisablePrompt = 'DiPr';
  21. PreferencesBehavior::PreferencesBehavior()
  22. : BView(B_TRANSLATE("Behavior"), B_WILL_DRAW)
  23. {
  24. BBox* incomingBox = new BBox("incoming");
  25. incomingBox->SetLabel(B_TRANSLATE("On incoming" B_UTF8_ELLIPSIS));
  26. fToCurrentWorkspace = new BCheckBox("ToCurrentWorkspace",
  27. B_TRANSLATE("Move window to current workspace"),
  28. new BMessage(kToCurrentWorkspace));
  29. fRaiseOnMessageReceived = new BCheckBox("FocusOnMessageReceived",
  30. B_TRANSLATE("Auto-raise when a message is received"),
  31. new BMessage(kRaiseOnMessageReceived));
  32. fMarkUnreadWindow = new BCheckBox("MarkUnreadWindow",
  33. B_TRANSLATE("Mark unread window chat"),
  34. new BMessage(kMarkUnreadWindow));
  35. BBox* generalBox = new BBox("general");
  36. generalBox->SetLabel(B_TRANSLATE("General"));
  37. fDisableQuitConfirm = new BCheckBox("DisableQuitConfirm",
  38. B_TRANSLATE("Don't ask confirmation at Quit"),
  39. new BMessage(kDisablePrompt));
  40. const float spacing = be_control_look->DefaultItemSpacing();
  41. BLayoutBuilder::Group<>(generalBox, B_VERTICAL)
  42. .SetInsets(spacing, spacing * 2, spacing, spacing)
  43. .Add(fDisableQuitConfirm)
  44. .End();
  45. BLayoutBuilder::Group<>(incomingBox, B_VERTICAL)
  46. .SetInsets(spacing, spacing * 2, spacing, spacing)
  47. .Add(fToCurrentWorkspace)
  48. .Add(fRaiseOnMessageReceived)
  49. .Add(fMarkUnreadWindow)
  50. .End();
  51. BLayoutBuilder::Group<>(this, B_VERTICAL)
  52. .SetInsets(B_USE_DEFAULT_SPACING)
  53. .Add(generalBox)
  54. .Add(incomingBox)
  55. .AddGlue()
  56. .End();
  57. }
  58. void
  59. PreferencesBehavior::AttachedToWindow()
  60. {
  61. fToCurrentWorkspace->SetTarget(this);
  62. fRaiseOnMessageReceived->SetTarget(this);
  63. fMarkUnreadWindow->SetTarget(this);
  64. fDisableQuitConfirm->SetTarget(this);
  65. fToCurrentWorkspace->SetValue(
  66. AppPreferences::Get()->MoveToCurrentWorkspace);
  67. fRaiseOnMessageReceived->SetValue(
  68. AppPreferences::Get()->RaiseOnMessageReceived);
  69. fMarkUnreadWindow->SetValue(
  70. AppPreferences::Get()->MarkUnreadWindow);
  71. fDisableQuitConfirm->SetValue(
  72. AppPreferences::Get()->DisableQuitConfirm);
  73. }
  74. void
  75. PreferencesBehavior::MessageReceived(BMessage* message)
  76. {
  77. switch (message->what) {
  78. case kToCurrentWorkspace:
  79. AppPreferences::Get()->MoveToCurrentWorkspace
  80. = fToCurrentWorkspace->Value();
  81. break;
  82. case kRaiseOnMessageReceived:
  83. AppPreferences::Get()->RaiseOnMessageReceived
  84. = fRaiseOnMessageReceived->Value();
  85. break;
  86. case kMarkUnreadWindow:
  87. AppPreferences::Get()->MarkUnreadWindow
  88. = fMarkUnreadWindow->Value();
  89. break;
  90. case kDisablePrompt:
  91. AppPreferences::Get()->DisableQuitConfirm
  92. = fDisableQuitConfirm->Value();
  93. break;
  94. default:
  95. BView::MessageReceived(message);
  96. }
  97. }