def __init__(self, peer, stream_adapter, parent=None): super(MainWindow, self).__init__(parent) self.__track_list = TrackModel() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.trackListView.setModel(self.__track_list) self.ui.trackListView.doubleClicked.connect(self.list_double_clicked) self.ui.trackListView.clicked.connect(self.list_clicked) self.ui.searchBtn.clicked.connect(self.search) self.ui.playBtn.clicked.connect(self.play) self.ui.stopBtn.clicked.connect(self.stop) self.ui.pauseBtn.clicked.connect(self.pause) self.setWindowTitle('Zalgo') self.__peer = peer self.__recv_contr = None self.__stream_adapter = stream_adapter self.__hashes = [] self.__pid = '' self.__playing_now = None self.__audio_output = Phonon.AudioOutput(Phonon.MusicCategory, self) self.__media_object = Phonon.MediaObject(self) self.__media_object.setTickInterval(1000) self.__media_object.stateChanged.connect(self.state_changed) self.__media_object.tick.connect(self.tick) self.ui.seekSlider.setMediaObject(self.__media_object) self.ui.volumeSlider.setAudioOutput(self.__audio_output) Phonon.createPath(self.__media_object, self.__audio_output)
class MainWindow(QtGui.QMainWindow): def __init__(self, peer, stream_adapter, parent=None): super(MainWindow, self).__init__(parent) self.__track_list = TrackModel() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.trackListView.setModel(self.__track_list) self.ui.trackListView.doubleClicked.connect(self.list_double_clicked) self.ui.trackListView.clicked.connect(self.list_clicked) self.ui.searchBtn.clicked.connect(self.search) self.ui.playBtn.clicked.connect(self.play) self.ui.stopBtn.clicked.connect(self.stop) self.ui.pauseBtn.clicked.connect(self.pause) self.setWindowTitle('Zalgo') self.__peer = peer self.__recv_contr = None self.__stream_adapter = stream_adapter self.__hashes = [] self.__pid = '' self.__playing_now = None self.__audio_output = Phonon.AudioOutput(Phonon.MusicCategory, self) self.__media_object = Phonon.MediaObject(self) self.__media_object.setTickInterval(1000) self.__media_object.stateChanged.connect(self.state_changed) self.__media_object.tick.connect(self.tick) self.ui.seekSlider.setMediaObject(self.__media_object) self.ui.volumeSlider.setAudioOutput(self.__audio_output) Phonon.createPath(self.__media_object, self.__audio_output) def tick(self, time): displayTime = QtCore.QTime(0, (time / 60000) % 60, (time / 1000) % 60) self.ui.timeLbl.setText(displayTime.toString('mm:ss')) def state_changed(self, newState, oldState): self.ui.pauseBtn.setEnabled(False) self.ui.playBtn.setEnabled(False) self.ui.stopBtn.setEnabled(False) if newState == Phonon.PlayingState: self.ui.pauseBtn.setEnabled(True) self.ui.stopBtn.setEnabled(True) elif newState == Phonon.StoppedState: self.ui.playBtn.setEnabled(True) self.ui.timeLbl.setText("00:00") elif newState == Phonon.PausedState: self.ui.playBtn.setEnabled(True) self.ui.stopBtn.setEnabled(True) def search(self): search_text = self.ui.searchEdit.text() self.__peer.lookup(search_text) self.ui.playBtn.setEnabled(True) def play(self): if self.__media_object.state() != Phonon.PausedState: self.__playing_now = self.ui.trackListView.currentIndex() track = self.__track_list.data(self.__playing_now, Qt.UserRole) self.__peer.start_stream(self.__pid, track.hash_) self.__media_object.play() def stop(self): self.__media_object.stop() def pause(self): self.__media_object.pause() def streamCreated(self, size): self.__media_object.setCurrentSource(Phonon.MediaSource(self.__stream_adapter)) self.__media_object.play() def musicFound(self, pid, music_list): self.__track_list.reset() self.__pid = str(pid) self.__track_list.setTrackList([Track(t['title'], t['artist'], t['album'], t['hash']) for t in music_list]) def list_double_clicked(self, item): if self.__playing_now != self.ui.trackListView.currentIndex(): self.__media_object.stop() self.play() def list_clicked(self, item): self.ui.playBtn.setEnabled(True)