refs #313 Application context acts as com layer between settings and InputManager

This commit is contained in:
Roland Winklmeier
2014-08-04 20:40:30 +02:00
parent 88e7a38796
commit 1adfd16ec9
3 changed files with 29 additions and 3 deletions

View File

@@ -1,11 +1,14 @@
#include "blackcore/context_application.h"
#include "blackcore/context_application_impl.h"
#include "blackcore/context_application_proxy.h"
#include "blackcore/context_settings.h"
#include "blackcore/input_manager.h"
#include "blackmisc/statusmessage.h"
#include <QCoreApplication>
#include <QThread>
using namespace BlackMisc;
using namespace BlackMisc::Settings;
namespace BlackCore
{
@@ -57,6 +60,8 @@ namespace BlackCore
IContextApplication::s_oldHandler = qInstallMessageHandler(IContextApplication::messageHandlerDispatch);
}
IContextApplication::s_contexts.append(this);
changeSettings(IContextSettings::SettingsHotKeys);
}
/*
@@ -81,6 +86,22 @@ namespace BlackCore
qInstallMessageHandler(0);
}
void IContextApplication::changeSettings(uint typeValue)
{
IContextSettings::SettingsType type = static_cast<IContextSettings::SettingsType>(typeValue);
switch (type)
{
case IContextSettings::SettingsHotKeys:
{
CSettingKeyboardHotkeyList hotkeys = getIContextSettings()->getHotkeys();
CInputManager::getInstance()->changeHotkeySettings(hotkeys);
break;
}
default:
break;
}
}
/*
* Dispatch message
*/

View File

@@ -26,6 +26,8 @@
namespace BlackCore
{
class CInputManager;
/*!
* Application context interface
*/
@@ -148,6 +150,9 @@ namespace BlackCore
//! Remote enabled version of file exists
virtual bool existsFile(const QString &fileName) = 0;
void changeSettings(uint typeValue);
private:
//! All contexts, used with messageHandler
static QList<IContextApplication *> s_contexts;

View File

@@ -407,11 +407,11 @@ namespace BlackCore
{
bool c;
Q_UNUSED(c); // for release version
if (this->m_contextSettings && this->m_contextAudio && this->m_contextSettings->usingLocalObjects())
if (this->m_contextSettings && this->m_contextApplication)
{
// only, when both contexts exists and only if settings originate locally
c = connect(this->m_contextSettings, &IContextSettings::changedSettings,
this->getCContextAudio(), &CContextAudio::ps_settingsChanged);
this->getIContextApplication(), &IContextApplication::changeSettings);
Q_ASSERT(c);
}