/[H6]/h6-udlånssystemDlg.cpp
ViewVC logotype

Contents of /h6-udlånssystemDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 57 - (show annotations) (download)
Tue Sep 12 17:48:20 2006 UTC (17 years, 7 months ago) by torben
File size: 5006 byte(s)
More informative error handling on DB connection failures
1 /*
2 * Developed by Torben H. Nielsen
3 */
4
5
6 #include "stdafx.h"
7 #include "h6-udlånssystem.h"
8 #include "h6-udlånssystemDlg.h"
9 #include ".\h6-udlånssystemdlg.h"
10
11 #include "ConfigFile.h"
12 #include "commonstorage.h"
13
14 #include "databaselayer.h"
15 #include "microsoftdblayer.h"
16 #include "mysqllayer.h"
17 #include "postgreslayer.h"
18
19 #ifdef _DEBUG
20 #define new DEBUG_NEW
21 #endif
22
23
24 // CAboutDlg dialog used for App About
25
26 class CAboutDlg : public CDialog
27 {
28 public:
29 CAboutDlg();
30
31 // Dialog Data
32 enum { IDD = IDD_ABOUTBOX };
33
34 protected:
35 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
36
37 // Implementation
38 protected:
39 DECLARE_MESSAGE_MAP()
40 };
41
42 CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
43 {
44 }
45
46 void CAboutDlg::DoDataExchange(CDataExchange* pDX)
47 {
48 CDialog::DoDataExchange(pDX);
49 }
50
51 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
52 END_MESSAGE_MAP()
53
54
55 // Ch6udlnssystemDlg dialog
56
57
58
59 Ch6udlnssystemDlg::Ch6udlnssystemDlg(CWnd* pParent /*=NULL*/)
60 : CDialog(Ch6udlnssystemDlg::IDD, pParent)
61 {
62 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
63 }
64
65 void Ch6udlnssystemDlg::DoDataExchange(CDataExchange* pDX)
66 {
67 CDialog::DoDataExchange(pDX);
68 DDX_Control(pDX, IDC_TAB, m_tabs);
69 }
70
71 BEGIN_MESSAGE_MAP(Ch6udlnssystemDlg, CDialog)
72 ON_WM_SYSCOMMAND()
73 ON_WM_PAINT()
74 ON_WM_QUERYDRAGICON()
75 //}}AFX_MSG_MAP
76 ON_COMMAND(ID_HELP_ABOUT, OnHelpAbout)
77 ON_COMMAND(ID_FILE_EXIT, OnFileExit)
78 END_MESSAGE_MAP()
79
80
81 // Ch6udlnssystemDlg message handlers
82
83 BOOL Ch6udlnssystemDlg::OnInitDialog()
84 {
85 CDialog::OnInitDialog();
86 CWaitCursor wait;
87
88 // Add "About..." menu item to system menu.
89
90 // IDM_ABOUTBOX must be in the system command range.
91 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
92 ASSERT(IDM_ABOUTBOX < 0xF000);
93
94 CMenu* pSysMenu = GetSystemMenu(FALSE);
95 if (pSysMenu != NULL)
96 {
97 CString strAboutMenu;
98 strAboutMenu.LoadString(IDS_ABOUTBOX);
99 if (!strAboutMenu.IsEmpty())
100 {
101 pSysMenu->AppendMenu(MF_SEPARATOR);
102 pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
103 }
104 }
105
106 // Set the icon for this dialog. The framework does this automatically
107 // when the application's main window is not a dialog
108 SetIcon(m_hIcon, TRUE); // Set big icon
109 SetIcon(m_hIcon, FALSE); // Set small icon
110
111 m_tabs.InsertItem(0,"Search");
112 m_tabs.InsertItem(1,"Result");
113 m_tabs.InsertItem(2,"Administration");
114 m_tabs.Init();
115 m_tabs.SetCurSel(0);
116
117 ConfigFile config;
118 try {
119 config.Read();
120 } catch(...) {
121 MessageBox("Could not open config file");
122 OnOK();
123 return true;
124 }
125
126 try {
127 DatabaseLayer *dbl = 0;
128 if (config.driver.MakeLower() == "mysql")
129 dbl = new MySQLLayer(config);
130 else if (config.driver.MakeLower() == "postgresql")
131 dbl = new PostgresLayer(config);
132 else if (config.driver.MakeLower() == "microsoftsql")
133 dbl = new MicrosoftDBLayer(config);
134 else {
135 CString tmp;
136 tmp.Format("Unsupported driver: %s", config.driver);
137 MessageBox(tmp);
138 OnOK();
139 }
140 CommonStorage::Instance()->setDBLayer(dbl);
141 } catch (CDBException *ex) {
142 MessageBox(CString("Could not establish connection to the database server\r\n") +
143 "Please contact your network administrator\r\n\r\n" +
144 "ODBC Returned the following message:\r\n" +
145 ex->m_strError);
146
147 OnOK();
148 } catch (...) {
149 MessageBox("Unknown DB exception");
150 OnOK();
151 }
152
153 CString title = "H6-Udlånssystem - ";
154 title += config.driver;
155 SetWindowText(title);
156
157 // TODO: Add extra initialization here
158
159 return TRUE; // return TRUE unless you set the focus to a control
160 }
161
162 void Ch6udlnssystemDlg::OnSysCommand(UINT nID, LPARAM lParam)
163 {
164 if ((nID & 0xFFF0) == IDM_ABOUTBOX)
165 {
166 CAboutDlg dlgAbout;
167 dlgAbout.DoModal();
168 }
169 else
170 {
171 CDialog::OnSysCommand(nID, lParam);
172 }
173 }
174
175 // If you add a minimize button to your dialog, you will need the code below
176 // to draw the icon. For MFC applications using the document/view model,
177 // this is automatically done for you by the framework.
178
179 void Ch6udlnssystemDlg::OnPaint()
180 {
181 if (IsIconic())
182 {
183 CPaintDC dc(this); // device context for painting
184
185 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
186
187 // Center icon in client rectangle
188 int cxIcon = GetSystemMetrics(SM_CXICON);
189 int cyIcon = GetSystemMetrics(SM_CYICON);
190 CRect rect;
191 GetClientRect(&rect);
192 int x = (rect.Width() - cxIcon + 1) / 2;
193 int y = (rect.Height() - cyIcon + 1) / 2;
194
195 // Draw the icon
196 dc.DrawIcon(x, y, m_hIcon);
197 }
198 else
199 {
200 CDialog::OnPaint();
201 }
202 }
203
204 // The system calls this function to obtain the cursor to display while the user drags
205 // the minimized window.
206 HCURSOR Ch6udlnssystemDlg::OnQueryDragIcon()
207 {
208 return static_cast<HCURSOR>(m_hIcon);
209 }
210
211 void Ch6udlnssystemDlg::OnHelpAbout()
212 {
213 CAboutDlg about;
214 about.DoModal();
215 }
216
217 void Ch6udlnssystemDlg::OnFileExit()
218 {
219 // TODO: Add your command handler code here
220 OnOK();
221 }

  ViewVC Help
Powered by ViewVC 1.1.20