00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef _APP_FILE_INFO_H
00012 #define _APP_FILE_INFO_H
00013
00014 #ifndef _BE_BUILD_H
00015 #include <BeBuild.h>
00016 #endif
00017 #include <NodeInfo.h>
00018
00019 class BBitmap;
00020 class BMessage;
00021 class BResources;
00022 class BFile;
00023
00024
00025
00026 struct version_info {
00027 uint32 major;
00028 uint32 middle;
00029 uint32 minor;
00030 uint32 variety;
00031 uint32 internal;
00032 char short_info[64];
00033 char long_info[256];
00034 };
00035
00036 enum version_variety {
00037 B_DEVELOPMENT_VERSION = 0,
00038 B_ALPHA_VERSION,
00039 B_BETA_VERSION,
00040 B_GAMMA_VERSION,
00041 B_GOLDEN_MASTER_VERSION,
00042 B_FINAL_VERSION
00043 };
00044
00045 enum info_location {
00046 B_USE_ATTRIBUTES = 0x1,
00047 B_USE_RESOURCES = 0x2,
00048 B_USE_BOTH_LOCATIONS = 0x3
00049 };
00050
00051 enum version_kind {
00052 B_APP_VERSION_KIND,
00053 B_SYSTEM_VERSION_KIND
00054 };
00055
00056
00057
00058 class BAppFileInfo: public BNodeInfo {
00059 public:
00060 BAppFileInfo();
00061 BAppFileInfo(BFile *file);
00062 virtual ~BAppFileInfo();
00063
00064 status_t SetTo(BFile *file);
00065
00066 virtual status_t GetType(char *type) const;
00067 status_t GetSignature(char *sig) const;
00068 status_t GetAppFlags(uint32 *flags) const;
00069 status_t GetSupportedTypes(BMessage *types) const;
00070 status_t GetIcon(BBitmap *icon, icon_size which) const;
00071 status_t GetVersionInfo(version_info *vinfo, version_kind k) const;
00072 status_t GetIconForType(const char *type,
00073 BBitmap *icon,
00074 icon_size which) const;
00075
00076 bool IsSupportedType(const char *type) const;
00077
00078 virtual status_t SetType(const char *type);
00079 status_t SetSignature(const char *sig);
00080 status_t SetAppFlags(uint32 flags);
00081 status_t SetSupportedTypes(const BMessage *types,
00082 bool sync_all);
00083 status_t SetSupportedTypes(const BMessage *types);
00084 status_t SetIcon(const BBitmap *icon, icon_size which);
00085 status_t SetVersionInfo(const version_info *vinfo, version_kind k);
00086 status_t SetIconForType(const char *type,
00087 const BBitmap *icon,
00088 icon_size which);
00089
00090 void SetInfoLocation(info_location loc);
00091 bool IsUsingAttributes() const;
00092 bool IsUsingResources() const;
00093
00094 bool Supports(BMimeType *mt) const;
00095
00096 private:
00097 typedef BNodeInfo inherited;
00098 friend status_t _update_mime_info_(const char *, int32);
00099 friend status_t _real_update_app_(BAppFileInfo *, const char *, bool);
00100 friend status_t _query_for_app_(BMimeType *, const char *,
00101 entry_ref *, version_info *);
00102 friend class BRoster;
00103
00104 virtual void _ReservedAppFileInfo1();
00105 virtual void _ReservedAppFileInfo2();
00106 virtual void _ReservedAppFileInfo3();
00107
00108 static status_t SetSupTypesForAll(BMimeType *, const BMessage *);
00109
00110 BAppFileInfo &operator=(const BAppFileInfo &);
00111 BAppFileInfo(const BAppFileInfo &);
00112
00113 status_t _SetSupportedTypes(const BMessage *types);
00114 status_t UpdateFromRsrc();
00115 status_t RealUpdateRsrcToAttr();
00116 status_t UpdateMetaMime(const char *path, bool force,
00117 uint32 *changes_mask) const;
00118 bool IsApp();
00119 status_t GetMetaMime(BMimeType *meta) const;
00120
00121 BResources *fResources;
00122 info_location fWhere;
00123 uint32 _reserved[2];
00124 };
00125
00126 #endif