Skip to content

Searchbar

ronjakrg edited this page May 27, 2024 · 5 revisions

How to test the searchbar

Um die Searchbar zu testen, muss ein Transcript geöffnet sein und ein globaler Authorizer angelegt sein. Folgender Code kann beispielhaft im Workspace ausgeführt werden:

url := auth startAuthorization.
accessToken := auth accessToken. 
Smalltalk at: #auth put: auth.
morph := SPOCSearchbar new openInWorld

In der Searchbar kann ein beliebiger Suchtext (Songname, Songtext, Artist, Album, ...) eingegeben werden und die Eingabe wird mit Enter bestätigt. Dann erscheint ein scrollable Panel mit den Suchergebnissen.

Wie es funktioniert

SPOCSearchbar erbt von RectangleMorph und ist der rechteckige Hintergrund des Texts. Dazu kommt ein Submorph SPOCTextInput, der von TextMorph erbt. Dieser Morph reagiert auf Keyboard Events, insbesondere wurde eine #crAction hinzugefügt, also das ausgelöste Verhalten, wenn Enter gedrückt wird. Trifft dieses Event ein und ist dieser Morph gerade im Fokus des Cursors, dann wird searchTracks auf der SPOCSearchbar aufgerufen. Hier wird unter anderem der Input bereinigt (bspw. Leerzeichen gegen "+" ersetzt) und das Dictionary zur Umsetzung des Command Pattern angelegt. Nach dem API Call wird das empfangene JSON-Objekt decoded und in unsere Datenstrukturen SPOCTrack, SPOCArtist, SPOCALbum und SPOCImage eingefügt. Die OrderedCollection an SPOCTrack wird dann der Methode displayResults übergeben, die zuerst mit buildResultMorphFrom ein Ergebnismorph generiert mit angezeigtem Bild, Titel und Artists. Dann wird ein pluggableScrollPaneSpecgeneriert, der als Submorphs alle Ergebnismorphs enthält. Momentan muss das Panel händisch per Halo gelöscht werden, das automatische Löschen sowie einige andere Features werden im nächsten Sprint ergänzt.

Clone this wiki locally