internal ChannelListViewModel(PeerCast peerCast) { this.peerCast = peerCast; connections = new ConnectionListViewModel(); relayTree = new RelayTreeViewModel(peerCast); }
internal ChannelListViewModel(PeerCast peerCast) { this.peerCast = peerCast; connections = new ConnectionListViewModel(peerCast); relayTree = new RelayTreeViewModel(peerCast); play = new Command(() => { if (peerCast.OutputListeners.Count <= 0) return; var channel = Channel.Channel; var channel_id = channel.ChannelID; var ext = (channel.ChannelInfo.ContentType == "WMV" || channel.ChannelInfo.ContentType == "WMA" || channel.ChannelInfo.ContentType == "ASX") ? ".asx" : ".m3u"; var endpoint = peerCast.OutputListeners[0].LocalEndPoint; string pls; if (endpoint.Address.Equals(System.Net.IPAddress.Any)) { pls = String.Format("http://localhost:{0}/pls/{1}{2}", endpoint.Port, channel_id.ToString("N"), ext); } else { pls = String.Format("http://{0}/pls/{1}{2}", endpoint.ToString(), channel_id.ToString("N"), ext); } System.Diagnostics.Process.Start(pls); }, () => IsChannelSelected); close = new Command( () => peerCast.CloseChannel(Channel.Channel), () => IsChannelSelected); bump = new Command( () => Channel.Channel.Reconnect(), () => IsChannelSelected); openContactUrl = new Command(() => { var url = Channel.Channel.ChannelInfo.URL; Uri uri; if (!String.IsNullOrEmpty(url) && Uri.TryCreate(url, UriKind.Absolute, out uri)) { Process.Start(uri.ToString()); } }, () => IsChannelSelected); copyStreamUrl = new Command(() => { var channel_id = Channel.Channel.ChannelID; var endpoint = peerCast.OutputListeners[0].LocalEndPoint; var ext = Channel.Channel.ChannelInfo.ContentExtension; string url; if (endpoint.Address.Equals(System.Net.IPAddress.Any)) { url = String.Format("http://localhost:{0}/stream/{1}{2}", endpoint.Port, channel_id.ToString("N"), ext); } else { url = String.Format("http://{0}/pls/{1}{2}", endpoint.ToString(), channel_id.ToString("N"), ext); } Clipboard.SetText(url); }, () => IsChannelSelected && peerCast.OutputListeners.Count > 0); copyContactUrl = new Command(() => { var url = Channel.Channel.ChannelInfo.URL; Uri uri; if (!String.IsNullOrEmpty(url) && Uri.TryCreate(url, UriKind.Absolute, out uri)) { Clipboard.SetText(uri.ToString()); } }, () => IsChannelSelected); }