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

Contents of /h6-udlånssystemDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 60 - (show annotations) (download)
Mon Oct 22 13:00:14 2007 UTC (16 years, 4 months ago) by torben
File size: 5006 byte(s)
Refactored the database layer classes. Pushed most of the functions to the parent class.
1 /*
2 * Developed by Torben H. Nielsen
3 */
4
5
6 #include "stdafx.h"
7 #include "h6-udlnssystem.h"
8 #include "h6-udlnssystemDlg.h"
9 #include ".\h6-udlnssystemdlg.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 DatabaseLayer *dbl = 0;
127 try {
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 } catch (CDBException *ex) {
141 MessageBox(CString("Could not establish connection to the database server\r\n") +
142 "Please contact your network administrator\r\n\r\n" +
143 "ODBC Returned the following message:\r\n" +
144 ex->m_strError);
145
146 OnOK();
147 } catch (...) {
148 MessageBox("Unknown DB exception");
149 OnOK();
150 }
151
152 CommonStorage::Instance()->setDBLayer(dbl);
153
154 CString title = "H6-Udlnssystem - ";
155 title += config.driver;
156 SetWindowText(title);
157
158 // TODO: Add extra initialization here
159
160 return TRUE; // return TRUE unless you set the focus to a control
161 }
162
163 void Ch6udlnssystemDlg::OnSysCommand(UINT nID, LPARAM lParam)
164 {
165 if ((nID & 0xFFF0) == IDM_ABOUTBOX)
166 {
167 CAboutDlg dlgAbout;
168 dlgAbout.DoModal();
169 }
170 else
171 {
172 CDialog::OnSysCommand(nID, lParam);
173 }
174 }
175
176 // If you add a minimize button to your dialog, you will need the code below
177 // to draw the icon. For MFC applications using the document/view model,
178 // this is automatically done for you by the framework.
179
180 void Ch6udlnssystemDlg::OnPaint()
181 {
182 if (IsIconic())
183 {
184 CPaintDC dc(this); // device context for painting
185
186 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
187
188 // Center icon in client rectangle
189 int cxIcon = GetSystemMetrics(SM_CXICON);
190 int cyIcon = GetSystemMetrics(SM_CYICON);
191 CRect rect;
192 GetClientRect(&rect);
193 int x = (rect.Width() - cxIcon + 1) / 2;
194 int y = (rect.Height() - cyIcon + 1) / 2;
195
196 // Draw the icon
197 dc.DrawIcon(x, y, m_hIcon);
198 }
199 else
200 {
201 CDialog::OnPaint();
202 }
203 }
204
205 // The system calls this function to obtain the cursor to display while the user drags
206 // the minimized window.
207 HCURSOR Ch6udlnssystemDlg::OnQueryDragIcon()
208 {
209 return static_cast<HCURSOR>(m_hIcon);
210 }
211
212 void Ch6udlnssystemDlg::OnHelpAbout()
213 {
214 CAboutDlg about;
215 about.DoModal();
216 }
217
218 void Ch6udlnssystemDlg::OnFileExit()
219 {
220 // TODO: Add your command handler code here
221 OnOK();
222 }

  ViewVC Help
Powered by ViewVC 1.1.20