]> git.sesse.net Git - vlc/blob - modules/gui/win32/network.cpp
* ./modules/*: moved plugins to the new tree. Yet untested builds include
[vlc] / modules / gui / win32 / network.cpp
1 /*****************************************************************************\r
2  * network.cpp: the "network" dialog box\r
3  *****************************************************************************\r
4  * Copyright (C) 2002 VideoLAN\r
5  *\r
6  * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
7  *\r
8  * This program is free software; you can redistribute it and/or modify\r
9  * it under the terms of the GNU General Public License as published by\r
10  * the Free Software Foundation; either version 2 of the License, or\r
11  * (at your option) any later version.\r
12  * \r
13  * This program is distributed in the hope that it will be useful,\r
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
16  * GNU General Public License for more details.\r
17  *\r
18  * You should have received a copy of the GNU General Public License\r
19  * along with this program; if not, write to the Free Software\r
20  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.\r
21  *****************************************************************************/\r
22 \r
23 #include <vcl.h>\r
24 #pragma hdrstop\r
25 \r
26 #include <vlc/vlc.h>\r
27 #include <vlc/intf.h>\r
28 \r
29 #include "network.h"\r
30 #include "win32_common.h"\r
31 \r
32 #include "netutils.h"\r
33 \r
34 //---------------------------------------------------------------------------\r
35 //#pragma package(smart_init)\r
36 #pragma link "CSPIN"\r
37 #pragma resource "*.dfm"\r
38 \r
39 extern intf_thread_t *p_intfGlobal;\r
40 \r
41 //---------------------------------------------------------------------------\r
42 __fastcall TNetworkDlg::TNetworkDlg( TComponent* Owner )\r
43         : TForm( Owner )\r
44 {\r
45         char *psz_channel_server;\r
46 \r
47         OldRadioValue = 0;\r
48 \r
49         /* server port */\r
50         SpinEditUDPPort->Value = config_GetInt( p_intfGlobal, "server-port" );\r
51         SpinEditMulticastPort->Value = config_GetInt( p_intfGlobal, "server-port" );\r
52 \r
53         /* channel server */\r
54         if( config_GetInt( p_intfGlobal, "network-channel" ) )\r
55         {\r
56             RadioButtonCS->Checked = true;\r
57             RadioButtonCSEnter( RadioButtonCS );\r
58         }\r
59 \r
60         psz_channel_server = config_GetPsz( p_intfGlobal, "channel-server" );\r
61         if( psz_channel_server )\r
62         {\r
63             ComboBoxCSAddress->Text = psz_channel_server;\r
64             free( psz_channel_server );\r
65         }\r
66 \r
67         SpinEditCSPort->Value = config_GetInt( p_intfGlobal, "channel-port" );\r
68 }\r
69 //---------------------------------------------------------------------------\r
70 void __fastcall TNetworkDlg::FormShow( TObject *Sender )\r
71 {\r
72     p_intfGlobal->p_sys->p_window->MenuNetworkStream->Checked = true;\r
73     p_intfGlobal->p_sys->p_window->PopupNetworkStream->Checked = true;\r
74 }\r
75 //---------------------------------------------------------------------------\r
76 void __fastcall TNetworkDlg::FormHide( TObject *Sender )\r
77 {\r
78     p_intfGlobal->p_sys->p_window->MenuNetworkStream->Checked = false;\r
79     p_intfGlobal->p_sys->p_window->PopupNetworkStream->Checked = false;\r
80 }\r
81 //---------------------------------------------------------------------------\r
82 void __fastcall TNetworkDlg::BitBtnCancelClick( TObject *Sender )\r
83 {\r
84     Hide();\r
85 }\r
86 //---------------------------------------------------------------------------\r
87 void __fastcall TNetworkDlg::BitBtnOkClick( TObject *Sender )\r
88 {\r
89     AnsiString      Source, Address;\r
90     AnsiString      Channel = ComboBoxCSAddress->Text;\r
91     unsigned int    i_channel_port = SpinEditCSPort->Value;\r
92     unsigned int    i_port;\r
93     playlist_t *    p_playlist;\r
94 \r
95     p_playlist = (playlist_t *)\r
96         vlc_object_find( p_intfGlobal, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );\r
97     if( p_playlist == NULL )\r
98     {   \r
99         return;\r
100     }                        \r
101 \r
102     Hide();\r
103 \r
104     /* Check which option was chosen */\r
105     switch( OldRadioValue )\r
106     {\r
107         /* UDP */\r
108         case 0:\r
109             config_PutInt( p_intfGlobal, "network-channel", FALSE );\r
110             i_port = SpinEditUDPPort->Value;\r
111 \r
112             /* Build source name */\r
113             Source = "udp:@:" + IntToStr( i_port );\r
114 \r
115             playlist_Add( p_playlist, Source.c_str(),\r
116                           PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );\r
117 \r
118             /* update the display */\r
119             p_intfGlobal->p_sys->p_playwin->UpdateGrid( p_playlist );\r
120             break;\r
121 \r
122         /* UDP Multicast */\r
123         case 1:\r
124             config_PutInt( p_intfGlobal, "network-channel", FALSE );\r
125             Address = ComboBoxMulticastAddress->Text;\r
126             i_port = SpinEditMulticastPort->Value;\r
127 \r
128             /* Build source name */\r
129             Source = "udp:@" + Address + ":" + IntToStr( i_port );\r
130 \r
131             playlist_Add( p_playlist, Source.c_str(),\r
132                           PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );\r
133 \r
134             /* update the display */\r
135             p_intfGlobal->p_sys->p_playwin->UpdateGrid( p_playlist );\r
136             break;\r
137 \r
138         /* Channel server */\r
139         case 2:\r
140             config_PutInt( p_intfGlobal, "network-channel", TRUE );\r
141             config_PutPsz( p_intfGlobal, "channel-server", Channel.c_str() );\r
142             config_PutInt( p_intfGlobal, "channel-port", i_channel_port );\r
143 \r
144             if( p_intfGlobal->p_vlc->p_channel == NULL )\r
145             {\r
146                 network_ChannelCreate( p_intfGlobal );\r
147             }\r
148 \r
149             p_intfGlobal->p_sys->b_playing = 1;\r
150             break;\r
151 \r
152         /* HTTP */\r
153         case 3:\r
154             config_PutInt( p_intfGlobal, "network-channel", FALSE );\r
155             Address = EditHTTPURL->Text;\r
156 \r
157             /* Build source name with a basic test */\r
158             if( Address.SubString( 1, 4 ) == "http" )\r
159             {\r
160                 Source = Address;\r
161             }\r
162             else\r
163             {\r
164                 Source = "http://" + Address;\r
165             }\r
166 \r
167             playlist_Add( p_playlist, Source.c_str(),\r
168                           PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );\r
169 \r
170             /* update the display */\r
171             p_intfGlobal->p_sys->p_playwin->UpdateGrid( p_playlist );\r
172             break;\r
173     }\r
174 \r
175     vlc_object_release( p_playlist );\r
176 }\r
177 //---------------------------------------------------------------------------\r
178 void __fastcall TNetworkDlg::ChangeEnabled( int i_selected )\r
179 {\r
180     switch( i_selected )\r
181     {\r
182         case 0:\r
183             LabelUDPPort->Enabled = NOT( LabelUDPPort->Enabled );\r
184             SpinEditUDPPort->Enabled = NOT( SpinEditUDPPort->Enabled );\r
185             break;\r
186         case 1:\r
187             LabelMulticastAddress->Enabled =\r
188                     NOT( LabelMulticastAddress->Enabled );\r
189             ComboBoxMulticastAddress->Enabled =\r
190                     NOT( ComboBoxMulticastAddress->Enabled );\r
191             LabelMulticastPort->Enabled = NOT( LabelMulticastPort->Enabled );\r
192             SpinEditMulticastPort->Enabled = NOT( SpinEditMulticastPort->Enabled );\r
193             break;\r
194         case 2:\r
195             LabelCSAddress->Enabled = NOT( LabelCSAddress->Enabled );\r
196             ComboBoxCSAddress->Enabled = NOT( ComboBoxCSAddress->Enabled );\r
197             LabelCSPort->Enabled = NOT( LabelCSPort->Enabled );\r
198             SpinEditCSPort->Enabled = NOT( SpinEditCSPort->Enabled );\r
199             break;\r
200         case 3:\r
201             LabelHTTPURL->Enabled = NOT( LabelHTTPURL->Enabled );\r
202             EditHTTPURL->Enabled = NOT( EditHTTPURL->Enabled );\r
203             break;\r
204     }\r
205 }\r
206 //---------------------------------------------------------------------------\r
207 void __fastcall TNetworkDlg::RadioButtonUDPEnter( TObject *Sender )\r
208 {\r
209     ChangeEnabled( OldRadioValue );\r
210     OldRadioValue = 0;\r
211     ChangeEnabled( OldRadioValue );\r
212 }\r
213 //---------------------------------------------------------------------------\r
214 void __fastcall TNetworkDlg::RadioButtonMulticastEnter( TObject *Sender )\r
215 {\r
216     ChangeEnabled( OldRadioValue );\r
217     OldRadioValue = 1;\r
218     ChangeEnabled( OldRadioValue );\r
219 }\r
220 //---------------------------------------------------------------------------\r
221 void __fastcall TNetworkDlg::RadioButtonCSEnter( TObject *Sender )\r
222 {\r
223     ChangeEnabled( OldRadioValue );\r
224     OldRadioValue = 2;\r
225     ChangeEnabled( OldRadioValue );\r
226 }\r
227 //---------------------------------------------------------------------------\r
228 void __fastcall TNetworkDlg::RadioButtonHTTPEnter( TObject *Sender )\r
229 {\r
230     ChangeEnabled( OldRadioValue );\r
231     OldRadioValue = 3;\r
232     ChangeEnabled( OldRadioValue );\r
233 }\r
234 //---------------------------------------------------------------------------\r
235 \r