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 <vlc/vlc.h>
\r
27 #include <vlc/intf.h>
\r
29 #include "network.h"
\r
30 #include "win32_common.h"
\r
32 #include "netutils.h"
\r
34 //---------------------------------------------------------------------------
\r
35 //#pragma package(smart_init)
\r
36 #pragma link "CSPIN"
\r
37 #pragma resource "*.dfm"
\r
39 extern intf_thread_t *p_intfGlobal;
\r
41 //---------------------------------------------------------------------------
\r
42 __fastcall TNetworkDlg::TNetworkDlg( TComponent* Owner )
\r
45 char *psz_channel_server;
\r
50 SpinEditUDPPort->Value = config_GetInt( p_intfGlobal, "server-port" );
\r
51 SpinEditMulticastPort->Value = config_GetInt( p_intfGlobal, "server-port" );
\r
53 /* channel server */
\r
54 if( config_GetInt( p_intfGlobal, "network-channel" ) )
\r
56 RadioButtonCS->Checked = true;
\r
57 RadioButtonCSEnter( RadioButtonCS );
\r
60 psz_channel_server = config_GetPsz( p_intfGlobal, "channel-server" );
\r
61 if( psz_channel_server )
\r
63 ComboBoxCSAddress->Text = psz_channel_server;
\r
64 free( psz_channel_server );
\r
67 SpinEditCSPort->Value = config_GetInt( p_intfGlobal, "channel-port" );
\r
69 //---------------------------------------------------------------------------
\r
70 void __fastcall TNetworkDlg::FormShow( TObject *Sender )
\r
72 p_intfGlobal->p_sys->p_window->MenuNetworkStream->Checked = true;
\r
73 p_intfGlobal->p_sys->p_window->PopupNetworkStream->Checked = true;
\r
75 //---------------------------------------------------------------------------
\r
76 void __fastcall TNetworkDlg::FormHide( TObject *Sender )
\r
78 p_intfGlobal->p_sys->p_window->MenuNetworkStream->Checked = false;
\r
79 p_intfGlobal->p_sys->p_window->PopupNetworkStream->Checked = false;
\r
81 //---------------------------------------------------------------------------
\r
82 void __fastcall TNetworkDlg::BitBtnCancelClick( TObject *Sender )
\r
86 //---------------------------------------------------------------------------
\r
87 void __fastcall TNetworkDlg::BitBtnOkClick( TObject *Sender )
\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
95 p_playlist = (playlist_t *)
\r
96 vlc_object_find( p_intfGlobal, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
\r
97 if( p_playlist == NULL )
\r
104 /* Check which option was chosen */
\r
105 switch( OldRadioValue )
\r
109 config_PutInt( p_intfGlobal, "network-channel", FALSE );
\r
110 i_port = SpinEditUDPPort->Value;
\r
112 /* Build source name */
\r
113 Source = "udp:@:" + IntToStr( i_port );
\r
115 playlist_Add( p_playlist, Source.c_str(),
\r
116 PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );
\r
118 /* update the display */
\r
119 p_intfGlobal->p_sys->p_playwin->UpdateGrid( p_playlist );
\r
122 /* UDP Multicast */
\r
124 config_PutInt( p_intfGlobal, "network-channel", FALSE );
\r
125 Address = ComboBoxMulticastAddress->Text;
\r
126 i_port = SpinEditMulticastPort->Value;
\r
128 /* Build source name */
\r
129 Source = "udp:@" + Address + ":" + IntToStr( i_port );
\r
131 playlist_Add( p_playlist, Source.c_str(),
\r
132 PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );
\r
134 /* update the display */
\r
135 p_intfGlobal->p_sys->p_playwin->UpdateGrid( p_playlist );
\r
138 /* Channel server */
\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
144 if( p_intfGlobal->p_vlc->p_channel == NULL )
\r
146 network_ChannelCreate( p_intfGlobal );
\r
149 p_intfGlobal->p_sys->b_playing = 1;
\r
154 config_PutInt( p_intfGlobal, "network-channel", FALSE );
\r
155 Address = EditHTTPURL->Text;
\r
157 /* Build source name with a basic test */
\r
158 if( Address.SubString( 1, 4 ) == "http" )
\r
164 Source = "http://" + Address;
\r
167 playlist_Add( p_playlist, Source.c_str(),
\r
168 PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );
\r
170 /* update the display */
\r
171 p_intfGlobal->p_sys->p_playwin->UpdateGrid( p_playlist );
\r
175 vlc_object_release( p_playlist );
\r
177 //---------------------------------------------------------------------------
\r
178 void __fastcall TNetworkDlg::ChangeEnabled( int i_selected )
\r
180 switch( i_selected )
\r
183 LabelUDPPort->Enabled = NOT( LabelUDPPort->Enabled );
\r
184 SpinEditUDPPort->Enabled = NOT( SpinEditUDPPort->Enabled );
\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
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
201 LabelHTTPURL->Enabled = NOT( LabelHTTPURL->Enabled );
\r
202 EditHTTPURL->Enabled = NOT( EditHTTPURL->Enabled );
\r
206 //---------------------------------------------------------------------------
\r
207 void __fastcall TNetworkDlg::RadioButtonUDPEnter( TObject *Sender )
\r
209 ChangeEnabled( OldRadioValue );
\r
211 ChangeEnabled( OldRadioValue );
\r
213 //---------------------------------------------------------------------------
\r
214 void __fastcall TNetworkDlg::RadioButtonMulticastEnter( TObject *Sender )
\r
216 ChangeEnabled( OldRadioValue );
\r
218 ChangeEnabled( OldRadioValue );
\r
220 //---------------------------------------------------------------------------
\r
221 void __fastcall TNetworkDlg::RadioButtonCSEnter( TObject *Sender )
\r
223 ChangeEnabled( OldRadioValue );
\r
225 ChangeEnabled( OldRadioValue );
\r
227 //---------------------------------------------------------------------------
\r
228 void __fastcall TNetworkDlg::RadioButtonHTTPEnter( TObject *Sender )
\r
230 ChangeEnabled( OldRadioValue );
\r
232 ChangeEnabled( OldRadioValue );
\r
234 //---------------------------------------------------------------------------
\r