1 /////////////////////////////////////////
2 //
3 //             OpenLieroX
4 //
5 // code under LGPL, based on JasonBs work,
6 // enhanced by Dark Charlie and Albert Zeyer
7 //
8 //
9 /////////////////////////////////////////
10 
11 
12 // Net menu - News
13 // Created 12/8/02
14 // Jason Boettcher
15 
16 
17 #include "LieroX.h"
18 #include "FindFile.h"
19 #include "Sounds.h"
20 #include "DeprecatedGUI/Graphics.h"
21 #include "DeprecatedGUI/Menu.h"
22 #include "GfxPrimitives.h"
23 #include "DeprecatedGUI/CButton.h"
24 #include "DeprecatedGUI/CBrowser.h"
25 #include "DeprecatedGUI/CListview.h"
26 #include "HTTP.h"
27 #include "StringUtils.h"
28 #include "AuxLib.h"
29 
30 
31 namespace DeprecatedGUI {
32 
33 static CGuiLayout	cNews;
34 std::string strNewsPage;
35 
36 enum {
37 	nw_Back = 0,
38 	nw_NewsBrowser,
39 	nw_Refresh,
40 };
41 
42 
43 ///////////////////
44 // Initialize the news net menu
Menu_Net_NewsInitialize()45 bool Menu_Net_NewsInitialize()
46 {
47 	iNetMode = net_news;
48 
49 	// Setup the gui layout
50 	cNews.Shutdown();
51 	cNews.Initialize();
52 
53 	cNews.Add( new CButton(BUT_BACK, tMenu->bmpButtons), nw_Back, 25,440, 50,15);
54 	cNews.Add( new CButton(BUT_REFRESH, tMenu->bmpButtons), nw_Refresh, 520,440, 50,15);
55 	cNews.Add( new CBrowser(), nw_NewsBrowser, 50, 160, 540, 260);
56 
57 	Menu_Net_AddTabBarButtons(&cNews);
58 
59 	// Get the news page
60 	FILE *fp = OpenGameFile("cfg/newsserver.txt", "r");
61 	if (fp)  {
62 		strNewsPage = ReadUntil(fp, '\n');
63 		fclose(fp);
64 	} else {
65 		strNewsPage = "http://openlierox.sourceforge.net/news.php"; // Default
66 	}
67 
68 	// Load the news
69 	CBrowser *b = (CBrowser *)cNews.getWidget(nw_NewsBrowser);
70 	b->LoadFromHTTP(strNewsPage);
71 
72 
73 	return true;
74 }
75 
76 //////////////////
77 // Shutdown the news menu
Menu_Net_NewsShutdown()78 void Menu_Net_NewsShutdown()
79 {
80 	cNews.Shutdown();
81 }
82 
83 
84 ///////////////////
85 // The net news menu frame
Menu_Net_NewsFrame(int mouse)86 void Menu_Net_NewsFrame(int mouse)
87 {
88 	gui_event_t *ev = NULL;
89 
90 	// Process the HTTP transfer
91 	CBrowser *news = (CBrowser *)cNews.getWidget(nw_NewsBrowser);
92 	news->ProcessHTTP();
93 
94 
95 	// Process & Draw the gui
96 	ev = cNews.Process();
97 	cNews.Draw( VideoPostProcessor::videoSurface() );
98 
99 	if (Menu_Net_ProcessTabBarButtons(ev))
100 		return;
101 
102 	// Process any events
103 	if(ev) {
104 
105 		switch(ev->iControlID) {
106 
107 			// Back
108 			case nw_Back:
109 				if(ev->iEventMsg == BTN_CLICKED) {
110 
111 					// Click!
112 					PlaySoundSample(sfxGeneral.smpClick);
113 
114 					// Shutdown
115 					Menu_Net_NewsShutdown();
116 
117 					// Back to main menu
118 					Menu_MainInitialize();
119 				}
120 				break;
121 
122 			// Update
123 			case nw_Refresh:
124 				if(ev->iEventMsg == BTN_CLICKED) {
125 
126 					// Click!
127 					PlaySoundSample(sfxGeneral.smpClick);
128 
129 					((CBrowser *)cNews.getWidget(nw_NewsBrowser))->LoadFromHTTP(strNewsPage);
130 				}
131 				break;
132 		}
133 
134 	}
135 
136 
137 	// Draw the mouse
138 	DrawCursor(VideoPostProcessor::videoSurface());
139 }
140 
141 }; // namespace DeprecatedGUI
142