diff --git a/CHANGELOG.md b/CHANGELOG.md index 8614613..08c8320 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ ## [Unreleased] +### Added +- Created a setting panel for the audio player +- Selection of the audio output device. Close #4 + +### Fixed +- Fixed margins for downloader window + ## [4.0.5] - 2024-06-15 ### Added diff --git a/artemis.qrc b/artemis.qrc index 3b6375c..df0a67f 100644 --- a/artemis.qrc +++ b/artemis.qrc @@ -12,7 +12,6 @@ images/icons/player_play.svg images/icons/player_stop.svg images/icons/player_loop.svg - images/icons/player_mute.svg images/icons/save.svg images/icons/delete.svg images/icons/add.svg @@ -22,6 +21,7 @@ images/icons/browser.svg images/icons/documents.svg images/icons/abort.svg + images/icons/settings.svg images/spectrum_not_available.svg images/artemis_not_available.svg diff --git a/artemis/resources.py b/artemis/resources.py index 4f08275..dbfae83 100644 --- a/artemis/resources.py +++ b/artemis/resources.py @@ -4595,6 +4595,52 @@ q0-33 23.5-56.5T\ 0q-33 0-56.5-23.\ 5T240-320Z\x22/>\ +\x00\x00\x02\xb2\ +<\ +svg xmlns=\x22http:\ +//www.w3.org/200\ +0/svg\x22 height=\x222\ +4px\x22 viewBox=\x220 \ +-960 960 960\x22 wi\ +dth=\x2224px\x22 fill=\ +\x22#5f6368\x22>\ \x00\x00\x02,\ <\ svg xmlns=\x22http:\ @@ -4789,57 +4835,6 @@ q0-17-11.5-28.5T\ 17 11.5 28.5T460\ -340h80Z\x22/>\ -\x00\x00\x03\x0f\ -<\ -svg xmlns=\x22http:\ -//www.w3.org/200\ -0/svg\x22 height=\x222\ -4px\x22 viewBox=\x220 \ --960 960 960\x22 wi\ -dth=\x2224px\x22 fill=\ -\x22#5f6368\x22>\ \x00\x00\x02\xa7\ <\ svg xmlns=\x22http:\ @@ -6645,7 +6640,7 @@ G@\x11\x10HG\x93Hp\xec\x0au\xe3\xcd\x1e\xf4\ >k\xd0\xd3b\x1eG\xb5_d\xde\xb6{\x8f\x95\xc5\ U\xaf\xbc\xfd\xe9\xb5\x9f\xe5\xe3}r\xba?\xbbI\x06\ \xfe\xfc\x0f\xf4\xcd*2\ -\x00\x00\x07^\ +\x00\x00\x07\xf0\ i\ mport QtQuick\x0d\x0ai\ mport QtQuick.Wi\ @@ -6706,65 +6701,74 @@ ColumnLayout {\x0d\x0a\ columnLayout\x0d\x0a \ anchor\ s.fill: parent\x0d\x0a\ -\x0d\x0a La\ -bel {\x0d\x0a \ - text: qsT\ -r(\x22Downloading i\ -n progress...\x22)\x0d\ -\x0a \ - Layout.alignmen\ -t: Qt.AlignHCent\ -er | Qt.AlignVCe\ -nter\x0d\x0a \ - }\x0d\x0a\x0d\x0a \ - ProgressBar {\ + anch\ +ors.rightMargin:\ + 10\x0d\x0a \ + anchors.leftMar\ +gin: 10\x0d\x0a \ + anchors.bot\ +tomMargin: 10\x0d\x0a \ + ancho\ +rs.topMargin: 10\ +\x0d\x0a\x0d\x0a \ +Label {\x0d\x0a \ + text: q\ +sTr(\x22Downloading\ + in progress...\x22\ +)\x0d\x0a \ + Layout.alignm\ +ent: Qt.AlignHCe\ +nter | Qt.AlignV\ +Center\x0d\x0a \ + }\x0d\x0a\x0d\x0a \ + ProgressBar\ + {\x0d\x0a \ + id: progress\ +Bar\x0d\x0a \ + Layout.righ\ +tMargin: 20\x0d\x0a \ + Lay\ +out.leftMargin: \ +20\x0d\x0a \ + Layout.fillW\ +idth: true\x0d\x0a \ + inde\ +terminate: false\ \x0d\x0a \ - id: progressBa\ -r\x0d\x0a \ - Layout.rightM\ -argin: 20\x0d\x0a \ - Layou\ -t.leftMargin: 20\ -\x0d\x0a \ - Layout.fillWid\ -th: true\x0d\x0a \ - indete\ -rminate: false\x0d\x0a\ - \ -value: 0\x0d\x0a \ - to: 0\x0d\ + value: 0\x0d\x0a \ + to: \ +0\x0d\x0a }\ +\x0d\x0a\x0d\x0a \ +Label {\x0d\x0a \ + id: pro\ +gressLabel\x0d\x0a \ + Layo\ +ut.alignment: Qt\ +.AlignHCenter | \ +Qt.AlignVCenter\x0d\ \x0a }\x0d\x0a\ -\x0d\x0a La\ -bel {\x0d\x0a \ - id: progr\ -essLabel\x0d\x0a \ - Layout\ -.alignment: Qt.A\ -lignHCenter | Qt\ -.AlignVCenter\x0d\x0a \ - }\x0d\x0a\x0d\x0a\ - Butt\ -on {\x0d\x0a \ - Layout.ali\ -gnment: Qt.Align\ -HCenter | Qt.Ali\ -gnBottom\x0d\x0a \ - text: \ -qsTr(\x22Abort\x22)\x0d\x0a \ - i\ -con.source: \x22qrc\ -:/images/icons/a\ -bort.svg\x22\x0d\x0a \ - displ\ -ay: AbstractButt\ -on.TextBesideIco\ -n\x0d\x0a \ - flat: true\x0d\x0a \ - o\ -nClicked: { onAb\ -ort() }\x0d\x0a \ - }\x0d\x0a \ -}\x0d\x0a }\x0d\x0a}\x0d\x0a\ +\x0d\x0a Bu\ +tton {\x0d\x0a \ + Layout.a\ +lignment: Qt.Ali\ +gnHCenter | Qt.A\ +lignBottom\x0d\x0a \ + text\ +: qsTr(\x22Abort\x22)\x0d\ +\x0a \ + icon.source: \x22q\ +rc:/images/icons\ +/abort.svg\x22\x0d\x0a \ + dis\ +play: AbstractBu\ +tton.TextBesideI\ +con\x0d\x0a \ + flat: true\x0d\ +\x0a \ + onClicked: { on\ +Abort() }\x0d\x0a \ + }\x0d\x0a \ + }\x0d\x0a }\x0d\x0a}\x0d\x0a\ \x00\x00\x05\xac\ i\ mport QtQuick\x0d\x0ai\ @@ -6954,64 +6958,94 @@ x\x1e.\x13\x91\x01\xec\xe48\xd2v\xff\xae\x97t\xa0\ \x1e\xe8\xe4\xf3\xeb\x07\xa8i\x9fC\x1b\x96\xd0\xe6\x96\xd8\ \xfe\x0bm\x972F\x97\x87Vhv\x8a\x7f_\xa4\xe9\ \x8f\xea\x87>\xb7\x1e\x9b\xfc\xff\x02j\xe6B\xc4\ -\x00\x00\x03~\ +\x00\x00\x05Q\ \x00\ -\x00\x160x\xda\xcdX[O\xdb0\x14~G\xe2?\ -X\xbc\xd0\xee!\xed\x98&M\x91\xba\x89\xf5\x05$*\ -`\x95\xc6#r\x13'\xb5p\xec\xcc\xb1\x8b\xd0\xc6\x7f\ -\x9fO\xd2\xa4\xb99\xedZ\xc8j\x90\x22\x1f\x1f\xe7\x5c\ -\xbe\xcf\xc7'\xa5Q,\xa4B\xf7\xea^S\xef\xe9\xf4\ -\x84V\xe6\xce\x03\xe5\xbexn\x88o\xf0\x8b\xd0*i\ -\xc8\xa7\x82+)\x98}\xc1\x99aE$\xc5\xac\xa41\ -\xd3L\xd1\x88\xf8\x14\x9f\x9e\xc0\xdf\xb5\x22\x11\xfa}z\ -\x82\xccx\xa6\xbeZ\xba\xe8\xe3\x97q6_\x12\x1a.\ -\x95\x11|\xba\x00U\x10\xc5R\xc4D\xaa\x17\xb4\x10\x82\ -!&D\xec\xa2\x00\xb3\x84\xe4\x0a\x81\xe6\x9e\xa2\x82\x9b\ -5\xec\xcf\x85\xe6\xfe\x00k\x9f\x8a\xc7\x18\xab\xe50\xb7\ -\x94\xbe\x8a\xe1\x17\x22\x9dD\x89x0l\x8a\x85\x96\x1e\ -A\x13\xb4\xd9\xbd\xd1Yh\xa5\x04\xbf3\x9a\x0e\xf5\x04\ -w<\xc1\x844\xbay\xbc\x0e\xf6<\xc2U\xeb\x06\xc2\ -\xf1\x82\x11\xdfh+\xa9I]\xe5\xc6D\xd4\xaa\xf2\xda\ -\x08\x10\x1c\xcd\x02\xac\x84\xb5\xd5\xb7@H\x12J\xd8\xd8\ -\xd8\x84uB\xfe)\xa2\xb9I\xde!)XC\xd7\xe6\ -Fw\x9eR\xc3{\xa62EY$\x14\xb28g\xd4\ -7ho\xd4r\xf8\x09y\x02Q\x83\x17\xf0\xc8\xe9\xd2\ -\x82\x09\xb8\xbe\x0f(\x96lu\x00\xd2\x01\xe3v\x9a\xd5\ -S\x5c\xc3!\x8f\x15\xb4\xec\xc1\xc2\xc9\xf9\xdf\xb1v\x10\ -\xd0\xbe)eF\xffYmen\xabN\x8d\xba5\x1d\ -\xa8zV\xcc\xca\xe5\xac\x09\x99$\x09Qw\xa9\xe6`\ -\x9fbx~\xbe\xcd\x8dw*?G\xc8\x80\x9dj\xd7\ -;Q\xc0Z\xbeJz\x05\xfaS\xc1t\xc4\xb3[\xbc\ -\x8c9\xe6\xdeR\xc8\xc4\x09(c\xae)]\xb2r*\ -\x93\x18{\x94\x87.\x1aod?\xc4s\xf356e\ -\x18\x99\xb6\x83\x19\x0dyd^\xef\x9a\x0e\xc0\xb9\x84\xd9\ -\xd5\xd4L\x89D\x7f\x0a\xc9\xcfL\x92{\xbd\xb1i\xa0\ -\xf8\x9e\xe6\xa4n\x15\x06\xf5\xdd\x12<-\xeb\x05\xc8n\ -7\xc6\x95\x0d\x19\xe1]t\xf6Kz\xee\x88F8$\ -\xc9\x08V\x92Qv$\x1e\xe1\xe1$\xab\xf0\xac\xf9\x06\ -\x9f&\xb0\xea\xa2\xcbE\xa2$\xf6T\xe6\xbdsm\xf6\ -\xdfr\xd6\xe2\xe4\x1a?\xb7\x0es>\x02\x86M\xea\xaa\ -%'\x1f\x82O\x99i\xba`w\xa9#\xa8\xea\xbd\xd6\ -\x93Z\xee\xbaZ\xf0\x02F\xed\ -\x1b\xbc\x154\x84\xe4-\xa0[\x032v>\xf7]\x04\ -gZ\xf5\xd8JD\xc6\xda\xdb\x17\xc1v\xa2\x1dV\x03\ -\xcb\xd8:)<\x86\x89\xe3\xbd\x196\x83_\xea\xb2\x0f\ -\xc6\xbaEZ\x9c\xd8\xaa<\xfd\xc1\xecV\xabX\x9b0\ -J\x93\xaaV\xd6\xaf/\xb0\xf74W\x06\xa8\xe9\x12\xf3\ -\xd0\x12\x16\x94\xf5\xd2\xaf/\xc5\x1e4\x99L\xca\x0e:\ -\xd0\xba\xc4\xc4O\x17\x87\x07]\x12\xd6Nz\xf7Jo\ -\xed\x22\x0e\xaf\xd9\x97\x9b\xa4\xb6\x81b\xcdy\xc6\x0d\xb7\ -\x85#\x15C\xeb\x87\xf9\xff\x0b\x83\x18\xec\xb5\ +\x00 &x\xda\xd5Y\xdfo\xdb6\x10~\x0f\x90\xff\ +\x81\xc8K\x9d\x01\x93\xdd`\x01\x0a\x01\xd9\xe0\xba\x0f\x0d\ +\xd0\xa0i\x5c4\x0f\xc3P\xd0\x12m\x13\xa1E\x95\xa4\ +\x12{\x9b\xff\xf7\x1dE\xc9\xa2~P\x92\xdd4s\x95\ +\x00\xb6\xc8\x8f\xe4\xdd}\xc7\xe3\xf1LW1\x17\x0a}\ +R\x9f\x12\x1a<\x9c\x9e\xd0\xd2\xbbwO\xa3\x90?\xd5\ +\x9a?\xe0\x0dO\x94\xac\xb5Ox\xa4\x04g\xee\x0e\xef\ +\x06+\x22(f\x16\xe2&a\x8a\xaeHH\xf1\xe9\x89\ +\xfe\xbbVd\x85\xfe9=A\xf0<\xd1P-}t\ +1\x1a\x99\xf7%\xa1\x8b\xa5\xf2\xd1\x9b\x91F\xea\x96X\ +\xf0\x98\x08\xb5A3\xce\x19b\x9c\xc7>\x9ac&I\ +\x0e\x98'Q\xa0(\x8f\xa0\x0f\x87S\x9eD\xe1\x00'\ +!\xe5_c\xac\x96\xe7\xf9B\xe9T\x0co\x88\xf0\xa4\ +\xe2\xf1\xe0\xbc\xde\xcc\x13\x11\x10t\x85\x8a\xd1\x05f\x96\ +(\xc5\xa3[@z4\xe0\x91\x17p\xc6\x05`su\ +=\x1c\x04$R\x8d\x03H\x84g\x8c\x84\x80V\x22!\ +U\xc8\x07\xd0\xa8\x11\xb2\xad)\xa8\x055\x0a\x96\xd4\xea\ +\x94m\xce\x05Y\x08=\xb06\x08'\x92\xec\xa5\xd1\x14\ +\x8c\xf7=&\xc8\xa8k\x12\xa3\xddN\xe9\xc2\x07\x9a2\ +e\x99K\xaa\xad8e4\x04\xb6\x0bXN?!\x0f\ +\xba\xa9\xe6\x17\xfa#w\x97\x06N\xb4\xe8\x87\x90\xe2\xb0\ +V\x0b!-4v\xbbY\xd5\xc4\x15\x1er]5\xca\ +\xad\xac\xde9\xff\xb7\xae-\x0e\xe8\x1e\x94z\xc6\xcb[\ +\xb5\xd1s\x1b1\x15\xd7\xad`t\xd4srf\x87\xb3\ +:e\x82H\xa2nS\xe4\xe0\x90`\xf8\xeaU\x97\x18\ +?(\xfc\x1c\xa1\x07\xf4\x8a]?\xc8\x05\x9c\xe1\xcb\xc2\ +\xed\xd87\xa7\xba\xcd6\x0d}s\xaeM\x89R4Z\ +\xe4\xe7~\x81\xc8N\xe2\xdf.GE[~\x1a\xbf\xbe\ +\x1c\xd9\xd0\x15^\xd3U\xb2z\x9f\xf5\x1aT\xad\xfb\xde\ +L\x98\xce[\x1aM\xa3\xd6\xd1\xa6\xdb9\x9a\x87\x98Q\ +\xb5\xf1!\xb1\xf0\xc6q\xcch\x80\xb5]nt{\x01\ +\x9b3\xbc\x90)\xe6\x1dP\xcc\x17\xf6\x14\x8a*F|\ +\xf4M~\x16\x83\xb3\xb1\x80l\x84J\xf4+\x1ak\xf3\ + \xb3UPf&yvn\x8f\x9cp\xc8i\x22\x08\ +e\x1e\x8f\xf4wF\x14\x01\xc3Zv\xd6\xcf\x1aX\x99\ +\x06\x82\x90\xc8K\xc5GCt\x01\xf3\xef\xbe\x97\xd1\x9b\ +\x02mL\x91\xc1\x8b\x97\x02\xbf\xb5\x85\xb9\xc5\x0bR]\ +\x1aG\xc1\x92\x0b\xe9\xcd)c>\x9cM\x22\x0d\xbbe\ +\xcc\x84\xb3d\x15\x99\x0c\xaf:\xde=\x87\x0b%\xb4\x94\ +7X,h\x04~2r\x03\x19\x99\xf7\xc2\xcd8l\ +\x86U\x1f$\xec)\x1bV\x07\xde\xf1'\xb7\x9a\xfa1\ +\xbd\xa9\xa6\x99\xbf\x99 \xefB\xcf\x08sM\x95:\x16\ +Y\x83C\x9f\x19G\xfa\x98\xa88Qgn\xf4\x1cR\ +f/\xa6k\xc2\xa6\xf4o\xf0\xc7\xd7\x17nl\xc0h\ +\xecWN\xa0\xbe\xca4a\xb7.\x1d\xc1\xabg\xfc-\ +_\xb7\xa9\xb9\x8b%F\xc5|H\xa7d\xb1 s\x22\ +\x04\x09\xef+I\x7f\xd3\x03\xfb\x9c\x80\xfb\xa5\xd7\x86w\ +\xe4\x91\x06Dz\xd6\xa2\xb2\x9d\x85;\xaew\xf8YH\ +d h\xac\xe3C\x0b\x11\xb0\x97\x13\xa1\xbd\xfc:\x0a\ +\xc9z\xb2\xc4\xd1\xa2aW\xd7\xbc\xb0\x10\xc6\x0bS\x01\ +a#;\xc5\xfd3\xb0\x96\xf8\xcb=\xf3\xd6\xc9W/\ +\x0a\x0f\xf6\xf8\xef\xf1\xf7/:\xa0\x90\xe3\xf5\xf4\xa6f\ +s\x8cvy\xf9c\xaa\x99\xc1\xf6w\xef\xfcd\xbb\x18\ +=\xef\x96x\xc4,\x01\xeb\x8d\xbc\xcb\x9f\xd0I\xee\x88\ +\xce,\xd1@g9\xe7?\x97\xaf\xdc\xe9\xd4\xf0m\x9a\ +\xa3u9L\x91\xc9\xb5\xe0vI\xa8\xdf\x9e\x836\x0e\ +4\x899\x18\xf4\x9b\x08\xfc!]A\x12 \x87\xbaG\ +\x0eM\xea\xfeUg\xe9\x9e|\x5c\xb4\x189\xa4R\x83\ +}4\x9eI%p\xa0\x8cv\xde5\xcc\xf31b\x1b\ +\xf7\xc8,\xef\xf4\xab\xe9i\x8dF\x86U\x175\x10w\ +!{{\xe8\x11k\xe9\x1c\x0d\xb4Z\xe7]@\xf7-\ +\xa5\x9b\x8d\xae+A\xa3\xc7 \x02\xab\xec!U\xbbE\ +\xda\x85\xaa\xde\xa2\xf7p\xe1g8Z\xec\xaa]\xcb&\ +\xcb\x83_\xb3\xa2\x95\xc5\xb6\xa5\xd4\xb6\xb4\xb4+Km\ +\xcfNe\x8c\x03H\xdb!H\x16m\xcep\xd7\x04\xb6\ +\xb4\x81k\xc6\x22Z\xc1\xf4\xe6\xaa\xa1\xdf\xdeO\xe0\x15\ +\x8e\x8d\x7fw-_LK\xd5`\x1d!\xa3\x08\x15\xfa\ +\xba\xd1\xd0\xbfo\x88\xe8\x19\x1a\xf4\x87#4\xec\x1f\x12\ +\xbaBA[\x08\xb0\xb6\xbeU\xd4\xac9G\xb9\xc1\xe5\ +\x81}B\xfc\xf6p\x86\xf4\xfd\xfe\x05)J\xcb\x09\xc7\ +\xc6\x91U\xe4\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x02\xfc\x00\x00\x00\x00\x00\x01\x00\x017\xb7\ +\x00\x00\x02\xf6\x00\x00\x00\x00\x00\x01\x00\x017Z\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x01\xb0\x00\x00\x00\x00\x00\x01\x00\x01\x1f\xc0\ +\x00\x00\x01\xce\x00\x00\x00\x00\x00\x01\x00\x01\x22v\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x02\xa6\x00\x00\x00\x00\x00\x01\x00\x01/\xf7\ +\x00\x00\x02\xa0\x00\x00\x00\x00\x00\x01\x00\x01/\x9a\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x02f\x00\x00\x00\x00\x00\x01\x00\x01+\xf0\ +\x00\x00\x02`\x00\x00\x00\x00\x00\x01\x00\x01+\x93\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x01r\x00\x00\x00\x00\x00\x01\x00\x01\x1c\x98\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x96\x00\x00\x00\x00\x00\x01\x00\x01\x1d\x90\ -\x00\x00\x01\x8f\xff^8P\ -\x00\x00\x02B\x00\x00\x00\x00\x00\x01\x00\x01(\xdd\ +\x00\x00\x01\x90K\x1aN%\ +\x00\x00\x01\xb4\x00\x00\x00\x00\x00\x01\x00\x01 F\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x0e\x00\x00\x00\x00\x00\x01\x00\x01\x16\xe5\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x03\xb0\x00\x01\x00\x00\x00\x01\x00\x01Q\xd2\ +\x00\x00\x03\xaa\x00\x01\x00\x00\x00\x01\x00\x01Qu\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x04\x22\x00\x01\x00\x00\x00\x01\x00\x01[\xc7\ +\x00\x00\x04\x1c\x00\x01\x00\x00\x00\x01\x00\x01[j\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x03\xe6\x00\x01\x00\x00\x00\x01\x00\x01T\xef\ +\x00\x00\x03\xe0\x00\x01\x00\x00\x00\x01\x00\x01T\x92\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x03\x12\x00\x01\x00\x00\x00\x01\x00\x019\x8e\ +\x00\x00\x03\x0c\x00\x01\x00\x00\x00\x01\x00\x0191\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x03<\x00\x01\x00\x00\x00\x01\x00\x01>\xe2\ +\x00\x00\x036\x00\x01\x00\x00\x00\x01\x00\x01>\x85\ \x00\x00\x01\x90\x13\xddn\xea\ -\x00\x00\x05\xa8\x00\x00\x00\x00\x00\x01\x00\x01\xa1U\ +\x00\x00\x05\xa2\x00\x00\x00\x00\x00\x01\x00\x01\xa1\x8a\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x03r\x00\x01\x00\x00\x00\x01\x00\x01Ic\ +\x00\x00\x03l\x00\x01\x00\x00\x00\x01\x00\x01I\x06\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x05\x86\x00\x00\x00\x00\x00\x01\x00\x01\x99\xf3\ -\x00\x00\x01\x90\x13\xddn\xea\ -\x00\x00\x03X\x00\x02\x00\x00\x00\x04\x00\x00\x00+\ +\x00\x00\x05\x80\x00\x00\x00\x00\x00\x01\x00\x01\x99\x96\ +\x00\x00\x01\x90J\xbe\xce\x04\ +\x00\x00\x03R\x00\x02\x00\x00\x00\x04\x00\x00\x00+\ \x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x04\xc4\x00\x01\x00\x00\x00\x01\x00\x01ve\ +\x00\x00\x04\xbe\x00\x01\x00\x00\x00\x01\x00\x01v\x08\ \x00\x00\x01\x90\x13\xdd\x17\xd4\ -\x00\x00\x05d\x00\x01\x00\x00\x00\x01\x00\x01\x8f\xd7\ +\x00\x00\x05^\x00\x01\x00\x00\x00\x01\x00\x01\x8fz\ \x00\x00\x01\x90\x01\x93J\xb0\ -\x00\x00\x04\xe6\x00\x01\x00\x00\x00\x01\x00\x01\x7fW\ +\x00\x00\x04\xe0\x00\x01\x00\x00\x00\x01\x00\x01~\xfa\ \x00\x00\x01\x90\x18\xf5\x014\ -\x00\x00\x04H\x00\x01\x00\x00\x00\x01\x00\x01bS\ +\x00\x00\x04B\x00\x01\x00\x00\x00\x01\x00\x01a\xf6\ \x00\x00\x01\x90\x13\xdd\x17\xd3\ -\x00\x00\x04v\x00\x00\x00\x00\x00\x01\x00\x01nr\ +\x00\x00\x04p\x00\x00\x00\x00\x00\x01\x00\x01n\x15\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x04\x9e\x00\x01\x00\x00\x00\x01\x00\x01t7\ +\x00\x00\x04\x98\x00\x01\x00\x00\x00\x01\x00\x01s\xda\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x05@\x00\x01\x00\x00\x00\x01\x00\x01\x8bx\ +\x00\x00\x05:\x00\x01\x00\x00\x00\x01\x00\x01\x8b\x1b\ \x00\x00\x01\x90\x1b[j\x99\ -\x00\x00\x05\x06\x00\x00\x00\x00\x00\x01\x00\x01\x86O\ +\x00\x00\x05\x00\x00\x00\x00\x00\x00\x01\x00\x01\x85\xf2\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x05\xdc\x00\x01\x00\x00\x00\x01\x00\x01\xaa\x08\ +\x00\x00\x05\xd6\x00\x01\x00\x00\x00\x01\x00\x01\xaa=\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x06$\x00\x01\x00\x00\x00\x01\x00\x01\xb0M\ +\x00\x00\x06\x1e\x00\x01\x00\x00\x00\x01\x00\x01\xb2U\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x05\xc0\x00\x01\x00\x00\x00\x01\x00\x01\xa7\x05\ -\x00\x00\x01\x8f\xff^8_\ -\x00\x00\x06\x00\x00\x01\x00\x00\x00\x01\x00\x01\xac\xcb\ +\x00\x00\x05\xba\x00\x01\x00\x00\x00\x01\x00\x01\xa7:\ \x00\x00\x01\x8f\xff^8_\ +\x00\x00\x05\xfa\x00\x01\x00\x00\x00\x01\x00\x01\xad\x00\ +\x00\x00\x01\x90K\x22\xa8\x89\ " def qInitResources(): diff --git a/images/icons/player_mute.svg b/images/icons/player_mute.svg deleted file mode 100644 index 527028e..0000000 --- a/images/icons/player_mute.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/images/icons/settings.svg b/images/icons/settings.svg new file mode 100644 index 0000000..b8d752f --- /dev/null +++ b/images/icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/Downloader.qml b/ui/Downloader.qml index 61a2e11..7927a5e 100644 --- a/ui/Downloader.qml +++ b/ui/Downloader.qml @@ -48,6 +48,10 @@ Window { ColumnLayout { id: columnLayout anchors.fill: parent + anchors.rightMargin: 10 + anchors.leftMargin: 10 + anchors.bottomMargin: 10 + anchors.topMargin: 10 Label { text: qsTr("Downloading in progress...") diff --git a/ui/components/AudioPlayer.qml b/ui/components/AudioPlayer.qml index 2caf0d9..493db07 100644 --- a/ui/components/AudioPlayer.qml +++ b/ui/components/AudioPlayer.qml @@ -7,8 +7,8 @@ import QtMultimedia Item { - width: 180 - height: 132 + width: 200 + height: 80 property bool loop: false @@ -68,6 +68,109 @@ Item { positionSlider.enabled = false } + Window { + id: audioSettingWindow + + width: 450 + height: 150 + + maximumHeight: height + maximumWidth: width + + minimumHeight: height + minimumWidth: width + + modality: Qt.ApplicationModal + flags: Qt.Dialog + + title: qsTr("Artemis - Audio Player Settings") + + Component.onCompleted: { + x = Screen.width / 2 - width / 2 + y = Screen.height / 2 - height / 2 + } + + Page { + anchors.fill: parent + + ColumnLayout { + anchors.fill: parent + anchors.rightMargin: 10 + anchors.leftMargin: 10 + anchors.bottomMargin: 10 + anchors.topMargin: 10 + + RowLayout { + Layout.fillWidth: true + + Label { + text: "Audio Output" + font.pixelSize: 12 + clip: true + Layout.fillWidth: true + } + + ComboBox { + id: audioOutputComboBox + Layout.preferredWidth: 200 + model: mediaDevices.audioOutputs + textRole: "description" + onCurrentIndexChanged: { + audioOutput.device = mediaDevices.audioOutputs[currentIndex] + } + } + } + + RowLayout { + Layout.fillWidth: true + Label { + text: "Volume" + font.pixelSize: 12 + clip: true + Layout.fillWidth: true + } + Slider { + id: volumeSlider + Layout.preferredHeight: 20 + Layout.preferredWidth: 200 + value: 0.5 + } + } + + RowLayout { + Layout.fillWidth: true + Label { + text: "Replay (Loop)" + font.pixelSize: 12 + clip: true + Layout.fillWidth: true + } + RoundButton { + id: buttonLoop + icon.color: Material.foreground + icon.source: "qrc:/images/icons/player_loop.svg" + display: AbstractButton.IconOnly + enabled: false + flat: true + onClicked: { + if (loop) { + loop = false + icon.color = Material.foreground + } else { + loop = true + icon.color = Material.accent + } + } + } + } + + Item { + Layout.fillHeight: true + } + } + } + } + ColumnLayout { anchors.fill: parent spacing: 0 @@ -118,20 +221,14 @@ Item { } RoundButton { - id: buttonLoop + id: buttonSettings icon.color: Material.foreground - icon.source: "qrc:/images/icons/player_loop.svg" + icon.source: "qrc:/images/icons/settings.svg" display: AbstractButton.IconOnly - enabled: false + enabled: true flat: true onClicked: { - if (loop) { - loop = false - icon.color = Material.foreground - } else { - loop = true - icon.color = Material.accent - } + audioSettingWindow.show() } } } @@ -149,27 +246,6 @@ Item { } } - RowLayout { - Slider { - id: volumeSlider - Layout.preferredHeight: 20 - value: 0.5 - Layout.fillWidth: true - } - - RoundButton { - id: buttonMute - icon.color: Material.foreground - icon.source: "qrc:/images/icons/player_mute.svg" - display: AbstractButton.IconOnly - enabled: true - flat: true - onClicked: { - volumeSlider.value = 0 - } - } - } - MediaPlayer { id: player audioOutput: audioOutput @@ -186,7 +262,12 @@ Item { AudioOutput { id: audioOutput + device: mediaDevices.defaultAudioOutput volume: volumeSlider.value } + + MediaDevices { + id: mediaDevices + } } }