150751440SAxel Dörfler/*
250751440SAxel Dörfler * Copyright 2006, Axel D��rfler, axeld@pinc-software.de. All rights reserved.
350751440SAxel Dörfler * Distributed under the terms of the MIT License.
450751440SAxel Dörfler */
550751440SAxel Dörfler#ifndef APPLICATION_TYPE_WINDOW_H
650751440SAxel Dörfler#define APPLICATION_TYPE_WINDOW_H
750751440SAxel Dörfler
850751440SAxel Dörfler
90b0ff90fSAxel Dörfler#include "IconView.h"
100b0ff90fSAxel Dörfler
11dad7391aSStephan Aßmus#include <AppFileInfo.h>
1250751440SAxel Dörfler#include <Mime.h>
1350751440SAxel Dörfler#include <String.h>
1450751440SAxel Dörfler#include <Window.h>
1550751440SAxel Dörfler
1650751440SAxel Dörflerclass BButton;
1750751440SAxel Dörflerclass BCheckBox;
1850751440SAxel Dörflerclass BListView;
19b57ef1e6SAxel Dörflerclass BPopUpMenu;
2050751440SAxel Dörflerclass BRadioButton;
2150751440SAxel Dörflerclass BTextControl;
2250751440SAxel Dörflerclass BTextView;
2350751440SAxel Dörfler
2450751440SAxel Dörflerclass MimeTypeListView;
2550751440SAxel Dörfler
2650751440SAxel Dörfler
2750751440SAxel Dörflerclass ApplicationTypeWindow : public BWindow {
2850751440SAxel Dörfler	public:
2950751440SAxel Dörfler		ApplicationTypeWindow(BPoint position, const BEntry& entry);
3050751440SAxel Dörfler		virtual ~ApplicationTypeWindow();
3150751440SAxel Dörfler
32b57ef1e6SAxel Dörfler		virtual void FrameResized(float width, float height);
3350751440SAxel Dörfler		virtual void MessageReceived(BMessage* message);
3450751440SAxel Dörfler		virtual bool QuitRequested();
3550751440SAxel Dörfler
3650751440SAxel Dörfler	private:
3750751440SAxel Dörfler		BString _Title(const BEntry& entry);
3850751440SAxel Dörfler		void _SetTo(const BEntry& entry);
39b57ef1e6SAxel Dörfler		void _UpdateAppFlagsEnabled();
40b57ef1e6SAxel Dörfler		void _MakeNumberTextControl(BTextControl* control);
41b57ef1e6SAxel Dörfler		void _Save();
4250751440SAxel Dörfler
43aac2df0fSStephan Aßmus		bool _Flags(uint32& flags) const;
44dad7391aSStephan Aßmus		BMessage _SupportedTypes() const;
45dad7391aSStephan Aßmus		version_info _VersionInfo() const;
46dad7391aSStephan Aßmus
47dad7391aSStephan Aßmus		void _CheckSaveMenuItem(uint32 flags);
48dad7391aSStephan Aßmus		uint32 _NeedsSaving(uint32 flags) const;
49dad7391aSStephan Aßmus
50dad7391aSStephan Aßmus	private:
51dad7391aSStephan Aßmus		struct AppInfo {
52dad7391aSStephan Aßmus			BString			signature;
53aac2df0fSStephan Aßmus			bool			gotFlags;
54dad7391aSStephan Aßmus			uint32			flags;
55dad7391aSStephan Aßmus			version_info	versionInfo;
56dad7391aSStephan Aßmus
57dad7391aSStephan Aßmus			BMessage		supportedTypes;
58dad7391aSStephan Aßmus
59dad7391aSStephan Aßmus			bool			iconChanged;
60dad7391aSStephan Aßmus			bool			typeIconsChanged;
61dad7391aSStephan Aßmus		};
62dad7391aSStephan Aßmus		enum {
63dad7391aSStephan Aßmus			CHECK_SIGNATUR			= 1 << 0,
64dad7391aSStephan Aßmus			CHECK_FLAGS				= 1 << 1,
65dad7391aSStephan Aßmus			CHECK_VERSION			= 1 << 2,
66dad7391aSStephan Aßmus			CHECK_ICON				= 1 << 3,
67dad7391aSStephan Aßmus
68dad7391aSStephan Aßmus			CHECK_TYPES				= 1 << 4,
69dad7391aSStephan Aßmus			CHECK_TYPE_ICONS		= 1 << 5,
70dad7391aSStephan Aßmus
71dad7391aSStephan Aßmus			CHECK_ALL				= 0xffffffff
72dad7391aSStephan Aßmus		};
73dad7391aSStephan Aßmus
7450751440SAxel Dörfler	private:
7550751440SAxel Dörfler		BEntry			fEntry;
76dad7391aSStephan Aßmus		AppInfo			fOriginalInfo;
7750751440SAxel Dörfler
7850751440SAxel Dörfler		BTextControl*	fSignatureControl;
7950751440SAxel Dörfler		IconView*		fIconView;
800b0ff90fSAxel Dörfler		Icon			fIcon;
8150751440SAxel Dörfler
8250751440SAxel Dörfler		BCheckBox*		fFlagsCheckBox;
8350751440SAxel Dörfler		BRadioButton*	fSingleLaunchButton;
8450751440SAxel Dörfler		BRadioButton*	fMultipleLaunchButton;
8550751440SAxel Dörfler		BRadioButton*	fExclusiveLaunchButton;
8650751440SAxel Dörfler		BCheckBox*		fArgsOnlyCheckBox;
8750751440SAxel Dörfler		BCheckBox*		fBackgroundAppCheckBox;
8850751440SAxel Dörfler
8950751440SAxel Dörfler		BListView*		fTypeListView;
9050751440SAxel Dörfler		BButton*		fAddTypeButton;
9150751440SAxel Dörfler		BButton*		fRemoveTypeButton;
9250751440SAxel Dörfler		IconView*		fTypeIconView;
9350751440SAxel Dörfler
9450751440SAxel Dörfler		BTextControl*	fMajorVersionControl;
9550751440SAxel Dörfler		BTextControl*	fMiddleVersionControl;
9650751440SAxel Dörfler		BTextControl*	fMinorVersionControl;
97b57ef1e6SAxel Dörfler		BPopUpMenu*		fVarietyMenu;
9850751440SAxel Dörfler		BTextControl*	fInternalVersionControl;
9950751440SAxel Dörfler		BTextControl*	fShortDescriptionControl;
10050751440SAxel Dörfler		BTextView*		fLongDescriptionView;
101dad7391aSStephan Aßmus
102dad7391aSStephan Aßmus		BMenuItem*		fSaveMenuItem;
103dad7391aSStephan Aßmus		uint32			fChangedProperties;
10450751440SAxel Dörfler};
10550751440SAxel Dörfler
10650751440SAxel Dörfler#endif // APPLICATION_TYPE_WINDOW_H
107