aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2016-04-20 23:29:39 +0800
committerGravatar Chris Xiong <chirs241097@gmail.com> 2016-04-20 23:29:39 +0800
commit32568af90e5c521c68432a7e77b6dd8bf524adde (patch)
treee2bed775bf9953f26ad94531da2a20ec9f967482
parentb68f60e023175b144664de092c31416fa5b58880 (diff)
downloadQMidiPlayer-32568af90e5c521c68432a7e77b6dd8bf524adde.tar.xz
UI refinements and fix to two memory leaks.
Minor improvement in MIDI reading process.
-rw-r--r--ChangeLog12
-rw-r--r--core/qmpmidimapperrtmidi.cpp1
-rw-r--r--core/qmpmidiplay.cpp4
-rw-r--r--core/qmpmidiplay.hpp2
-rw-r--r--core/qmpmidiread.cpp15
-rw-r--r--debian/changelog7
-rw-r--r--doc/index_internal.html34
-rw-r--r--qmidiplayer-desktop/qmidiplayer-desktop.pro3
-rw-r--r--qmidiplayer-desktop/qmpchanneleditor.ui1078
-rw-r--r--qmidiplayer-desktop/qmpmainwindow.cpp40
-rw-r--r--qmidiplayer-desktop/qmpmainwindow.hpp21
-rw-r--r--qmidiplayer-desktop/qmpmainwindow.ui860
-rw-r--r--qmidiplayer-desktop/qmpplistwindow.ui502
-rw-r--r--qmidiplayer-desktop/qmppresetselect.ui165
-rw-r--r--qmidiplayer-desktop/qmpsettingswindow.ui18
-rw-r--r--qmidiplayer-lite/qmidiplayer-lite.pro3
16 files changed, 1497 insertions, 1268 deletions
diff --git a/ChangeLog b/ChangeLog
index 4880631..9ae9c10 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,14 @@
-2016-04-18 0.7.2 beta
+2016-04-20 0.7.2 beta
+UI refinements:
+ Use Qt layouts in most of the dialogs.
+ Allow seeking with a single click on the slider.
+ Remove file extension from the file name on main window.
+ Use QLCDNumber to display current polyphone.
+Fixed two memory leaks.
+Minor improvement in MIDI reading process.
+Added a function to dump midi file content (for debugging).
+
+2016-04-19 0.7.2 beta
Fixed several bugs in command line parsing (on Windows).
2016-04-18 0.7.2 beta
diff --git a/core/qmpmidimapperrtmidi.cpp b/core/qmpmidimapperrtmidi.cpp
index 845f24b..059ca77 100644
--- a/core/qmpmidimapperrtmidi.cpp
+++ b/core/qmpmidimapperrtmidi.cpp
@@ -88,6 +88,7 @@ void qmpMidiMapperRtMidi::sysEx(int iid,int length,const char *data)
void qmpMidiMapperRtMidi::panic(int iid,int ch)
{
//maybe all notes off is more close to panic?
+ pitchBend(iid,ch,8192);
ctrlChange(iid,ch,120,0);
//ctrlChange(iid,ch,123,0);
}
diff --git a/core/qmpmidiplay.cpp b/core/qmpmidiplay.cpp
index 43ae17e..ab312f7 100644
--- a/core/qmpmidiplay.cpp
+++ b/core/qmpmidiplay.cpp
@@ -291,12 +291,14 @@ void CMidiPlayer::playerPanic(bool reset)
{
if(reset)
{
- fluid_synth_pitch_bend(synth,i,8192);
+ fluid_synth_cc(synth,i,0,0);
fluid_synth_cc(synth,i,7,100);
fluid_synth_cc(synth,i,10,64);
fluid_synth_cc(synth,i,11,127);
+ fluid_synth_cc(synth,i,32,0);
}
fluid_synth_cc(synth,i,64,0);
+ fluid_synth_pitch_bend(synth,i,8192);
//all sounds off causes the minus polyphone bug...
fluid_synth_all_notes_off(synth,i);
if(deviceusage[i])for(int j=0;j<16;++j)
diff --git a/core/qmpmidiplay.hpp b/core/qmpmidiplay.hpp
index f2d7a4a..9bb6323 100644
--- a/core/qmpmidiplay.hpp
+++ b/core/qmpmidiplay.hpp
@@ -13,6 +13,7 @@ struct SEvent
uint8_t type;
char *str;
SEvent(){time=p1=p2=0;type=0;str=NULL;}
+ ~SEvent(){if(str){delete[] str;str=NULL;}}
SEvent(uint32_t _iid,uint32_t _t,char _tp,uint32_t _p1,uint32_t _p2,const char* s=NULL)
{
iid=_iid;time=_t;type=_tp;
@@ -46,6 +47,7 @@ class CMidiFile
void trackChunkReader();
void headerChunkReader();
int chunkReader(int hdrXp);
+ void dumpEvents();
public:
CMidiFile(const char* fn);
~CMidiFile();
diff --git a/core/qmpmidiread.cpp b/core/qmpmidiread.cpp
index 115b7b3..762ce5d 100644
--- a/core/qmpmidiread.cpp
+++ b/core/qmpmidiread.cpp
@@ -51,7 +51,7 @@ int CMidiFile::eventReader()//returns 0 if End of Track encountered
uint32_t delta=readVL();curt+=delta;
char type=fgetc(f);++byteread;uint32_t p1,p2;
static char lasttype;
-retry:
+ if(!(type&0x80)){fseek(f,-1,SEEK_CUR);--byteread;type=lasttype;}
switch(type&0xF0)
{
case 0x80://Note Off
@@ -164,11 +164,12 @@ retry:
if(!strcmp(str,GM2SysX))std=2;
if(!strcmp(str,GSSysEx))std=3;
if(!strcmp(str,XGSysEx))std=4;
+ delete[] str;
}
else error(0,"W: Unknown event type %#x",type);
break;
default:
- fseek(f,-1,SEEK_CUR);--byteread;type=lasttype;goto retry;
+ error(0,"W: Unknown event type %#x",type);
}
lasttype=type;++curid;
return 1;
@@ -211,6 +212,16 @@ int CMidiFile::chunkReader(int hdrXp)
}
else return trackChunkReader(),1;
}
+void CMidiFile::dumpEvents()
+{
+ for(uint32_t i=0;i<eventList.size();++i)
+ if(eventList[i]->str)
+ printf("type %x #%d @%d p1 %d p2 %d str %s\n",eventList[i]->type,
+ eventList[i]->iid,eventList[i]->time,eventList[i]->p1,eventList[i]->p2,eventList[i]->str);
+ else
+ printf("type %x #%d @%d p1 %d p2 %d\n",eventList[i]->type,
+ eventList[i]->iid,eventList[i]->time,eventList[i]->p1,eventList[i]->p2);
+}
CMidiFile::CMidiFile(const char* fn)
{
title=copyright=NULL;notes=0;std=0;valid=1;
diff --git a/debian/changelog b/debian/changelog
index 9ef843b..d21bd02 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+qmidiplayer (0.7.2-4) UNRELEASED; urgency=low
+
+ * New upstream release.
+
+ -- chrisoft <chirs241097@gmail.com> Wed, 20 Apr 2016 23:21:21 +0800
+
+
qmidiplayer (0.7.2-3) UNRELEASED; urgency=low
* New upstream release.
diff --git a/doc/index_internal.html b/doc/index_internal.html
index c795b90..17f9cc0 100644
--- a/doc/index_internal.html
+++ b/doc/index_internal.html
@@ -4,29 +4,15 @@
<title>QMidiPlayer Help</title>
</head>
<body>
- <table>
- <tr>
- <td style="vertical-align:top;">
- <ul>
- <li>User manual</li>
- <li>Contributing</li>
- <li><a href="version_internal.html">Version Info.</a></li>
- <li><a href="license_internal.html">License</a></li>
- </ul>
- </td>
- <td>
- <h1>User manual</h1>
- You can find documentation <a href="https://htmlpreview.github.io/?https://github.com/chirs241097/QMidiPlayer/blob/master/doc/index.html">here</a>.<br>
- Alternatively, you can use <a href="https://chrisoft.org/QMidiPlayer/doc/index.html">the version on chrisoft.org</a> or the version installed on your computer.
- <h1>Contributing to the project</h1>
- Take a look at <a href="https://github.com/chirs241097/QMidiPlayer">the project's git repo</a>.
- <h1>About QMidiPlayer</h1>
- <ul>
- <li><a href="version_internal.html">Version information</a></li>
- <li><a href="license_internal.html">License</a></li>
- </ul>
- </td>
- </tr>
- </table>
+ <h1>User manual</h1>
+ You can find documentation <a href="https://htmlpreview.github.io/?https://github.com/chirs241097/QMidiPlayer/blob/master/doc/index.html">here</a>.<br>
+ Alternatively, you can use <a href="https://chrisoft.org/QMidiPlayer/doc/index.html">the version on chrisoft.org</a> or the version installed on your computer.
+ <h1>Contributing to the project</h1>
+ Take a look at <a href="https://github.com/chirs241097/QMidiPlayer">the project's git repo</a>.
+ <h1>About QMidiPlayer</h1>
+ <ul>
+ <li><a href="version_internal.html">Version information</a></li>
+ <li><a href="license_internal.html">License</a></li>
+ </ul>
</body>
</html> \ No newline at end of file
diff --git a/qmidiplayer-desktop/qmidiplayer-desktop.pro b/qmidiplayer-desktop/qmidiplayer-desktop.pro
index c7d2e99..4eaf3dd 100644
--- a/qmidiplayer-desktop/qmidiplayer-desktop.pro
+++ b/qmidiplayer-desktop/qmidiplayer-desktop.pro
@@ -83,7 +83,8 @@ unix{
win32{
#change these before building...
LIBS += e:/libs/fluidsynth/fluidsynth.lib winmm.lib
- LIBS += e:/libs/rtmidi/rtmidi.lib
+ Release:LIBS += e:/libs/rtmidi/rtmidi.lib
+ Debug:LIBS += e:/libs/rtmidi/rtmidid.lib
INCLUDEPATH += e:/libs/fluidsynth/include
INCLUDEPATH += e:/libs/rtmidi
RC_FILE = qmidiplayer.rc
diff --git a/qmidiplayer-desktop/qmpchanneleditor.ui b/qmidiplayer-desktop/qmpchanneleditor.ui
index 49e8c8e..ccd944b 100644
--- a/qmidiplayer-desktop/qmpchanneleditor.ui
+++ b/qmidiplayer-desktop/qmpchanneleditor.ui
@@ -25,577 +25,513 @@
<property name="windowTitle">
<string>Dialog</string>
</property>
- <widget class="QPushButton" name="pbChLeft">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>10</y>
- <width>21</width>
- <height>21</height>
- </rect>
- </property>
- <property name="text">
- <string>&lt;</string>
- </property>
- </widget>
- <widget class="QLabel" name="lbChannelNumber">
- <property name="geometry">
- <rect>
- <x>30</x>
- <y>10</y>
- <width>21</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>1</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- <widget class="QPushButton" name="pbChRight">
- <property name="geometry">
- <rect>
- <x>50</x>
- <y>10</y>
- <width>21</width>
- <height>21</height>
- </rect>
- </property>
- <property name="text">
- <string>&gt;</string>
- </property>
- </widget>
- <widget class="QLabel" name="lbPresetName">
- <property name="geometry">
- <rect>
- <x>90</x>
- <y>10</y>
- <width>261</width>
- <height>51</height>
- </rect>
- </property>
- <property name="font">
- <font>
- <pointsize>16</pointsize>
- </font>
- </property>
- <property name="text">
- <string>Yamaha Grand Piano</string>
- </property>
- </widget>
- <widget class="QLabel" name="lbBank">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>30</y>
- <width>81</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>BK: 0</string>
- </property>
- </widget>
- <widget class="QLabel" name="lbPreset">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>50</y>
- <width>81</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>PC: 0</string>
- </property>
- </widget>
- <widget class="QGroupBox" name="gFilters">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>70</y>
- <width>141</width>
- <height>101</height>
- </rect>
- </property>
- <property name="title">
- <string>Filters</string>
- </property>
- <widget class="QLabel" name="lbReso">
- <property name="geometry">
- <rect>
- <x>70</x>
- <y>80</y>
- <width>66</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Res. 64</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QDial" name="dReso">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>127</number>
- </property>
- <property name="value">
- <number>64</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QDial" name="dCut">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>127</number>
- </property>
- <property name="value">
- <number>64</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QLabel" name="lbCut">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>80</y>
- <width>71</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Cut. 64</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </widget>
- <widget class="QGroupBox" name="gEffects">
- <property name="geometry">
- <rect>
- <x>140</x>
- <y>70</y>
- <width>141</width>
- <height>101</height>
- </rect>
- </property>
- <property name="title">
- <string>Effects</string>
- </property>
- <widget class="QLabel" name="lbChorus">
- <property name="geometry">
- <rect>
- <x>70</x>
- <y>80</y>
- <width>66</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Chr. 64</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QDial" name="dChorus">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>127</number>
- </property>
- <property name="value">
- <number>64</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QDial" name="dReverb">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>127</number>
- </property>
- <property name="value">
- <number>64</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QLabel" name="lbReverb">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>80</y>
- <width>71</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Rev. 64</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </widget>
- <widget class="QGroupBox" name="gEnvelope">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>170</y>
- <width>211</width>
- <height>101</height>
- </rect>
- </property>
- <property name="title">
- <string>Envelope</string>
- </property>
- <widget class="QLabel" name="lbDecay">
- <property name="geometry">
- <rect>
- <x>70</x>
- <y>80</y>
- <width>66</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Dec. 64</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QDial" name="dDecay">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>127</number>
- </property>
- <property name="value">
- <number>64</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QDial" name="dAttack">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>127</number>
- </property>
- <property name="value">
- <number>64</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QLabel" name="lbAttack">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>80</y>
- <width>71</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Atk. 64</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QDial" name="dRelease">
- <property name="geometry">
- <rect>
- <x>150</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>127</number>
- </property>
- <property name="value">
- <number>64</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QLabel" name="lbRelease">
- <property name="geometry">
- <rect>
- <x>140</x>
- <y>80</y>
- <width>66</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Rel. 64</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </widget>
- <widget class="QGroupBox" name="gVibrato">
- <property name="geometry">
- <rect>
- <x>210</x>
- <y>170</y>
- <width>211</width>
- <height>101</height>
- </rect>
- </property>
- <property name="title">
- <string>Vibrato</string>
- </property>
- <widget class="QLabel" name="lbDepth">
- <property name="geometry">
- <rect>
- <x>70</x>
- <y>80</y>
- <width>66</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Dep. 64</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QDial" name="dDepth">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>127</number>
- </property>
- <property name="value">
- <number>64</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QDial" name="dRate">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>127</number>
- </property>
- <property name="value">
- <number>64</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QLabel" name="lbRate">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>80</y>
- <width>71</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Rate 64</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QDial" name="dDelay">
- <property name="geometry">
- <rect>
- <x>150</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>127</number>
- </property>
- <property name="value">
- <number>64</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QLabel" name="lbDelay">
- <property name="geometry">
- <rect>
- <x>140</x>
- <y>80</y>
- <width>66</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Del. 64</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </widget>
- <widget class="QGroupBox" name="gMixer">
- <property name="geometry">
- <rect>
- <x>280</x>
- <y>70</y>
- <width>141</width>
- <height>101</height>
- </rect>
- </property>
- <property name="title">
- <string>Mixer</string>
- </property>
- <widget class="QLabel" name="lbPan">
- <property name="geometry">
- <rect>
- <x>70</x>
- <y>80</y>
- <width>66</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Pan. C</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QDial" name="dPan">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>127</number>
- </property>
- <property name="value">
- <number>64</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QLabel" name="lbVol">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>80</y>
- <width>66</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Vol. 127</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QDial" name="dVol">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>127</number>
- </property>
- <property name="value">
- <number>127</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- </widget>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QPushButton" name="pbChLeft">
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>&lt;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="lbChannelNumber">
+ <property name="minimumSize">
+ <size>
+ <width>24</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>1</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pbChRight">
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>&gt;</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QLabel" name="lbBank">
+ <property name="text">
+ <string>BK: 0</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="lbPreset">
+ <property name="text">
+ <string>PC: 0</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QLabel" name="lbPresetName">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>16</pointsize>
+ </font>
+ </property>
+ <property name="text">
+ <string>Yamaha Grand Piano</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QGroupBox" name="gFilters">
+ <property name="title">
+ <string>Filters</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>4</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QDial" name="dCut">
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ <property name="value">
+ <number>64</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QDial" name="dReso">
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ <property name="value">
+ <number>64</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="lbCut">
+ <property name="text">
+ <string>Cut. 64</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="lbReso">
+ <property name="text">
+ <string>Res. 64</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="gEffects">
+ <property name="title">
+ <string>Effects</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>4</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QDial" name="dReverb">
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ <property name="value">
+ <number>64</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QDial" name="dChorus">
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ <property name="value">
+ <number>64</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="lbReverb">
+ <property name="text">
+ <string>Rev. 64</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="lbChorus">
+ <property name="text">
+ <string>Chr. 64</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="gMixer">
+ <property name="title">
+ <string>Mixer</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>4</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QDial" name="dVol">
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ <property name="value">
+ <number>127</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QDial" name="dPan">
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ <property name="value">
+ <number>64</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="lbVol">
+ <property name="text">
+ <string>Vol. 127</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="lbPan">
+ <property name="text">
+ <string>Pan. C</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QGroupBox" name="gEnvelope">
+ <property name="title">
+ <string>Envelope</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_4">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>4</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QDial" name="dAttack">
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ <property name="value">
+ <number>64</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QDial" name="dDecay">
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ <property name="value">
+ <number>64</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QDial" name="dRelease">
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ <property name="value">
+ <number>64</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="lbAttack">
+ <property name="text">
+ <string>Atk. 64</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="lbDecay">
+ <property name="text">
+ <string>Dec. 64</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QLabel" name="lbRelease">
+ <property name="text">
+ <string>Rel. 64</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="gVibrato">
+ <property name="title">
+ <string>Vibrato</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_5">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>4</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QDial" name="dRate">
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ <property name="value">
+ <number>64</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QDial" name="dDepth">
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ <property name="value">
+ <number>64</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QDial" name="dDelay">
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ <property name="value">
+ <number>64</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="lbRate">
+ <property name="text">
+ <string>Rate 64</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="lbDepth">
+ <property name="text">
+ <string>Dep. 64</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QLabel" name="lbDelay">
+ <property name="text">
+ <string>Del. 64</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
</widget>
<resources/>
<connections/>
diff --git a/qmidiplayer-desktop/qmpmainwindow.cpp b/qmidiplayer-desktop/qmpmainwindow.cpp
index e38ed2a..c04bc93 100644
--- a/qmidiplayer-desktop/qmpmainwindow.cpp
+++ b/qmidiplayer-desktop/qmpmainwindow.cpp
@@ -1,7 +1,9 @@
#include <cstdio>
+#include <cmath>
#include <QUrl>
#include <QFileInfo>
#include <QMimeData>
+#include <QFont>
#include <QDirIterator>
#include <QDesktopWidget>
#include "qmpmainwindow.hpp"
@@ -43,6 +45,7 @@ qmpMainWindow::qmpMainWindow(QWidget *parent) :
ui(new Ui::qmpMainWindow)
{
ui->setupUi(this);
+ ui->lnPolyphone->display("00000-00000");
ui->lbFileName->setText("");ref=this;
playing=false;stopped=true;dragging=false;
settingsw=new qmpSettingsWindow(this);
@@ -219,7 +222,7 @@ void qmpMainWindow::updateWidgets()
chnlw->on_pbUnmute_clicked();chnlw->on_pbUnsolo_clicked();
ui->pbPlayPause->setIcon(QIcon(":/img/play.png"));
ui->hsTimer->setValue(0);
- ui->lbPolyphone->setText("Poly: 0/0");
+ ui->lnPolyphone->display("00000-00000");
ui->lbCurTime->setText("00:00");
}
else
@@ -230,7 +233,8 @@ void qmpMainWindow::updateWidgets()
if(singleFS)player->playerPanic(true);
chnlw->on_pbUnmute_clicked();chnlw->on_pbUnsolo_clicked();
QString fns=plistw->getNextItem();
- ui->lbFileName->setText(QUrl::fromLocalFile(fns).fileName());
+ ui->lbFileName->setText(QUrl::fromLocalFile(fns).fileName().left(QUrl::fromLocalFile(fns).fileName().lastIndexOf('.')));
+ onfnChanged();
LOAD_FILE;
char ts[100];
sprintf(ts,"%02d:%02d",(int)player->getFtime()/60,(int)player->getFtime()%60);
@@ -276,8 +280,9 @@ void qmpMainWindow::updateWidgets()
char ts[100];
sprintf(ts,"%02d:%02d",(int)(elapsed.count()+offset)/60,(int)(elapsed.count()+offset)%60);
ui->lbCurTime->setText(ts);
- sprintf(ts,"Poly: %d/%d",player->getPolyphone(),player->getMaxPolyphone());
- ui->lbPolyphone->setText(ts);
+ //sprintf(ts,"Poly: %d/%d",player->getPolyphone(),player->getMaxPolyphone());
+ ui->lnPolyphone->display(QString("%1-%2").arg(player->getPolyphone(),5,10,QChar('0'))
+ .arg(player->getMaxPolyphone(),5,10,QChar('0')));
}
}
@@ -330,7 +335,8 @@ void qmpMainWindow::on_pbPlayPause_clicked()
fns=plistw->getFirstItem();
if(!fns.length())return(void)(playing=false);
}
- ui->lbFileName->setText(QUrl::fromLocalFile(fns).fileName());
+ ui->lbFileName->setText(QUrl::fromLocalFile(fns).fileName().left(QUrl::fromLocalFile(fns).fileName().lastIndexOf('.')));
+ onfnChanged();
LOAD_FILE;
char ts[100];
sprintf(ts,"%02d:%02d",(int)player->getFtime()/60,(int)player->getFtime()%60);
@@ -408,7 +414,7 @@ void qmpMainWindow::on_pbStop_clicked()
chnlw->on_pbUnmute_clicked();chnlw->on_pbUnsolo_clicked();
ui->pbPlayPause->setIcon(QIcon(":/img/play.png"));
ui->hsTimer->setValue(0);
- ui->lbPolyphone->setText("Poly: 0/0");
+ ui->lnPolyphone->display("00000-00000");
ui->lbCurTime->setText("00:00");
}
}
@@ -454,7 +460,8 @@ void qmpMainWindow::on_pbPrev_clicked()
if(singleFS)player->playerPanic(true);
ui->hsTimer->setValue(0);chnlw->on_pbUnmute_clicked();chnlw->on_pbUnsolo_clicked();
QString fns=plistw->getPrevItem();if(fns.length()==0)return on_pbStop_clicked();
- ui->lbFileName->setText(QUrl::fromLocalFile(fns).fileName());
+ ui->lbFileName->setText(QUrl::fromLocalFile(fns).fileName().left(QUrl::fromLocalFile(fns).fileName().lastIndexOf('.')));
+ onfnChanged();
LOAD_FILE;
char ts[100];
sprintf(ts,"%02d:%02d",(int)player->getFtime()/60,(int)player->getFtime()%60);
@@ -479,7 +486,8 @@ void qmpMainWindow::on_pbNext_clicked()
if(singleFS)player->playerPanic(true);
ui->hsTimer->setValue(0);chnlw->on_pbUnmute_clicked();chnlw->on_pbUnsolo_clicked();
QString fns=plistw->getNextItem();if(fns.length()==0)return on_pbStop_clicked();
- ui->lbFileName->setText(QUrl::fromLocalFile(fns).fileName());
+ ui->lbFileName->setText(QUrl::fromLocalFile(fns).fileName().left(QUrl::fromLocalFile(fns).fileName().lastIndexOf('.')));
+ onfnChanged();
LOAD_FILE;
char ts[100];
sprintf(ts,"%02d:%02d",(int)player->getFtime()/60,(int)player->getFtime()%60);
@@ -507,7 +515,8 @@ void qmpMainWindow::selectionChanged()
ui->hsTimer->setValue(0);
chnlw->on_pbUnmute_clicked();chnlw->on_pbUnsolo_clicked();
QString fns=plistw->getSelectedItem();
- ui->lbFileName->setText(QUrl::fromLocalFile(fns).fileName());
+ ui->lbFileName->setText(QUrl::fromLocalFile(fns).fileName().left(QUrl::fromLocalFile(fns).fileName().lastIndexOf('.')));
+ onfnChanged();
LOAD_FILE;
char ts[100];
sprintf(ts,"%02d:%02d",(int)player->getFtime()/60,(int)player->getFtime()%60);
@@ -546,6 +555,19 @@ void qmpMainWindow::on_lbFileName_customContextMenuRequested(const QPoint &pos)
menu.exec(this->pos()+ui->lbFileName->pos()+pos);
}
+void qmpMainWindow::onfnChanged()
+{
+ if(!ui->lbFileName->text().length())return;
+ QFont f=ui->lbFileName->font();f.setPointSize(18);
+ QFontMetrics fm(f);
+ QSize size=fm.size(0,ui->lbFileName->text());
+ double fw=ui->lbFileName->width()/(double)size.width();
+ double fh=ui->lbFileName->height()/(double)size.height();
+ double ps=floor(f.pointSizeF()*(fw<fh?fw:fh));if(ps<6)ps=6;
+ f.setPointSizeF(ps>18?18:ps);
+ ui->lbFileName->setFont(f);
+}
+
void qmpMainWindow::onfnA1()
{
infow->show();
diff --git a/qmidiplayer-desktop/qmpmainwindow.hpp b/qmidiplayer-desktop/qmpmainwindow.hpp
index 55e0b12..2f3876d 100644
--- a/qmidiplayer-desktop/qmpmainwindow.hpp
+++ b/qmidiplayer-desktop/qmpmainwindow.hpp
@@ -7,9 +7,11 @@
#include <QMoveEvent>
#include <QDropEvent>
#include <QDragEnterEvent>
+#include <QMouseEvent>
#include <QAction>
#include <QMenu>
#include <QApplication>
+#include <QSlider>
#include <thread>
#include <chrono>
#include "../core/qmpmidiplay.hpp"
@@ -24,6 +26,24 @@ namespace Ui {
class qmpMainWindow;
}
+class QClickableSlider:public QSlider
+{
+ Q_OBJECT
+ public:
+ explicit QClickableSlider(QWidget *parent=0):QSlider(parent){}
+ protected:
+ void mouseReleaseEvent(QMouseEvent *e)
+ {
+ QSlider::mouseReleaseEvent(e);
+ if(e->buttons()^Qt::LeftButton)
+ {
+ double p=e->pos().x()/(double)width();
+ setValue(p*(maximum()-minimum())+minimum());
+ emit sliderReleased();
+ }
+ }
+};
+
class qmpMainWindow:public QMainWindow
{
Q_OBJECT
@@ -83,6 +103,7 @@ class qmpMainWindow:public QMainWindow
qmpHelpWindow *helpw;
QAction *fnA1,*fnA2,*fnA3;
+ void onfnChanged();
void playerSetup();
private:
diff --git a/qmidiplayer-desktop/qmpmainwindow.ui b/qmidiplayer-desktop/qmpmainwindow.ui
index 0764e09..e61c3d4 100644
--- a/qmidiplayer-desktop/qmpmainwindow.ui
+++ b/qmidiplayer-desktop/qmpmainwindow.ui
@@ -6,19 +6,19 @@
<rect>
<x>0</x>
<y>0</y>
- <width>435</width>
+ <width>450</width>
<height>245</height>
</rect>
</property>
<property name="minimumSize">
<size>
- <width>435</width>
+ <width>450</width>
<height>245</height>
</size>
</property>
<property name="maximumSize">
<size>
- <width>435</width>
+ <width>450</width>
<height>245</height>
</size>
</property>
@@ -33,379 +33,521 @@
<normaloff>:/img/qmidiplyr.png</normaloff>:/img/qmidiplyr.png</iconset>
</property>
<widget class="QWidget" name="centralWidget">
- <widget class="QLabel" name="lbFileName">
- <property name="geometry">
- <rect>
- <x>30</x>
- <y>20</y>
- <width>311</width>
- <height>41</height>
- </rect>
- </property>
- <property name="font">
- <font>
- <pointsize>18</pointsize>
- </font>
- </property>
- <property name="contextMenuPolicy">
- <enum>Qt::CustomContextMenu</enum>
- </property>
- <property name="text">
- <string>somefile.mid</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QSlider" name="hsTimer">
- <property name="geometry">
- <rect>
- <x>20</x>
- <y>90</y>
- <width>321</width>
- <height>20</height>
- </rect>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- <property name="pageStep">
- <number>0</number>
- </property>
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- <widget class="QPushButton" name="pbPlayPause">
- <property name="geometry">
- <rect>
- <x>20</x>
- <y>110</y>
- <width>61</width>
- <height>36</height>
- </rect>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/play.png</normaloff>:/img/play.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- <widget class="QPushButton" name="pbStop">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>110</y>
- <width>61</width>
- <height>36</height>
- </rect>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/stop.png</normaloff>:/img/stop.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- <widget class="QPushButton" name="pbPrev">
- <property name="geometry">
- <rect>
- <x>140</x>
- <y>110</y>
- <width>61</width>
- <height>36</height>
- </rect>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/prev.png</normaloff>:/img/prev.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- <widget class="QPushButton" name="pbNext">
- <property name="geometry">
- <rect>
- <x>200</x>
- <y>110</y>
- <width>61</width>
- <height>36</height>
- </rect>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/next.png</normaloff>:/img/next.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- <widget class="QPushButton" name="pbSettings">
- <property name="geometry">
- <rect>
- <x>280</x>
- <y>110</y>
- <width>61</width>
- <height>36</height>
- </rect>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/settings.png</normaloff>:/img/settings.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QPushButton" name="pbChannels">
- <property name="geometry">
- <rect>
- <x>20</x>
- <y>160</y>
- <width>151</width>
- <height>36</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string notr="true">text-align:left</string>
- </property>
- <property name="text">
- <string>Channels</string>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/channel.png</normaloff>:/img/channel.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QPushButton" name="pbPList">
- <property name="geometry">
- <rect>
- <x>190</x>
- <y>160</y>
- <width>151</width>
- <height>36</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string notr="true">text-align:left</string>
- </property>
- <property name="text">
- <string>Playlist</string>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/list.png</normaloff>:/img/list.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="checked">
- <bool>false</bool>
- </property>
- <property name="flat">
- <bool>false</bool>
- </property>
- </widget>
- <widget class="QPushButton" name="pbEfx">
- <property name="geometry">
- <rect>
- <x>20</x>
- <y>200</y>
- <width>151</width>
- <height>36</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string notr="true">text-align:left</string>
- </property>
- <property name="text">
- <string>Effects</string>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/effects.png</normaloff>:/img/effects.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QPushButton" name="pbVisualization">
- <property name="geometry">
- <rect>
- <x>190</x>
- <y>200</y>
- <width>151</width>
- <height>36</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string notr="true">text-align:left</string>
- </property>
- <property name="text">
- <string>Visualization</string>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/visualization.png</normaloff>:/img/visualization.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- <widget class="QLabel" name="lbPolyphone">
- <property name="geometry">
- <rect>
- <x>320</x>
- <y>20</y>
- <width>111</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Poly: 0/0&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QSlider" name="vsMasterVol">
- <property name="geometry">
- <rect>
- <x>370</x>
- <y>50</y>
- <width>20</width>
- <height>160</height>
- </rect>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- <property name="value">
- <number>50</number>
- </property>
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- </widget>
- <widget class="QLabel" name="lbMasterVol">
- <property name="geometry">
- <rect>
- <x>360</x>
- <y>210</y>
- <width>61</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Master</string>
- </property>
- </widget>
- <widget class="QLabel" name="lbCurTime">
- <property name="geometry">
- <rect>
- <x>20</x>
- <y>70</y>
- <width>66</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>00:00</string>
- </property>
- </widget>
- <widget class="QLabel" name="lbFinTime">
+ <widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
- <x>270</x>
- <y>70</y>
- <width>66</width>
- <height>20</height>
+ <x>0</x>
+ <y>0</y>
+ <width>21</width>
+ <height>21</height>
</rect>
</property>
<property name="text">
- <string>00:00</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ <string>?</string>
</property>
</widget>
- <widget class="QPushButton" name="pushButton">
+ <widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
- <width>21</width>
- <height>21</height>
+ <width>451</width>
+ <height>241</height>
</rect>
</property>
- <property name="text">
- <string>?</string>
- </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="leftMargin">
+ <number>4</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QLabel" name="lbFileName">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>18</pointsize>
+ </font>
+ </property>
+ <property name="contextMenuPolicy">
+ <enum>Qt::CustomContextMenu</enum>
+ </property>
+ <property name="text">
+ <string>somefile.mid</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="lbCurTime">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>00:00</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="lbFinTime">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>00:00</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QClickableSlider" name="hsTimer">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ <property name="pageStep">
+ <number>0</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QPushButton" name="pbPlayPause">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>34</height>
+ </size>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/play.png</normaloff>:/img/play.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pbStop">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>34</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>34</height>
+ </size>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/stop.png</normaloff>:/img/stop.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pbPrev">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>34</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>34</height>
+ </size>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/prev.png</normaloff>:/img/prev.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pbNext">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>34</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>34</height>
+ </size>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/next.png</normaloff>:/img/next.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pbSettings">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>34</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>34</height>
+ </size>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/settings.png</normaloff>:/img/settings.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QPushButton" name="pbChannels">
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>36</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">text-align:left</string>
+ </property>
+ <property name="text">
+ <string>Channels</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/channel.png</normaloff>:/img/channel.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QPushButton" name="pbPList">
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>36</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">text-align:left</string>
+ </property>
+ <property name="text">
+ <string>Playlist</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/list.png</normaloff>:/img/list.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>false</bool>
+ </property>
+ <property name="flat">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QPushButton" name="pbEfx">
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>36</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">text-align:left</string>
+ </property>
+ <property name="text">
+ <string>Effects</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/effects.png</normaloff>:/img/effects.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QPushButton" name="pbVisualization">
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>36</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">text-align:left</string>
+ </property>
+ <property name="text">
+ <string>Visualization</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/visualization.png</normaloff>:/img/visualization.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="lbPolyphone">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Poly&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLCDNumber" name="lnPolyphone">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>84</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="digitCount">
+ <number>11</number>
+ </property>
+ <property name="segmentStyle">
+ <enum>QLCDNumber::Flat</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="vsMasterVol">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ <property name="value">
+ <number>50</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="lbMasterVol">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Master</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
</widget>
+ <zorder>horizontalLayoutWidget</zorder>
+ <zorder>pushButton</zorder>
</widget>
</widget>
<layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+ <customwidget>
+ <class>QClickableSlider</class>
+ <extends>QSlider</extends>
+ <header>qmpmainwindow.hpp</header>
+ </customwidget>
+ </customwidgets>
<resources>
<include location="resources.qrc"/>
</resources>
diff --git a/qmidiplayer-desktop/qmpplistwindow.ui b/qmidiplayer-desktop/qmpplistwindow.ui
index 99124df..7b4eaa5 100644
--- a/qmidiplayer-desktop/qmpplistwindow.ui
+++ b/qmidiplayer-desktop/qmpplistwindow.ui
@@ -28,233 +28,281 @@
<property name="windowTitle">
<string>Playlist</string>
</property>
- <widget class="QPushButton" name="pbAdd">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>280</y>
- <width>121</width>
- <height>36</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string notr="true">text-align:left</string>
- </property>
- <property name="text">
- <string>Add</string>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/add.png</normaloff>:/img/add.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- <widget class="QPushButton" name="pbAddFolder">
- <property name="geometry">
- <rect>
- <x>140</x>
- <y>280</y>
- <width>121</width>
- <height>36</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string notr="true">text-align:left</string>
- </property>
- <property name="text">
- <string>Add Folder</string>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/addfolder.png</normaloff>:/img/addfolder.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- <widget class="QPushButton" name="pbRepeat">
- <property name="geometry">
- <rect>
- <x>270</x>
- <y>240</y>
- <width>121</width>
- <height>36</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string notr="true">text-align:left</string>
- </property>
- <property name="text">
- <string>Repeat Off</string>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/repeat-non.png</normaloff>:/img/repeat-non.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- <widget class="QPushButton" name="pbShuffle">
- <property name="geometry">
- <rect>
- <x>400</x>
- <y>240</y>
- <width>121</width>
- <height>36</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string notr="true">text-align:left</string>
- </property>
- <property name="text">
- <string>Shuffle Off</string>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/shuffle-off.png</normaloff>:/img/shuffle-off.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- <widget class="QPushButton" name="pbSave">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>240</y>
- <width>121</width>
- <height>36</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string notr="true">text-align:left</string>
- </property>
- <property name="text">
- <string>Save</string>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/save.png</normaloff>:/img/save.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- <widget class="QPushButton" name="pbLoad">
- <property name="geometry">
- <rect>
- <x>140</x>
- <y>240</y>
- <width>121</width>
- <height>36</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string notr="true">text-align:left</string>
- </property>
- <property name="text">
- <string>Load</string>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/load.png</normaloff>:/img/load.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- <widget class="QPushButton" name="pbRemove">
- <property name="geometry">
- <rect>
- <x>270</x>
- <y>280</y>
- <width>121</width>
- <height>36</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string notr="true">text-align:left</string>
- </property>
- <property name="text">
- <string>Remove</string>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/remove.png</normaloff>:/img/remove.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- <widget class="QPushButton" name="pbClear">
- <property name="geometry">
- <rect>
- <x>400</x>
- <y>280</y>
- <width>121</width>
- <height>36</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string notr="true">text-align:left</string>
- </property>
- <property name="text">
- <string>Clear</string>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/img/clear.png</normaloff>:/img/clear.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- <widget class="QListWidget" name="lwFiles">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>10</y>
- <width>511</width>
- <height>221</height>
- </rect>
- </property>
- <property name="acceptDrops">
- <bool>false</bool>
- </property>
- <property name="dragEnabled">
- <bool>true</bool>
- </property>
- <property name="dragDropMode">
- <enum>QAbstractItemView::InternalMove</enum>
- </property>
- </widget>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QListWidget" name="lwFiles">
+ <property name="acceptDrops">
+ <bool>false</bool>
+ </property>
+ <property name="dragEnabled">
+ <bool>true</bool>
+ </property>
+ <property name="dragDropMode">
+ <enum>QAbstractItemView::InternalMove</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QPushButton" name="pbSave">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>36</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">text-align:left</string>
+ </property>
+ <property name="text">
+ <string>Save</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/save.png</normaloff>:/img/save.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QPushButton" name="pbAdd">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>36</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">text-align:left</string>
+ </property>
+ <property name="text">
+ <string>Add</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/add.png</normaloff>:/img/add.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QPushButton" name="pbLoad">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>36</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">text-align:left</string>
+ </property>
+ <property name="text">
+ <string>Load</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/load.png</normaloff>:/img/load.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QPushButton" name="pbRepeat">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>36</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">text-align:left</string>
+ </property>
+ <property name="text">
+ <string>Repeat Off</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/repeat-non.png</normaloff>:/img/repeat-non.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QPushButton" name="pbRemove">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>36</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">text-align:left</string>
+ </property>
+ <property name="text">
+ <string>Remove</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/remove.png</normaloff>:/img/remove.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QPushButton" name="pbAddFolder">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>36</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">text-align:left</string>
+ </property>
+ <property name="text">
+ <string>Add Folder</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/addfolder.png</normaloff>:/img/addfolder.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3">
+ <widget class="QPushButton" name="pbShuffle">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>36</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">text-align:left</string>
+ </property>
+ <property name="text">
+ <string>Shuffle Off</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/shuffle-off.png</normaloff>:/img/shuffle-off.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3">
+ <widget class="QPushButton" name="pbClear">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>36</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">text-align:left</string>
+ </property>
+ <property name="text">
+ <string>Clear</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/img/clear.png</normaloff>:/img/clear.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
</widget>
<resources>
<include location="resources.qrc"/>
diff --git a/qmidiplayer-desktop/qmppresetselect.ui b/qmidiplayer-desktop/qmppresetselect.ui
index f18600d..c9293d1 100644
--- a/qmidiplayer-desktop/qmppresetselect.ui
+++ b/qmidiplayer-desktop/qmppresetselect.ui
@@ -28,78 +28,99 @@
<property name="modal">
<bool>true</bool>
</property>
- <widget class="QListWidget" name="lwBankSelect">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>30</y>
- <width>71</width>
- <height>221</height>
- </rect>
- </property>
- </widget>
- <widget class="QListWidget" name="lwPresetSelect">
- <property name="geometry">
- <rect>
- <x>90</x>
- <y>30</y>
- <width>301</width>
- <height>221</height>
- </rect>
- </property>
- </widget>
- <widget class="QLabel" name="lbBnk">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>10</y>
- <width>66</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Bank</string>
- </property>
- </widget>
- <widget class="QLabel" name="lbPst">
- <property name="geometry">
- <rect>
- <x>90</x>
- <y>10</y>
- <width>66</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Preset</string>
- </property>
- </widget>
- <widget class="QPushButton" name="pbOk">
- <property name="geometry">
- <rect>
- <x>300</x>
- <y>260</y>
- <width>97</width>
- <height>36</height>
- </rect>
- </property>
- <property name="text">
- <string>OK</string>
- </property>
- </widget>
- <widget class="QPushButton" name="pbCancel">
- <property name="geometry">
- <rect>
- <x>190</x>
- <y>260</y>
- <width>97</width>
- <height>36</height>
- </rect>
- </property>
- <property name="text">
- <string>Cancel</string>
- </property>
- </widget>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="lbBnk">
+ <property name="text">
+ <string>Bank</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QListWidget" name="lwBankSelect">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>64</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QLabel" name="lbPst">
+ <property name="text">
+ <string>Preset</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QListWidget" name="lwPresetSelect"/>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pbCancel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pbOk">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>OK</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ <zorder>horizontalLayoutWidget</zorder>
+ <zorder>horizontalLayoutWidget_2</zorder>
+ <zorder>verticalLayoutWidget</zorder>
</widget>
<resources/>
<connections/>
diff --git a/qmidiplayer-desktop/qmpsettingswindow.ui b/qmidiplayer-desktop/qmpsettingswindow.ui
index 330afa2..0baa694 100644
--- a/qmidiplayer-desktop/qmpsettingswindow.ui
+++ b/qmidiplayer-desktop/qmpsettingswindow.ui
@@ -609,6 +609,12 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
+ <property name="maximumSize">
+ <size>
+ <width>250</width>
+ <height>16777215</height>
+ </size>
+ </property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@@ -652,6 +658,12 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
+ <property name="maximumSize">
+ <size>
+ <width>250</width>
+ <height>16777215</height>
+ </size>
+ </property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@@ -695,6 +707,12 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
+ <property name="maximumSize">
+ <size>
+ <width>250</width>
+ <height>16777215</height>
+ </size>
+ </property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
diff --git a/qmidiplayer-lite/qmidiplayer-lite.pro b/qmidiplayer-lite/qmidiplayer-lite.pro
index 7d901f6..4dc53bc 100644
--- a/qmidiplayer-lite/qmidiplayer-lite.pro
+++ b/qmidiplayer-lite/qmidiplayer-lite.pro
@@ -29,7 +29,8 @@ LIBS += -lfluidsynth -lrtmidi
win32{
#change these before building...
LIBS += e:/libs/fluidsynth/fluidsynth.lib winmm.lib
- LIBS += e:/libs/rtmidi/rtmidi.lib
+ Release:LIBS += e:/libs/rtmidi/rtmidi.lib
+ Debug:LIBS += e:/libs/rtmidi/rtmidid.lib
INCLUDEPATH += e:/libs/fluidsynth/include
INCLUDEPATH += e:/libs/rtmidi
}