Beispiel #1
0
// --------------------------------------------------------------------------------------------------------
void KSelectionHandler::cut ()
{
    copy();
    std::vector<KSelectable*>::iterator iter = selected_selectables.begin();
    while (iter != selected_selectables.end())
    {
        (*iter)->setSelected(false); 
        iter++;
    } 
    iter = selected_selectables.begin();
    while (iter != selected_selectables.end())
    {
        if ((*iter)->isCutCopyPasteable())
        {
            KSelectable * removedItem = *iter;
            iter = selected_selectables.erase(iter);
            deletePickable(removedItem);
        }
        else
        {
            iter++;
        }
    }
    selected_selectables.clear();
    unpick();
}
Beispiel #2
0
bool PinchZoomGesture::processGestureImpl(GestureContext *gestureContext)
{
	QList<Path *> activePaths = gestureContext->getActiveTouchPaths();
	if(gestureContext->getNumActiveTouchPoints() != 2)
	{
		// Update all PostIt layouts since grow and shrink relies on animation call back to update layout.
		QVectorIterator<BumpObject*> it(_selectedObjects);
		while(it.hasNext())
		{
			StickyNoteActor * actor = dynamic_cast<StickyNoteActor *>(it.next());
			if (actor)
				actor->syncStickyNoteWithFileContents();
		}

		// The gesture is active as long as the one of the two initial fingers is still down
		if (activePaths.count() == 1)
		{
			if (activePaths.contains(_gestureTouchPaths[0]) || activePaths.contains(_gestureTouchPaths[1]))
			{
				_recalculateInitials = true;
				return true;
			}
		}
		// Stop translation of objects by dragging
		if (sel->getPickedActor())
			sel->getPickedActor()->onDragEnd();
		unpick();
		
		return false;
	}
	
	float newDistance = getDistanceInObjectPlane(activePaths[0]->getLastTouchPoint(), activePaths[1]->getLastTouchPoint(), _objectPlane);
	
	if (_recalculateInitials)
	{
		_recalculateInitials = false;
		_cumulativeScaleFactor *= _lastScaleFactor;
		_originalDistanceBetweenPoints = newDistance;
	}
		
	float scaleFactor = newDistance / _originalDistanceBetweenPoints;
	_lastScaleFactor = scaleFactor;
	scaleFactor *= _cumulativeScaleFactor;

	QVectorIterator<BumpObject*> it(_selectedObjects);
	while(it.hasNext())
	{
		BumpObject *obj = it.next();
		obj->scaleFromReferenceDims(scaleFactor);
		//don't reselect the objects within a pile
		if(!sel->isInSelection(obj))
			sel->add(obj);
	}
	
	// Add translation of object by simulating mouse events
	// OnMouseMove sets the primary touch x,y which are used to calculate the force to move objects
	winOS->OnMouseMove(_pathOfTranslationPoint->getLastTouchPoint().x, _pathOfTranslationPoint->getLastTouchPoint().y, MK_LBUTTON);
	return true;
}