Example #1
0
void ReticleItem::startAt(const QPoint& pos)
{
	if (m_animation)
		m_animation->stop();
	setPos(pos.x(), pos.y());
	setVisible(true);
	setOpacity(1);
	setScale(1);

	QPropertyAnimation* opacityAnimation = new QPropertyAnimation(this, "opacity");
	opacityAnimation->setDuration(AS(reticleDuration));
	opacityAnimation->setStartValue(1.0);
	opacityAnimation->setEndValue(0.0);
	opacityAnimation->setEasingCurve(AS_CURVE(reticleCurve));

	QPropertyAnimation* scaleAnimation = new QPropertyAnimation(this, "scale");
	scaleAnimation->setDuration(AS(reticleDuration));
	scaleAnimation->setStartValue(1.0);
	scaleAnimation->setEndValue(1.5);
	scaleAnimation->setEasingCurve(AS_CURVE(reticleCurve));

	QParallelAnimationGroup* reticleAnimation = new QParallelAnimationGroup;
	reticleAnimation->addAnimation(opacityAnimation);
	reticleAnimation->addAnimation(scaleAnimation);

	QPropertyAnimation* visibility = new QPropertyAnimation(this, "visible");
	visibility->setEndValue(false);
	visibility->setDuration(0);

	m_animation = new QSequentialAnimationGroup;
	m_animation->addAnimation(reticleAnimation);
	m_animation->addAnimation(visibility);
	m_animation->start(QAbstractAnimation::DeleteWhenStopped);
}
Example #2
0
void DockModeWindow::setPrepareAddedToWindowManager() {
	m_prepareAddedToWm = true;
	if (G_LIKELY(s_dockGlow == 0)) {
		QString path(Settings::LunaSettings()->lunaSystemResourcesPath.c_str());
		path.append("/dockmode/dock-loading-glow.png");
		s_dockGlow = new QPixmap(path);
		if(s_dockGlow)
			s_dockGlowRefCount++;
		if (!s_dockGlow || s_dockGlow->isNull()) {
			g_critical("%s: Failed to load image '%s'", __PRETTY_FUNCTION__, qPrintable(path));
		}
	} else {
		s_dockGlowRefCount++;
	}

	ApplicationDescription* appDesc = static_cast<Window*>(this)->appDescription();
	int size = Settings::LunaSettings()->splashIconSize;
	m_icon.load(appDesc->splashIconName().c_str());
	if (!m_icon.isNull()) {
		// scale splash icon to fit the devices screen dimensions
		m_icon = m_icon.scaled(size, size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
	}
	else {
		// just use the launcher icon
		m_icon = appDesc->getDefaultLaunchPoint()->icon();
		int newWidth = qMin((int)(m_icon.width()*1.5), size);
		int newHeight = qMin((int)(m_icon.height()*1.5), size);
		m_icon = m_icon.scaled(newWidth, newHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);
	}
	

	// set up the pulsing animation
	QPropertyAnimation* pulseIn = new QPropertyAnimation(this, "pulseOpacity");
	pulseIn->setDuration(AS(cardLoadingPulseDuration));
	pulseIn->setEasingCurve(AS_CURVE(cardLoadingPulseCurve));
	pulseIn->setEndValue(1.0);

	QPropertyAnimation* pulseOut = new QPropertyAnimation(this, "pulseOpacity");
	pulseOut->setDuration(AS(cardLoadingPulseDuration));
	pulseOut->setEasingCurve(AS_CURVE(cardLoadingPulseCurve));
	pulseOut->setEndValue(0.0);

	QSequentialAnimationGroup* pulseGroup = new QSequentialAnimationGroup;
	pulseGroup->addAnimation(pulseIn);
	pulseGroup->addAnimation(pulseOut);
	pulseGroup->setLoopCount(-1);

	m_pulseAnimation.addPause(AS(cardLoadingTimeBeforeShowingPulsing));
	m_pulseAnimation.addAnimation(pulseGroup);

	m_loadingOverlayEnabled = true;
	m_pulseAnimation.start();

	update();
}
void InputWindowManager::init()
{
	QRectF r = boundingRect();
	m_imeView = new IMEView(this);
	m_imeView->setBoundingRect(QRectF(0, 0, r.width(), r.height()));
	m_imeView->setPos(r.topLeft());

    int dpi = (QApplication::desktop()->physicalDpiX() +
               QApplication::desktop()->physicalDpiY()) / 2;

    m_activeIME = m_imeMgr.createPreferredIME(
                SystemUiController::instance()->currentUiWidth(),
                SystemUiController::instance()->currentUiHeight(),
                dpi, LocalePreferences::instance()->locale());

	Q_ASSERT(m_activeIME);

	connect(&(m_activeIME->m_keyboardHeight), SIGNAL(valueChanged(const qint32&)), 
			SLOT(slotKeyboardHeightChanged(const qint32&)));

	m_imeView->attach(m_activeIME);

    m_fadeAnim.setTargetObject(m_imeView);
    m_fadeAnim.setPropertyName("opacity");
    m_fadeAnim.setDuration(AS(brickDuration));
    m_fadeAnim.setEasingCurve(AS_CURVE(brickCurve));
}
void StatusBarItemGroup::deactivate()
{
	m_active = false;

	if(!m_overlayAnimPtr.isNull()) {
		m_overlayAnimPtr->stop();
		delete m_overlayAnimPtr;
	}

	m_overlayAnimPtr = new QPropertyAnimation();
	m_overlayAnimPtr->setPropertyName("overlayOpacity");
	m_overlayAnimPtr->setEasingCurve(AS_CURVE(statusBarMenuFadeCurve));
	m_overlayAnimPtr->setTargetObject(this);
	m_overlayAnimPtr->setDuration(AS(statusBarMenuFadeDuration));

	m_overlayAnimPtr->setEndValue(0.0);

	connect(m_overlayAnimPtr, SIGNAL(valueChanged(const QVariant&)), this,
			SLOT(slotOverlayAnimValueChanged(const QVariant&)));
	connect(m_overlayAnimPtr, SIGNAL(finished()), SLOT(slotOverlayAnimationFinished()));

	m_overlayAnimPtr->start(QAbstractAnimation::DeleteWhenStopped);

	update();
}
void StatusBarItemGroup::activate()
{
	m_active = true;

	if(!m_overlayAnimPtr.isNull()) {
		m_overlayAnimPtr->stop();
		delete m_overlayAnimPtr;
	}

	m_overlayAnimPtr = new QPropertyAnimation();
	m_overlayAnimPtr->setPropertyName("overlayOpacity");
	m_overlayAnimPtr->setEasingCurve(AS_CURVE(statusBarMenuFadeCurve));
	m_overlayAnimPtr->setTargetObject(this);
	m_overlayAnimPtr->setDuration(AS(statusBarMenuFadeDuration));

	m_overlayAnimPtr->setEndValue(MENU_OVERLAY_OPACITY);

	connect(m_overlayAnimPtr, SIGNAL(valueChanged(const QVariant&)), this,
			SLOT(slotOverlayAnimValueChanged(const QVariant&)));

	if(m_menuObj)
		m_menuObj->setVisible(true);

	if(m_menuObj)
		m_menuObj->setOpacity(0.0);

	m_overlayAnimPtr->start(QAbstractAnimation::DeleteWhenStopped);

	update();

	Q_EMIT signalActivated(this);
}
void StatusBarItemGroup::setActionable(bool actionable)
{
	if(m_actionable == actionable)
		return;

	m_actionable = actionable;

	if(Settings::LunaSettings()->tabletUi) {
		if(m_actionable && !m_activeBkgPix) {
			Settings* settings = Settings::LunaSettings();
			std::string statusBarImagesPath = settings->lunaSystemResourcesPath + "/statusBar/";

			std::string filePath = statusBarImagesPath + "status-bar-menu-dropdown-tab.png";
			m_activeBkgPix = new QPixmap(filePath.c_str());
		}

//		if(m_actionable && !m_pressedBkgPix) {
//			Settings* settings = Settings::LunaSettings();
//			std::string statusBarImagesPath = settings->lunaSystemResourcesPath + "/statusBar/";
//
//			std::string filePath = statusBarImagesPath + "status-bar-menu-dropdown-tab-pressed.png";
//			m_pressedBkgPix = new QPixmap(filePath.c_str());
//		}
	}

	// make sure the arrow is visible, but only when the item is accepting actions
	if(m_hasArrow) {
		if(!m_arrowFadeAnimPtr.isNull()) {
			m_arrowFadeAnimPtr->stop();
			delete m_arrowFadeAnimPtr;
		}

		if((m_actionable && (m_arrowAnimProg < 1.0)) || (!m_actionable && (m_arrowAnimProg > 0.0))) {
			m_arrowFadeAnimPtr = new QPropertyAnimation();
			m_arrowFadeAnimPtr->setPropertyName("arrowAnimProgress");
			m_arrowFadeAnimPtr->setEasingCurve(AS_CURVE(statusBarArrowSlideCurve));
			m_arrowFadeAnimPtr->setTargetObject(this);
			m_arrowFadeAnimPtr->setDuration(AS(statusBarArrowSlideDuration));

			if(m_actionable && (m_arrowAnimProg < 1.0)) {
				// animate arrow in
				m_arrowFadeAnimPtr->setEndValue(1.0);
			} else {
				// animate arrow out
				m_arrowFadeAnimPtr->setEndValue(0.0);
			}

			m_arrowFadeAnimPtr->start(QAbstractAnimation::DeleteWhenStopped);
		}
	}
}
void TopLevelWindowManager::init()
{
	m_lockedWindow = new LockWindow(boundingRect().width(), boundingRect().height());
	if (m_lockedWindow) {
		m_lockedWindow->init();
		m_lockedWindow->setPos(0,0);
		connect(m_lockedWindow, SIGNAL(signalScreenLocked(int)), this, SLOT(slotScreenLocked(int)));
		m_lockedWindow->setParentItem(this);
	}

	m_brickSurfAnimation.setPropertyName("opacity");
	m_brickSurfAnimation.setDuration(AS(brickDuration)); 
	m_brickSurfAnimation.setEasingCurve(AS_CURVE(brickCurve));
	connect(&m_brickSurfAnimation, SIGNAL(finished()), SLOT(slotBrickSurfAnimationFinished()));
}
void StatusBarItemGroup::hide()
{
	if(!m_opacityAnimPtr.isNull()) {
		m_opacityAnimPtr->stop();
		delete m_opacityAnimPtr;
	}

	if(!isVisible()) {
		setVisible(false);
		return;
	}

	m_opacityAnimPtr = new QPropertyAnimation();
	m_opacityAnimPtr->setPropertyName("opacity");
	m_opacityAnimPtr->setEasingCurve(AS_CURVE(statusBarTabFadeCurve));
	m_opacityAnimPtr->setTargetObject(this);
	m_opacityAnimPtr->setDuration(AS(statusBarTabFadeDuration));
	m_opacityAnimPtr->setEndValue(0.0);
	connect(m_opacityAnimPtr, SIGNAL(finished()), SLOT(slotFadeAnimationFinished()));
	m_opacityAnimPtr->start(QAbstractAnimation::DeleteWhenStopped);
}
DashboardWindowContainer::DashboardWindowContainer(DashboardWindowManager* wm, int width, int height)
	: GraphicsItemContainer(width, height, GraphicsItemContainer::SolidRectBackground)
	, m_wm(wm)
	, m_trackingMouseDirection(false)
	, m_vertLockedMovement(true)
	, m_isViewPortAnimationInProgress(false)
	, m_isWindowBeingDeleted(false)
	, m_animateVisibleViewportHeight(false)
	, m_IndexOfDeletedItem(-1)
	, m_FlickDirection(Ignore)
	, m_contentsHeight(0)
	, m_viewportHeight(0)
	, m_scrollBottom(0)
	, m_itemsDeleted(0)
	, m_verticalMouseMoveInProgress(0)
	, m_menuSeparatorHeight(0)
	, m_maskDisplayStatus(ShowNoMasks)
	, m_tabletTopMask(NULL)
	, m_tabletbottomMask(NULL)
	, m_tabletBackground(NULL)
	, m_tabletArrowUp(NULL)
	, m_tabletArrowDown(NULL)
	, m_menuSwipeBkg(NULL)
	, m_menuSwipeHighlight(NULL)
	, m_itemSeparator(NULL)
	, m_heightAnimation(this, &DashboardWindowContainer::heightAnimationValueChanged)
	, m_dashboardManualDrag(false)
{

	setObjectName("DashboardWindowContainer");
	m_isMenu = m_wm->isOverlay();

	grabGesture(Qt::TapGesture);
	grabGesture((Qt::GestureType) SysMgrGestureFlick);
		
	connect(&m_anim, SIGNAL(finished()), SLOT(slotProcessAnimationComplete()));
	connect(&m_deleteAnim, SIGNAL(finished()), SLOT(slotDeleteAnimationFinished()));

	// Initialize the pixmaps for use.
	initPixmaps();

	// Determine where to apply the padding depending on where we are running.
	if(m_isMenu) {
		m_FlickDirection = Ignore;
		m_maskDisplayStatus = ShowNoMasks;
		m_DashboardTopPadding = 0;
		m_operation = Invalid;
		m_BottomMaskHeightCorrection = 7;
		setAcceptTouchEvents(true);
	}
	else {
		m_BottomMaskHeightCorrection = 10;
		m_DashboardTopPadding = 10;
		SystemUiController* suc = SystemUiController::instance();

		connect(suc, SIGNAL(signalNegativeSpaceAboutToChange(const QRect&, bool, bool)),
				SLOT(slotNegativeSpaceAboutToChange(const QRect&, bool, bool)));
		connect(suc, SIGNAL(signalNegativeSpaceChanged(const QRect&)),
				SLOT(slotNegativeSpaceChanged(const QRect&)));
		connect(suc, SIGNAL(signalNegativeSpaceChangeFinished(const QRect&)),
				SLOT(slotNegativeSpaceChangeFinished(const QRect&)));
	}

	if(m_isMenu) {
		m_heightAnimation.setEasingCurve(AS_CURVE(dashboardSnapCurve));
		m_heightAnimation.setDuration(AS(dashboardSnapDuration));
		connect(&m_heightAnimation, SIGNAL(finished()), SIGNAL(signalContainerSizeChanged()));
	}
}