MainWindow.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /*
  2. * Copyright 2021, Jaidyn Levesque. All rights reserved.
  3. * Copyright 2009-2011, Andrea Anzani. All rights reserved.
  4. * Copyright 2009-2011, Pier Luigi Fiorini. All rights reserved.
  5. * Distributed under the terms of the MIT License.
  6. */
  7. #ifndef _MAIN_WINDOW_H
  8. #define _MAIN_WINDOW_H
  9. #include <Window.h>
  10. #include "Server.h"
  11. class BMenu;
  12. class BSplitView;
  13. class BTextView;
  14. class Conversation;
  15. class ConversationItem;
  16. class ConversationListView;
  17. class ConversationView;
  18. class ProtocolSettings;
  19. class RosterItem;
  20. class RosterEditWindow;
  21. class RosterWindow;
  22. class Server;
  23. class StatusView;
  24. class MainWindow: public BWindow {
  25. public:
  26. MainWindow();
  27. void Start();
  28. virtual bool QuitRequested();
  29. virtual void MessageReceived(BMessage* message);
  30. void ImMessage(BMessage* msg);
  31. virtual void WorkspaceActivated(int32 workspace,
  32. bool active);
  33. void SetConversation(Conversation* chat);
  34. void SetConversationView(ConversationView* chatView);
  35. void RemoveConversation(Conversation* chat);
  36. void SortConversation(Conversation* chat);
  37. Server* GetServer() const { return fServer; }
  38. private:
  39. void _InitInterface();
  40. BMenuBar* _CreateMenuBar();
  41. BMenu* _CreateAccountsMenu();
  42. void _RefreshAccountsMenu();
  43. void _ToggleMenuItems();
  44. ConversationItem*
  45. _EnsureConversationItem(BMessage* msg);
  46. bool _PopulateWithAccounts(BMenu* menu,
  47. ProtocolSettings* settings);
  48. void _ReplaceMenu(const char* name, BMenu* newMenu);
  49. Server* fServer;
  50. RosterWindow* fRosterWindow;
  51. RosterEditWindow* fRosterEditWindow;
  52. bool fWorkspaceChanged;
  53. BMenuBar* fMenuBar;
  54. // Left panel, chat list
  55. ConversationListView* fListView;
  56. StatusView* fStatusView;
  57. BSplitView* fSplitView;
  58. // Right panel, chat
  59. BSplitView* fRightView;
  60. Conversation* fConversation;
  61. ConversationView* fChatView;
  62. ConversationView* fBackupChatView;
  63. };
  64. #endif // _MAIN_WINDOW_H