1 /* 2 * Copyright 2001-2008, Haiku. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Rafael Romo 7 * Stefano Ceccherini (burton666@libero.it) 8 * Thomas Kurschel 9 * Axel Dörfler, axeld@pinc-software.de 10 */ 11 #ifndef SCREEN_WINDOW_H 12 #define SCREEN_WINDOW_H 13 14 15 #include <Window.h> 16 17 #include "ScreenMode.h" 18 19 class BBox; 20 class BPopUpMenu; 21 class BMenuField; 22 23 24 class RefreshWindow; 25 class MonitorView; 26 class ScreenSettings; 27 28 29 class ScreenWindow : public BWindow { 30 public: 31 ScreenWindow(ScreenSettings *settings); 32 virtual ~ScreenWindow(); 33 34 virtual bool QuitRequested(); 35 virtual void MessageReceived(BMessage *message); 36 virtual void WorkspaceActivated(int32 ws, bool state); 37 virtual void ScreenChanged(BRect frame, color_space mode); 38 39 private: 40 void _CheckApplyEnabled(); 41 void _CheckResolutionMenu(); 42 void _CheckColorMenu(); 43 void _CheckRefreshMenu(); 44 45 void _UpdateActiveMode(); 46 void _UpdateRefreshControl(); 47 void _UpdateMonitorView(); 48 void _UpdateControls(); 49 void _UpdateOriginal(); 50 51 void _Apply(); 52 53 status_t _WriteVesaModeFile(const screen_mode& mode) const; 54 status_t _ReadVesaModeFile(screen_mode& mode) const; 55 bool _IsVesa() const { return fIsVesa; } 56 57 void _LayoutControls(uint32 flags); 58 BRect _LayoutMenuFields(uint32 flags, bool sideBySide = false); 59 60 ScreenSettings* fSettings; 61 bool fIsVesa; 62 bool fVesaApplied; 63 64 BBox* fScreenBox; 65 BBox* fControlsBox; 66 67 MonitorView* fMonitorView; 68 BMenuItem* fAllWorkspacesItem; 69 70 BMenuField* fWorkspaceCountField; 71 72 BPopUpMenu* fResolutionMenu; 73 BMenuField* fResolutionField; 74 BPopUpMenu* fColorsMenu; 75 BMenuField* fColorsField; 76 BPopUpMenu* fRefreshMenu; 77 BMenuField* fRefreshField; 78 BMenuItem* fOtherRefresh; 79 80 BPopUpMenu* fCombineMenu; 81 BMenuField* fCombineField; 82 BPopUpMenu* fSwapDisplaysMenu; 83 BMenuField* fSwapDisplaysField; 84 BPopUpMenu* fUseLaptopPanelMenu; 85 BMenuField* fUseLaptopPanelField; 86 BPopUpMenu* fTVStandardMenu; 87 BMenuField* fTVStandardField; 88 89 BButton* fDefaultsButton; 90 BButton* fApplyButton; 91 BButton* fRevertButton; 92 93 BButton* fBackgroundsButton; 94 95 ScreenMode fScreenMode, fTempScreenMode; 96 // screen modes for all workspaces 97 int32 fOriginalWorkspaceCount; 98 screen_mode fActive, fSelected, fOriginal; 99 // screen modes for the current workspace 100 bool fModified; 101 }; 102 103 #endif /* SCREEN_WINDOW_H */ 104