From 42ef44e1b48d753f51a72f71ca22cf283ecf39da Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind@owncloud.com>
Date: Fri, 20 Jan 2012 01:41:37 +0100
Subject: [PATCH] show proper feedback that collection scanning is done and
 show the collection afterwards

---
 apps/media/js/collection.js | 43 +++++++++++++++++--------------------
 apps/media/js/scanner.js    | 22 ++++++++++++++-----
 2 files changed, 37 insertions(+), 28 deletions(-)

diff --git a/apps/media/js/collection.js b/apps/media/js/collection.js
index efd7db8f6a..2249acf3cc 100644
--- a/apps/media/js/collection.js
+++ b/apps/media/js/collection.js
@@ -69,7 +69,6 @@ Collection={
 						Collection.loadedListeners[i]();
 					}
 					if(data.songs.length==0){
-						$('#scan input.start').val(t('media','Scan Collection'));
 						$('#scan input.start').click();
 					}
 					
@@ -318,33 +317,31 @@ Collection={
 		}
 	},
 	addSong:function(song){
-		var artist=false
-		var album=false;
-		for(var i=0;i<Collection.artists.length;i++){
-			if(Collection.artists[i].artist_id==song.song_artist){
-				artist=Collection.artists[i];
-				for(var j=0;j<artist.albums.length;j++){
-					if(artist.albums[j].album_id==song.song_album){
-						album=artist.albums[j];
-						break;
-					}
-				}
-				break;
-			}
-		}
+		var artist=Collection.findArtist(song.artist);
 		if(!artist){
-			artist={artist_id:song.song_artist,artist_name:song.artist,albums:[]};
+			artist={name:song.artist,albums:[],songs:[]};
 			Collection.artists.push(artist);
-			if(!Collection.parent || Collection.parent.is(":visible")){
-				Collection.display();
-			}
-			
+			Collection.artistsById[song.song_artist]=artist;
 		}
+		var album=Collection.findAlbum(song.artist,song.album);
 		if(!album){
-			album={album_id:song.song_album,album_name:song.album,album_artist:song.song_artist,songs:[]};
-			artist.albums.push(album)
+			album={name:song.album,artist:song.song_artist,songs:[]};
+			artist.albums.push(album);
+			Collection.albums.push(album);
+			Collection.albumsById[song.song_album]=album;
 		}
-		album.songs.push(song)
+		var songData={
+			name:song.song_name,
+			artist:Collection.artistsById[song.song_artist].name,
+			album:Collection.albumsById[song.song_album].name,
+			lastPlayed:song.song_lastplayed,
+			length:song.song_length,
+			path:song.song_path,
+			playCount:song.song_playcount,
+		};
+		album.songs.push(songData)
+		artist.songs.push(songData);
+		Collection.songs.push(songData);
 	}
 }
 
diff --git a/apps/media/js/scanner.js b/apps/media/js/scanner.js
index 0ebf408e70..ed2046dd7a 100644
--- a/apps/media/js/scanner.js
+++ b/apps/media/js/scanner.js
@@ -5,13 +5,14 @@ Scanner={
 	startTime:null,
 	endTime:null,
 	stopScanning:false,
-	currentIndex:-1,
+	currentIndex:0,
 	songs:[],
 	findSongs:function(ready){
 		$.getJSON(OC.linkTo('media','ajax/api.php')+'?action=find_music',function(songs){
 			Scanner.songsFound=songs.length;
 			Scanner.currentIndex=-1
 			if(ready){
+				
 				ready(songs)
 			}
 		});
@@ -37,12 +38,22 @@ Scanner={
 		$('#scanprogressbar').progressbar({
 			value:0,
 		});
+		$('#scanprogressbar').show();
 		Scanner.songsChecked=0;
+		Scanner.currentIndex=0;
 		Scanner.songsScanned=0;
 		Scanner.startTime=new Date().getTime()/1000;
 		Scanner.findSongs(function(songs){
 			Scanner.songs=songs;
-			Scanner.start();
+			Scanner.start(function(){
+				$('#scan input.start').show();
+				$('#scan input.stop').hide();
+				$('#scanprogressbar').hide();
+				Collection.display();
+				if(ready){
+					ready();
+				}
+			});
 		});
 	},
 	stop:function(){
@@ -52,15 +63,16 @@ Scanner={
 		Scanner.stopScanning=false;
 		$('#scancount').show();
 		var scanSong=function(){
-			Scanner.currentIndex++;
-			if(!Scanner.stopScanning && Scanner.currentIndex<Scanner.songs.length){
+			if(!Scanner.stopScanning && Scanner.currentIndex<=Scanner.songs.length){
 				Scanner.scanFile(Scanner.songs[Scanner.currentIndex],scanSong)
-			}else{
+			}else if(!Scanner.stopScanning){
 				Scanner.endTime=new Date().getTime()/1000;
 				if(ready){
 					ready();
+					ready=null;//only call ready once
 				}
 			}
+			Scanner.currentIndex++;
 		}
 		scanSong();
 		scanSong();
-- 
GitLab