xref: /haiku/src/apps/drivesetup/Support.h (revision 25a7b01d15612846f332751841da3579db313082)
1ec103c3cSStephan Aßmus /*
20d7d4957SAxel Dörfler  * Copyright 2002-2013 Haiku, Inc. All rights reserved.
3ec103c3cSStephan Aßmus  * Distributed under the terms of the MIT license.
4ec103c3cSStephan Aßmus  */
5ec103c3cSStephan Aßmus #ifndef SUPPORT_H
6ec103c3cSStephan Aßmus #define SUPPORT_H
7ec103c3cSStephan Aßmus 
8ec103c3cSStephan Aßmus 
9967d7204SStephan Aßmus #include <DiskDeviceDefs.h>
10967d7204SStephan Aßmus #include <HashMap.h>
11967d7204SStephan Aßmus #include <HashString.h>
12dc59ebe7SIngo Weinhold #include <Slider.h>
13dc59ebe7SIngo Weinhold #include <String.h>
1448d79657SStephan Aßmus #include "StringForSize.h"
15ec103c3cSStephan Aßmus 
16ec103c3cSStephan Aßmus 
17ec103c3cSStephan Aßmus class BPartition;
18ec103c3cSStephan Aßmus 
19ec103c3cSStephan Aßmus 
20ec103c3cSStephan Aßmus void dump_partition_info(const BPartition* partition);
21ec103c3cSStephan Aßmus 
22967d7204SStephan Aßmus bool is_valid_partitionable_space(size_t size);
23967d7204SStephan Aßmus 
2429aec87eSIngo Weinhold 
25967d7204SStephan Aßmus class SpaceIDMap : public HashMap<HashString, partition_id> {
26967d7204SStephan Aßmus public:
27967d7204SStephan Aßmus 								SpaceIDMap();
28967d7204SStephan Aßmus 	virtual						~SpaceIDMap();
29967d7204SStephan Aßmus 
30967d7204SStephan Aßmus 			partition_id		SpaceIDFor(partition_id parentID,
31967d7204SStephan Aßmus 									off_t spaceOffset);
32967d7204SStephan Aßmus 
33967d7204SStephan Aßmus private:
34967d7204SStephan Aßmus 			partition_id		fNextSpaceID;
35967d7204SStephan Aßmus };
36967d7204SStephan Aßmus 
370d7d4957SAxel Dörfler 
38dc59ebe7SIngo Weinhold class SizeSlider : public BSlider {
39dc59ebe7SIngo Weinhold public:
40dc59ebe7SIngo Weinhold 								SizeSlider(const char* name, const char* label,
410d7d4957SAxel Dörfler 									BMessage* message, off_t offset,
420d7d4957SAxel Dörfler 									off_t size, uint32 minGranularity);
43dc59ebe7SIngo Weinhold 	virtual						~SizeSlider();
44dc59ebe7SIngo Weinhold 
45*fdff8a09SAxel Dörfler 	virtual	void				SetValue(int32 value);
46dc59ebe7SIngo Weinhold 	virtual const char*			UpdateText() const;
470d7d4957SAxel Dörfler 
480d7d4957SAxel Dörfler 			off_t				Size() const;
490d7d4957SAxel Dörfler 			void				SetSize(off_t size);
500d7d4957SAxel Dörfler 
510d7d4957SAxel Dörfler 			off_t				Offset() const;
520d7d4957SAxel Dörfler 			off_t				MaxPartitionSize() const;
53dc59ebe7SIngo Weinhold 
54dc59ebe7SIngo Weinhold private:
55eff35b90SIngo Weinhold 			off_t				fStartOffset;
56eff35b90SIngo Weinhold 			off_t				fEndOffset;
570d7d4957SAxel Dörfler 			off_t				fSize;
5842ea87d5SStephan Aßmus 			off_t				fMaxPartitionSize;
590d7d4957SAxel Dörfler 			uint32				fGranularity;
607d24c647SStephan Aßmus 	mutable	char				fStatusLabel[64];
61dc59ebe7SIngo Weinhold };
62ec103c3cSStephan Aßmus 
630d7d4957SAxel Dörfler 
64ec103c3cSStephan Aßmus #endif // SUPPORT_H
65