# encoding: ascii
# api: powershell
# title: Wacth TechED Sessions
# description: WPF GUI to watch TechED 2011, NA sessions
# version: 0.1
# type: function
# author: Ravikanth
# license: CC0
# function: Get-TechEDSession
# x-poshcode-id: 2690
# x-archived: 2011-05-27T22:43:54
# x-published: 2011-05-23T09:37:00
#
#
ipmo WPK
Function Get-TechEDSession {                

    $url = "https://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/RSS/"
    $wc   = New-Object net.webclient
    #$wc.Proxy.Credentials = Get-Credential
    $feed = ([xml]($wc.downloadstring($url))).rss.channel.item            

    $feed | ForEach {
                New-Object PSObject -Property @{
                Title = $_.title
                Url = $_.Enclosure.url
                Category = @($_.Category)
            }
    }
}                        

$sessions = Get-TechEDSession
New-Window -Title "TechED - NA 2011 Session viewer" -WindowStartupLocation CenterScreen -Width 1200 -Height 600 -On_Loaded {
    $lstBox = $window | Get-ChildControl lstBox
    $lstBox.ItemsSource = $sessions
} {
    New-Grid -Rows 32, 1* -Columns 300, 900* {                        

        New-ComboBox -Name cmbBox -MaxHeight 400 -MaxWidth 300 -ItemsSource @($sessions | Select -ExpandProperty Category -Unique) -On_SelectionChanged {
            $lstBox = $window | Get-ChildControl lstBox
            $lstBox.ItemsSource = @($sessions | ? { $_.Category -Contains $this.SelectedValue})
        }                        

        New-ListBox -Name lstBox -Row 1 -Column 0 -DisplayMemberPath Title -On_SelectionChanged {
                $wplayer = $window | Get-ChildControl player
                $wplayer.Source = $this.SelectedItem.Url
            }                        

        New-MediaElement -Name player -Column 1 -RowSpan 2
    }
} -Show
