void HomeApplication::sendHomeReadySignalIfNotAlreadySent() { if (!homeReadySent) { homeReadySent = true; disconnect(LipstickCompositor::instance(), SIGNAL(frameSwapped()), this, SLOT(sendHomeReadySignalIfNotAlreadySent())); emit homeReady(); } }
DeviceLock::DeviceLock(QObject * parent) : QObject(parent), lockingGConfItem(new MGConfItem("/desktop/nemo/devicelock/automatic_locking", this)), lockTimer(new QTimer(this)), qmActivity(new MeeGo::QmActivity(this)), qmLocks(new MeeGo::QmLocks(this)), qmDisplayState(new MeeGo::QmDisplayState(this)), deviceLockState(Undefined) { monoTime.tv_sec = 0; connect(lockingGConfItem, SIGNAL(valueChanged()), this, SLOT(setStateAndSetupLockTimer())); connect(lockTimer, SIGNAL(timeout()), this, SLOT(lock())); connect(qmActivity, SIGNAL(activityChanged(MeeGo::QmActivity::Activity)), this, SLOT(setStateAndSetupLockTimer())); connect(qmLocks, SIGNAL(stateChanged(MeeGo::QmLocks::Lock,MeeGo::QmLocks::State)), this, SLOT(setStateAndSetupLockTimer())); connect(qmDisplayState, SIGNAL(displayStateChanged(MeeGo::QmDisplayState::DisplayState)), this, SLOT(checkDisplayState(MeeGo::QmDisplayState::DisplayState))); connect(qApp, SIGNAL(homeReady()), this, SLOT(init())); }
HomeApplication::HomeApplication(int &argc, char **argv, const QString &qmlPath) : QGuiApplication(argc, argv) , _mainWindowInstance(0) , _qmlPath(qmlPath) , originalSigIntHandler(signal(SIGINT, quitSignalHandler)) , originalSigTermHandler(signal(SIGTERM, quitSignalHandler)) , updatesEnabled(true) , homeReadySent(false) , onUpdatesDisabledUnfocusedWindowId(0) { setApplicationName("Lipstick"); // TODO: autogenerate this from tags setApplicationVersion(VERSION); QTranslator *engineeringEnglish = new QTranslator(this); engineeringEnglish->load("lipstick_eng_en", "/usr/share/translations"); installTranslator(engineeringEnglish); QTranslator *translator = new QTranslator(this); translator->load(QLocale(), "lipstick", "-", "/usr/share/translations"); installTranslator(translator); // Initialize the QML engine qmlEngine = new QQmlEngine(this); // Initialize the notification manager NotificationManager::instance(); new NotificationPreviewPresenter(this); // Create screen lock logic - not parented to "this" since destruction happens too late in that case screenLock = new ScreenLock; LipstickSettings::instance()->setScreenLock(screenLock); new ScreenLockAdaptor(screenLock); deviceLock = new DeviceLock(this); new DeviceLockAdaptor(deviceLock); volumeControl = new VolumeControl; new BatteryNotifier(this); new DiskSpaceNotifier(this); new ThermalNotifier(this); usbModeSelector = new USBModeSelector(this); connect(usbModeSelector, SIGNAL(dialogShown()), screenLock, SLOT(unlockScreen())); shutdownScreen = new ShutdownScreen(this); new ShutdownScreenAdaptor(shutdownScreen); connectionSelector = new ConnectionSelector(this); // MCE and usb-moded expect services to be registered on the system bus QDBusConnection systemBus = QDBusConnection::systemBus(); if (!systemBus.registerService(LIPSTICK_DBUS_SERVICE_NAME)) { qWarning("Unable to register D-Bus service %s: %s", LIPSTICK_DBUS_SERVICE_NAME, systemBus.lastError().message().toUtf8().constData()); } new HomeApplicationAdaptor(this); registerDBusObject(systemBus, LIPSTICK_DBUS_PATH, this); registerDBusObject(systemBus, LIPSTICK_DBUS_SCREENLOCK_PATH, screenLock); registerDBusObject(systemBus, LIPSTICK_DBUS_DEVICELOCK_PATH, deviceLock); registerDBusObject(systemBus, LIPSTICK_DBUS_SHUTDOWN_PATH, shutdownScreen); ScreenshotService *screenshotService = new ScreenshotService(this); new ScreenshotServiceAdaptor(screenshotService); QDBusConnection sessionBus = QDBusConnection::sessionBus(); registerDBusObject(sessionBus, LIPSTICK_DBUS_SCREENSHOT_PATH, screenshotService); connect(this, SIGNAL(homeReady()), this, SLOT(sendStartupNotifications())); }