boinc/clientgui/BOINCBaseView.h

165 lines
5.7 KiB
C++

// 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.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#ifndef _BOINCBASEVIEW_H_
#define _BOINCBASEVIEW_H_
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "BOINCBaseView.cpp"
#endif
#define DEFAULT_TASK_FLAGS wxTAB_TRAVERSAL | wxADJUST_MINSIZE
#define DEFAULT_LIST_SINGLE_SEL_FLAGS wxLC_REPORT | wxLC_VIRTUAL | wxLC_SINGLE_SEL
#define DEFAULT_LIST_MULTI_SEL_FLAGS wxLC_REPORT | wxLC_VIRTUAL
class CBOINCTaskCtrl;
class CBOINCListCtrl;
class PROJECT;
class CTaskItem : wxObject {
public:
CTaskItem();
CTaskItem( wxString strName, wxString strDescription, wxInt32 iEventID ) :
m_strName(strName), m_strDescription(strDescription), m_iEventID(iEventID),
m_pButton(NULL), m_strWebSiteLink(wxT("")) {};
CTaskItem( wxString strName, wxString strDescription, wxString strWebSiteLink, wxInt32 iEventID ) :
m_strName(strName), m_strDescription(strDescription), m_iEventID(iEventID),
m_pButton(NULL), m_strWebSiteLink(strWebSiteLink) {};
~CTaskItem() {};
wxString m_strName;
wxString m_strDescription;
wxInt32 m_iEventID;
wxButton* m_pButton;
wxString m_strWebSiteLink;
};
class CTaskItemGroup : wxObject {
public:
CTaskItemGroup();
CTaskItemGroup( wxString strName ) :
m_strName(strName), m_pStaticBox(NULL), m_pStaticBoxSizer(NULL) { m_Tasks.clear(); };
~CTaskItemGroup() {};
wxButton* button(int i) {return m_Tasks[i]->m_pButton;}
wxString m_strName;
wxStaticBox* m_pStaticBox;
wxStaticBoxSizer* m_pStaticBoxSizer;
std::vector<CTaskItem*> m_Tasks;
};
class CBOINCBaseView : public wxPanel {
DECLARE_DYNAMIC_CLASS( CBOINCBaseView )
public:
CBOINCBaseView();
CBOINCBaseView(
wxNotebook* pNotebook
);
CBOINCBaseView(
wxNotebook* pNotebook,
wxWindowID iTaskWindowID,
int iTaskWindowFlags,
wxWindowID iListWindowID,
int iListWindowFlags
);
~CBOINCBaseView();
virtual wxString& GetViewName();
virtual wxString& GetViewDisplayName();
virtual const char** GetViewIcon();
virtual const int GetViewRefreshRate();
bool FireOnSaveState( wxConfigBase* pConfig );
bool FireOnRestoreState( wxConfigBase* pConfig );
virtual int GetListRowCount();
void FireOnListRender( wxTimerEvent& event );
void FireOnListSelected( wxListEvent& event );
void FireOnListDeselected( wxListEvent& event );
wxString FireOnListGetItemText( long item, long column ) const;
int FireOnListGetItemImage( long item ) const;
wxListItemAttr* FireOnListGetItemAttr( long item ) const;
std::vector<CTaskItemGroup*> m_TaskGroups;
protected:
virtual bool OnSaveState( wxConfigBase* pConfig );
virtual bool OnRestoreState( wxConfigBase* pConfig );
virtual void OnListRender( wxTimerEvent& event );
virtual void OnListSelected( wxListEvent& event );
virtual void OnListDeselected( wxListEvent& event );
virtual wxString OnListGetItemText( long item, long column ) const;
virtual int OnListGetItemImage( long item ) const;
virtual wxListItemAttr* OnListGetItemAttr( long item ) const;
virtual void OnGridSelectCell( wxGridEvent& event );
virtual void OnGridSelectRange( wxGridRangeSelectEvent& event );
virtual int GetDocCount();
virtual wxString OnDocGetItemText( long item, long column ) const;
virtual wxString OnDocGetItemImage( long item ) const;
virtual wxString OnDocGetItemAttr( long item ) const;
virtual int AddCacheElement();
virtual int EmptyCache();
virtual int GetCacheCount();
virtual int RemoveCacheElement();
virtual int SyncronizeCache();
virtual int UpdateCache( long item, long column, wxString& strNewData );
virtual void EmptyTasks();
virtual void PreUpdateSelection();
virtual void UpdateSelection();
virtual void PostUpdateSelection();
virtual void UpdateWebsiteSelection(long lControlGroup, PROJECT* project);
bool _EnsureLastItemVisible();
virtual bool EnsureLastItemVisible();
static void append_to_status(wxString& existing, const wxChar* additional);
static wxString HtmlEntityEncode(wxString strRaw);
static wxString HtmlEntityDecode(wxString strRaw);
bool m_bProcessingTaskRenderEvent;
bool m_bProcessingListRenderEvent;
bool m_bForceUpdateSelection;
CBOINCTaskCtrl* m_pTaskPane;
CBOINCListCtrl* m_pListPane;
};
#endif