Blob Blame Raw
#pragma once

#ifndef TNZ_ITEMBROWSER_INCLUDED
#define TNZ_ITEMBROWSER_INCLUDED

#include "tw/tw.h"

#undef DVAPI
#undef DVVAR
#ifdef TWIN_EXPORTS
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif

class TFilePath;

class DVAPI TItemBrowser : public TWidget
{
	class Data;
	Data *m_data;

public:
	TItemBrowser(TWidget *parent, const TFilePath &rootDir, string name = "ItemBrowser");
	~TItemBrowser();

	void setBorder(int dx, int dy);

	void setItemSize(const TDimension &d);
	TDimension getItemSize() const;

	virtual int getItemCount() const = 0;
	virtual void drawItem(
		TWidget *w,
		const TRect &rect,
		int index,
		bool selected) const = 0;
	virtual bool isItemWide(int index) const { return false; };
	virtual void loadItems(const TFilePath &rootDir) {}

	virtual void onSelect(int index) {}

	void select(int index);
	void notifyItemCountChange();

	void configureNotify(const TDimension &);

	void update();

	virtual void onKey(int key, int index){};
	virtual wstring getTooltipString(int) { return wstring(); }
	virtual string getContextHelpReference(int) { return string(); }
};

#endif