From 82ff5d569487d0ad66eed559364434e59accc7b2 Mon Sep 17 00:00:00 2001 From: guy Date: Thu, 21 Jan 1999 16:40:02 +0000 Subject: [PATCH] Patch level : Files correlati : Ricompilazione Demo : [ ] Commento : Migliorie varie sul frontend git-svn-id: svn://10.65.10.50/trunk@7679 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- servers/hardlock/connect.cpp | 2 +- servers/hardlock/connectu.cpp | 2 +- servers/hardlock/frontdoc.cpp | 2 +- servers/hardlock/frontdoc.h | 2 +- servers/hardlock/frontend.aps | Bin 10430 -> 2957 bytes servers/hardlock/frontend.clw | 57 +++++++++------ servers/hardlock/frontend.cpp | 15 ---- servers/hardlock/frontend.h | 1 - servers/hardlock/frontend.rc | 29 +++++--- servers/hardlock/frontvw.cpp | 22 ++---- servers/hardlock/frontvw.h | 2 - servers/hardlock/mainfrm.cpp | 27 +++++++ servers/hardlock/mainfrm.h | 6 ++ servers/hardlock/resource.h | 9 ++- servers/hardlock/server.cpp | 18 ++++- servers/hardlock/server.h | 12 +-- servers/hardlock/statdlg.cpp | 134 +++++++++++++++++++++++++++++----- servers/hardlock/statdlg.h | 34 +++++++-- servers/hardlock/tracing.cpp | 6 +- 19 files changed, 263 insertions(+), 117 deletions(-) diff --git a/servers/hardlock/connect.cpp b/servers/hardlock/connect.cpp index 5353c7afc..ec8eacdcf 100755 --- a/servers/hardlock/connect.cpp +++ b/servers/hardlock/connect.cpp @@ -49,7 +49,7 @@ static TFunctionName ftable[MAX_FUNC] = { "DongleModules", f_DongleModules, 1 }, { "DongleNumber", f_DongleNumber, 1 }, { "DongleYear", f_DongleYear, 1 }, - { "UserLogin", f_UserLogin, 0 }, + { "UserLogin", f_UserLogin, 0 }, { "UserLogout", f_UserLogout, 0 }, }; diff --git a/servers/hardlock/connectu.cpp b/servers/hardlock/connectu.cpp index c249b58cc..70f6bf1af 100755 --- a/servers/hardlock/connectu.cpp +++ b/servers/hardlock/connectu.cpp @@ -3,7 +3,7 @@ #include "connect.h" #include "server.h" -int CountPeerUser(TConnection& conn, void* pJolly) +static int CountPeerUser(TConnection& conn, void* pJolly) { const CString& strPeerUser = *(CString*)pJolly; const int at = strPeerUser.Find('@'); diff --git a/servers/hardlock/frontdoc.cpp b/servers/hardlock/frontdoc.cpp index 85075f5e9..476ad03ac 100755 --- a/servers/hardlock/frontdoc.cpp +++ b/servers/hardlock/frontdoc.cpp @@ -43,7 +43,7 @@ BOOL CFrontEndDoc::OnNewDocument() return FALSE; SetTitle("PRASSI"); - return TRUE; + return TRUE; } ///////////////////////////////////////////////////////////////////////////// diff --git a/servers/hardlock/frontdoc.h b/servers/hardlock/frontdoc.h index f8193274a..532f9ca6b 100755 --- a/servers/hardlock/frontdoc.h +++ b/servers/hardlock/frontdoc.h @@ -31,7 +31,7 @@ public: #endif protected: - virtual BOOL DoSave(LPCTSTR lpszPathName, BOOL bReplace); + virtual BOOL DoSave(LPCTSTR lpszPathName, BOOL bReplace); // Generated message map functions protected: diff --git a/servers/hardlock/frontend.aps b/servers/hardlock/frontend.aps index ed15d97c21505fb73862e0b25447c6b207f7334d..201440d08d5526693d34de53c360606d019164a1 100755 GIT binary patch literal 2957 zcmcIm&2Jh<6n_}YAc_iys&b`To#GxGB_-JX5UMK06cg7fwGoCUk&pnvZj9;x0$kiG zhs~iXl`8kp6DJ=l_0&IMqf~p^L#1A;RFyA1a&tLNf3w3byO`KjlswIEX5PGynVt9E z01*)bIG4cGLkV#20H4ww`UE5AzKJ}#IGNCmuZhwhm5Qb9;=NKXzE#YWx=QCOrPD1P zR6F&=GISUH4((E!vQ(rktW5VvM5lXnly2*&Q&Zvx zM6X|IzW@y)xBY6PSvx$cD=b!3kKrtS5DP)&Cw$H2NAX{DRaewTQ(@)Q?YrgOz4Cr8 zyHhA+^5uMHf3KKNXZAy@Gb(%8%q7x7K9&CLQu|zfFPF&|?zxjfrW-NFZr)_gR`cD@8?{cW+fsY%i$?dTddSk( zuQR3I=qYt(N3rYjbQo{+s-;O(IyE@52@dyr)n*+zgabWjx0*_`2UF`TME@Yl4AJ4- z@1&(W)rkBA_zVF%ljfbb>Q*=0pwf~s&)A5+k@Z%XC+Eaaxy(N*| zh3~O~;OZVdk(oer3mFmt0)T%4A4UoQ;vo@lrwvSB2>I6Fk-?R$gNsk!8e~yG=-73j zV?LiWBt0a^duu?CsZ|4_7A~uUKtIri0=~9QeGHKi?gA@Te$Y}Sa^COv1O1BR18tc% zBeK>ZndH%Q9P%+Ap9UhQg7|c_*JXUf-CFd$xanKKTfiHDebZvRil7sN4g)xU6?kM> zxZe}uaDf<$TDK@(A0I`dk`plyH}8FuF8+3iSTJA{uw!8vg1<=G+*tgdH_0F}NH@p` zn@ebhp;nAA8LFX^XohJnnWk!*2B|ul0ZrM$CZR!JmrYkyH0TqWCDg+v9z@kcm9Xg{ z)x%*MQzsXJueewW&*2ePr_GaJWj`x-oI&s+{K1Wrc^-dQ_3+QPpDLZpQ^OwuIwjMX zxnIP@L-g?JN+2+-5lW_qRIIPMbJdK08T7Q;W+sz$cf_emst* z0uBVfa`xBp%HyZWmB)WBTR6jb{xrFKev*v#VGj@xJU>amweatM4HE{)TEYrwww8RJ zTJlp8<-(xH`2wI}1{<3G1r)VY0V051JHLyfn@if<+R>4^SG{9+r7W_418n}8BTkE7 ofWSzeBVy|fhu{42vuO%;YqExivEOeK9!BUp{$ckW)`!FY0F6V%od5s; literal 10430 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 Br62$R diff --git a/servers/hardlock/frontend.clw b/servers/hardlock/frontend.clw index 5f2adf714..7af81907d 100755 --- a/servers/hardlock/frontend.clw +++ b/servers/hardlock/frontend.clw @@ -2,24 +2,25 @@ [General Info] Version=1 -LastClass=CStatusDlg +LastClass=CMainFrame LastTemplate=CDialog NewFileInclude1=#include "stdafx.h" NewFileInclude2=#include "FrontEnd.h" LastPage=0 -ClassCount=6 +ClassCount=7 Class1=CFrontEndApp Class2=CFrontEndDoc Class3=CFrontEndView Class4=CMainFrame ResourceCount=3 -Resource1=IDR_MAINFRAME +Resource1=IDD_ABOUTBOX Class5=CAboutDlg Resource2=IDD_STATUS Class6=CStatusDlg -Resource3=IDD_ABOUTBOX +Class7=TConnectionsDlg +Resource3=IDR_MAINFRAME [CLS:CFrontEndApp] Type=0 @@ -52,7 +53,7 @@ ImplementationFile=MainFrm.cpp Filter=T BaseClass=CFrameWnd VirtualFilter=fWC -LastObject=ID_NOTEPAD +LastObject=CMainFrame @@ -87,10 +88,11 @@ Command3=ID_EDIT_CLEAR_ALL Command4=ID_NOTEPAD Command5=ID_VIEW_TRACE Command6=ID_VIEW_STATUS -Command7=ID_VIEW_TOOLBAR -Command8=ID_VIEW_STATUS_BAR -Command9=ID_APP_ABOUT -CommandCount=9 +Command7=ID_VIEW_TREE +Command8=ID_VIEW_TOOLBAR +Command9=ID_VIEW_STATUS_BAR +Command10=ID_APP_ABOUT +CommandCount=10 [ACL:IDR_MAINFRAME] Type=1 @@ -112,7 +114,7 @@ CommandCount=13 [TB:IDR_MAINFRAME] Type=1 -Class=? +Class=CMainFrame Command1=ID_FILE_SAVE_AS Command2=ID_VIEW_TRACE Command3=ID_EDIT_CLEAR_ALL @@ -121,18 +123,6 @@ Command5=ID_APP_EXIT Command6=ID_APP_ABOUT CommandCount=6 -[DLG:IDD_STATUS] -Type=1 -Class=CStatusDlg -ControlCount=7 -Control1=IDOK,button,1342242817 -Control2=IDC_STATIC,static,1342308352 -Control3=IDC_USERS,static,1342312448 -Control4=IDC_STATIC,static,1342308352 -Control5=IDC_CONNECTIONS,static,1342312448 -Control6=IDC_STATIC,static,1342308352 -Control7=IDC_PEERS,static,1342312448 - [CLS:CStatusDlg] Type=0 HeaderFile=StatDlg.h @@ -142,3 +132,26 @@ Filter=D LastObject=CStatusDlg VirtualFilter=dWC +[CLS:TConnectionsDlg] +Type=0 +HeaderFile=ConnDlg.h +ImplementationFile=ConnDlg.cpp +BaseClass=CDialog +Filter=D +LastObject=IDC_USERS +VirtualFilter=dWC + +[DLG:IDD_STATUS] +Type=1 +Class=TConnectionsDlg +ControlCount=9 +Control1=IDCANCEL,button,1342242816 +Control2=IDC_TREE,SysTreeView32,1350631424 +Control3=IDC_UPDATE,button,1342242816 +Control4=IDC_STATIC,static,1342308352 +Control5=IDC_USERS,static,1342312448 +Control6=IDC_STATIC,static,1342308352 +Control7=IDC_CONNECTIONS,static,1342312448 +Control8=IDC_STATIC,static,1342308352 +Control9=IDC_PEERS,static,1342312448 + diff --git a/servers/hardlock/frontend.cpp b/servers/hardlock/frontend.cpp index 693b8bd80..d981ed3a4 100755 --- a/servers/hardlock/frontend.cpp +++ b/servers/hardlock/frontend.cpp @@ -172,21 +172,6 @@ int CFrontEndApp::ExitInstance() return CWinApp::ExitInstance(); } -void CFrontEndApp::OnAppExit() -{ - BOOL bCanExit = !GetServer().HasConnections(); - if (!bCanExit) - { - int nCode = AfxMessageBox("Ci sono ancora degli utenti collegati:\n" - "Si desidera uscire ugualmete?", - MB_YESNO | MB_ICONQUESTION); - if (nCode == IDYES) - bCanExit = TRUE; - } - if (bCanExit) - CWinApp::OnAppExit(); -} - BOOL CAboutDlg::OnInitDialog() { CDialog::OnInitDialog(); diff --git a/servers/hardlock/frontend.h b/servers/hardlock/frontend.h index 971fd30f7..59ccad933 100755 --- a/servers/hardlock/frontend.h +++ b/servers/hardlock/frontend.h @@ -29,7 +29,6 @@ public: //{{AFX_MSG(CFrontEndApp) afx_msg void OnAppAbout(); - afx_msg void OnAppExit(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; diff --git a/servers/hardlock/frontend.rc b/servers/hardlock/frontend.rc index 738bb080d..4e5f0ded7 100755 --- a/servers/hardlock/frontend.rc +++ b/servers/hardlock/frontend.rc @@ -114,7 +114,8 @@ BEGIN POPUP "&Visualizza" BEGIN MENUITEM "&Trace", ID_VIEW_TRACE - MENUITEM "Stato del sistema...", ID_VIEW_STATUS + MENUITEM "Numero utenti...", ID_VIEW_STATUS + MENUITEM "Stato del sistema...", ID_VIEW_TREE MENUITEM SEPARATOR MENUITEM "Barra degli st&rumenti", ID_VIEW_TOOLBAR MENUITEM "Barra di st&ato", ID_VIEW_STATUS_BAR @@ -170,18 +171,21 @@ BEGIN LTEXT "Disco",IDC_STATIC,50,55,19,8 END -IDD_STATUS DIALOGEX 0, 0, 152, 78 +IDD_STATUS DIALOGEX 0, 0, 267, 174 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Utenti del sistema" +CAPTION "Connections" FONT 8, "MS Sans Serif" BEGIN - DEFPUSHBUTTON "OK",IDOK,50,55,50,14 - LTEXT "Numero connessioni",IDC_STATIC,7,40,84,8 - LTEXT "0",IDC_USERS,111,23,34,10,SS_SUNKEN,WS_EX_RIGHT - LTEXT "Numero utenti",IDC_STATIC,7,25,84,8 - LTEXT "0",IDC_CONNECTIONS,111,38,34,10,SS_SUNKEN,WS_EX_RIGHT - LTEXT "Numero stazioni di lavoro",IDC_STATIC,7,9,84,8 - LTEXT "0",IDC_PEERS,111,7,34,10,SS_SUNKEN,WS_EX_RIGHT + PUSHBUTTON "Close",IDCANCEL,210,153,50,14 + CONTROL "Tree1",IDC_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP, + 7,7,195,160 + PUSHBUTTON "Update Now",IDC_UPDATE,210,7,50,14 + LTEXT "Connessioni",IDC_STATIC,207,102,53,8 + LTEXT "0",IDC_USERS,207,76,53,10,SS_SUNKEN,WS_EX_RIGHT + LTEXT "Numero utenti",IDC_STATIC,207,66,50,8 + LTEXT "0",IDC_CONNECTIONS,207,114,53,10,SS_SUNKEN,WS_EX_RIGHT + LTEXT "Stazioni",IDC_STATIC,209,31,51,8 + LTEXT "0",IDC_PEERS,207,42,53,10,SS_SUNKEN,WS_EX_RIGHT END @@ -246,9 +250,9 @@ BEGIN IDD_STATUS, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 145 + RIGHTMARGIN, 260 TOPMARGIN, 7 - BOTTOMMARGIN, 69 + BOTTOMMARGIN, 167 END END #endif // APSTUDIO_INVOKED @@ -368,6 +372,7 @@ STRINGTABLE DISCARDABLE BEGIN ID_VIEW_TRACE "Logging degli eventi" ID_VIEW_STATUS "Mostra lo stato del sistema\nStato del sistema..." + ID_VIEW_TREE "Mostra le connessioni al sistema\nConnessioni..." END STRINGTABLE DISCARDABLE diff --git a/servers/hardlock/frontvw.cpp b/servers/hardlock/frontvw.cpp index be0eac3a1..51330cd01 100755 --- a/servers/hardlock/frontvw.cpp +++ b/servers/hardlock/frontvw.cpp @@ -6,7 +6,7 @@ #include "FrontEnd.h" #include "FrontDoc.h" #include "FrontVw.h" -#include "StatDlg.h" +#include "Server.h" #include "Tracing.h" #ifdef _DEBUG @@ -27,8 +27,6 @@ BEGIN_MESSAGE_MAP(CFrontEndView, CTreeView) ON_UPDATE_COMMAND_UI(ID_EDIT_CLEAR_ALL, OnUpdateEditClearAll) ON_COMMAND(ID_VIEW_TRACE, OnViewTrace) ON_UPDATE_COMMAND_UI(ID_VIEW_TRACE, OnUpdateViewTrace) - ON_COMMAND(ID_VIEW_STATUS, OnViewStatus) - ON_UPDATE_COMMAND_UI(ID_VIEW_STATUS, OnUpdateViewStatus) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -90,15 +88,15 @@ CFrontEndDoc* CFrontEndView::GetDocument() // non-debug version is inline void CFrontEndView::OnUpdateFileSaveAs(CCmdUI* pCmdUI) { - CTreeCtrl& pTreeCtrl = GetTreeCtrl(); - pCmdUI->Enable(pTreeCtrl.GetCount() > 0); + CTreeCtrl& rTreeCtrl = GetTreeCtrl(); + pCmdUI->Enable(rTreeCtrl.GetCount() > 0); } void CFrontEndView::OnEditClearAll() { CWaitCursor HourGlass; - CTreeCtrl& pTreeCtrl = GetTreeCtrl(); - pTreeCtrl.DeleteAllItems(); + CTreeCtrl& rTreeCtrl = GetTreeCtrl(); + rTreeCtrl.DeleteAllItems(); Invalidate(); } @@ -117,13 +115,3 @@ void CFrontEndView::OnUpdateViewTrace(CCmdUI* pCmdUI) pCmdUI->SetCheck(TracingEnabled()); } -void CFrontEndView::OnViewStatus() -{ - CStatusDlg dlg(this); - dlg.DoModal(); -} - -void CFrontEndView::OnUpdateViewStatus(CCmdUI* pCmdUI) -{ - pCmdUI->Enable(); -} diff --git a/servers/hardlock/frontvw.h b/servers/hardlock/frontvw.h index 0fc4b4b9f..209b9e55f 100755 --- a/servers/hardlock/frontvw.h +++ b/servers/hardlock/frontvw.h @@ -41,8 +41,6 @@ protected: afx_msg void OnUpdateEditClearAll(CCmdUI* pCmdUI); afx_msg void OnViewTrace(); afx_msg void OnUpdateViewTrace(CCmdUI* pCmdUI); - afx_msg void OnViewStatus(); - afx_msg void OnUpdateViewStatus(CCmdUI* pCmdUI); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; diff --git a/servers/hardlock/mainfrm.cpp b/servers/hardlock/mainfrm.cpp index a2c94ac04..7c5bd2595 100755 --- a/servers/hardlock/mainfrm.cpp +++ b/servers/hardlock/mainfrm.cpp @@ -3,8 +3,10 @@ #include "stdafx.h" #include "FrontEnd.h" +#include "Server.h" #include "MainFrm.h" +#include "StatDlg.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -22,6 +24,9 @@ BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_CREATE() ON_UPDATE_COMMAND_UI(ID_NOTEPAD, OnUpdateNotepad) ON_COMMAND(ID_NOTEPAD, OnNotepad) + ON_COMMAND(ID_VIEW_STATUS, OnViewStatus) + ON_UPDATE_COMMAND_UI(ID_VIEW_STATUS, OnUpdateViewStatus) + ON_WM_CLOSE() //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -117,3 +122,25 @@ void CMainFrame::OnNotepad() CString cmd = "notepad"; WinExec(cmd, SW_SHOWNORMAL); } + +void CMainFrame::OnViewStatus() +{ + TConnectionsDlg dlg; + dlg.DoModal(); +} + +void CMainFrame::OnUpdateViewStatus(CCmdUI* pCmdUI) +{ + pCmdUI->Enable(); +} + +BOOL CMainFrame::OnQueryEndSession() +{ + return GetServer().CanClose(); +} + +void CMainFrame::OnClose() +{ + if (GetServer().CanClose()) + CFrameWnd::OnClose(); +} diff --git a/servers/hardlock/mainfrm.h b/servers/hardlock/mainfrm.h index c48ec659b..1c69c26e9 100755 --- a/servers/hardlock/mainfrm.h +++ b/servers/hardlock/mainfrm.h @@ -17,6 +17,7 @@ public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CMainFrame) + public: virtual BOOL PreCreateWindow(CREATESTRUCT& cs); //}}AFX_VIRTUAL @@ -38,7 +39,12 @@ protected: afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnUpdateNotepad(CCmdUI* pCmdUI); afx_msg void OnNotepad(); + afx_msg void OnViewStatus(); + afx_msg void OnUpdateViewStatus(CCmdUI* pCmdUI); + afx_msg void OnClose(); + afx_msg BOOL OnQueryEndSession(); //}}AFX_MSG + DECLARE_MESSAGE_MAP() }; diff --git a/servers/hardlock/resource.h b/servers/hardlock/resource.h index 1b5aa41a6..dc3c7b98d 100755 --- a/servers/hardlock/resource.h +++ b/servers/hardlock/resource.h @@ -16,19 +16,22 @@ #define IDC_GRID 1009 #define IDC_CONNECTIONS 1009 #define IDC_PEERS 1010 +#define IDC_TREE 1011 +#define IDC_UPDATE 1012 #define stc32 0x045f #define ID_BUTTON32772 32772 #define ID_VIEW_TRACE 32773 #define ID_NOTEPAD 32775 #define ID_VIEW_STATUS 32776 +#define ID_VIEW_TREE 32778 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 134 -#define _APS_NEXT_COMMAND_VALUE 32778 -#define _APS_NEXT_CONTROL_VALUE 1010 +#define _APS_NEXT_RESOURCE_VALUE 135 +#define _APS_NEXT_COMMAND_VALUE 32779 +#define _APS_NEXT_CONTROL_VALUE 1013 #define _APS_NEXT_SYMED_VALUE 105 #endif #endif diff --git a/servers/hardlock/server.cpp b/servers/hardlock/server.cpp index b0b0e40e9..15478468c 100755 --- a/servers/hardlock/server.cpp +++ b/servers/hardlock/server.cpp @@ -292,7 +292,6 @@ BOOL TDongleServer::OnConnect(const CString& topic) return ok; } - TConnection* TDongleServer::OnCreateConnection(DWORD id) { TConnection* c = NULL; @@ -316,7 +315,8 @@ BOOL TDongleServer::OnRemoveConnection(DWORD id) CString strPeer; GetPeerName(id, strPeer); Trace(0, "Disconnecting %lu from %s", id, strPeer); - return BASE_SERVER::OnRemoveConnection(id); + BOOL ok = TSocketServer::OnRemoveConnection(id); + return ok; } static int CountUsers(TConnection& conn, void* pJolly) @@ -368,9 +368,21 @@ unsigned short TDongleServer::Peers() const return nTotal; } +BOOL TDongleServer::CanClose() const +{ + BOOL bCanExit = !HasConnections(); + if (!bCanExit) + { + int nCode = AfxMessageBox("Ci sono ancora degli utenti collegati:\n" + "Si desidera uscire ugualmente?", + MB_YESNO | MB_ICONQUESTION); + bCanExit = nCode == IDYES; + } + return bCanExit; +} TDongleServer::TDongleServer() - : BASE_SERVER("DONGLE") + : TSocketServer("DONGLE") { _SerNo = 0xFFFF; _MaxUsers = 0; diff --git a/servers/hardlock/server.h b/servers/hardlock/server.h index 93846e773..3fc90be86 100755 --- a/servers/hardlock/server.h +++ b/servers/hardlock/server.h @@ -1,22 +1,14 @@ #ifndef __SERVER_H__ #define __SERVER_H__ -/* -#ifndef __NETDDE_H__ -#include "netdde.h" -#define BASE_SERVER TDDEServer -#endif -*/ - #ifndef __NETSOCK_H__ #include "NetSock.h" #endif -#define BASE_SERVER TSocketServer ///////////////////////////////////////////////////////////////////////////// // TDongleServer -class TDongleServer : public BASE_SERVER +class TDongleServer : public TSocketServer { enum { MAX_MODULES = 256 }; @@ -54,6 +46,8 @@ public: unsigned short Users() const; unsigned short Peers() const; + BOOL CanClose() const; + TDongleServer(); virtual ~TDongleServer(); }; diff --git a/servers/hardlock/statdlg.cpp b/servers/hardlock/statdlg.cpp index 8fc9a0c17..d011a3b13 100755 --- a/servers/hardlock/statdlg.cpp +++ b/servers/hardlock/statdlg.cpp @@ -1,9 +1,10 @@ -// StatDlg.cpp : implementation file +// ConnDlg.cpp : implementation file // #include "stdafx.h" -#include "Connect.h" #include "FrontEnd.h" + +#include "Connect.h" #include "StatDlg.h" #include "Server.h" @@ -14,46 +15,141 @@ static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// -// CStatusDlg dialog +// TConnectionsDlg dialog -CStatusDlg::CStatusDlg(CWnd* pParent /*=NULL*/) - : CDialog(CStatusDlg::IDD, pParent) +TConnectionsDlg::TConnectionsDlg(CWnd* pParent /*=NULL*/) + : CDialog(TConnectionsDlg::IDD, pParent) { - //{{AFX_DATA_INIT(CStatusDlg) + //{{AFX_DATA_INIT(TConnectionsDlg) + // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } -void CStatusDlg::DoDataExchange(CDataExchange* pDX) +void TConnectionsDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CStatusDlg) + //{{AFX_DATA_MAP(TConnectionsDlg) + DDX_Control(pDX, IDC_TREE, m_tree); //}}AFX_DATA_MAP } -BEGIN_MESSAGE_MAP(CStatusDlg, CDialog) - //{{AFX_MSG_MAP(CStatusDlg) +BEGIN_MESSAGE_MAP(TConnectionsDlg, CDialog) + //{{AFX_MSG_MAP(TConnectionsDlg) + ON_WM_CLOSE() + ON_WM_TIMER() + ON_BN_CLICKED(IDC_UPDATE, OnUpdateNow) + ON_NOTIFY(TVN_KEYDOWN, IDC_TREE, OnKeydownUsers) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// -// CStatusDlg message handlers +// TConnectionsDlg message handlers - -BOOL CStatusDlg::OnInitDialog() +static int add_to_tree(TConnection& rConnection, void* pJolly) { - CDialog::OnInitDialog(); - - TDongleServer& srv = GetServer(); + const TPrassiConnection& conn = (const TPrassiConnection&)rConnection; + CTreeCtrl& tree = *(CTreeCtrl*)pJolly; + + for (HTREEITEM hPeer = tree.GetRootItem(); hPeer; + hPeer = tree.GetNextSiblingItem(hPeer)) + { + if (tree.GetItemText(hPeer) == conn.PeerName()) + break; + } + if (!hPeer) + hPeer = tree.InsertItem(conn.PeerName()); + + for (HTREEITEM hUser = tree.GetChildItem(hPeer); hUser; + hUser = tree.GetNextSiblingItem(hUser)) + { + if (tree.GetItemText(hUser) == conn.User()) + break; + } + if (!hUser) + { + BOOL bNewPeer = !tree.ItemHasChildren(hPeer); + hUser = tree.InsertItem(conn.User(), hPeer); + if (bNewPeer) + tree.Expand(hPeer, TVE_EXPAND); + } + + BOOL bNewUser = !tree.ItemHasChildren(hUser); + HTREEITEM hApp = tree.InsertItem(conn.Application(), hUser); + if (hApp) tree.SetItemData(hApp, conn.Id()); + + if (bNewUser) + tree.Expand(hUser, TVE_EXPAND); + + return 1; +} + +void TConnectionsDlg::UpdateStatus() +{ + TDongleServer& srv = GetServer(); const int nPeers = srv.Peers(); const int nUsers = srv.Users(); - const int nConns = srv.Connections(); + const int nConnections = srv.Connections(); SetDlgItemInt(IDC_PEERS, nPeers); SetDlgItemInt(IDC_USERS, nUsers); - SetDlgItemInt(IDC_CONNECTIONS, nConns); + SetDlgItemInt(IDC_CONNECTIONS, nConnections); - return TRUE; // return TRUE unless you set the focus to a control + m_tree.DeleteAllItems(); + srv.ForEachConnection(add_to_tree, &m_tree); +} + +BOOL TConnectionsDlg::OnInitDialog() +{ + CDialog::OnInitDialog(); + + UpdateStatus(); + m_nTimerId = SetTimer(1, 10000, NULL); // Ogni dieci secondi + + return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } + +void TConnectionsDlg::OnClose() +{ + KillTimer(m_nTimerId); + CDialog::OnClose(); +} + +void TConnectionsDlg::OnTimer(UINT nIDEvent) +{ + if (m_nTimerId == nIDEvent) + { + UpdateStatus(); + } + CDialog::OnTimer(nIDEvent); +} + +void TConnectionsDlg::OnUpdateNow() +{ + UpdateStatus(); +} + +void TConnectionsDlg::OnKeydownUsers(NMHDR* pNMHDR, LRESULT* pResult) +{ + TV_KEYDOWN* pTVKeyDown = (TV_KEYDOWN*)pNMHDR; + + if (pTVKeyDown->wVKey == VK_DELETE) + { + HTREEITEM hCurrent = m_tree.GetSelectedItem(); + if (hCurrent && !m_tree.ItemHasChildren(hCurrent)) + { + DWORD nId = m_tree.GetItemData(hCurrent); + int nCode = AfxMessageBox("Confermate la chiusura della connessione?", + MB_YESNO | MB_ICONQUESTION); + if (nCode == IDYES) + { + GetServer().RemoveConnection(nId); + UpdateStatus(); + } + } + } + + *pResult = 0; +} diff --git a/servers/hardlock/statdlg.h b/servers/hardlock/statdlg.h index ea035f54c..67e35a7ea 100755 --- a/servers/hardlock/statdlg.h +++ b/servers/hardlock/statdlg.h @@ -1,24 +1,32 @@ -// StatDlg.h : header file +#ifndef __CONNDLG_H +#define __CONNDLG_H + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 +// ConnDlg.h : header file // ///////////////////////////////////////////////////////////////////////////// -// CStatusDlg dialog +// TConnectionsDlg dialog -class CStatusDlg : public CDialog +class TConnectionsDlg : public CDialog { // Construction public: - CStatusDlg(CWnd* pParent = NULL); // standard constructor + TConnectionsDlg(CWnd* pParent = NULL); // standard constructor + void UpdateStatus(); // Dialog Data - //{{AFX_DATA(CStatusDlg) + //{{AFX_DATA(TConnectionsDlg) enum { IDD = IDD_STATUS }; + CTreeCtrl m_tree; //}}AFX_DATA // Overrides // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CStatusDlg) + //{{AFX_VIRTUAL(TConnectionsDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL @@ -27,8 +35,20 @@ public: protected: // Generated message map functions - //{{AFX_MSG(CStatusDlg) + //{{AFX_MSG(TConnectionsDlg) virtual BOOL OnInitDialog(); + afx_msg void OnClose(); + afx_msg void OnTimer(UINT nIDEvent); + afx_msg void OnUpdateNow(); + afx_msg void OnKeydownUsers(NMHDR* pNMHDR, LRESULT* pResult); //}}AFX_MSG DECLARE_MESSAGE_MAP() + +private: + UINT m_nTimerId; }; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_CONNDLG_H__F6F3B1E2_90D7_11D2_B123_00A0C91DD6F1__INCLUDED_) diff --git a/servers/hardlock/tracing.cpp b/servers/hardlock/tracing.cpp index b2086c746..c6a7ce4f1 100755 --- a/servers/hardlock/tracing.cpp +++ b/servers/hardlock/tracing.cpp @@ -28,7 +28,7 @@ BOOL Trace(int level, const char* fmt, ...) ASSERT(pFrame); CTreeView* pTreeView = (CTreeView*)pFrame->GetActiveView(); ASSERT(pTreeView); - CTreeCtrl& pTreeCtrl = pTreeView->GetTreeCtrl(); + CTreeCtrl& rTreeCtrl = pTreeView->GetTreeCtrl(); char msg[256]; va_list argptr; @@ -36,8 +36,8 @@ BOOL Trace(int level, const char* fmt, ...) vsprintf(msg,fmt,argptr); va_end(argptr); - HTREEITEM hItem = pTreeCtrl.InsertItem(msg, 0, 0); + HTREEITEM hItem = rTreeCtrl.InsertItem(msg); BOOL ok = hItem != NULL; return ok; -} \ No newline at end of file +}