void GlobalPresence::onAccountAdded(const Tp::AccountPtr &account) { connect(account.data(), SIGNAL(connectionStatusChanged(Tp::ConnectionStatus)), SLOT(onConnectionStatusChanged())); connect(account.data(), SIGNAL(requestedPresenceChanged(Tp::Presence)), SLOT(onRequestedPresenceChanged())); connect(account.data(), SIGNAL(currentPresenceChanged(Tp::Presence)), SLOT(onCurrentPresenceChanged())); Q_EMIT enabledAccountsChanged(); }
void GlobalPresence::onRequestedPresenceChanged() { Tp::Presence highestRequestedPresence = Tp::Presence::offline(); Q_FOREACH(const Tp::AccountPtr &account, m_enabledAccounts->accounts()) { if (Presence::sortPriority(account->requestedPresence().type()) < Presence::sortPriority(highestRequestedPresence.type())) { highestRequestedPresence = account->requestedPresence(); } } if (highestRequestedPresence.type() != m_requestedPresence.type() || highestRequestedPresence.status() != m_requestedPresence.status() || highestRequestedPresence.statusMessage() != m_requestedPresence.statusMessage()) { m_requestedPresence = Presence(highestRequestedPresence); // current presence priority is affected by requested presence onCurrentPresenceChanged(); Q_EMIT requestedPresenceChanged(m_requestedPresence); } onChangingPresence(); }
AppletAvialabilityWidget::AppletAvialabilityWidget(QGraphicsItem *parent, Tp::AccountPtr account): MWidget(parent), m_account(account) { setMaximumSize(64,64); setMinimumSize(64,64); MFeedback* feedback1 = new MFeedback("priority2_static_press", this); connect(this, SIGNAL(pressed()), feedback1, SLOT(play())); MFeedback* feedback2 = new MFeedback("priority2_static_release", this); connect(this, SIGNAL(released()), feedback2, SLOT(play())); MFeedback* feedback3 = new MFeedback("priority2_grab", this); connect(this, SIGNAL(longpressed()), feedback3, SLOT(play())); m_iconService = new MImageWidget("icon-m-common-presence-unknown", this); m_iconService->setAspectRatioMode(Qt::KeepAspectRatio); m_iconService->setMaximumSize(64,64); m_iconService->setMinimumSize(64,64); m_iconService->setPos(0,0); m_iconPresence = new MImageWidget("icon-m-common-presence-unknown", this); m_iconPresence->setAspectRatioMode(Qt::KeepAspectRatio); m_iconPresence->setMaximumSize(24,24); m_iconPresence->setPos(40, 0); currentIconId = presenceToIconId(m_account->currentPresence()); requestedIconId = presenceToIconId(m_account->requestedPresence()); if (m_account->currentPresence().type() == Tp::ConnectionPresenceTypeOffline) nextPresence = Tp::Presence(Tp::ConnectionPresenceTypeAvailable, "", ""); else nextPresence = Tp::Presence(Tp::ConnectionPresenceTypeOffline, "", ""); m_iconPresence->setImage(currentIconId); isFakePresence = false; m_account->setConnectsAutomatically(false); QString serviceName = m_account->serviceName(); Accounts::Manager *manager = new Accounts::Manager(); Accounts::Service *service = manager->service(serviceName); QString serviceIconId = service->iconName(); m_iconService->setImage(serviceIconId); connect(m_account.data(), SIGNAL(changingPresence(bool)), SLOT(onChangingPresence(bool))); connect(m_account.data(), SIGNAL(currentPresenceChanged(Tp::Presence)), SLOT(onCurrentPresenceChanged(Tp::Presence))); connect(m_account.data(), SIGNAL(requestedPresenceChanged(Tp::Presence)), SLOT(onRequestedPresenceChanged(Tp::Presence))); connect(m_account.data(), SIGNAL(removed()), SLOT(onRemoved())); connect(m_account.data(), SIGNAL(stateChanged(bool)), SLOT(onStateChanged(bool))); presenceFaker = new QTimer(this); connect(presenceFaker, SIGNAL(timeout()), this, SLOT(fakerupdate())); grabGesture(Qt::TapAndHoldGesture); // pressTime = new QTimer(this); // pressTime->setSingleShot(true); // pressTime->setInterval(800); // connect(pressTime, SIGNAL(timeout()), this, SLOT(openPresence())); }