boinc/client/win/wingui_mainwindow.h

189 lines
6.2 KiB
C
Raw Normal View History

// The contents of this file are subject to the BOINC Public License
// Version 1.0 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://boinc.berkeley.edu/license_1.0.txt
//
// Software distributed under the License is distributed on an "AS IS"
// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
// License for the specific language governing rights and limitations
// under the License.
//
// The Original Code is the Berkeley Open Infrastructure for Network Computing.
//
// The Initial Developer of the Original Code is the SETI@home project.
// Portions created by the SETI@home project are Copyright (C) 2002
// University of California at Berkeley. All Rights Reserved.
//
// Contributor(s):
//
#ifndef __WIN_MAINWINDOW_H_
#define __WIN_MAINWINDOW_H_
// includes
#include "wingui.h"
#include "wingui_listctrl.h"
#include "wingui_piectrl.h"
#include "wingui_dialog.h"
#include "wingui_sswindow.h"
#include "gui_titles.h"
// constants
#define WND_TITLE "BOINC" // window's title
#define ICON_OFF 0 // remove icon
#define ICON_NORMAL 1 // normal icon
#define ICON_HIGHLIGHT 2 // highlighted icon
#define DEF_COL_WIDTH 80 // default width of list columns
#define TOP_BUFFER 5 // buffer pixels around edge of client
#define EDGE_BUFFER 2 // buffer pixels around edge of client
#define GUI_TIMER 104 // gui refresh
#define GUI_WAIT 1000 // timeout sleep time (in milliseconds)
#define STATUS_ICON_ID (WM_USER + 1) // id for notifications from status icon
#define STATUS_MENU 0 // submenus for context menus
#define PROJECT_MENU 1
#define RESULT_MENU 2
#define XFER_MENU 3
#define MESSAGE_MENU 4
#define PROJECT_ID 0 // child control ids
#define RESULT_ID 1
#define XFER_ID 2
#define MESSAGE_ID 3
#define USAGE_ID 4
#define TAB_ID 5
#define PROJECT_COLS 5 // number of columns for each control
#define RESULT_COLS 8
#define XFER_COLS 7
#define MESSAGE_COLS 3
//////////
// class: CMyApp
// parent: CWinApp
// description: subclasses CWinApp to create main window.
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
};
//////////
// class: CMainWindow
// parent: CWnd
// description: the main window, organizes child control windows and client
// state, handles timer updates, some display features.
class CMainWindow : public CWnd
{
public:
CMainWindow ();
void UpdateGUI(CLIENT_STATE*);
void MessageUser(char*,char*,int);
BOOL IsUserSuspended();
BOOL RequestNetConnect();
void DetachProject(PROJECT *);
UINT m_nNetActivityMsg; // ID of net activity message
CSSWindow* m_pSSWnd; // default graphics window
protected:
CMenu m_MainMenu; // window's main menu
CMenu m_ContextMenu; // context menu for status icon and lists
CProgressListCtrl m_ProjectListCtrl; // list control
CProgressListCtrl m_XferListCtrl; // list control
CProgressListCtrl m_ResultListCtrl; // list control
CProgressListCtrl m_MessageListCtrl; // list control for messages to user
CPieChartCtrl m_UsagePieCtrl; // pie chart control
CPieChartCtrl m_UsageBOINCPieCtrl; // pie chart control for BOINC
CFont m_Font; // window's font
CTabCtrl m_TabCtrl; // tab control for choosing display
CImageList m_TabIL; // image list for tab control
CBitmap m_TabBMP[MAX_TABS]; // bitmaps for tab image list
HINSTANCE m_hIdleDll; // handle to dll for user idle
int m_nIconState; // state of the status icon
int m_nDesiredIconState; // desired state of the status icon
BOOL m_bMessage; // does the user have a new message?
BOOL m_bRequest; // does the user have a net connection request?
int m_nContextItem; // item selected for context menu
UINT m_nGuiTimerID; // ID of current GUI timer
UINT m_nShowMsg; // ID of show window request message
UINT m_uScreenSaverMsg; // ID of screensaver message
UINT m_uEndSSMsg; // ID of end screensaver request message
void UpdateRunRequestMenu(CMenu* pMenu);
void UpdateRunRequestFileMenu();
COLORREF GetPieColor(int);
void CheckIdle();
void ShowTab(int);
bool SetStatusIcon(DWORD);
void SaveListControls();
void LoadListControls();
void SaveUserSettings();
void LoadUserSettings();
void LoadLanguage();
PROJECT* GetProjectFromContextMenu();
DWORD GetUserIdleTime();
void ClearProjectItems(char *);
void Syncronize(CProgressListCtrl*, vector<void*>*);
virtual void PostNcDestroy();
LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
afx_msg void OnClose();
afx_msg void OnDestroy();
afx_msg void OnCommandSettingsQuit();
afx_msg void OnCommandSettingsLogin();
afx_msg void OnCommandSettingsProxyServer();
afx_msg void OnCommandHelpAbout();
afx_msg void OnCommandProjectWebSite();
afx_msg void OnCommandProjectGetPrefs();
afx_msg void OnCommandProjectDetach();
afx_msg void OnCommandProjectReset();
afx_msg void OnCommandWorkShowGraphics();
afx_msg void OnCommandTransfersRetryNow();
afx_msg void OnCommandFileClearInactive();
afx_msg void OnCommandFileClearMessages();
afx_msg void OnCommandRunBenchmarks();
afx_msg void OnCommandConnectionHangupIfDialed();
afx_msg void OnCommandConnectionConfirmBeforeConnecting();
afx_msg void OnCommandShow();
afx_msg void OnCommandHide();
afx_msg void OnCommandRunRequestAlways();
afx_msg void OnCommandRunRequestAuto();
afx_msg void OnCommandRunRequestNever();
afx_msg void OnCommandExit();
afx_msg int OnCommandMessageCopyToClip();
afx_msg int OnCreate(LPCREATESTRUCT);
afx_msg BOOL OnNotify(WPARAM, LPARAM, LRESULT*);
afx_msg void OnRButtonDown(UINT, CPoint);
afx_msg void OnSetFocus(CWnd*);
afx_msg void OnSize(UINT, int, int);
afx_msg LRESULT OnStatusIcon(WPARAM, LPARAM);
afx_msg void OnTimer(UINT);
CString m_MenuLabelRetryNow, m_MenuLabelGetPreferences;
CString m_DialogResetQuery, m_DialogDetachQuery;
DECLARE_MESSAGE_MAP()
public:
void OnBenchmarksBegin();
void OnBenchmarksEnd();
};
// globals
extern CMyApp g_myApp;
extern CMainWindow* g_myWnd;
#endif