-rw-r--r-- | PumpKINDlg.cpp | 84 |
1 files changed, 82 insertions, 2 deletions
diff --git a/PumpKINDlg.cpp b/PumpKINDlg.cpp index 4cb1633..9786ef0 100644 --- a/PumpKINDlg.cpp +++ b/PumpKINDlg.cpp | |||
@@ -120,24 +120,28 @@ CPumpKINDlg::CPumpKINDlg(CWnd* pParent /*=NULL*/) | |||
120 | ASSERT(CPumpKINDlg::wrqTakeAll==0); | 120 | ASSERT(CPumpKINDlg::wrqTakeAll==0); |
121 | ASSERT(CPumpKINDlg::wrqConfirmIfExists==1); | 121 | ASSERT(CPumpKINDlg::wrqConfirmIfExists==1); |
122 | ASSERT(CPumpKINDlg::wrqAlwaysConfirm==2); | 122 | ASSERT(CPumpKINDlg::wrqAlwaysConfirm==2); |
123 | ASSERT(CPumpKINDlg::wrqDenyAll==3); | 123 | ASSERT(CPumpKINDlg::wrqDenyAll==3); |
124 | /* -- */ | 124 | /* -- */ |
125 | LoadSettings(); | 125 | LoadSettings(); |
126 | } | 126 | } |
127 | 127 | ||
128 | void CPumpKINDlg::DoDataExchange(CDataExchange* pDX) | 128 | void CPumpKINDlg::DoDataExchange(CDataExchange* pDX) |
129 | { | 129 | { |
130 | CDialog::DoDataExchange(pDX); | 130 | CDialog::DoDataExchange(pDX); |
131 | //{{AFX_DATA_MAP(CPumpKINDlg) | 131 | //{{AFX_DATA_MAP(CPumpKINDlg) |
132 | DDX_Control(pDX, ID_HELP, m_HelpCtl); | ||
133 | DDX_Control(pDX, IDC_PUT, m_PutCtl); | ||
134 | DDX_Control(pDX, IDC_GET, m_GetCtl); | ||
135 | DDX_Control(pDX, IDC_EXIT, m_ExitCtl); | ||
132 | DDX_Control(pDX, IDC_LISTENING, m_ListenCtl); | 136 | DDX_Control(pDX, IDC_LISTENING, m_ListenCtl); |
133 | DDX_Control(pDX, IDC_ABORT, m_AbortCtl); | 137 | DDX_Control(pDX, IDC_ABORT, m_AbortCtl); |
134 | DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); | 138 | DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); |
135 | DDX_Control(pDX, IDC_LOG, m_Log); | 139 | DDX_Control(pDX, IDC_LOG, m_Log); |
136 | DDX_Control(pDX, IDC_CONNECTIONS, m_List); | 140 | DDX_Control(pDX, IDC_CONNECTIONS, m_List); |
137 | //}}AFX_DATA_MAP | 141 | //}}AFX_DATA_MAP |
138 | } | 142 | } |
139 | 143 | ||
140 | BEGIN_MESSAGE_MAP(CPumpKINDlg, CDialog) | 144 | BEGIN_MESSAGE_MAP(CPumpKINDlg, CDialog) |
141 | //{{AFX_MSG_MAP(CPumpKINDlg) | 145 | //{{AFX_MSG_MAP(CPumpKINDlg) |
142 | ON_WM_SYSCOMMAND() | 146 | ON_WM_SYSCOMMAND() |
143 | ON_WM_DESTROY() | 147 | ON_WM_DESTROY() |
@@ -147,37 +151,39 @@ BEGIN_MESSAGE_MAP(CPumpKINDlg, CDialog) | |||
147 | ON_BN_CLICKED(IDC_OPTIONS, OnOptions) | 151 | ON_BN_CLICKED(IDC_OPTIONS, OnOptions) |
148 | ON_WM_TIMER() | 152 | ON_WM_TIMER() |
149 | ON_BN_CLICKED(IDC_EXIT, OnExit) | 153 | ON_BN_CLICKED(IDC_EXIT, OnExit) |
150 | ON_BN_CLICKED(IDC_PUT, OnPut) | 154 | ON_BN_CLICKED(IDC_PUT, OnPut) |
151 | ON_BN_CLICKED(IDC_GET, OnGet) | 155 | ON_BN_CLICKED(IDC_GET, OnGet) |
152 | ON_NOTIFY(LVN_DELETEALLITEMS, IDC_CONNECTIONS, OnDeleteallitemsConnections) | 156 | ON_NOTIFY(LVN_DELETEALLITEMS, IDC_CONNECTIONS, OnDeleteallitemsConnections) |
153 | ON_NOTIFY(LVN_DELETEITEM, IDC_CONNECTIONS, OnDeleteitemConnections) | 157 | ON_NOTIFY(LVN_DELETEITEM, IDC_CONNECTIONS, OnDeleteitemConnections) |
154 | ON_NOTIFY(LVN_INSERTITEM, IDC_CONNECTIONS, OnInsertitemConnections) | 158 | ON_NOTIFY(LVN_INSERTITEM, IDC_CONNECTIONS, OnInsertitemConnections) |
155 | ON_NOTIFY(LVN_ITEMCHANGED, IDC_CONNECTIONS, OnItemchangedConnections) | 159 | ON_NOTIFY(LVN_ITEMCHANGED, IDC_CONNECTIONS, OnItemchangedConnections) |
156 | ON_BN_CLICKED(IDC_ABORT, OnAbort) | 160 | ON_BN_CLICKED(IDC_ABORT, OnAbort) |
157 | ON_WM_CLOSE() | 161 | ON_WM_CLOSE() |
158 | ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow) | 162 | ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow) |
163 | ON_COMMAND(ID_TRAY_LISTEN, OnTrayListen) | ||
159 | ON_COMMAND(ID_TRAY_EXIT, OnTrayExit) | 164 | ON_COMMAND(ID_TRAY_EXIT, OnTrayExit) |
160 | ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin) | 165 | ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin) |
161 | ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile) | 166 | ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile) |
162 | ON_COMMAND(ID_TRAY_HELP, OnTrayHelp) | 167 | ON_COMMAND(ID_TRAY_HELP, OnTrayHelp) |
163 | ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions) | 168 | ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions) |
164 | ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile) | 169 | ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile) |
165 | ON_WM_WINDOWPOSCHANGING() | 170 | ON_WM_WINDOWPOSCHANGING() |
166 | ON_LBN_SELCHANGE(IDC_LOG, OnSelchangeLog) | 171 | ON_LBN_SELCHANGE(IDC_LOG, OnSelchangeLog) |
167 | ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder) | 172 | ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder) |
168 | ON_WM_DROPFILES() | 173 | ON_WM_DROPFILES() |
169 | ON_BN_CLICKED(ID_HELP, OnHelp) | 174 | ON_BN_CLICKED(ID_HELP, OnHelp) |
170 | ON_BN_CLICKED(IDC_LISTENING, OnListening) | 175 | ON_BN_CLICKED(IDC_LISTENING, OnListening) |
171 | ON_COMMAND(ID_TRAY_LISTEN, OnTrayListen) | 176 | ON_WM_GETMINMAXINFO() |
177 | ON_WM_SIZE() | ||
172 | //}}AFX_MSG_MAP | 178 | //}}AFX_MSG_MAP |
173 | END_MESSAGE_MAP() | 179 | END_MESSAGE_MAP() |
174 | 180 | ||
175 | ///////////////////////////////////////////////////////////////////////////// | 181 | ///////////////////////////////////////////////////////////////////////////// |
176 | // CPumpKINDlg message handlers | 182 | // CPumpKINDlg message handlers |
177 | 183 | ||
178 | BOOL CPumpKINDlg::OnInitDialog() | 184 | BOOL CPumpKINDlg::OnInitDialog() |
179 | { | 185 | { |
180 | CDialog::OnInitDialog(); | 186 | CDialog::OnInitDialog(); |
181 | 187 | ||
182 | // Add "About..." menu item to system menu. | 188 | // Add "About..." menu item to system menu. |
183 | 189 | ||
@@ -192,48 +198,61 @@ BOOL CPumpKINDlg::OnInitDialog() | |||
192 | { | 198 | { |
193 | pSysMenu->AppendMenu(MF_SEPARATOR); | 199 | pSysMenu->AppendMenu(MF_SEPARATOR); |
194 | pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); | 200 | pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); |
195 | } | 201 | } |
196 | 202 | ||
197 | // Set the icon for this dialog. The framework does this automatically | 203 | // Set the icon for this dialog. The framework does this automatically |
198 | // when the application's main window is not a dialog | 204 | // when the application's main window is not a dialog |
199 | SetIcon(m_hIcon, TRUE); // Set big icon | 205 | SetIcon(m_hIcon, TRUE); // Set big icon |
200 | SetIcon(m_hIcon, FALSE); // Set small icon | 206 | SetIcon(m_hIcon, FALSE); // Set small icon |
201 | 207 | ||
202 | VERIFY(m_Retrier->Create(NULL,"PumpKIN-Retrier",WS_CHILD,CRect(0,0,0,0),this,0)); | 208 | VERIFY(m_Retrier->Create(NULL,"PumpKIN-Retrier",WS_CHILD,CRect(0,0,0,0),this,0)); |
203 | 209 | ||
204 | |||
205 | m_Images.Create(16,16,TRUE,2,1); | 210 | m_Images.Create(16,16,TRUE,2,1); |
206 | m_iRRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_RRQ)); | 211 | m_iRRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_RRQ)); |
207 | m_iWRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_WRQ)); | 212 | m_iWRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_WRQ)); |
208 | ASSERT(m_iRRQ>=0); | 213 | ASSERT(m_iRRQ>=0); |
209 | ASSERT(m_iWRQ>=0); | 214 | ASSERT(m_iWRQ>=0); |
210 | m_List.SetImageList(&m_Images,LVSIL_NORMAL); | 215 | m_List.SetImageList(&m_Images,LVSIL_NORMAL); |
211 | m_List.SetImageList(&m_Images,LVSIL_SMALL); | 216 | m_List.SetImageList(&m_Images,LVSIL_SMALL); |
212 | m_List.SetImageList(&m_Images,LVSIL_STATE); | 217 | m_List.SetImageList(&m_Images,LVSIL_STATE); |
213 | m_List.SetTextColor(RGB(255,255,0));// Yellow | 218 | m_List.SetTextColor(RGB(255,255,0));// Yellow |
214 | m_List.SetTextBkColor(RGB(12,167,0));// Green | 219 | m_List.SetTextBkColor(RGB(12,167,0));// Green |
215 | m_List.SetBkColor(RGB(12,167,0));// Green | 220 | m_List.SetBkColor(RGB(12,167,0));// Green |
216 | CRect listrc; | 221 | CRect listrc; |
217 | m_List.GetClientRect(&listrc); | 222 | m_List.GetClientRect(&listrc); |
218 | m_List.InsertColumn(0,"File",LVCFMT_LEFT,listrc.Width()-((listrc.Width()/7)*3+listrc.Width()*2/7),subitemFile); | 223 | m_List.InsertColumn(0,"File",LVCFMT_LEFT,listrc.Width()-((listrc.Width()/7)*3+listrc.Width()*2/7),subitemFile); |
219 | m_List.InsertColumn(1,"type",LVCFMT_CENTER,listrc.Width()/7,subitemType); | 224 | m_List.InsertColumn(1,"type",LVCFMT_CENTER,listrc.Width()/7,subitemType); |
220 | m_List.InsertColumn(2,"peer",LVCFMT_LEFT,listrc.Width()*2/7,subitemPeer); | 225 | m_List.InsertColumn(2,"peer",LVCFMT_LEFT,listrc.Width()*2/7,subitemPeer); |
221 | m_List.InsertColumn(3,"ACK",LVCFMT_RIGHT,listrc.Width()/7,subitemBytes); | 226 | m_List.InsertColumn(3,"ACK",LVCFMT_RIGHT,listrc.Width()/7,subitemBytes); |
222 | m_List.InsertColumn(4,"tsize",LVCFMT_RIGHT,listrc.Width()/7,subitemTSize); | 227 | m_List.InsertColumn(4,"tsize",LVCFMT_RIGHT,listrc.Width()/7,subitemTSize); |
223 | 228 | ||
224 | LogLine(IDS_LOG_START); | 229 | LogLine(IDS_LOG_START); |
225 | 230 | ||
226 | SetupButtons(); | 231 | SetupButtons(); |
227 | 232 | ||
233 | CRect wrci, wrco; | ||
234 | GetWindowRect(&wrco); | ||
235 | GetClientRect(&wrci); | ||
236 | CRect brc; | ||
237 | m_GetCtl.GetWindowRect(&brc); ScreenToClient(&brc); | ||
238 | m_rightGapButtons = wrci.right-brc.right; | ||
239 | m_List.GetWindowRect(&brc); ScreenToClient(&brc); | ||
240 | m_rightGapList = wrci.right-brc.right; | ||
241 | m_ListenCtl.GetWindowRect(&brc); ScreenToClient(&brc); | ||
242 | m_bottomGapListen = wrci.bottom-brc.bottom; | ||
243 | m_Log.GetWindowRect(&brc);ScreenToClient(&brc); | ||
244 | m_bottomGapLog = wrci.bottom-brc.bottom; | ||
245 | m_MinSize.cx = wrco.Width(); m_MinSize.cy=wrco.Height(); | ||
246 | |||
228 | CRect rc, drc; | 247 | CRect rc, drc; |
229 | GetWindowRect(rc); | 248 | GetWindowRect(rc); |
230 | GetDesktopWindow()->GetWindowRect(drc); | 249 | GetDesktopWindow()->GetWindowRect(drc); |
231 | SetWindowPos(NULL,drc.right-6-rc.Width(),6,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER); | 250 | SetWindowPos(NULL,drc.right-6-rc.Width(),6,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER); |
232 | 251 | ||
233 | if(m_bShown) | 252 | if(m_bShown) |
234 | ShowWindow(SW_SHOW); | 253 | ShowWindow(SW_SHOW); |
235 | else | 254 | else |
236 | ShowWindow(SW_HIDE); | 255 | ShowWindow(SW_HIDE); |
237 | 256 | ||
238 | m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); | 257 | m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); |
239 | 258 | ||
@@ -2068,12 +2087,73 @@ void CPumpKINDlg::LogLine(LPCTSTR str) | |||
2068 | LogLineToScreen(str); | 2087 | LogLineToScreen(str); |
2069 | if(!m_LogFile.IsEmpty()) { | 2088 | if(!m_LogFile.IsEmpty()) { |
2070 | if(!Klever::LogRecord((LPCTSTR)m_LogFile,str)) { | 2089 | if(!Klever::LogRecord((LPCTSTR)m_LogFile,str)) { |
2071 | if(m_lastlogerr!=m_LogFile) { | 2090 | if(m_lastlogerr!=m_LogFile) { |
2072 | CString tmp; | 2091 | CString tmp; |
2073 | tmp.Format(IDS_LOG_LOGERROR,m_LogFile); | 2092 | tmp.Format(IDS_LOG_LOGERROR,m_LogFile); |
2074 | LogLineToScreen(tmp); | 2093 | LogLineToScreen(tmp); |
2075 | m_lastlogerr=m_LogFile; | 2094 | m_lastlogerr=m_LogFile; |
2076 | } | 2095 | } |
2077 | } | 2096 | } |
2078 | } | 2097 | } |
2079 | } | 2098 | } |
2099 | |||
2100 | void CPumpKINDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) | ||
2101 | { | ||
2102 | CDialog::OnGetMinMaxInfo(lpMMI); | ||
2103 | if(m_MinSize.cx>0 && m_MinSize.cy>0){ | ||
2104 | lpMMI->ptMinTrackSize.x = m_MinSize.cx; | ||
2105 | lpMMI->ptMinTrackSize.y = m_MinSize.cy; | ||
2106 | } | ||
2107 | } | ||
2108 | |||
2109 | void CPumpKINDlg::OnSize(UINT nType, int cx, int cy) | ||
2110 | { | ||
2111 | CDialog::OnSize(nType, cx, cy); | ||
2112 | if(nType==SIZE_RESTORED) | ||
2113 | RecalcLayout(cx,cy); | ||
2114 | } | ||
2115 | |||
2116 | void CPumpKINDlg::RecalcLayout(int,int) | ||
2117 | { | ||
2118 | CRect wrc; | ||
2119 | GetClientRect(&wrc); | ||
2120 | AdjustButton(m_GetCtl,wrc); | ||
2121 | AdjustButton(m_PutCtl,wrc); | ||
2122 | AdjustButton(m_AbortCtl,wrc); | ||
2123 | AdjustButton(m_HelpCtl,wrc); | ||
2124 | AdjustButton(m_ExitCtl,wrc); | ||
2125 | AdjustButton(m_OptionsCtl,wrc); | ||
2126 | CRect brc; | ||
2127 | m_List.GetWindowRect(&brc); ScreenToClient(&brc); | ||
2128 | m_List.SetWindowPos( | ||
2129 | 0, | ||
2130 | brc.left, brc.top, | ||
2131 | wrc.right-m_rightGapList-brc.left, brc.bottom-brc.top, | ||
2132 | SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOCOPYBITS ); | ||
2133 | m_Log.GetWindowRect(&brc); ScreenToClient(&brc); | ||
2134 | m_Log.SetWindowPos( | ||
2135 | 0, | ||
2136 | brc.left, brc.top, | ||
2137 | wrc.right-m_rightGapButtons-brc.left, wrc.bottom-m_bottomGapLog-brc.top, | ||
2138 | SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOCOPYBITS ); | ||
2139 | m_ListenCtl.GetWindowRect(&brc); ScreenToClient(&brc); | ||
2140 | m_ListenCtl.SetWindowPos( | ||
2141 | 0, | ||
2142 | wrc.right-brc.Width()-m_rightGapButtons, wrc.bottom-brc.Height()-m_bottomGapListen, | ||
2143 | 0,0, | ||
2144 | SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER|SWP_NOCOPYBITS ); | ||
2145 | int i = m_Log.GetCount(); | ||
2146 | if(i!=LB_ERR) | ||
2147 | m_Log.SetCurSel(i-1); | ||
2148 | } | ||
2149 | |||
2150 | void CPumpKINDlg::AdjustButton(CWnd& w,CRect& wrc) | ||
2151 | { | ||
2152 | CRect brc; | ||
2153 | w.GetWindowRect(&brc); ScreenToClient(&brc); | ||
2154 | w.SetWindowPos( | ||
2155 | 0, | ||
2156 | wrc.right-brc.Width()-m_rightGapButtons, brc.top, | ||
2157 | 0, 0, | ||
2158 | SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER|SWP_NOCOPYBITS ); | ||
2159 | } | ||