def initItems artists = Array.new albums = Array.new genre = Array.new device_paths = Array.new collection = KDE::DCOPRef.new( 'amarok', 'collection' ) [ { :dbresult=>collection.query( 'select * from album' ), :indexed => albums }, { :dbresult=>collection.query( 'select * from artist' ), :indexed => artists }, { :dbresult=>collection.query( 'select * from genre' ) , :indexed => genre }, { :dbresult=>collection.query( 'select id, lastmountpoint from devices' ), :indexed => device_paths } ].each { |h| 0.step( h[ :dbresult ].size, 2 ) { |i| h[ :indexed ][ h[ :dbresult ][i].to_i ] = h[ :dbresult ][ i.to_i+1 ] } } columns = [ "album, ", "artist, ", "genre, ", "url, ", "track, ", "title, ", "year, ", "length, ", "samplerate, ", "composer, ", "deviceid" ] @column_keys = [ :songalbum, :songartist, :songgenre, :url, :songtracknumber, :itemname, :songyear, :songtime, :songsamplerate, :songcomposer, :deviceid ] bigquery = "SELECT #{columns.to_s} FROM tags" puts "here is the big query " + collection.inspect dbitems = collection.query( bigquery ) @items = Array.new 0.step( dbitems.size, columns.size ) { |overallIt| track = Hash.new 0.step( 3, 1 ) { |columnIt| track[ @column_keys[columnIt] ] = collection[columnIt][:indexed][ dbitems[ overallIt + columnIt] ] } 4.step( @column_keys.size, 1 ) { |columnIt| track[ @column_keys[columnIt] ] = dbitems[ overallIt + columnIt ] } @items.push(track) } end