Exemple #1
0
    def addPlaylistAction(self):
        playlistName, response = QInputDialog.getText(self, 'Pysawndz', 'Playlist name:')

        if response:
            sql = "SELECT * FROM playlists WHERE name = '%s'" % (playlistName)
            query = Db.execute(sql)
            if query.size() == 0:
                Db.insert("playlists", {"name": playlistName})
                self.loadAllPlaylists()
                self.playlist.setCurrentRow(self.playlist.count() - 1)
                self.loadContextMenu()
            else:
                QMessageBox.warning(self, "Pysawndz", "Another playlist with the same name already exist.", QMessageBox.Ok);
Exemple #2
0
 def addToPlaylistAction(self):
     action = self.sender()
     playlist_id = action.data().toInt()[0]
     
     to_add = self.musicTable.selectedItems()
     songs_to_add = []
     for i in to_add:
         song_id = i.data(Qt.UserRole).toInt()[0]
         if not song_id == 0:
             songs_to_add.append(song_id)
             
     if len(songs_to_add) > 0:
         for song_id in songs_to_add:
             sql = "SELECT * FROM playlist_songs WHERE song_id = %d AND playlist_id = %d" % (song_id, playlist_id)
             query = Db.execute(sql)
             if query.size() == 0:
                 Db.insert("playlist_songs", {"playlist_id": playlist_id, "song_id": song_id})
         self.playlist.setCurrentRow(self.getRowByData(playlist_id))
Exemple #3
0
 def __getSongAlbum(self, artist_id):
     
     if not self.__album == None:
         query = Db.select("albums", ["id"], {"name": self.__album, "artist_id": artist_id})
         if query and query.size() > 0 and query.next():
             return query.value(0).toInt()[0]
         else:
             return Db.insert("albums", {"name": self.__album, "artist_id": artist_id})
     else:
         query = Db.execute("SELECT a.id FROM albums as a, songs as s WHERE s.album_id = a.id AND s.id = %d" % (self.__id))
         if query and query.next():
             return query.value(0).toInt()[0]
Exemple #4
0
 def __getSongGenre(self):
     
     if not self.__genre == None:
         query = Db.select("genres", ["id"], {"name": self.__genre})
         if query and query.size() > 0 and query.next():
             return query.value(0).toInt()[0]
         else:
             return Db.insert("genres", {"name": self.__genre})
     else:
         query = Db.execute("SELECT g.id FROM genres as g, songs as s WHERE s.genre_id = g.id AND s.id = %d" % (self.__id))
         if query and query.next():
             return query.value(0).toInt()[0]
Exemple #5
0
 def restorePlaylist(self):
     filename = QFileDialog.getOpenFileName(self,
         "Select playlist to restore",
         QDesktopServices.storageLocation(QDesktopServices.DesktopLocation),
         "*.songs")
     handle = open(filename, "rb")
     self.sources = pickle.load(handle)
     
     playlistName = self.phelper.getFileName(filename)
     sql = "SELECT * FROM playlists WHERE name = '%s'" % (playlistName)
     query = Db.execute(sql)
     if query.size() == 0:
         Db.insert("playlists", {"name": playlistName})
         
         #TODO: I forgot :)
         
         self.loadAllPlaylists()
         self.playlist.setCurrentRow(self.playlist.count() - 1)
         self.loadContextMenu()
     else:
         QMessageBox.warning(self, "Pysawndz", "Another playlist with the same name already exist.", QMessageBox.Ok);
Exemple #6
0
    def saveSong(self):

        artist_id = self.__getSongArtist()
        
        param = {
            "title": self.__title,
            "duration": self.__duration,
            "artist_id": artist_id,
            "genre_id": self.__getSongGenre(),
            "album_id": self.__getSongAlbum(artist_id),
            "path": self.__path
        }
        
        self.__id = Db.insert("songs", param)