1/* 2 * Copyright 2005-2008, Haiku Inc. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Axel D��rfler, axeld@pinc-software.de 7 */ 8#ifndef WORKSPACES_VIEW_H 9#define WORKSPACES_VIEW_H 10 11 12#include "View.h" 13 14 15class WorkspacesView : public View { 16public: 17 WorkspacesView(BRect frame, BPoint scrollingOffset, 18 const char* name, int32 token, uint32 resize, 19 uint32 flags); 20 virtual ~WorkspacesView(); 21 22 virtual void AttachedToWindow(::Window* window); 23 virtual void DetachedFromWindow(); 24 25 virtual void Draw(DrawingEngine* drawingEngine, 26 const BRegion* effectiveClipping, 27 const BRegion* windowContentClipping, bool deep = false); 28 29 virtual void MouseDown(BMessage* message, BPoint where); 30 virtual void MouseUp(BMessage* message, BPoint where); 31 virtual void MouseMoved(BMessage* message, BPoint where); 32 33 void WindowChanged(::Window* window); 34 void WindowRemoved(::Window* window); 35 36private: 37 void _GetGrid(int32& columns, int32& rows); 38 BRect _ScreenFrame(int32 index); 39 BRect _WorkspaceAt(int32 index); 40 BRect _WorkspaceAt(BPoint where, int32& index); 41 BRect _WindowFrame(const BRect& workspaceFrame, 42 const BRect& screenFrame, const BRect& windowFrame, 43 BPoint windowPosition); 44 45 void _DrawWindow(DrawingEngine* drawingEngine, 46 const BRect& workspaceFrame, const BRect& screenFrame, 47 ::Window* window, BPoint windowPosition, 48 BRegion& backgroundRegion, bool workspaceActive); 49 void _DrawWorkspace(DrawingEngine* drawingEngine, 50 BRegion& redraw, int32 index); 51 52 void _DarkenColor(rgb_color& color) const; 53 void _Invalidate() const; 54 55private: 56 ::Window* fSelectedWindow; 57 int32 fSelectedWorkspace; 58 bool fHasMoved; 59 BPoint fClickPoint; 60 BPoint fLeftTopOffset; 61}; 62 63#endif // WORKSPACES_VIEW_H 64