// Berkeley Open Infrastructure for Network Computing
// http://boinc.berkeley.edu
// Copyright (C) 2005 University of California
//
// This is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation;
// either version 2.1 of the License, or (at your option) any later version.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// To view the GNU Lesser General Public License visit
// http://www.gnu.org/copyleft/lesser.html
// or write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


#ifndef _DLG_MESSAGES_H_ 
#define _DLG_MESSAGES_H_ 

#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "sg_DlgMessages.cpp"
#endif

#define DEFAULT_LIST_MULTI_SEL_FLAGS   wxLC_REPORT | wxLC_VIRTUAL

class SkinClass;
class CSGUIListCtrl;

class CDlgMessages:public wxDialog
{
public:
	CDlgMessages(wxWindow* parent, wxString dirPref,wxWindowID id = -1, const wxString& title = wxT(""), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("dialogBox"));
	//Skin Class
	SkinClass *appSkin;
	//btns
	wxImage *g_close;
	wxImage *g_closeClick;
	wxBitmap btmpClose; 
	wxBitmap btmpCloseClick; 
	wxBitmapButton *btnClose;
	//window bg
	wxBitmap *windowBg;
	wxBitmap fileImgBuf[1];
	//
	// Pointer control
	virtual ~CDlgMessages();
	void initBefore();
	void CreateDialog();
	void LoadSkinImages();
	void initAfter();
	//
	virtual wxString        OnListGetItemText( long item, long column ) const;
	virtual wxListItemAttr* OnListGetItemAttr( long item ) const;

	DECLARE_EVENT_TABLE()

protected:
	wxInt32                 m_iPreviousDocCount;

    wxListItemAttr*         m_pMessageInfoAttr;
    wxListItemAttr*         m_pMessageErrorAttr;

	bool                    m_bProcessingTaskRenderEvent;
    bool                    m_bProcessingListRenderEvent;
    bool                    m_bForceUpdateSelection;

	wxTimer*                m_pRefreshMessagesTimer;

	bool                    _EnsureLastItemVisible();
    virtual bool            EnsureLastItemVisible();
	wxInt32                 FormatProjectName( wxInt32 item, wxString& strBuffer ) const;
    wxInt32                 FormatPriority( wxInt32 item, wxString& strBuffer ) const;
    wxInt32                 FormatTime( wxInt32 item, wxString& strBuffer ) const;
    wxInt32                 FormatMessage( wxInt32 item, wxString& strBuffer ) const;

	wxString m_SkinDirPrefix;
	void OnEraseBackground(wxEraseEvent& event);
	void OnBtnClick(wxCommandEvent& event);
	void VwXEvOnEraseBackground(wxEraseEvent& event);
	void VwXDrawBackImg(wxEraseEvent& event,wxWindow *win,wxBitmap & bitMap,int opz);
    //
	virtual void            OnListRender( wxTimerEvent& event );
	virtual wxInt32         GetDocCount();
	//
	CSGUIListCtrl *m_pList;
};


#endif  // end CDlgMessages
