From 7e12992ad284fda2c29e494b3c0d60101592c277 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Sat, 21 May 2016 21:30:10 +0800 Subject: Use QDirIterator instead, fixing plugin loading problems in Windows. Also scale UI elements. --- qmidiplayer-desktop/qmpchannelswindow.cpp | 12 ++++---- qmidiplayer-desktop/qmpmainwindow.cpp | 5 ++++ qmidiplayer-desktop/qmpmainwindow.ui | 46 +++++++++++++++++++++++++++++-- qmidiplayer-desktop/qmpplistwindow.cpp | 5 ++++ qmidiplayer-desktop/qmpplugin.cpp | 46 +++++++++++++++---------------- 5 files changed, 82 insertions(+), 32 deletions(-) (limited to 'qmidiplayer-desktop') diff --git a/qmidiplayer-desktop/qmpchannelswindow.cpp b/qmidiplayer-desktop/qmpchannelswindow.cpp index a692852..ed522a0 100644 --- a/qmidiplayer-desktop/qmpchannelswindow.cpp +++ b/qmidiplayer-desktop/qmpchannelswindow.cpp @@ -67,12 +67,12 @@ qmpChannelsWindow::qmpChannelsWindow(QWidget *parent) : ((QDCLabel*)ui->twChannels->cellWidget(i,5))->setID(i); connect(ui->twChannels->cellWidget(i,5),SIGNAL(onClick(int)),this,SLOT(showChannelEditorWindow(int))); } - ui->twChannels->setColumnWidth(0,24); - ui->twChannels->setColumnWidth(1,24); - ui->twChannels->setColumnWidth(2,24); - ui->twChannels->setColumnWidth(3,192); - ui->twChannels->setColumnWidth(4,208); - ui->twChannels->setColumnWidth(5,32); + ui->twChannels->setColumnWidth(0,24*(logicalDpiX()/96.)); + ui->twChannels->setColumnWidth(1,24*(logicalDpiX()/96.)); + ui->twChannels->setColumnWidth(2,24*(logicalDpiX()/96.)); + ui->twChannels->setColumnWidth(3,192*(logicalDpiX()/96.)); + ui->twChannels->setColumnWidth(4,208*(logicalDpiX()/96.)); + ui->twChannels->setColumnWidth(5,32*(logicalDpiX()/96.)); } void qmpChannelsWindow::showEvent(QShowEvent *event) diff --git a/qmidiplayer-desktop/qmpmainwindow.cpp b/qmidiplayer-desktop/qmpmainwindow.cpp index c81816c..de15412 100644 --- a/qmidiplayer-desktop/qmpmainwindow.cpp +++ b/qmidiplayer-desktop/qmpmainwindow.cpp @@ -11,6 +11,7 @@ #include "qmpmainwindow.hpp" #include "ui_qmpmainwindow.h" #include "../core/qmpmidiplay.hpp" +#define setButtonHeight(x,h) {x->setMaximumHeight(h*(logicalDpiY()/96.));x->setMinimumHeight(h*(logicalDpiY()/96.));} #ifdef _WIN32 #include char* wcsto8bit(const wchar_t* s) @@ -55,6 +56,10 @@ qmpMainWindow::qmpMainWindow(QWidget *parent) : ui->lbFileName->setText("");ref=this;ui->verticalLayout->setAlignment(ui->pushButton,Qt::AlignRight); int w=size().width(),h=size().height();w=w*(logicalDpiX()/96.);h=h*(logicalDpiY()/96.); setMaximumWidth(w);setMaximumHeight(h);setMinimumWidth(w);setMinimumHeight(h); + setButtonHeight(ui->pbNext,34);setButtonHeight(ui->pbPlayPause,34); + setButtonHeight(ui->pbPrev,34);setButtonHeight(ui->pbSettings,34);setButtonHeight(ui->pbStop,34); + setButtonHeight(ui->pbChannels,36);setButtonHeight(ui->pbPList,36); + setButtonHeight(ui->pbEfx,36);setButtonHeight(ui->pbVisualization,36); playing=false;stopped=true;dragging=false;memset(VIs,0,sizeof(VIs)); settingsw=new qmpSettingsWindow(this);pmgr=new qmpPluginManager(); plistw=new qmpPlistWindow(this);player=NULL;timer=NULL; diff --git a/qmidiplayer-desktop/qmpmainwindow.ui b/qmidiplayer-desktop/qmpmainwindow.ui index 9b4f3c3..10ead67 100644 --- a/qmidiplayer-desktop/qmpmainwindow.ui +++ b/qmidiplayer-desktop/qmpmainwindow.ui @@ -185,7 +185,7 @@ - + 0 0 @@ -219,6 +219,12 @@ + + + 0 + 0 + + 0 @@ -248,6 +254,12 @@ + + + 0 + 0 + + 0 @@ -277,6 +289,12 @@ + + + 0 + 0 + + 0 @@ -323,7 +341,7 @@ - + 0 0 @@ -364,6 +382,12 @@ + + + 0 + 0 + + 16777215 @@ -393,6 +417,12 @@ + + + 0 + 0 + + 16777215 @@ -428,6 +458,12 @@ + + + 0 + 0 + + 16777215 @@ -457,6 +493,12 @@ + + + 0 + 0 + + 16777215 diff --git a/qmidiplayer-desktop/qmpplistwindow.cpp b/qmidiplayer-desktop/qmpplistwindow.cpp index d315d80..e8fc9d8 100644 --- a/qmidiplayer-desktop/qmpplistwindow.cpp +++ b/qmidiplayer-desktop/qmpplistwindow.cpp @@ -9,6 +9,7 @@ #include "qmpplistwindow.hpp" #include "ui_qmpplistwindow.h" #include "qmpmainwindow.hpp" +#define setButtonHeight(x,h) {x->setMaximumHeight(h*(logicalDpiY()/96.));x->setMinimumHeight(h*(logicalDpiY()/96.));} qmpPlistWindow::qmpPlistWindow(QWidget *parent) : QDialog(parent), @@ -17,6 +18,10 @@ qmpPlistWindow::qmpPlistWindow(QWidget *parent) : ui->setupUi(this); int w=size().width(),h=size().height();w=w*(logicalDpiX()/96.);h=h*(logicalDpiY()/96.); setMaximumWidth(w);setMaximumHeight(h);setMinimumWidth(w);setMinimumHeight(h); + setButtonHeight(ui->pbAdd,36);setButtonHeight(ui->pbAddFolder,36); + setButtonHeight(ui->pbClear,36);setButtonHeight(ui->pbLoad,36); + setButtonHeight(ui->pbRemove,36);setButtonHeight(ui->pbRepeat,36); + setButtonHeight(ui->pbSave,36);setButtonHeight(ui->pbShuffle,36); connect(this,SIGNAL(dialogClosing()),parent,SLOT(dialogClosed())); connect(this,SIGNAL(selectionChanging()),parent,SLOT(selectionChanged())); repeat=0;shuffle=0; diff --git a/qmidiplayer-desktop/qmpplugin.cpp b/qmidiplayer-desktop/qmpplugin.cpp index 7dfb01f..565bdf1 100644 --- a/qmidiplayer-desktop/qmpplugin.cpp +++ b/qmidiplayer-desktop/qmpplugin.cpp @@ -2,10 +2,10 @@ #include #else #include -#include #endif #include #include +#include #include "qmpplugin.hpp" #include "qmpmainwindow.hpp" #include "qmpsettingswindow.hpp" @@ -15,52 +15,50 @@ qmpSettingsWindow* qsw; #ifdef _WIN32 void qmpPluginManager::scanPlugins() { - HANDLE dir; + QDirIterator *dir; std::vector cpluginpaths; - //FindFirstFile, FindNextFile, FindClose - LPWIN32_FIND_DATAA file; - dir=FindFirstFileA(".\\plugins\\*.dll",file); - if(dir!=INVALID_HANDLE_VALUE) + dir=new QDirIterator(".\\plugins\\"); + while(dir->hasNext()) { - cpluginpaths.push_back(std::string(file->cFileName)); - while(FindNextFileA(dir,file)) - cpluginpaths.push_back(std::string(file->cFileName)); + dir->next(); + if(dir->fileInfo().suffix()=="dll") + cpluginpaths.push_back(std::string(".\\plugins\\")+dir->fileName().toStdString()); } - FindClose(dir); + delete dir; for(unsigned i=0;ipluginGetVersion is called. Reason is still unknown. plugins.push_back(qmpPlugin(std::string(intf->pluginGetName()),std::string(intf->pluginGetVersion()),std::string(cpluginpaths[i]),intf)); } } #else void qmpPluginManager::scanPlugins() { - DIR *dir; - struct dirent *file; + QDirIterator *dir; std::vector cpluginpaths; #ifdef QMP_BUILD_UNIX_PACKAGE - if((dir=opendir("/usr/lib/qmidiplayer/"))) + dir=new QDirIterator("/usr/lib/qmidiplayer/"); + while(dir->hasNext()) { - while((file=readdir(dir))) - if(strcmp(file->d_name+strlen(file->d_name)-3,".so")==0) - cpluginpaths.push_back(std::string("/usr/lib/qmidiplayer/")+std::string(file->d_name)); - closedir(dir); + dir->next(); + if(dir->fileInfo().suffix()=="so") + cpluginpaths.push_back(std::string("/usr/lib/qmidiplayer/")+dir->fileName().toStdString()); } + delete dir; #endif - if((dir=opendir("./"))) + dir=new QDirIterator("./"); + while(dir->hasNext()) { - while((file=readdir(dir))) - if(strcmp(file->d_name+strlen(file->d_name)-3,".so")==0) - cpluginpaths.push_back(std::string("./")+std::string(file->d_name)); - closedir(dir); + dir->next(); + if(dir->fileInfo().suffix()=="so") + cpluginpaths.push_back(std::string("./")+dir->fileName().toStdString()); } + delete dir; for(unsigned i=0;i