⛏️ index : haiku.git

/*
 * Copyright (c) 2005-2010, Haiku, Inc.
 * Distributed under the terms of the MIT license.
 *
 * Author:
 *		DarkWyrm <darkwyrm@gmail.com>
 */
#ifndef RESVIEW_H
#define RESVIEW_H

#include <Entry.h>
#include <FilePanel.h>
#include <List.h>
#include <ListItem.h>
#include <MenuBar.h>
#include <Resources.h>
#include <String.h>
#include <View.h>

#include "ResourceRoster.h"

class BMenuBar;
class ResListView;

enum {
	FILE_CLEAN = 0,
	FILE_DIRTY,
	FILE_INIT,
	FILE_QUIT_AFTER_SAVE
};

class ResView : public BView
{
public:
					ResView(const BRect &frame, const char *name,
							const int32 &resize, const int32 &flags,
							const entry_ref *ref = NULL);
					~ResView(void);
	void			AttachedToWindow(void);
	void			MessageReceived(BMessage *msg);
	
	const char *	Filename(void) const { return fFileName.String(); }
	uint8			GetSaveStatus(void) const { return fSaveStatus; }
	
	status_t		SetTo(const entry_ref &dir, const BString &name);
	void			OpenFile(const entry_ref &ref);
	void			SaveFile(void);
	void			SaveAndQuit(void);
	
private:
	void			BuildMenus(BMenuBar *menuBar);
	void			EmptyDataList(void);
	void			UpdateRow(BRow *row);
	void			HandleDrop(BMessage *msg);
	void			AddResource(const entry_ref &ref);
	void			DeleteSelectedResources(void);
	void			SetSaveStatus(uint8 value);
	
	ResListView		*fListView;
	entry_ref		*fRef;
	BString			fFileName;
	BMenuBar		*fBar;
	uint8			fSaveStatus;
	BList			fDataList;
	BFilePanel		*fOpenPanel,
					*fSavePanel;
};


class ResDataRow : public BRow
{
public:
					ResDataRow(ResourceData *data);
	ResourceData *	GetData(void) const;
	
private:
	ResourceData	*fResData;
};

extern ResourceRoster gResRoster;

#endif