diff --git a/MediaInfoXP.sln b/MediaInfoXP.sln
index a5b3a41..aa4bf36 100644
--- a/MediaInfoXP.sln
+++ b/MediaInfoXP.sln
@@ -1,20 +1,30 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
-VisualStudioVersion = 12.0.21005.1
+VisualStudioVersion = 12.0.31101.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MediaInfoXP", "MediaInfoXP.vcxproj", "{DCDCCABB-970A-4337-B5BB-7838EE72FE80}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MUtilities", "..\MUtilities\MUtilities_VS2013.vcxproj", "{55405FE1-149F-434C-9D72-4B64348D2A08}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
+ Release_Static|Win32 = Release_Static|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DCDCCABB-970A-4337-B5BB-7838EE72FE80}.Debug|Win32.ActiveCfg = Debug|Win32
{DCDCCABB-970A-4337-B5BB-7838EE72FE80}.Debug|Win32.Build.0 = Debug|Win32
- {DCDCCABB-970A-4337-B5BB-7838EE72FE80}.Release|Win32.ActiveCfg = Release|Win32
- {DCDCCABB-970A-4337-B5BB-7838EE72FE80}.Release|Win32.Build.0 = Release|Win32
+ {DCDCCABB-970A-4337-B5BB-7838EE72FE80}.Release_Static|Win32.ActiveCfg = Release_Static|Win32
+ {DCDCCABB-970A-4337-B5BB-7838EE72FE80}.Release_Static|Win32.Build.0 = Release_Static|Win32
+ {DCDCCABB-970A-4337-B5BB-7838EE72FE80}.Release|Win32.ActiveCfg = Release_Static|Win32
+ {55405FE1-149F-434C-9D72-4B64348D2A08}.Debug|Win32.ActiveCfg = Debug|Win32
+ {55405FE1-149F-434C-9D72-4B64348D2A08}.Debug|Win32.Build.0 = Debug|Win32
+ {55405FE1-149F-434C-9D72-4B64348D2A08}.Release_Static|Win32.ActiveCfg = Release_Static|Win32
+ {55405FE1-149F-434C-9D72-4B64348D2A08}.Release_Static|Win32.Build.0 = Release_Static|Win32
+ {55405FE1-149F-434C-9D72-4B64348D2A08}.Release|Win32.ActiveCfg = Release|Win32
+ {55405FE1-149F-434C-9D72-4B64348D2A08}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/MediaInfoXP.vcxproj b/MediaInfoXP.vcxproj
index 6f0c54b..82053f8 100644
--- a/MediaInfoXP.vcxproj
+++ b/MediaInfoXP.vcxproj
@@ -5,8 +5,8 @@
Debug
Win32
-
- Release
+
+ Release_Static
Win32
@@ -22,7 +22,7 @@
v120_xp
Unicode
-
+
Application
false
v120_xp
@@ -35,19 +35,19 @@
-
+
true
- $(SolutionDir)\bin\$(PlatformName)\$(Configuration)\
- $(SolutionDir)\tmp\$(PlatformName)\$(Configuration)\obj\
+ $(SolutionDir)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\obj\$(Platform)\$(Configuration)\$(ProjectName)\
-
+
false
- $(SolutionDir)\bin\$(PlatformName)\$(Configuration)\
- $(SolutionDir)\tmp\$(PlatformName)\$(Configuration)\obj\
+ $(SolutionDir)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\obj\$(Platform)\$(Configuration)\$(ProjectName)\
@@ -56,23 +56,23 @@
Level3
Disabled
WIN32;_DEBUG;_CONSOLE;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;QT_DLL;QT_DEBUG;%(PreprocessorDefinitions)
- $(QTDIR)\include\QtCore;%(AdditionalIncludeDirectories)
+ $(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(SolutionDir)\..\MUtilities\include;$(SolutionDir)\tmp\$(ProjectName);%(AdditionalIncludeDirectories)
Console
true
- $(SolutionDir)..\LameXP_Qt\LameXP\etc\Prerequisites\qt4_static\lib;%(AdditionalLibraryDirectories)
+ $(SolutionDir)\..\Prerequisites\Qt4\MSVC-2013\Debug\lib;$(SolutionDir)\..\Prerequisites\Qt4\MSVC-2013\Debug\plugins\imageformats;$(SolutionDir)\..\Prerequisites\EncodePointer\lib;%(AdditionalLibraryDirectories)
-
+
Level3
NotUsing
Full
true
true
- WIN32;NDEBUG;_CONSOLE;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;QT_NO_DEBUG;QT_NODLL;%(PreprocessorDefinitions)
- $(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_CONSOLE;MUTILS_STATIC_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;QT_NO_DEBUG;QT_NODLL;%(PreprocessorDefinitions)
+ $(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(SolutionDir)\..\MUtilities\include;$(SolutionDir)\tmp\$(ProjectName);%(AdditionalIncludeDirectories)
MultiThreaded
NoExtensions
AnySuitable
@@ -91,8 +91,8 @@
false
true
true
- $(QT_STATIC)\lib;$(QT_STATIC)\plugins\imageformats;$(SolutionDir)\..\EncodePointerLib\Release;%(AdditionalLibraryDirectories)
- QtCore.lib;QtGui.lib;QtSvg.lib;qtmain.lib;qsvg.lib;qico.lib;qtga.lib;Winmm.lib;imm32.lib;ws2_32.lib;Shlwapi.lib;Wininet.lib;PowrProf.lib;psapi.lib;EncodePointer.lib;%(AdditionalDependencies)
+ $(SolutionDir)\..\Prerequisites\Qt4\MSVC-2013\Static\lib;$(SolutionDir)\..\Prerequisites\Qt4\MSVC-2013\Static\plugins\imageformats;$(SolutionDir)\..\Prerequisites\EncodePointer\lib;%(AdditionalLibraryDirectories)
+ EncodePointer.lib;QtCore.lib;QtGui.lib;QtSvg.lib;qtmain.lib;qsvg.lib;qico.lib;qtga.lib;Winmm.lib;imm32.lib;ws2_32.lib;Shlwapi.lib;Wininet.lib;PowrProf.lib;psapi.lib;Sensapi.lib;%(AdditionalDependencies)
false
LinkVerboseLib
true
@@ -104,23 +104,23 @@
Document
- "$(QTDIR)\bin\uic.exe" -o "$(SolutionDir)\tmp\Common\uic\%(Filename).h" "%(FullPath)"
+ "$(QTDIR)\bin\uic.exe" -o "$(SolutionDir)tmp\$(ProjectName)\UIC_%(Filename).h" "%(FullPath)"
UIC "$(SolutionDir)\tmp\Common\uic\%(Filename).h"
- $(SolutionDir)\tmp\Common\uic\%(Filename).h;%(Outputs)
- "$(QTDIR)\bin\uic.exe" -o "$(SolutionDir)\tmp\Common\uic\%(Filename).h" "%(FullPath)"
- UIC "$(SolutionDir)\tmp\Common\uic\%(Filename).h"
- $(SolutionDir)\tmp\Common\uic\%(Filename).h;%(Outputs)
+ $(SolutionDir)tmp\$(ProjectName)\UIC_%(Filename).h;%(Outputs)
+ "$(QTDIR)\bin\uic.exe" -o "$(SolutionDir)tmp\$(ProjectName)\UIC_%(Filename).h" "%(FullPath)"
+ UIC "$(SolutionDir)\tmp\Common\uic\%(Filename).h"
+ $(SolutionDir)tmp\$(ProjectName)\UIC_%(Filename).h;%(Outputs)
Document
- "$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)\tmp\Common\rcc\RCC_%(Filename).cpp" -name "%(Filename)" "%(FullPath)"
- "$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)\tmp\Common\rcc\RCC_%(Filename).cpp" -name "%(Filename)" "%(FullPath)"
- RCC "$(SolutionDir)\tmp\Common\rcc\RCC_%(Filename).cpp"
- RCC "$(SolutionDir)\tmp\Common\rcc\RCC_%(Filename).cpp"
- $(SolutionDir)\tmp\Common\rcc\RCC_%(Filename).cpp;%(Outputs)
- $(SolutionDir)\tmp\Common\rcc\RCC_%(Filename).cpp;%(Outputs)
+ "$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -name "%(Filename)" "%(FullPath)"
+ "$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -name "%(Filename)" "%(FullPath)"
+ RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"
+ RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"
+ $(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)
+ $(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)
Designer
@@ -129,39 +129,48 @@
-
-
-
-
+
+
+
- "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)\tmp\Common\moc\MOC_%(Filename).cpp" "%(FullPath)"
- "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)\tmp\Common\moc\MOC_%(Filename).cpp" "%(FullPath)"
- MOC "$(SolutionDir)\tmp\Common\moc\MOC_%(Filename).cpp"
- MOC "$(SolutionDir)\tmp\Common\moc\MOC_%(Filename).cpp"
- $(SolutionDir)\tmp\Common\moc\MOC_%(Filename).cpp;%(Outputs)
- $(SolutionDir)\tmp\Common\moc\MOC_%(Filename).cpp;%(Outputs)
+ "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp" "%(FullPath)"
+ "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp" "%(FullPath)"
+ MOC "$(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp"
+ MOC "$(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp"
+ $(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp;%(Outputs)
+ $(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp;%(Outputs)
+ "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp" "%(FullPath)"
+ MOC "$(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp"
+ $(SolutionDir)\$(ProjectName)\moc\MOC_%(Filename).cpp;%(Outputs)
- "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)\tmp\Common\moc\MOC_%(Filename).cpp" "%(FullPath)"
- "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)\tmp\Common\moc\MOC_%(Filename).cpp" "%(FullPath)"
- MOC "$(SolutionDir)\tmp\Common\moc\MOC_%(Filename).cpp"
- MOC "$(SolutionDir)\tmp\Common\moc\MOC_%(Filename).cpp"
- $(SolutionDir)\tmp\Common\moc\MOC_%(Filename).cpp;%(Outputs)
- $(SolutionDir)\tmp\Common\moc\MOC_%(Filename).cpp;%(Outputs)
+ "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp" "%(FullPath)"
+ "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp" "%(FullPath)"
+ MOC "$(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp"
+ MOC "$(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp"
+ $(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp;%(Outputs)
+ $(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp;%(Outputs)
+ "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp" "%(FullPath)"
+ MOC "$(SolutionDir)\tmp\$(ProjectName)\MOC_%(Filename).cpp"
+ $(SolutionDir)\$(ProjectName)\moc\MOC_%(Filename).cpp;%(Outputs)
-
Document
+
+
+ {55405fe1-149f-434c-9d72-4b64348d2a08}
+
+
diff --git a/MediaInfoXP.vcxproj.filters b/MediaInfoXP.vcxproj.filters
index 5b7ddbe..1793158 100644
--- a/MediaInfoXP.vcxproj.filters
+++ b/MediaInfoXP.vcxproj.filters
@@ -42,22 +42,19 @@
Source Files
-
- Source Files\Generated
-
-
- Source Files\Generated
-
-
- Source Files
-
Source Files
Source Files
-
+
+ Source Files\Generated
+
+
+ Source Files\Generated
+
+
Source Files\Generated
@@ -65,9 +62,6 @@
Header Files
-
- Header Files
-
Header Files
diff --git a/src/IPC.cpp b/src/IPC.cpp
index 9194cba..b2f0c0c 100644
--- a/src/IPC.cpp
+++ b/src/IPC.cpp
@@ -21,8 +21,10 @@
#include "IPC.h"
-#include "Utils.h"
+//MUtils
+#include "MUtils/Global.h"
+//Qt
#include
#include
@@ -126,10 +128,10 @@ IPC::~IPC(void)
m_recvThread->wait();
}
- MIXP_DELETE_OBJ(m_recvThread);
- MIXP_DELETE_OBJ(m_sharedMemory);
- MIXP_DELETE_OBJ(m_semaphoreWr);
- MIXP_DELETE_OBJ(m_semaphoreRd);
+ MUTILS_DELETE(m_recvThread);
+ MUTILS_DELETE(m_sharedMemory);
+ MUTILS_DELETE(m_semaphoreWr);
+ MUTILS_DELETE(m_semaphoreRd);
}
int IPC::initialize(void)
diff --git a/src/Main.cpp b/src/Main.cpp
index 34eb0a7..802be56 100644
--- a/src/Main.cpp
+++ b/src/Main.cpp
@@ -19,6 +19,10 @@
// http://www.gnu.org/licenses/gpl-2.0.txt
///////////////////////////////////////////////////////////////////////////////
+//MUTils
+#include
+#include
+
//StdLib
#include
#include
@@ -48,7 +52,6 @@
#include "Config.h"
#include "MainWindow.h"
#include "IPC.h"
-#include "Utils.h"
///////////////////////////////////////////////////////////////////////////////
// Debug Console
@@ -86,27 +89,21 @@ static void init_console(void)
// MAIN function
///////////////////////////////////////////////////////////////////////////////
-int mixp_main(int argc, char* argv[])
+static int mixp_main(int &argc, char **argv)
{
- //Show console?
- bool bConsole = MIXP_CONSOLE;
- for(int i = 1; i < argc; i++)
- {
- if(_stricmp(argv[i], "--console") == 0) bConsole = true;
- if(_stricmp(argv[i], "--no-console") == 0) bConsole = false;
- }
-
- if(bConsole) init_console();
-
+ //Print the logo
qDebug("MediaInfoXP v%u.%02u, built on %s at %s.", mixp_versionMajor, mixp_versionMinor, mixp_buildDate, mixp_buildTime);
qDebug("Copyright (c) 2004-%s LoRd_MuldeR . Some rights reserved.", &mixp_buildDate[7]);
qDebug("Built with Qt v%s, running with Qt v%s.\n", QT_VERSION_STR, qVersion());
+ //Print library version
+ qDebug("This application is powerd by MUtils library v%u.%02u (%s, %s).\n", MUtils::Version::lib_version_major(), MUtils::Version::lib_version_minor(), MUTILS_UTF8(MUtils::Version::lib_build_date().toString(Qt::ISODate)), MUTILS_UTF8(MUtils::Version::lib_build_time().toString(Qt::ISODate)));
+
//Create application
- QApplication *application = new QApplication(argc, argv);
+ QScopedPointer application(new QApplication(argc, argv));
//Create IPC
- IPC *ipc = new IPC();
+ QScopedPointer ipc(new IPC());
//Is this the *first* instance?
if(ipc->initialize() == 0)
@@ -134,25 +131,16 @@ int mixp_main(int argc, char* argv[])
{
ipc->sendAsync("?");
}
- MIXP_DELETE_OBJ(ipc);
- MIXP_DELETE_OBJ(application);
+
return 42;
}
//Get temp folder
- QFile *lockFile = NULL;
- const QString tempFolder = mixp_getTempFolder(&lockFile);
- if(tempFolder.isEmpty())
- {
- qFatal("Failed to determine TEMP folder!");
- MIXP_DELETE_OBJ(ipc);
- return 1;
- }
-
+ const QString tempFolder = MUtils::temp_folder();
qDebug("TEMP folder is:\n%s\n", QDir::toNativeSeparators(tempFolder).toUtf8().constData());
//Create main window
- CMainWindow *mainWindow = new CMainWindow(tempFolder, ipc);
+ QScopedPointer mainWindow(new CMainWindow(tempFolder, ipc.data()));
mainWindow->show();
//Run application
@@ -162,184 +150,14 @@ int mixp_main(int argc, char* argv[])
//Stop IPC
ipc->stopListening();
- //Clean up
- MIXP_DELETE_OBJ(mainWindow);
- MIXP_DELETE_OBJ(application);
- if(lockFile) lockFile->remove();
- MIXP_DELETE_OBJ(lockFile);
- mixp_clean_folder(tempFolder);
- MIXP_DELETE_OBJ(ipc);
-
return exit_code;
}
-///////////////////////////////////////////////////////////////////////////////
-// Error handlers
-///////////////////////////////////////////////////////////////////////////////
-
-void mixp_fatal_exit(const wchar_t *msg)
-{
- static volatile long s_lock = 0L;
- if(_InterlockedExchange(&s_lock, 1L) == 0)
- {
- FatalAppExitW(0, msg);
- TerminateProcess(GetCurrentProcess(), -1);
- }
-}
-
-LONG WINAPI mixp_exception_handler(__in struct _EXCEPTION_POINTERS *ExceptionInfo)
-{
- mixp_fatal_exit(L"Unhandeled exception handler invoked, application will exit!");
- return LONG_MAX;
-}
-
-void mixp_invalid_param_handler(const wchar_t* exp, const wchar_t* fun, const wchar_t* fil, unsigned int, uintptr_t)
-{
- mixp_fatal_exit(L"Invalid parameter handler invoked, application will exit!");
-}
-
-static void mixp_signal_handler(int signal_num)
-{
- signal(signal_num, mixp_signal_handler);
- mixp_fatal_exit(L"Signal handler invoked, application will exit!");
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Message Handler
-///////////////////////////////////////////////////////////////////////////////
-
-static void mixp_console_color(FILE* file, WORD attributes)
-{
- const HANDLE hConsole = (HANDLE)(_get_osfhandle(_fileno(file)));
- if((hConsole != NULL) && (hConsole != INVALID_HANDLE_VALUE))
- {
- SetConsoleTextAttribute(hConsole, attributes);
- }
-}
-
-void mixp_message_handler(QtMsgType type, const char *msg)
-{
- if(g_bHaveConsole)
- {
- static const char *GURU_MEDITATION = "\n\nGURU MEDITATION !!!\n\n";
-
- static volatile long s_lock = 0L;
- while(_InterlockedExchange(&s_lock, 1L) != 0) __noop;
-
- UINT oldOutputCP = GetConsoleOutputCP();
- if(oldOutputCP != CP_UTF8) SetConsoleOutputCP(CP_UTF8);
-
- switch(type)
- {
- case QtCriticalMsg:
- case QtFatalMsg:
- fflush(stdout);
- fflush(stderr);
- mixp_console_color(stderr, FOREGROUND_RED | FOREGROUND_INTENSITY);
- fprintf(stderr, GURU_MEDITATION);
- fprintf(stderr, "%s\n", msg);
- fflush(stderr);
- break;
- case QtWarningMsg:
- mixp_console_color(stderr, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
- fprintf(stderr, "%s\n", msg);
- fflush(stderr);
- break;
- default:
- mixp_console_color(stderr, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
- fprintf(stderr, "%s\n", msg);
- fflush(stderr);
- break;
- }
-
- mixp_console_color(stderr, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
- if(oldOutputCP != CP_UTF8) SetConsoleOutputCP(oldOutputCP);
-
- _InterlockedExchange(&s_lock, 0L);
- }
-
- if(type == QtCriticalMsg || type == QtFatalMsg)
- {
- mixp_fatal_exit(L"The application has encountered a critical error and will exit now!");
- }
-}
-
///////////////////////////////////////////////////////////////////////////////
// Applicaton entry point
///////////////////////////////////////////////////////////////////////////////
-static int _main(int argc, char* argv[])
-{
- if(MIXP_DEBUG)
- {
- qInstallMsgHandler(mixp_message_handler);
- return mixp_main(argc, argv);
- }
- else
- {
- int iResult = -1;
- try
- {
- qInstallMsgHandler(mixp_message_handler);
- iResult = mixp_main(argc, argv);
- }
- catch(char *error)
- {
- fflush(stdout);
- fflush(stderr);
- fprintf(stderr, "\nGURU MEDITATION !!!\n\nException error message: %s\n", error);
- mixp_fatal_exit(L"Unhandeled C++ exception error, application will exit!");
- }
- catch(int error)
- {
- fflush(stdout);
- fflush(stderr);
- fprintf(stderr, "\nGURU MEDITATION !!!\n\nException error code: 0x%X\n", error);
- mixp_fatal_exit(L"Unhandeled C++ exception error, application will exit!");
- }
- catch(...)
- {
- fflush(stdout);
- fflush(stderr);
- fprintf(stderr, "\nGURU MEDITATION !!!\n");
- mixp_fatal_exit(L"Unhandeled C++ exception error, application will exit!");
- }
- return iResult;
- }
-}
-
int main(int argc, char* argv[])
{
- if(MIXP_DEBUG)
- {
- _mixp_global_init();
- return _main(argc, argv);
- }
- else
- {
- __try
- {
- SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);
- SetUnhandledExceptionFilter(mixp_exception_handler);
- SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL);
- _set_invalid_parameter_handler(mixp_invalid_param_handler);
-
- static const int signal_num[6] = { SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV, SIGTERM };
-
- for(size_t i = 0; i < 6; i++)
- {
- signal(signal_num[i], mixp_signal_handler);
- }
-
- _mixp_global_init();
- return _main(argc, argv);
- }
- __except(1)
- {
- fflush(stdout);
- fflush(stderr);
- fprintf(stderr, "\nGURU MEDITATION !!!\n\nUnhandeled structured exception error! [code: 0x%X]\n", GetExceptionCode());
- mixp_fatal_exit(L"Unhandeled structured exception error, application will exit!");
- }
- }
+ MUtils::Startup::startup(argc, argv, mixp_main, "MediaInfoXP", false);
}
diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
index d5c2307..9d781d3 100644
--- a/src/MainWindow.cpp
+++ b/src/MainWindow.cpp
@@ -22,7 +22,13 @@
#include "MainWindow.h"
//UIC includes
-#include "../tmp/Common/uic/Dialog.h"
+#include "UIC_Dialog.h"
+
+//MUtils
+#include
+#include
+#include
+#include
//Qt includes
#include
@@ -42,7 +48,6 @@
//Internal
#include "Config.h"
-#include "Utils.h"
#include "ShellExtension.h"
#include "IPC.h"
@@ -92,7 +97,7 @@ CMainWindow::CMainWindow(const QString &tempFolder, IPC *const ipc, QWidget *par
setMinimumSize(this->size());
//Setup Icon
- m_icon = mixp_set_window_icon(this, QIcon(":/res/logo.png"), true);
+ MUtils::GUI::set_window_icon(this, QIcon(":/res/logo.png"), true);
//Setup links
ui->actionLink_MuldeR->setData(QVariant(QString::fromLatin1(LINK_MULDER)));
@@ -145,12 +150,10 @@ CMainWindow::~CMainWindow(void)
if(m_mediaInfoHandle)
{
m_mediaInfoHandle->remove();
- MIXP_DELETE_OBJ(m_mediaInfoHandle);
+ MUTILS_DELETE(m_mediaInfoHandle);
}
- MIXP_DELETE_OBJ(m_process);
- MIXP_DELETE_OBJ(m_floatingLabel);
-
- mixp_free_window_icon(m_icon);
+ MUTILS_DELETE(m_process);
+ MUTILS_DELETE(m_floatingLabel);
}
////////////////////////////////////////////////////////////
@@ -163,11 +166,11 @@ void CMainWindow::showEvent(QShowEvent *event)
resize(this->minimumSize());
//Init test
- ui->versionLabel->setText(QString("v%1 / v%2 (%3)").arg(QString().sprintf("%u.%02u", mixp_versionMajor, mixp_versionMinor), QString().sprintf("%u.%u.%02u", mixp_miVersionMajor, mixp_miVersionMinor, mixp_miVersionPatch), mixp_get_build_date().toString(Qt::ISODate)));
+ ui->versionLabel->setText(QString("v%1 / v%2 (%3)").arg(QString().sprintf("%u.%02u", mixp_versionMajor, mixp_versionMinor), QString().sprintf("%u.%u.%02u", mixp_miVersionMajor, mixp_miVersionMinor, mixp_miVersionPatch), MUtils::Version::app_build_date().toString(Qt::ISODate)));
ui->updateLabel->setText(tr("This version is more than six month old and probably outdated. Please check %1 for updates!").arg(LINK_MULDER));
//Show update hint?
- ui->updateLabel->setVisible(mixp_get_build_date().addMonths(6) < mixp_get_current_date());
+ ui->updateLabel->setVisible(MUtils::Version::app_build_date().addMonths(6) < MUtils::OS::current_date());
//Force resize event
resizeEvent(NULL);
@@ -279,7 +282,7 @@ void CMainWindow::keyPressEvent(QKeyEvent *e)
{
if(m_process && (m_process->state() != QProcess::NotRunning))
{
- mixp_beep(mixp_beep_error);
+ MUtils::Sound::beep(MUtils::Sound::BEEP_ERR);
qWarning("Escape pressed, terminated process!");
m_process->kill();
}
@@ -453,7 +456,7 @@ void CMainWindow::saveButtonClicked(void)
{
file.write(m_outputLines.join("\r\n").toUtf8());
file.close();
- mixp_beep(mixp_beep_info);
+ MUtils::Sound::beep(MUtils::Sound::BEEP_NFO);
}
else
{
@@ -473,7 +476,7 @@ void CMainWindow::copyToClipboardButtonClicked(void)
if(QClipboard *clipboard = QApplication::clipboard())
{
clipboard->setText(m_outputLines.join("\n"));
- mixp_beep(mixp_beep_info);
+ MUtils::Sound::beep(MUtils::Sound::BEEP_NFO);
}
}
@@ -624,8 +627,8 @@ void CMainWindow::showAboutScreen(void)
return;
}
- const QDate buildDate = mixp_get_build_date();
- const QDate curntDate = mixp_get_current_date();
+ const QDate buildDate = MUtils::Version::app_build_date();
+ const QDate curntDate = MUtils::OS::current_date();
QString text;
@@ -685,7 +688,7 @@ void CMainWindow::updateSize(void)
void CMainWindow::fileReceived(const QString &str)
{
- mixp_bring_to_front(this);
+ MUtils::GUI::bring_to_front(this);
if(str.compare("?") != 0)
{
@@ -756,7 +759,7 @@ QString CMainWindow::getMediaInfoPath(void)
return m_mediaInfoHandle->fileName();
}
m_mediaInfoHandle->remove();
- MIXP_DELETE_OBJ(m_mediaInfoHandle);
+ MUTILS_DELETE(m_mediaInfoHandle);
}
//Extract MediaInfo binary now!
@@ -772,20 +775,20 @@ QString CMainWindow::getMediaInfoPath(void)
{
qWarning("Failed to open MediaInfo binary for reading!\n");
m_mediaInfoHandle->remove();
- MIXP_DELETE_OBJ(m_mediaInfoHandle);
+ MUTILS_DELETE(m_mediaInfoHandle);
}
}
else
{
qWarning("Failed to write data to MediaInfo binary file!\n");
m_mediaInfoHandle->remove();
- MIXP_DELETE_OBJ(m_mediaInfoHandle);
+ MUTILS_DELETE(m_mediaInfoHandle);
}
}
else
{
qWarning("Failed to open MediaInfo binary for writing!\n");
- MIXP_DELETE_OBJ(m_mediaInfoHandle);
+ MUTILS_DELETE(m_mediaInfoHandle);
}
//Validate file content, after it has been extracted
@@ -796,7 +799,7 @@ QString CMainWindow::getMediaInfoPath(void)
return m_mediaInfoHandle->fileName();
}
m_mediaInfoHandle->remove();
- MIXP_DELETE_OBJ(m_mediaInfoHandle);
+ MUTILS_DELETE(m_mediaInfoHandle);
}
return QString();
diff --git a/src/ShellExtension.cpp b/src/ShellExtension.cpp
index f9601da..0779cdf 100644
--- a/src/ShellExtension.cpp
+++ b/src/ShellExtension.cpp
@@ -22,8 +22,12 @@
#pragma once
#include "ShellExtension.h"
-#include "Utils.h"
+//MUtils
+#include "MUtils/Registry.h"
+#include "MUtils/OSSupport.h"
+
+//Qt
#include
#include
@@ -33,7 +37,7 @@
bool ShellExtension::getEnabled(void)
{
quint32 value = 0;
- if(mixp_reg_value_read(mixp_root_user, MIXP_REGISTRY_KEY, MIXP_REGISTRY_VAL, value))
+ if(MUtils::Registry::reg_value_read(MUtils::Registry::root_user, MIXP_REGISTRY_KEY, MIXP_REGISTRY_VAL, value))
{
return value;
}
@@ -45,34 +49,34 @@ bool ShellExtension::setEnabled(bool enabled)
if(enabled)
{
qDebug("Installing the shell extension...");
- if(mixp_reg_value_write(mixp_root_user, MIXP_REGISTRY_KEY, QString(), tr("Analyze file with MediaInfoXP")))
+ if(MUtils::Registry::reg_value_write(MUtils::Registry::root_user, MIXP_REGISTRY_KEY, QString(), tr("Analyze file with MediaInfoXP")))
{
const QString appPath = QDir::toNativeSeparators(QApplication::applicationFilePath());
const QString command = QString().sprintf("\"%ls\" --open \"%%1\"", appPath.utf16());
- if(mixp_reg_value_write(mixp_root_user, MIXP_REGISTRY_KEY"\\command", QString(), command))
+ if(MUtils::Registry::reg_value_write(MUtils::Registry::root_user, MIXP_REGISTRY_KEY"\\command", QString(), command))
{
- if(mixp_reg_value_write(mixp_root_user, MIXP_REGISTRY_KEY, MIXP_REGISTRY_VAL, 1))
+ if(MUtils::Registry::reg_value_write(MUtils::Registry::root_user, MIXP_REGISTRY_KEY, MIXP_REGISTRY_VAL, 1))
{
qDebug("Success.\n");
- mixp_shell_change_notification();
+ MUtils::OS::shell_change_notification();
return true;
}
}
}
qWarning("Failed to install the shell extension!\n");
- mixp_reg_key_delete(mixp_root_user, MIXP_REGISTRY_KEY);
+ MUtils::Registry::reg_key_delete(MUtils::Registry::root_user, MIXP_REGISTRY_KEY);
return false;
}
else
{
qDebug("Un-installing the shell extension...");
- if(!mixp_reg_key_delete(mixp_root_user, MIXP_REGISTRY_KEY))
+ if(!MUtils::Registry::reg_key_delete(MUtils::Registry::root_user, MIXP_REGISTRY_KEY))
{
qWarning("Failed to un-install the shell extension!\n");
return false;
}
qDebug("Success.\n");
- mixp_shell_change_notification();
+ MUtils::OS::shell_change_notification();
return true;
}
}
diff --git a/src/Utils.cpp b/src/Utils.cpp
deleted file mode 100644
index 4af8644..0000000
--- a/src/Utils.cpp
+++ /dev/null
@@ -1,590 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// MediaInfoXP
-// Copyright (C) 2004-2015 LoRd_MuldeR
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this program; if not, write to the Free Software Foundation, Inc.,
-// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-//
-// http://www.gnu.org/licenses/gpl-2.0.txt
-///////////////////////////////////////////////////////////////////////////////
-
-#include "Utils.h"
-#include "Config.h"
-
-//Win32
-#define WIN32_LEAN_AND_MEAN
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-//StdLib
-#include
-#include
-#include
-#include
-
-#pragma intrinsic(_InterlockedExchange)
-
-//Qt
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-//Function pointers
-typedef HRESULT (WINAPI *SHGetKnownFolderPath_t)(const GUID &rfid, DWORD dwFlags, HANDLE hToken, PWSTR *ppszPath);
-typedef HRESULT (WINAPI *SHGetFolderPath_t)(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath);
-
-//Known folders
-typedef enum
-{
- mixp_folder_localappdata = 0,
- mixp_folder_programfiles = 2,
- mixp_folder_systemfolder = 3,
- mixp_folder_systroot_dir = 4
-}
-mixp_known_folder_t;
-
-//Known folder cache
-static struct
-{
- bool initialized;
- QMap knownFolders;
- SHGetKnownFolderPath_t getKnownFolderPath;
- SHGetFolderPath_t getFolderPath;
- QReadWriteLock lock;
-}
-g_mixp_known_folder;
-
-/*
- * Try to lock folder
- */
-static QString mixp_tryLockFolder(const QString &folderPath, QFile **lockfile)
-{
- const QByteArray WRITE_TEST_DATA = QByteArray("Lorem ipsum dolor sit amet, consetetur sadipscing elitr!");
-
- for(int i = 0; i < 32; i++)
- {
- QDir folder(folderPath);
- if(!folder.exists())
- {
- folder.mkdir(".");
- }
-
- if(folder.exists())
- {
- const QString SUB_FOLDER = QUuid::createUuid().toString().remove('{').remove('}').remove('-').right(16);
-
- folder.mkdir(SUB_FOLDER);
- if(folder.cd(SUB_FOLDER) && folder.exists())
- {
- QFile *testFile = new QFile(QString("%1/~lock.tmp").arg(folder.canonicalPath()));
- if(testFile->open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Unbuffered))
- {
- if(testFile->write(WRITE_TEST_DATA) >= WRITE_TEST_DATA.size())
- {
- *lockfile = testFile;
- return folder.canonicalPath();
- }
- testFile->remove();
- }
- MIXP_DELETE_OBJ(testFile);
- }
- }
- }
-
- return QString();
-}
-
-/*
- * Locate known folder on local system
- */
-static const QString &mixp_known_folder(mixp_known_folder_t folder_id)
-{
- //static const int CSIDL_FLAG_CREATE = 0x8000;
- //typedef enum { KF_FLAG_CREATE = 0x00008000 } kf_flags_t;
-
- struct
- {
- const int csidl;
- const GUID guid;
- }
- static s_folders[] =
- {
- { 0x001c, {0xF1B32785,0x6FBA,0x4FCF,{0x9D,0x55,0x7B,0x8E,0x7F,0x15,0x70,0x91}} }, //CSIDL_LOCAL_APPDATA
- { 0x0026, {0x905e63b6,0xc1bf,0x494e,{0xb2,0x9c,0x65,0xb7,0x32,0xd3,0xd2,0x1a}} }, //CSIDL_PROGRAM_FILES
- { 0x0024, {0xF38BF404,0x1D43,0x42F2,{0x93,0x05,0x67,0xDE,0x0B,0x28,0xFC,0x23}} }, //CSIDL_WINDOWS_FOLDER
- { 0x0025, {0x1AC14E77,0x02E7,0x4E5D,{0xB7,0x44,0x2E,0xB1,0xAE,0x51,0x98,0xB7}} }, //CSIDL_SYSTEM_FOLDER
- };
-
- size_t folderId = size_t(-1);
-
- switch(folder_id)
- {
- case mixp_folder_localappdata: folderId = 0; break;
- case mixp_folder_programfiles: folderId = 1; break;
- case mixp_folder_systroot_dir: folderId = 2; break;
- case mixp_folder_systemfolder: folderId = 3; break;
- }
-
- if(folderId == size_t(-1))
- {
- qWarning("Invalid 'known' folder was requested!");
- return *reinterpret_cast(NULL);
- }
-
- QReadLocker readLock(&g_mixp_known_folder.lock);
-
- //Already in cache?
- if(g_mixp_known_folder.knownFolders.contains(folderId))
- {
- return g_mixp_known_folder.knownFolders[folderId];
- }
-
- //Obtain write lock to initialize
- readLock.unlock();
- QWriteLocker writeLock(&g_mixp_known_folder.lock);
-
- //Still not in cache?
- if(g_mixp_known_folder.knownFolders.contains(folderId))
- {
- return g_mixp_known_folder.knownFolders[folderId];
- }
-
- //Initialize on first call
- if(!g_mixp_known_folder.initialized)
- {
- QLibrary shell32("shell32.dll");
- if(shell32.load())
- {
- g_mixp_known_folder.getFolderPath = (SHGetFolderPath_t) shell32.resolve("SHGetFolderPathW");
- g_mixp_known_folder.getKnownFolderPath = (SHGetKnownFolderPath_t) shell32.resolve("SHGetKnownFolderPath");
- }
- g_mixp_known_folder.initialized = true;
- }
-
- QString folderPath;
-
- //Now try to get the folder path!
- if(g_mixp_known_folder.getKnownFolderPath)
- {
- WCHAR *path = NULL;
- if(g_mixp_known_folder.getKnownFolderPath(s_folders[folderId].guid, KF_FLAG_CREATE, NULL, &path) == S_OK)
- {
- //MessageBoxW(0, path, L"SHGetKnownFolderPath", MB_TOPMOST);
- QDir folderTemp = QDir(QDir::fromNativeSeparators(QString::fromUtf16(reinterpret_cast(path))));
- if(folderTemp.exists())
- {
- folderPath = folderTemp.canonicalPath();
- }
- CoTaskMemFree(path);
- }
- }
- else if(g_mixp_known_folder.getFolderPath)
- {
- WCHAR *path = new WCHAR[4096];
- if(g_mixp_known_folder.getFolderPath(NULL, s_folders[folderId].csidl | CSIDL_FLAG_CREATE, NULL, NULL, path) == S_OK)
- {
- //MessageBoxW(0, path, L"SHGetFolderPathW", MB_TOPMOST);
- QDir folderTemp = QDir(QDir::fromNativeSeparators(QString::fromUtf16(reinterpret_cast(path))));
- if(folderTemp.exists())
- {
- folderPath = folderTemp.canonicalPath();
- }
- }
- MIXP_DELETE_ARR(path);
- }
-
- //Update cache
- g_mixp_known_folder.knownFolders.insert(folderId, folderPath);
- return g_mixp_known_folder.knownFolders[folderId];
-}
-
-/*
- * Detect the TEMP folder
- */
-QString mixp_getTempFolder(QFile **lockfile)
-{
- *lockfile = NULL;
-
- //Try the %TMP% or %TEMP% directory first
- QString tempPath = mixp_tryLockFolder(QDir::temp().absolutePath(), lockfile);
- if(!tempPath.isEmpty())
- {
- return tempPath;
- }
-
- qWarning("Failed to init %%TEMP%%, falling back to %%LOCALAPPDATA%% or %%SYSTEMROOT%%\n");
-
- //Create TEMP folder in %LOCALAPPDATA%
- for(int i = 0; i < 2; i++)
- {
- static const mixp_known_folder_t folderId[2] = { mixp_folder_localappdata, mixp_folder_systroot_dir };
- const QString &localAppDataPath = mixp_known_folder(folderId[i]);
- if(!localAppDataPath.isEmpty())
- {
- if(QDir(localAppDataPath).exists())
- {
- tempPath = mixp_tryLockFolder(QString("%1/Temp").arg(localAppDataPath), lockfile);
- if(!tempPath.isEmpty())
- {
- return tempPath;
- }
- }
- }
- }
-
- return QString();
-}
-
-/*
- * Safely remove a file
- */
-static bool mixp_remove_file(const QString &filename)
-{
- if(!QFileInfo(filename).exists() || !QFileInfo(filename).isFile())
- {
- return true;
- }
- else
- {
- if(!QFile::remove(filename))
- {
- static const DWORD attrMask = FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM;
- const DWORD attributes = GetFileAttributesW(QWCHAR(filename));
- if(attributes & attrMask)
- {
- SetFileAttributesW(QWCHAR(filename), FILE_ATTRIBUTE_NORMAL);
- }
- if(!QFile::remove(filename))
- {
- qWarning("Could not delete \"%s\"", filename.toLatin1().constData());
- return false;
- }
- else
- {
- return true;
- }
- }
- else
- {
- return true;
- }
- }
-}
-
-/*
- * Clean folder
- */
-bool mixp_clean_folder(const QString &folderPath)
-{
- QDir tempFolder(folderPath);
- if(tempFolder.exists())
- {
- QFileInfoList entryList = tempFolder.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden);
-
- for(int i = 0; i < entryList.count(); i++)
- {
- if(entryList.at(i).isDir())
- {
- mixp_clean_folder(entryList.at(i).canonicalFilePath());
- }
- else
- {
- for(int j = 0; j < 3; j++)
- {
- if(mixp_remove_file(entryList.at(i).canonicalFilePath()))
- {
- break;
- }
- }
- }
- }
- return tempFolder.rmdir(".");
- }
- return true;
-}
-
-/*
- * Get build date
- */
-QDate mixp_get_build_date(void)
-{
- QDate buildDate(2000, 1, 1);
-
- static const char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
-
- int date[3] = {0, 0, 0}; char temp[12] = {'\0'};
- strncpy_s(temp, 12, mixp_buildDate, _TRUNCATE);
-
- if(strlen(temp) == 11)
- {
- temp[3] = temp[6] = '\0';
- date[2] = atoi(&temp[4]);
- date[0] = atoi(&temp[7]);
-
- for(int j = 0; j < 12; j++)
- {
- if(!_strcmpi(&temp[0], months[j]))
- {
- date[1] = j+1;
- break;
- }
- }
-
- buildDate = QDate(date[0], date[1], date[2]);
- }
-
- return buildDate;
-}
-
-/*
- * Get current date
- */
-QDate mixp_get_current_date(void)
-{
- const DWORD MAX_PROC = 1024;
- DWORD *processes = new DWORD[MAX_PROC];
- DWORD bytesReturned = 0;
-
- if(!EnumProcesses(processes, sizeof(DWORD) * MAX_PROC, &bytesReturned))
- {
- MIXP_DELETE_ARR(processes);
- return QDate::currentDate();
- }
-
- const DWORD procCount = bytesReturned / sizeof(DWORD);
- ULARGE_INTEGER lastStartTime;
- memset(&lastStartTime, 0, sizeof(ULARGE_INTEGER));
-
- for(DWORD i = 0; i < procCount; i++)
- {
- HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, processes[i]);
- if(hProc)
- {
- FILETIME processTime[4];
- if(GetProcessTimes(hProc, &processTime[0], &processTime[1], &processTime[2], &processTime[3]))
- {
- ULARGE_INTEGER timeCreation;
- timeCreation.LowPart = processTime[0].dwLowDateTime;
- timeCreation.HighPart = processTime[0].dwHighDateTime;
- if(timeCreation.QuadPart > lastStartTime.QuadPart)
- {
- lastStartTime.QuadPart = timeCreation.QuadPart;
- }
- }
- CloseHandle(hProc);
- }
- }
-
- MIXP_DELETE_ARR(processes);
-
- FILETIME lastStartTime_fileTime;
- lastStartTime_fileTime.dwHighDateTime = lastStartTime.HighPart;
- lastStartTime_fileTime.dwLowDateTime = lastStartTime.LowPart;
-
- FILETIME lastStartTime_localTime;
- if(!FileTimeToLocalFileTime(&lastStartTime_fileTime, &lastStartTime_localTime))
- {
- memcpy(&lastStartTime_localTime, &lastStartTime_fileTime, sizeof(FILETIME));
- }
-
- SYSTEMTIME lastStartTime_system;
- if(!FileTimeToSystemTime(&lastStartTime_localTime, &lastStartTime_system))
- {
- memset(&lastStartTime_system, 0, sizeof(SYSTEMTIME));
- lastStartTime_system.wYear = 1970; lastStartTime_system.wMonth = lastStartTime_system.wDay = 1;
- }
-
- const QDate currentDate = QDate::currentDate();
- const QDate processDate = QDate(lastStartTime_system.wYear, lastStartTime_system.wMonth, lastStartTime_system.wDay);
- return (currentDate >= processDate) ? currentDate : processDate;
-}
-
-/*
- * Convert QIcon to HICON -> caller is responsible for destroying the HICON!
- */
-static HICON mixp_qicon2hicon(const QIcon &icon, const int w, const int h)
-{
- if(!icon.isNull())
- {
- QPixmap pixmap = icon.pixmap(w, h);
- if(!pixmap.isNull())
- {
- return pixmap.toWinHICON();
- }
- }
- return NULL;
-}
-
-/*
- * Update the window icon
- */
-mixp_icon_t *mixp_set_window_icon(QWidget *window, const QIcon &icon, const bool bIsBigIcon)
-{
- if(!icon.isNull())
- {
- const int extend = (bIsBigIcon ? 32 : 16);
- if(HICON hIcon = mixp_qicon2hicon(icon, extend, extend))
- {
- SendMessage(window->winId(), WM_SETICON, (bIsBigIcon ? ICON_BIG : ICON_SMALL), LPARAM(hIcon));
- return reinterpret_cast(hIcon);
- }
- }
- return NULL;
-}
-
-/*
- * Free window icon
- */
-void mixp_free_window_icon(mixp_icon_t *icon)
-{
- if(HICON hIcon = reinterpret_cast(icon))
- {
- DestroyIcon(hIcon);
- }
-}
-
-/*
- * Message Beep
- */
-bool mixp_beep(int beepType)
-{
- switch(beepType)
- {
- case mixp_beep_info: return (MessageBeep(MB_ICONASTERISK) != FALSE); break;
- case mixp_beep_warning: return (MessageBeep(MB_ICONEXCLAMATION) != FALSE); break;
- case mixp_beep_error: return (MessageBeep(MB_ICONHAND) != FALSE); break;
- default: return false;
- }
-}
-
-/*
- * Bring the specifed window to the front
- */
-bool mixp_bring_to_front(const QWidget *window)
-{
- bool ret = false;
-
- if(window)
- {
- for(int i = 0; (i < 5) && (!ret); i++)
- {
- ret = (SetForegroundWindow(window->winId()) != FALSE);
- SwitchToThisWindow(window->winId(), TRUE);
- }
- LockSetForegroundWindow(LSFW_LOCK);
- }
-
- return ret;
-}
-
-/*
- * Registry root key
- */
-static HKEY mixp_reg_root(int rootKey)
-{
- switch(rootKey)
- {
- case mixp_root_classes: return HKEY_CLASSES_ROOT; break;
- case mixp_root_user: return HKEY_CURRENT_USER; break;
- case mixp_root_machine: return HKEY_LOCAL_MACHINE; break;
- default: throw "Unknown root reg value was specified!";
- }
-}
-
-/*
- * Write registry value
- */
-bool mixp_reg_value_write(int rootKey, const QString &keyName, const QString &valueName, const quint32 value)
-{
- bool success = false; HKEY hKey = NULL;
- if(RegCreateKeyEx(mixp_reg_root(rootKey), QWCHAR(keyName), 0, NULL, 0, KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS)
- {
- if(RegSetValueEx(hKey, valueName.isEmpty() ? NULL : QWCHAR(valueName), 0, REG_DWORD, reinterpret_cast(&value), sizeof(quint32)) == ERROR_SUCCESS)
- {
- success = true;
- }
- CloseHandle(hKey);
- }
- return success;
-}
-
-/*
- * Write registry value
- */
-bool mixp_reg_value_write(int rootKey, const QString &keyName, const QString &valueName, const QString &value)
-{
- bool success = false; HKEY hKey = NULL;
- if(RegCreateKeyEx(mixp_reg_root(rootKey), QWCHAR(keyName), 0, NULL, 0, KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS)
- {
- if(RegSetValueEx(hKey, valueName.isEmpty() ? NULL : QWCHAR(valueName), 0, REG_SZ, reinterpret_cast(value.utf16()), (value.length() + 1) * sizeof(wchar_t)) == ERROR_SUCCESS)
- {
- success = true;
- }
- CloseHandle(hKey);
- }
- return success;
-}
-
-/*
- * Read registry value
- */
-bool mixp_reg_value_read(int rootKey, const QString &keyName, const QString &valueName, quint32 &value)
-{
- bool success = false; HKEY hKey = NULL;
- if(RegOpenKeyEx(mixp_reg_root(rootKey), QWCHAR(keyName), 0, KEY_READ, &hKey) == ERROR_SUCCESS)
- {
- DWORD size = sizeof(quint32), type = -1;
- if(RegQueryValueEx(hKey, valueName.isEmpty() ? NULL : QWCHAR(valueName), 0, &type, reinterpret_cast(&value), &size) == ERROR_SUCCESS)
- {
- success = (type == REG_DWORD);
- }
- CloseHandle(hKey);
- }
- return success;
-}
-
-/*
- * Delete registry key
- */
-bool mixp_reg_key_delete(int rootKey, const QString &keyName)
-{
- return (SHDeleteKey( mixp_reg_root(rootKey), QWCHAR(keyName)) == ERROR_SUCCESS);
-}
-
-/*
- * Shell notification
- */
-void mixp_shell_change_notification(void)
-{
- SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);
-}
-
-/*
- * Global init
- */
-void _mixp_global_init(void)
-{
- g_mixp_known_folder.initialized = false;
-}
diff --git a/src/Utils.h b/src/Utils.h
deleted file mode 100644
index b274ef3..0000000
--- a/src/Utils.h
+++ /dev/null
@@ -1,73 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// MediaInfoXP
-// Copyright (C) 2004-2015 LoRd_MuldeR
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this program; if not, write to the Free Software Foundation, Inc.,
-// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-//
-// http://www.gnu.org/licenses/gpl-2.0.txt
-///////////////////////////////////////////////////////////////////////////////
-
-#pragma once
-
-#include
-#include
-
-class QDate;
-class QWidget;
-class QIcon;
-class mixp_icon_t;
-
-//Helper macros
-#define MIXP_DELETE_OBJ(PTR) do { if((PTR)) { delete ((PTR)); (PTR) = NULL; } } while (0)
-#define MIXP_DELETE_ARR(PTR) do { if((PTR)) { delete [] ((PTR)); (PTR) = NULL; } } while (0)
-#define QWCHAR(STR) reinterpret_cast(STR.utf16())
-
-//Beep types
-typedef enum
-{
- mixp_beep_info = 0,
- mixp_beep_warning = 1,
- mixp_beep_error = 2
-}
-mixp_beep_t;
-
-//Regsitry root
-typedef enum
-{
- mixp_root_classes = 0,
- mixp_root_user = 1,
- mixp_root_machine = 2,
-}
-mixp_reg_root_t;
-
-//Utils
-QString mixp_getTempFolder(QFile **lockfile);
-bool mixp_clean_folder(const QString &folderPath);
-QDate mixp_get_build_date(void);
-QDate mixp_get_current_date(void);
-mixp_icon_t *mixp_set_window_icon(QWidget *window, const QIcon &icon, const bool bIsBigIcon);
-void mixp_free_window_icon(mixp_icon_t *icon);
-bool mixp_beep(int beepType);
-bool mixp_bring_to_front(const QWidget *window);
-void mixp_shell_change_notification(void);
-
-//Regsitry
-bool mixp_reg_value_write(int rootKey, const QString &keyName, const QString &valueName, const quint32 value);
-bool mixp_reg_value_write(int rootKey, const QString &keyName, const QString &valueName, const QString &value);
-bool mixp_reg_value_read(int rootKey, const QString &keyName, const QString &valueName, quint32 &value);
-bool mixp_reg_key_delete(int rootKey, const QString &keyName);
-
-//Init
-void _mixp_global_init(void);