xref: /haiku/src/kits/tracker/DesktopPoseView.h (revision 02be5353fd41ea40007a382e13f007eaf6b5a3a0)
1*02be5353SAxel Dörfler /*
2*02be5353SAxel Dörfler Open Tracker License
3*02be5353SAxel Dörfler 
4*02be5353SAxel Dörfler Terms and Conditions
5*02be5353SAxel Dörfler 
6*02be5353SAxel Dörfler Copyright (c) 1991-2000, Be Incorporated. All rights reserved.
7*02be5353SAxel Dörfler 
8*02be5353SAxel Dörfler Permission is hereby granted, free of charge, to any person obtaining a copy of
9*02be5353SAxel Dörfler this software and associated documentation files (the "Software"), to deal in
10*02be5353SAxel Dörfler the Software without restriction, including without limitation the rights to
11*02be5353SAxel Dörfler use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
12*02be5353SAxel Dörfler of the Software, and to permit persons to whom the Software is furnished to do
13*02be5353SAxel Dörfler so, subject to the following conditions:
14*02be5353SAxel Dörfler 
15*02be5353SAxel Dörfler The above copyright notice and this permission notice applies to all licensees
16*02be5353SAxel Dörfler and shall be included in all copies or substantial portions of the Software.
17*02be5353SAxel Dörfler 
18*02be5353SAxel Dörfler THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19*02be5353SAxel Dörfler IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
20*02be5353SAxel Dörfler FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21*02be5353SAxel Dörfler BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22*02be5353SAxel Dörfler AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
23*02be5353SAxel Dörfler WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24*02be5353SAxel Dörfler 
25*02be5353SAxel Dörfler Except as contained in this notice, the name of Be Incorporated shall not be
26*02be5353SAxel Dörfler used in advertising or otherwise to promote the sale, use or other dealings in
27*02be5353SAxel Dörfler this Software without prior written authorization from Be Incorporated.
28*02be5353SAxel Dörfler 
29*02be5353SAxel Dörfler Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks
30*02be5353SAxel Dörfler of Be Incorporated in the United States and other countries. Other brand product
31*02be5353SAxel Dörfler names are registered trademarks or trademarks of their respective holders.
32*02be5353SAxel Dörfler All rights reserved.
33*02be5353SAxel Dörfler */
34*02be5353SAxel Dörfler 
35*02be5353SAxel Dörfler //	DesktopPoseView adds support for displaying integrated desktops
36*02be5353SAxel Dörfler //	from multiple volumes to BPoseView
37*02be5353SAxel Dörfler 
38*02be5353SAxel Dörfler #ifndef	_DESKTOP_POSE_VIEW_H
39*02be5353SAxel Dörfler #define _DESKTOP_POSE_VIEW_H
40*02be5353SAxel Dörfler 
41*02be5353SAxel Dörfler #include "EntryIterator.h"
42*02be5353SAxel Dörfler #include "PoseView.h"
43*02be5353SAxel Dörfler 
44*02be5353SAxel Dörfler namespace BPrivate {
45*02be5353SAxel Dörfler 
46*02be5353SAxel Dörfler class DesktopPoseView : public BPoseView {
47*02be5353SAxel Dörfler 	// overrides BPoseView to add desktop-view specific code
48*02be5353SAxel Dörfler public:
49*02be5353SAxel Dörfler 	DesktopPoseView(Model *, BRect, uint32 viewMode, uint32 resizeMask = B_FOLLOW_ALL);
50*02be5353SAxel Dörfler 
51*02be5353SAxel Dörfler 	static EntryListBase *InitDesktopDirentIterator(BPoseView *, const entry_ref *);
52*02be5353SAxel Dörfler 
53*02be5353SAxel Dörfler 	void ShowVolumes(bool visible, bool showShared);
54*02be5353SAxel Dörfler 	void RemoveNonBootItems();
55*02be5353SAxel Dörfler 	void AddNonBootItems();
56*02be5353SAxel Dörfler 
57*02be5353SAxel Dörfler 	void StartSettingsWatch();
58*02be5353SAxel Dörfler 	void StopSettingsWatch();
59*02be5353SAxel Dörfler 
60*02be5353SAxel Dörfler 	virtual bool AddPosesThreadValid(const entry_ref *) const;
61*02be5353SAxel Dörfler 
62*02be5353SAxel Dörfler protected:
63*02be5353SAxel Dörfler 	virtual EntryListBase *InitDirentIterator(const entry_ref *);
64*02be5353SAxel Dörfler 	virtual bool FSNotification(const BMessage *);
65*02be5353SAxel Dörfler 
66*02be5353SAxel Dörfler 	virtual bool IsDesktopView() const;
67*02be5353SAxel Dörfler 	virtual bool ShouldShowPose(const Model *, const PoseInfo *);
68*02be5353SAxel Dörfler 
69*02be5353SAxel Dörfler 	virtual bool Represents(const node_ref *) const;
70*02be5353SAxel Dörfler 	virtual bool Represents(const entry_ref *) const;
71*02be5353SAxel Dörfler 
72*02be5353SAxel Dörfler 	void AdaptToVolumeChange(BMessage *);
73*02be5353SAxel Dörfler 	void AdaptToDesktopIntegrationChange(BMessage *);
74*02be5353SAxel Dörfler 
75*02be5353SAxel Dörfler 	void UpdateNonBootDesktopPoses(bool integrateNonBootBeOSDesktops);
76*02be5353SAxel Dörfler 
77*02be5353SAxel Dörfler private:
78*02be5353SAxel Dörfler 	typedef BPoseView _inherited;
79*02be5353SAxel Dörfler 
80*02be5353SAxel Dörfler 	friend bool ShouldShowDesktopPose(dev_t device, const Model *,
81*02be5353SAxel Dörfler 		const PoseInfo *);
82*02be5353SAxel Dörfler };
83*02be5353SAxel Dörfler 
84*02be5353SAxel Dörfler class DesktopEntryListCollection : public CachedEntryIteratorList {
85*02be5353SAxel Dörfler public:
86*02be5353SAxel Dörfler 	DesktopEntryListCollection();
87*02be5353SAxel Dörfler };
88*02be5353SAxel Dörfler 
89*02be5353SAxel Dörfler 
90*02be5353SAxel Dörfler inline bool
91*02be5353SAxel Dörfler DesktopPoseView::IsDesktopView() const
92*02be5353SAxel Dörfler {
93*02be5353SAxel Dörfler 	return true;
94*02be5353SAxel Dörfler }
95*02be5353SAxel Dörfler 
96*02be5353SAxel Dörfler } // namespace BPrivate
97*02be5353SAxel Dörfler 
98*02be5353SAxel Dörfler using namespace BPrivate;
99*02be5353SAxel Dörfler 
100*02be5353SAxel Dörfler #endif
101