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

Contents of /h6-udlånssystemDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 53 - (show annotations) (download)
Mon Sep 11 14:02:08 2006 UTC (17 years, 7 months ago) by torben
File size: 4834 byte(s)
On config-file error, make sure the application shuts down immediately
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 (...) {
142 MessageBox(CString("Could not establish connection to the database server\r\n") +
143 "Please contact your network administrator");
144 OnOK();
145 }
146
147 CString title = "H6-Udlånssystem - ";
148 title += config.driver;
149 SetWindowText(title);
150
151 // TODO: Add extra initialization here
152
153 return TRUE; // return TRUE unless you set the focus to a control
154 }
155
156 void Ch6udlnssystemDlg::OnSysCommand(UINT nID, LPARAM lParam)
157 {
158 if ((nID & 0xFFF0) == IDM_ABOUTBOX)
159 {
160 CAboutDlg dlgAbout;
161 dlgAbout.DoModal();
162 }
163 else
164 {
165 CDialog::OnSysCommand(nID, lParam);
166 }
167 }
168
169 // If you add a minimize button to your dialog, you will need the code below
170 // to draw the icon. For MFC applications using the document/view model,
171 // this is automatically done for you by the framework.
172
173 void Ch6udlnssystemDlg::OnPaint()
174 {
175 if (IsIconic())
176 {
177 CPaintDC dc(this); // device context for painting
178
179 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
180
181 // Center icon in client rectangle
182 int cxIcon = GetSystemMetrics(SM_CXICON);
183 int cyIcon = GetSystemMetrics(SM_CYICON);
184 CRect rect;
185 GetClientRect(&rect);
186 int x = (rect.Width() - cxIcon + 1) / 2;
187 int y = (rect.Height() - cyIcon + 1) / 2;
188
189 // Draw the icon
190 dc.DrawIcon(x, y, m_hIcon);
191 }
192 else
193 {
194 CDialog::OnPaint();
195 }
196 }
197
198 // The system calls this function to obtain the cursor to display while the user drags
199 // the minimized window.
200 HCURSOR Ch6udlnssystemDlg::OnQueryDragIcon()
201 {
202 return static_cast<HCURSOR>(m_hIcon);
203 }
204
205 void Ch6udlnssystemDlg::OnHelpAbout()
206 {
207 CAboutDlg about;
208 about.DoModal();
209 }
210
211 void Ch6udlnssystemDlg::OnFileExit()
212 {
213 // TODO: Add your command handler code here
214 OnOK();
215 }

  ViewVC Help
Powered by ViewVC 1.1.20