void DeviceLock::checkDisplayState(MeeGo::QmDisplayState::DisplayState state) { int lockingDelay = lockingGConfItem->value(-1).toInt(); if (lockingDelay == 0 && state == MeeGo::QmDisplayState::DisplayState::Off && qmLocks->getState(MeeGo::QmLocks::TouchAndKeyboard) == MeeGo::QmLocks::Locked) { // Immediate locking enabled and the display is off: lock setState(Locked); } else if (state == MeeGo::QmDisplayState::DisplayState::Off) { setStateAndSetupLockTimer(); } else if (monoTime.tv_sec) { struct timeval compareTime; tv_get_monotime(&compareTime); if (lockingDelay*60 < tv_diff_in_s(&compareTime, &monoTime)) { setState(Locked); } } }
void DeviceLock::setupLockTimer() { if (deviceLockState == Locked) { // Device already locked: stop the timer lockTimer->stop(); monoTime.tv_sec = 0; } else { if (lockingDelay <= 0 || (m_activity == MeeGo::QmActivity::Active && m_displayState != MeeGo::QmDisplayState::DisplayState::Off)) { // Locking disabled or device active: stop the timer lockTimer->stop(); monoTime.tv_sec = 0; } else if (!isCallActive && !monoTime.tv_sec && m_activity == MeeGo::QmActivity::Inactive) { // Locking in N minutes enabled and device inactive: start the timer lockTimer->start(lockingDelay * 60 * 1000); tv_get_monotime(&monoTime); } } }
void DeviceLock::setupLockTimer() { if (deviceLockState == Locked) { // Device already locked: stop the timer lockTimer->stop(); monoTime.tv_sec = 0; } else { int lockingDelay = lockingGConfItem->value(-1).toInt(); if (lockingDelay <= 0 || qmActivity->get() == MeeGo::QmActivity::Active) { // Locking disabled or device active: stop the timer lockTimer->stop(); monoTime.tv_sec = 0; } else { // Locking in N minutes enabled and device inactive: start the timer lockTimer->start(lockingDelay * 60 * 1000); tv_get_monotime(&monoTime); } } }
void DeviceLock::handleDisplayStateChanged(MeeGo::QmDisplayState::DisplayState state) { if (state == m_displayState) return; m_displayState = state; if (lockingDelay == 0 && state == MeeGo::QmDisplayState::DisplayState::Off && !isCallActive) { // Immediate locking enabled and the display is off and not in call: lock setState(Locked); } else if (state == MeeGo::QmDisplayState::DisplayState::Off) { setStateAndSetupLockTimer(); } else if (monoTime.tv_sec && lockingDelay > 0) { struct timeval compareTime; tv_get_monotime(&compareTime); if (lockingDelay*60 < tv_diff_in_s(&compareTime, &monoTime)) { setState(Locked); } setupLockTimer(); } }