ReplicantMenuItem.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /*
  2. * Copyright 2009-2011, Pier Luigi Fiorini. All rights reserved.
  3. * Copyright 2011-2012, Dario Casalinuovo. All rights reserved.
  4. * Distributed under the terms of the MIT License.
  5. *
  6. * Authors:
  7. * Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
  8. * Dario Casalinuovo
  9. */
  10. #include "ReplicantMenuItem.h"
  11. #include <string.h>
  12. #include <Bitmap.h>
  13. #include <Menu.h>
  14. #include <libinterface/BitmapUtils.h>
  15. #include "AppMessages.h"
  16. #include "AppResources.h"
  17. #include "ReplicantStatusView.h"
  18. #include "Utils.h"
  19. const float kSize = 16;
  20. const float kCircle = 12;
  21. ReplicantMenuItem::ReplicantMenuItem(const char* label, UserStatus status,
  22. bool custom, char shortcut, uint32 modifiers)
  23. :
  24. BitmapMenuItem(label, NULL, NULL, shortcut, modifiers),
  25. fStatus(status),
  26. fCustom(custom)
  27. {
  28. BMessage* msg = new BMessage(APP_REPLICANT_STATUS_SET);
  29. msg->AddInt32("status", fStatus);
  30. SetMessage(msg);
  31. SetIcon();
  32. }
  33. UserStatus
  34. ReplicantMenuItem::Status() const
  35. {
  36. return fStatus;
  37. }
  38. bool
  39. ReplicantMenuItem::IsCustom() const
  40. {
  41. return fCustom;
  42. }
  43. void
  44. ReplicantMenuItem::SetIcon()
  45. {
  46. BResources res = ChatResources();
  47. if (res.InitCheck() != B_OK)
  48. return;
  49. int32 num = 0;
  50. switch (fStatus) {
  51. case STATUS_ONLINE:
  52. num = kOnlineReplicant;
  53. break;
  54. case STATUS_AWAY:
  55. num = kAwayReplicant;
  56. break;
  57. case STATUS_DO_NOT_DISTURB:
  58. num = kBusyReplicant;
  59. break;
  60. case STATUS_CUSTOM_STATUS:
  61. num = kIconReplicant;
  62. break;
  63. case STATUS_INVISIBLE:
  64. case STATUS_OFFLINE:
  65. num = kOfflineReplicant;
  66. break;
  67. default:
  68. break;
  69. }
  70. BBitmap* bitmap = IconFromResources(&res, num, B_MINI_ICON);
  71. SetBitmap(bitmap);
  72. }