1 /*****************************************************************************
\r
2 * network.cpp: the "network" dialog box
\r
3 *****************************************************************************
\r
4 * Copyright (C) 2002 VideoLAN
\r
6 * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>
\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
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
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
26 #include <videolan/vlc.h>
\r
28 #include "stream_control.h"
\r
29 #include "input_ext-intf.h"
\r
31 #include "interface.h"
\r
32 #include "intf_playlist.h"
\r
34 #include "network.h"
\r
35 #include "win32_common.h"
\r
37 #include "netutils.h"
\r
39 //---------------------------------------------------------------------------
\r
40 //#pragma package(smart_init)
\r
41 #pragma link "CSPIN"
\r
42 #pragma resource "*.dfm"
\r
44 extern struct intf_thread_s *p_intfGlobal;
\r
46 //---------------------------------------------------------------------------
\r
47 __fastcall TNetworkDlg::TNetworkDlg( TComponent* Owner )
\r
50 char *psz_channel_server;
\r
55 SpinEditUDPPort->Value = config_GetIntVariable( "server-port" );
\r
56 SpinEditMulticastPort->Value = config_GetIntVariable( "server-port" );
\r
58 /* channel server */
\r
59 if( config_GetIntVariable( "network-channel" ) )
\r
61 RadioButtonCS->Checked = true;
\r
62 RadioButtonCSEnter( RadioButtonCS );
\r
65 psz_channel_server = config_GetPszVariable( "channel-server" );
\r
66 if( psz_channel_server )
\r
68 ComboBoxCSAddress->Text = psz_channel_server;
\r
69 free( psz_channel_server );
\r
72 SpinEditCSPort->Value = config_GetIntVariable( "channel-port" );
\r
74 //---------------------------------------------------------------------------
\r
75 void __fastcall TNetworkDlg::FormShow( TObject *Sender )
\r
77 p_intfGlobal->p_sys->p_window->MenuNetworkStream->Checked = true;
\r
78 p_intfGlobal->p_sys->p_window->PopupNetworkStream->Checked = true;
\r
80 //---------------------------------------------------------------------------
\r
81 void __fastcall TNetworkDlg::FormHide( TObject *Sender )
\r
83 p_intfGlobal->p_sys->p_window->MenuNetworkStream->Checked = false;
\r
84 p_intfGlobal->p_sys->p_window->PopupNetworkStream->Checked = false;
\r
86 //---------------------------------------------------------------------------
\r
87 void __fastcall TNetworkDlg::BitBtnCancelClick( TObject *Sender )
\r
91 //---------------------------------------------------------------------------
\r
92 void __fastcall TNetworkDlg::BitBtnOkClick( TObject *Sender )
\r
94 AnsiString Source, Address;
\r
95 AnsiString Channel = ComboBoxCSAddress->Text;
\r
96 unsigned int i_channel_port = SpinEditCSPort->Value;
\r
97 unsigned int i_port;
\r
98 int i_end = p_main->p_playlist->i_size;
\r
102 /* select added item */
\r
103 if( p_input_bank->pp_input[0] != NULL )
\r
105 p_input_bank->pp_input[0]->b_eof = 1;
\r
108 /* Check which option was chosen */
\r
109 switch( OldRadioValue )
\r
113 config_PutIntVariable( "network-channel", FALSE );
\r
114 i_port = SpinEditUDPPort->Value;
\r
116 /* Build source name */
\r
117 Source = "udp:@:" + IntToStr( i_port );
\r
119 intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, Source.c_str() );
\r
121 /* update the display */
\r
122 p_intfGlobal->p_sys->p_playlist->UpdateGrid( p_main->p_playlist );
\r
124 intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
\r
127 /* UDP Multicast */
\r
129 config_PutIntVariable( "network-channel", FALSE );
\r
130 Address = ComboBoxMulticastAddress->Text;
\r
131 i_port = SpinEditMulticastPort->Value;
\r
133 /* Build source name */
\r
134 Source = "udp:@" + Address + ":" + IntToStr( i_port );
\r
136 intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, Source.c_str() );
\r
138 /* update the display */
\r
139 p_intfGlobal->p_sys->p_playlist->UpdateGrid( p_main->p_playlist );
\r
141 intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
\r
144 /* Channel server */
\r
146 config_PutIntVariable( "network-channel", TRUE );
\r
147 config_PutPszVariable( "channel-server", Channel.c_str() );
\r
148 config_PutIntVariable( "channel-port", i_channel_port );
\r
150 if( p_main->p_channel == NULL )
\r
152 network_ChannelCreate();
\r
155 p_intfGlobal->p_sys->b_playing = 1;
\r
160 config_PutIntVariable( "network-channel", FALSE );
\r
161 Address = EditHTTPURL->Text;
\r
163 /* Build source name */
\r
164 Source = "http:" + Address;
\r
166 intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, Source.c_str() );
\r
168 /* update the display */
\r
169 p_intfGlobal->p_sys->p_playlist->UpdateGrid( p_main->p_playlist );
\r
171 intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
\r
175 //---------------------------------------------------------------------------
\r
176 void __fastcall TNetworkDlg::ChangeEnabled( int i_selected )
\r
178 switch( i_selected )
\r
181 LabelUDPPort->Enabled = NOT( LabelUDPPort->Enabled );
\r
182 SpinEditUDPPort->Enabled = NOT( SpinEditUDPPort->Enabled );
\r
185 LabelMulticastAddress->Enabled =
\r
186 NOT( LabelMulticastAddress->Enabled );
\r
187 ComboBoxMulticastAddress->Enabled =
\r
188 NOT( ComboBoxMulticastAddress->Enabled );
\r
189 LabelMulticastPort->Enabled = NOT( LabelMulticastPort->Enabled );
\r
190 SpinEditMulticastPort->Enabled = NOT( SpinEditMulticastPort->Enabled );
\r
193 LabelCSAddress->Enabled = NOT( LabelCSAddress->Enabled );
\r
194 ComboBoxCSAddress->Enabled = NOT( ComboBoxCSAddress->Enabled );
\r
195 LabelCSPort->Enabled = NOT( LabelCSPort->Enabled );
\r
196 SpinEditCSPort->Enabled = NOT( SpinEditCSPort->Enabled );
\r
199 LabelHTTPURL->Enabled = NOT( LabelHTTPURL->Enabled );
\r
200 EditHTTPURL->Enabled = NOT( EditHTTPURL->Enabled );
\r
204 //---------------------------------------------------------------------------
\r
205 void __fastcall TNetworkDlg::RadioButtonUDPEnter( TObject *Sender )
\r
207 ChangeEnabled( OldRadioValue );
\r
209 ChangeEnabled( OldRadioValue );
\r
211 //---------------------------------------------------------------------------
\r
212 void __fastcall TNetworkDlg::RadioButtonMulticastEnter( TObject *Sender )
\r
214 ChangeEnabled( OldRadioValue );
\r
216 ChangeEnabled( OldRadioValue );
\r
218 //---------------------------------------------------------------------------
\r
219 void __fastcall TNetworkDlg::RadioButtonCSEnter( TObject *Sender )
\r
221 ChangeEnabled( OldRadioValue );
\r
223 ChangeEnabled( OldRadioValue );
\r
225 //---------------------------------------------------------------------------
\r
226 void __fastcall TNetworkDlg::RadioButtonHTTPEnter( TObject *Sender )
\r
228 ChangeEnabled( OldRadioValue );
\r
230 ChangeEnabled( OldRadioValue );
\r
232 //---------------------------------------------------------------------------
\r