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

Annotation of /h6-udlånssystemDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 60 - (hide annotations) (download)
Mon Oct 22 13:00:14 2007 UTC (16 years, 6 months ago) by torben
File size: 5006 byte(s)
Refactored the database layer classes. Pushed most of the functions to the parent class.
1 torben 31 /*
2     * Developed by Torben H. Nielsen
3     */
4 torben 1
5 torben 31
6 torben 1 #include "stdafx.h"
7     #include "h6-udlånssystem.h"
8     #include "h6-udlånssystemDlg.h"
9 torben 3 #include ".\h6-udlånssystemdlg.h"
10 torben 1
11 torben 47 #include "ConfigFile.h"
12 torben 9 #include "commonstorage.h"
13 torben 47
14 torben 9 #include "databaselayer.h"
15 torben 41 #include "microsoftdblayer.h"
16     #include "mysqllayer.h"
17 torben 47 #include "postgreslayer.h"
18 torben 9
19 torben 1 #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 torben 4 DDX_Control(pDX, IDC_TAB, m_tabs);
69 torben 1 }
70    
71     BEGIN_MESSAGE_MAP(Ch6udlnssystemDlg, CDialog)
72     ON_WM_SYSCOMMAND()
73     ON_WM_PAINT()
74     ON_WM_QUERYDRAGICON()
75     //}}AFX_MSG_MAP
76 torben 3 ON_COMMAND(ID_HELP_ABOUT, OnHelpAbout)
77 torben 9 ON_COMMAND(ID_FILE_EXIT, OnFileExit)
78 torben 1 END_MESSAGE_MAP()
79    
80    
81     // Ch6udlnssystemDlg message handlers
82    
83     BOOL Ch6udlnssystemDlg::OnInitDialog()
84     {
85     CDialog::OnInitDialog();
86 torben 30 CWaitCursor wait;
87 torben 1
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 torben 4 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 torben 47 ConfigFile config;
118     try {
119     config.Read();
120     } catch(...) {
121     MessageBox("Could not open config file");
122     OnOK();
123 torben 53 return true;
124 torben 47 }
125 torben 9
126 torben 60 DatabaseLayer *dbl = 0;
127 torben 23 try {
128 torben 47 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 torben 57 } catch (CDBException *ex) {
141 torben 23 MessageBox(CString("Could not establish connection to the database server\r\n") +
142 torben 57 "Please contact your network administrator\r\n\r\n" +
143     "ODBC Returned the following message:\r\n" +
144     ex->m_strError);
145    
146 torben 23 OnOK();
147 torben 57 } catch (...) {
148     MessageBox("Unknown DB exception");
149     OnOK();
150 torben 23 }
151 torben 9
152 torben 60 CommonStorage::Instance()->setDBLayer(dbl);
153    
154 torben 48 CString title = "H6-Udlånssystem - ";
155     title += config.driver;
156     SetWindowText(title);
157 torben 9
158 torben 1 // 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 torben 3
212     void Ch6udlnssystemDlg::OnHelpAbout()
213     {
214 torben 34 CAboutDlg about;
215     about.DoModal();
216 torben 3 }
217 torben 9
218     void Ch6udlnssystemDlg::OnFileExit()
219     {
220     // TODO: Add your command handler code here
221     OnOK();
222     }

  ViewVC Help
Powered by ViewVC 1.1.20