Use thread for fading

This commit is contained in:
Keith Edmunds 2021-03-28 22:05:37 +01:00
parent d0b8028f90
commit 6643da84b6
2 changed files with 25 additions and 5 deletions

View File

@ -2,6 +2,7 @@
import vlc import vlc
import sys import sys
import threading
from datetime import datetime, timedelta from datetime import datetime, timedelta
from log import DEBUG, ERROR from log import DEBUG, ERROR
@ -15,6 +16,7 @@ from ui.dlg_search_database_ui import Ui_Dialog
from config import Config from config import Config
from model import Playdates, Playlists, Settings, Tracks from model import Playdates, Playlists, Settings, Tracks
from time import sleep
class Music: class Music:
@ -98,6 +100,20 @@ class Music:
except AttributeError: except AttributeError:
return "" return ""
def fade_current(self):
thread = threading.Thread(target=self._fade_current)
thread.start()
def _fade_current(self):
player = self.current_track['player']
position = player.get_position()
for i in range(100, 0, -10):
player.audio_set_volume(i)
sleep(0.2)
player.pause()
player.audio_set_volume(100)
player.set_position(position)
def play_next(self): def play_next(self):
if self.previous_track['player']: if self.previous_track['player']:
self.previous_track['player'].release() self.previous_track['player'].release()
@ -190,9 +206,10 @@ class Window(QMainWindow, Ui_MainWindow):
record.update({'f_int': self.y()}) record.update({'f_int': self.y()})
def connectSignalsSlots(self): def connectSignalsSlots(self):
self.actionSearch_database.triggered.connect(self.selectFromDatabase) self.actionFade.triggered.connect(self.fade)
self.actionPlay_selected.triggered.connect(self.play_next)
self.actionPlay_next.triggered.connect(self.play_next) self.actionPlay_next.triggered.connect(self.play_next)
self.actionPlay_selected.triggered.connect(self.play_next)
self.actionSearch_database.triggered.connect(self.selectFromDatabase)
self.playlist.itemSelectionChanged.connect(self.set_next_track) self.playlist.itemSelectionChanged.connect(self.set_next_track)
self.timer.timeout.connect(self.tick) self.timer.timeout.connect(self.tick)
@ -200,6 +217,9 @@ class Window(QMainWindow, Ui_MainWindow):
dlg = DbDialog(self) dlg = DbDialog(self)
dlg.exec() dlg.exec()
def fade(self):
self.music.fade_current()
def play_next(self): def play_next(self):
self.music.play_next() self.music.play_next()
self.current_track.setText( self.current_track.setText(

View File

@ -596,7 +596,7 @@ border: 1px solid rgb(85, 87, 83);</string>
<addaction name="actionSearch_database"/> <addaction name="actionSearch_database"/>
<addaction name="actionAdd_file"/> <addaction name="actionAdd_file"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionF_ade"/> <addaction name="actionFade"/>
<addaction name="actionS_top"/> <addaction name="actionS_top"/>
</widget> </widget>
<addaction name="menuFile"/> <addaction name="menuFile"/>
@ -622,7 +622,7 @@ border: 1px solid rgb(85, 87, 83);</string>
</attribute> </attribute>
<addaction name="actionPlay_selected"/> <addaction name="actionPlay_selected"/>
<addaction name="actionPlay_next"/> <addaction name="actionPlay_next"/>
<addaction name="actionF_ade"/> <addaction name="actionFade"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionAdd_file"/> <addaction name="actionAdd_file"/>
<addaction name="actionSearch_database"/> <addaction name="actionSearch_database"/>
@ -679,7 +679,7 @@ border: 1px solid rgb(85, 87, 83);</string>
<string>Add &amp;file</string> <string>Add &amp;file</string>
</property> </property>
</action> </action>
<action name="actionF_ade"> <action name="actionFade">
<property name="icon"> <property name="icon">
<iconset> <iconset>
<normaloff>icon-fade.png</normaloff>icon-fade.png</iconset> <normaloff>icon-fade.png</normaloff>icon-fade.png</iconset>