Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef DEPENDEDLIST_H
Toshihiro Shimizu 890ddd
#define DEPENDEDLIST_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "tw/popup.h"
Toshihiro Shimizu 890ddd
#include "tw/button.h"
Toshihiro Shimizu 890ddd
#include "tw/mainshell.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "textlist.h"
Toshihiro Shimizu 890ddd
#include <map></map>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TaskShortInfo;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TGenericDependedPopupAction
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	virtual ~TGenericDependedPopupAction() {}
Toshihiro Shimizu 890ddd
	virtual void sendCommand(const vector<string> &) = 0;</string>
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
template <class t=""></class>
Toshihiro Shimizu 890ddd
class TDependedPopupAction : public TGenericDependedPopupAction
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	typedef void (T::*Method)(const vector<string> &);</string>
Toshihiro Shimizu 890ddd
	TDependedPopupAction(T *target, Method method) : m_target(target), m_method(method) {}
Toshihiro Shimizu 890ddd
	void sendCommand(const vector<string> &tasks) { (m_target->*m_method)(tasks); }</string>
Toshihiro Shimizu 890ddd
private:
Toshihiro Shimizu 890ddd
	T *m_target;
Toshihiro Shimizu 890ddd
	Method m_method;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//==============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class DependedList : public TWidget
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	TTextList *m_depList;
Toshihiro Shimizu 890ddd
	TButton *m_add;
Toshihiro Shimizu 890ddd
	TButton *m_remove;
Toshihiro Shimizu 890ddd
	map<string, string=""> m_tasks;</string,>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	DependedList(TWidget *parent);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void configureNotify(const TDimension &size);
Toshihiro Shimizu 890ddd
	void onAdd();
Toshihiro Shimizu 890ddd
	void onRemove();
Toshihiro Shimizu 890ddd
	void clearAll();
Toshihiro Shimizu 890ddd
	void setList(const map<string, string=""> &tasks);</string,>
Toshihiro Shimizu 890ddd
	void AddItems(const vector<string> &tasksId);</string>
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//==============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class DependedPopup : public TModalPopup
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	DependedPopup(TWidget *parent);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void configureNotify(const TDimension &d);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TDimension getPreferredSize() const;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void onOk();
Toshihiro Shimizu 890ddd
	void setList(const vector<taskshortinfo> &tasks);</taskshortinfo>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void setOkAction(TGenericDependedPopupAction *action);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Toshihiro Shimizu 890ddd
	TTextList *m_submitList;
Toshihiro Shimizu 890ddd
	TButton *m_ok;
Toshihiro Shimizu 890ddd
	TButton *m_cancel;
Toshihiro Shimizu 890ddd
	TGenericDependedPopupAction *m_okAction;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif