BSD-style license.
[olsrd.git] / gui / win32 / Main / MyTabCtrl.cpp
1 /*\r
2  * The olsr.org Optimized Link-State Routing daemon (olsrd)\r
3  * Copyright (c) 2004, Thomas Lopatic (thomas@lopatic.de)\r
4  * All rights reserved.\r
5  *\r
6  * Redistribution and use in source and binary forms, with or without \r
7  * modification, are permitted provided that the following conditions \r
8  * are met:\r
9  *\r
10  * * Redistributions of source code must retain the above copyright \r
11  *   notice, this list of conditions and the following disclaimer.\r
12  * * Redistributions in binary form must reproduce the above copyright \r
13  *   notice, this list of conditions and the following disclaimer in \r
14  *   the documentation and/or other materials provided with the \r
15  *   distribution.\r
16  * * Neither the name of olsr.org, olsrd nor the names of its \r
17  *   contributors may be used to endorse or promote products derived \r
18  *   from this software without specific prior written permission.\r
19  *\r
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \r
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT \r
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS \r
23  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE \r
24  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, \r
25  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, \r
26  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; \r
27  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER \r
28  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT \r
29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN \r
30  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \r
31  * POSSIBILITY OF SUCH DAMAGE.\r
32  *\r
33  * Visit http://www.olsr.org for more information.\r
34  *\r
35  * If you find this software useful feel free to make a donation\r
36  * to the project. For more information see the website or contact\r
37  * the copyright holders.\r
38  *\r
39  * $Id: MyTabCtrl.cpp,v 1.4 2004/11/21 01:21:10 tlopatic Exp $\r
40  */\r
41 \r
42 #include "stdafx.h"\r
43 #include "Frontend.h"\r
44 #include "MyTabCtrl.h"\r
45 \r
46 #ifdef _DEBUG\r
47 #define new DEBUG_NEW\r
48 #undef THIS_FILE\r
49 static char THIS_FILE[] = __FILE__;\r
50 #endif\r
51 \r
52 MyTabCtrl::MyTabCtrl()\r
53 {\r
54 }\r
55 \r
56 MyTabCtrl::~MyTabCtrl()\r
57 {\r
58 }\r
59 \r
60 BEGIN_MESSAGE_MAP(MyTabCtrl, CTabCtrl)\r
61         //{{AFX_MSG_MAP(MyTabCtrl)\r
62         ON_NOTIFY_REFLECT(TCN_SELCHANGE, OnSelchange)\r
63         //}}AFX_MSG_MAP\r
64 END_MESSAGE_MAP()\r
65 \r
66 void MyTabCtrl::InitTabDialogs(CStringArray *Interfaces,\r
67                                                            CStringArray *Addresses,\r
68                                                            CStringArray *IsWlan)\r
69 {\r
70         int i;\r
71         CRect Client;\r
72         CRect Win;\r
73 \r
74         m_Dialog2.Interfaces = Interfaces;\r
75         m_Dialog2.Addresses = Addresses;\r
76         m_Dialog2.IsWlan = IsWlan;\r
77 \r
78         m_Dialog1.Create(GetParent());\r
79         m_Dialog2.Create(GetParent());\r
80         m_Dialog3.Create(GetParent());\r
81         m_Dialog4.Create(GetParent());\r
82 \r
83         Dialogs[0] = &m_Dialog2;\r
84         Dialogs[1] = &m_Dialog1;\r
85         Dialogs[2] = &m_Dialog3;\r
86         Dialogs[3] = &m_Dialog4;\r
87 \r
88         Sel = -1;\r
89 \r
90         for (i = 0; i < 4; i++)\r
91         {\r
92                 GetClientRect(Client);\r
93                 AdjustRect(FALSE, Client);\r
94 \r
95                 GetWindowRect(Win);\r
96                 GetParent()->ScreenToClient(Win);\r
97 \r
98                 Client.OffsetRect(Win.left, Win.top);\r
99 \r
100                 Dialogs[i]->SetWindowPos(&wndTop, Client.left, Client.top,\r
101                         Client.Width(), Client.Height(), SWP_HIDEWINDOW);\r
102         }\r
103 \r
104         DisplayTabDialog();\r
105 }\r
106 \r
107 void MyTabCtrl::DisplayTabDialog()\r
108 {\r
109         if (Sel != -1)\r
110                 Dialogs[Sel]->ShowWindow(SW_HIDE);\r
111 \r
112         Sel = GetCurSel();\r
113 \r
114         Dialogs[Sel]->ShowWindow(SW_SHOW);\r
115 }\r
116 \r
117 void MyTabCtrl::OnSelchange(NMHDR* pNMHDR, LRESULT* pResult) \r
118 {\r
119         pNMHDR = pNMHDR;\r
120 \r
121         DisplayTabDialog();\r
122 \r
123         *pResult = 0;\r
124 }\r