1/*
2 * Copyright 2003-2010, Haiku, Inc. All Rights Reserved.
3 * Copyright 2004-2005 yellowTAB GmbH. All Rights Reserverd.
4 * Copyright 2006 Bernd Korz. All Rights Reserved
5 * Distributed under the terms of the MIT License.
6 *
7 * Authors:
8 *		Fernando Francisco de Oliveira
9 *		Michael Wilber
10 *		Michael Pfeiffer
11 *		yellowTAB GmbH
12 *		Bernd Korz
13 *		Stephan A��mus <superstippi@gmx.de>
14 */
15#ifndef IMAGE_FILE_NAVIGATOR_H
16#define IMAGE_FILE_NAVIGATOR_H
17
18
19#include <Entry.h>
20#include <Messenger.h>
21#include <String.h>
22
23
24class Navigator;
25
26
27class ImageFileNavigator {
28public:
29								ImageFileNavigator(const entry_ref& ref,
30									const BMessenger& trackerMessenger);
31	virtual						~ImageFileNavigator();
32
33			void				SetTo(const entry_ref& ref, int32 page = 1,
34									int32 pageCount = 1);
35			const entry_ref&	CurrentRef() const { return fCurrentRef; }
36
37			// The same image file may have multiple pages, TIFF images for
38			// example. The page count is determined at image loading time.
39			int32				CurrentPage();
40			int32				PageCount();
41
42			bool				FirstPage();
43			bool				LastPage();
44			bool				NextPage();
45			bool				PreviousPage();
46			bool				HasNextPage();
47			bool				HasPreviousPage();
48			bool				GoToPage(int32 page);
49
50			bool				FirstFile();
51			bool				NextFile();
52			bool				PreviousFile();
53			bool				HasNextFile();
54			bool				HasPreviousFile();
55
56			bool				GetNextFile(const entry_ref& ref,
57									entry_ref& nextRef);
58			bool				GetPreviousFile(const entry_ref& ref,
59									entry_ref& previousRef);
60
61			bool				MoveFileToTrash();
62
63private:
64			Navigator*			fNavigator;
65
66			entry_ref			fCurrentRef;
67			int32				fDocumentIndex;
68				// of the image in the file
69			int32				fDocumentCount;
70				// number of images in the file
71
72			BString				fImageType;
73				// Type of image, for use in status bar and caption
74			BString				fImageMime;
75};
76
77
78#endif	// IMAGE_FILE_NAVIGATOR_H
79