mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
This commit is contained in:
@@ -150,18 +150,18 @@ bool AuthManager::resetHyperionUser()
|
||||
return _authTable->resetHyperionUser();
|
||||
}
|
||||
|
||||
void AuthManager::setNewTokenRequest(QObject *caller, const QString &comment, const QString &id)
|
||||
void AuthManager::setNewTokenRequest(QObject *caller, const QString &comment, const QString &id, const int &tan)
|
||||
{
|
||||
if (!_pendingRequests.contains(id))
|
||||
{
|
||||
AuthDefinition newDef{id, comment, caller, uint64_t(QDateTime::currentMSecsSinceEpoch() + 180000)};
|
||||
AuthDefinition newDef{id, comment, caller, tan, uint64_t(QDateTime::currentMSecsSinceEpoch() + 180000)};
|
||||
_pendingRequests[id] = newDef;
|
||||
_timer->start();
|
||||
emit newPendingTokenRequest(id, comment);
|
||||
}
|
||||
}
|
||||
|
||||
void AuthManager::cancelNewTokenRequest(QObject *caller, const QString &comment, const QString &id)
|
||||
void AuthManager::cancelNewTokenRequest(QObject *caller, const QString &, const QString &id)
|
||||
{
|
||||
if (_pendingRequests.contains(id))
|
||||
{
|
||||
@@ -182,12 +182,12 @@ void AuthManager::handlePendingTokenRequest(const QString &id, bool accept)
|
||||
{
|
||||
const QString token = QUuid::createUuid().toString().remove("{").remove("}");
|
||||
_authTable->createToken(token, def.comment, id);
|
||||
emit tokenResponse(true, def.caller, token, def.comment, id);
|
||||
emit tokenResponse(true, def.caller, token, def.comment, id, def.tan);
|
||||
emit tokenChange(getTokenList());
|
||||
}
|
||||
else
|
||||
{
|
||||
emit tokenResponse(false, def.caller, QString(), def.comment, id);
|
||||
emit tokenResponse(false, def.caller, QString(), def.comment, id, def.tan);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -249,7 +249,7 @@ void AuthManager::checkTimeout()
|
||||
const AuthDefinition &def = i.value();
|
||||
if (def.timeoutTime <= now)
|
||||
{
|
||||
emit tokenResponse(false, def.caller, QString(), def.comment, def.id);
|
||||
emit tokenResponse(false, def.caller, QString(), def.comment, def.id, def.tan);
|
||||
_pendingRequests.remove(i.key());
|
||||
}
|
||||
}
|
||||
|
@@ -67,7 +67,7 @@ void HyperionIManager::toggleStateAllInstances(bool pause)
|
||||
}
|
||||
}
|
||||
|
||||
bool HyperionIManager::startInstance(quint8 inst, bool block)
|
||||
bool HyperionIManager::startInstance(quint8 inst, bool block, QObject* caller, int tan)
|
||||
{
|
||||
if(_instanceTable->instanceExist(inst))
|
||||
{
|
||||
@@ -104,6 +104,12 @@ bool HyperionIManager::startInstance(quint8 inst, bool block)
|
||||
while(!hyperionThread->isRunning()){};
|
||||
}
|
||||
|
||||
if (!_pendingRequests.contains(inst) && caller != nullptr)
|
||||
{
|
||||
PendingRequests newDef{caller, tan};
|
||||
_pendingRequests[inst] = newDef;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
Debug(_log,"Can't start Hyperion instance index '%d' with name '%s' it's already running or queued for start", inst, QSTRING_CSTR(_instanceTable->getNamebyIndex(inst)));
|
||||
@@ -211,4 +217,11 @@ void HyperionIManager::handleStarted()
|
||||
_runningInstances.insert(instance, hyperion);
|
||||
emit instanceStateChanged(InstanceState::H_STARTED, instance);
|
||||
emit change();
|
||||
|
||||
if (_pendingRequests.contains(instance))
|
||||
{
|
||||
PendingRequests def = _pendingRequests.take(instance);
|
||||
emit startInstanceResponse(def.caller, def.tan);
|
||||
_pendingRequests.remove(instance);
|
||||
}
|
||||
}
|
||||
|
@@ -142,9 +142,11 @@ hyperion::Components PriorityMuxer::getComponentOfPriority(int priority) const
|
||||
void PriorityMuxer::registerInput(int priority, hyperion::Components component, const QString& origin, const QString& owner, unsigned smooth_cfg)
|
||||
{
|
||||
// detect new registers
|
||||
bool newInput = false;
|
||||
if(!_activeInputs.contains(priority))
|
||||
bool newInput, reusedInput = false;
|
||||
if (!_activeInputs.contains(priority))
|
||||
newInput = true;
|
||||
else
|
||||
reusedInput = true;
|
||||
|
||||
InputInfo& input = _activeInputs[priority];
|
||||
input.priority = priority;
|
||||
@@ -154,12 +156,15 @@ void PriorityMuxer::registerInput(int priority, hyperion::Components component,
|
||||
input.smooth_cfg = smooth_cfg;
|
||||
input.owner = owner;
|
||||
|
||||
if(newInput)
|
||||
if (newInput)
|
||||
{
|
||||
Debug(_log,"Register new input '%s/%s' with priority %d as inactive", QSTRING_CSTR(origin), hyperion::componentToIdString(component), priority);
|
||||
emit prioritiesChanged();
|
||||
if (!_sourceAutoSelectEnabled) // emit 'prioritiesChanged' only on when _sourceAutoSelectEnabled is false
|
||||
emit prioritiesChanged();
|
||||
return;
|
||||
}
|
||||
|
||||
if (reusedInput) emit prioritiesChanged();
|
||||
}
|
||||
|
||||
bool PriorityMuxer::setInput(int priority, const std::vector<ColorRgb>& ledColors, int64_t timeout_ms)
|
||||
@@ -339,7 +344,6 @@ void PriorityMuxer::setCurrentTime()
|
||||
_prevVisComp = comp;
|
||||
emit visibleComponentChanged(comp);
|
||||
}
|
||||
emit prioritiesChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user