/***************************************************************************
mixxx.cpp - description
-------------------
begin : Mon Feb 18 09:48:17 CET 2002
copyright : (C) 2002 by Tue and Ken Haste Andersen
email :
***************************************************************************/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#include "mixxx.h"
#include <QDesktopServices>
#include <QDesktopWidget>
#include <QFileDialog>
#include <QGLWidget>
#include <QUrl>
#include <QtDebug>
#include "analyzer/analyzerqueue.h"
#include "dialog/dlgabout.h"
#include "preferences/dialog/dlgpreferences.h"
#include "preferences/dialog/dlgprefeq.h"
#include "dialog/dlgdevelopertools.h"
#include "engine/enginemaster.h"
#include "effects/effectsmanager.h"
#include "effects/native/nativebackend.h"
#include "library/coverartcache.h"
#include "library/library.h"
#include "library/library_preferences.h"
#include "controllers/controllermanager.h"
#include "controllers/keyboard/keyboardeventfilter.h"
#include "mixer/playermanager.h"
#include "recording/recordingmanager.h"
#include "broadcast/broadcastmanager.h"
#include "skin/legacyskinparser.h"
#include "skin/skinloader.h"
#include "soundio/soundmanager.h"
#include "sources/soundsourceproxy.h"
#include "track/track.h"
#include "waveform/waveformwidgetfactory.h"
#include "waveform/sharedglcontext.h"
#include "util/debug.h"
#include "util/statsmanager.h"
#include "util/timer.h"
#include "util/time.h"
#include "util/version.h"
#include "control/controlpushbutton.h"
#include "util/compatibility.h"
#include "util/sandbox.h"
#include "mixer/playerinfo.h"
#include "waveform/guitick.h"
#include "util/math.h"
#include "util/experiment.h"
#include "util/font.h"
#include "util/translations.h"
#include "skin/launchimage.h"
#include "preferences/settingsmanager.h"
#include "widget/wmainmenubar.h"
#ifdef __VINYLCONTROL__
#include "vinylcontrol/vinylcontrolmanager.h"
#endif
#ifdef __MODPLUG__
#include "preferences/dialog/dlgprefmodplug.h"
#endif
// static
const int MixxxMainWindow::kMicrophoneCount = 4;
// static
const int MixxxMainWindow::kAuxiliaryCount = 4;
MixxxMainWindow::MixxxMainWindow(QApplication* pApp, const CmdlineArgs& args)
: m_pWidgetParent(nullptr),
m_pLaunchImage(nullptr),
m_pSettingsManager(nullptr),
m_pEffectsManager(nullptr),
m_pEngine(nullptr),
m_pSkinLoader(nullptr),
m_pSoundManager(nullptr),
m_pPlayerManager(nullptr),
m_pRecordingManager(nullptr),
#ifdef __BROADCAST__
m_pBroadcastManager(nullptr),
#endif
m_pControllerManager(nullptr),
m_pGuiTick(nullptr),
#ifdef __VINYLCONTROL__
m_pVCManager(nullptr),
#endif
m_pKeyboard(nullptr),
m_pLibrary(nullptr),
m_pMenuBar(nullptr),
m_pDeveloperToolsDlg(nullptr),
m_pPrefDlg(nullptr),
m_pKbdConfig(nullptr),
m_pKbdConfigEmpty(nullptr),
m_toolTipsCfg(mixxx::TooltipsPreference::TOOLTIPS_ON),
m_runtime_timer("MixxxMainWindow::runtime"),
m_cmdLineArgs(args),
m_pTouchShift(nullptr) {
m_runtime_timer.start();
mixxx::Time::start();
Version::logBuildDetails();
// Only record stats in developer mode.
if (m_cmdLineArgs.getDeveloper()) {
StatsManager::create();
}
m_pSettingsManager = new SettingsManager(this, args.getSettingsPath());
initializeKeyb