Klassen ~~~~~~~ Search ^^^^^^ Die Klasse Search implementiert das Suchfeld und den Find-Button. Das Suchfeld ist ein elementary.Entry der in einen elementary.Frame gelegt wird. Der Find-Button ist ein elementary.Button. Wird der Button geklickt, wird die Funktion findbutton_clicked() aufgerufen. Darin wird die Eingabe im Suchfeld eingelesen und eine Instanz der Klasse Corba erzeugt. Der Sucheintrag wird an die Suchfunktion der Klasse Corba uebergeben. image::img/Classes/Search.png[] Corba ^^^^^ In der Funktion corba_search() der Klasse Corba wird die Funktion search() des ServerControlInterface aufgerufen. Diese bekommt den Suchbegriff uebergeben und eine Liste der gewuenschten Medien (VIDEO und SOUND, im Code festgelegt). Anschliessend wird jeweils eine Instanz der Klassen Medialist und Selection erzeugt. In einer Schleife wird fuer jedes gefundene Medium eine Instanz der Klasse Media erzeugt und diese ueber den Funktionsaufruf add_media(current) der Medialiste hinzugefuegt. image::img/Classes/Corba.png[] Medialist ^^^^^^^^^ Die Klasse Medialist zeichnet die Medialiste, welche eine elementary.List ist. Die Funktion add_media(self, media), die in der Klasse Corba aufgerufen wird, fuegt Eintraege zu der Liste hinzu. image::img/Classes/Medialist.png[] <<< Media ^^^^^ Die Klasse Media implementiert fuer jedes gefundene Medium einen Callback, der bei Klick auf das Medium die Funktion set_stream der Klasse Selection aufruft. So wird immer gemerkt, welches Listenelement zuletzt angeklickt wurde. image::img/Classes/Media.png[] Selection ^^^^^^^^^ Sobald in der Klasse Corba eine Instanz der Klasse Selection erzeugt wird, wird der Play-Button gezeichnet und ein Emotion-Element erzeugt, in dem spaeter das Video dargestellt werden kann. Die Funktion set_stream() speichert welches Listenelement zuletzt angeklickt wurde. Wird der Play-Button angeklickt, wird die Funktion play_video() aufgerufen. Darin wird der Stream erzeugt, gestartet und in einem Emotion-Frame angezeigt. image::img/Classes/Selection.png[] <<< UML-Diagramme ~~~~~~~~~~~~~ Klassendiagramm ^^^^^^^^^^^^^^^ image::img/classdiagram.png[] Use-Case-Diagramm ^^^^^^^^^^^^^^^^^ image::img/Use-Case/Mediensuche.png[width=375]