Ejemplo n.º 1
0
void TreeInspector::addTreeItem(ds::ui::Sprite* sprid, const int indent){
	if(!mLayout) return;

	TreeItem* treeItem = new TreeItem(mGlobals, sprid);
	treeItem->mLayoutFudge.x = (float)(indent)* 15.0f;
	mLayout->addChildPtr(treeItem);
	mTreeItems.push_back(treeItem);

	mEngine.addToDragDestinationList(treeItem);

	treeItem->setDragDestinationCallback([this, treeItem](ds::ui::Sprite* sp, const ds::ui::DragDestinationInfo& di){
		if(di.mPhase == ds::ui::DragDestinationInfo::Entered){
			sp->setColor(ci::Color(0.6f, 0.2f, 0.2f));
		} else if(di.mPhase == ds::ui::DragDestinationInfo::Exited){
			sp->setColor(ci::Color(0.1f, 0.1f, 0.1f));
		}
		if(di.mPhase == ds::ui::DragDestinationInfo::Released){
			TreeItem* ti = dynamic_cast<TreeItem*>(di.mSprite);
			TreeItem* dest = dynamic_cast<TreeItem*>(sp);

			if(ti){
				ti->setColor(ci::Color(0.1f, 0.1f, 0.1f));
			}
			if(dest){
				dest->setColor(ci::Color(0.1f, 0.1f, 0.1f));
			}

			if(treeItem == dest) return;

			if(ti && dest){
				if(ti == dest) return;
				if(dest->getLinkedSprite() == ti->getLinkedSprite()){
					return;
				}

				// If the drag destination is already the parent of this sprite, then just move it to the end
				if(dest->getLinkedSprite() == ti->getLinkedSprite()->getParent()){
					ti->getLinkedSprite()->sendToFront();
				} else {
					dest->getLinkedSprite()->addChildPtr(ti->getLinkedSprite());
				}				

				callAfterDelay([this]{
					inspectTree(mTreeRoot);
					mEngine.getNotifier().notify(LayoutLayoutRequest());
				}, 0.01f);
			}
		}
	});

	treeItem->setProcessTouchCallback([this](ds::ui::Sprite* sp, const ds::ui::TouchInfo& ti){
		if(ti.mPhase == ds::ui::TouchInfo::Removed && ti.mNumberFingers == 0){
			callAfterDelay([this]{
				layout();
			}, 0.05f);
		}
	});

}
Ejemplo n.º 2
0
void MediaSlideshow::setMediaSlideshow(const std::vector<ds::Resource>& resources){
	clearSlideshow();

	mCurItemIndex = 0;

	for(auto it = resources.begin(); it < resources.end(); ++it){
		MediaViewer* mv = new MediaViewer(mEngine, (*it));
		mv->setSettings(mMediaViewerSettings); 
		mv->setDefaultBounds(getWidth(), getHeight());
		mv->setDefaultSize(ci::Vec2f(getWidth(), getHeight()));
		mHolder->addChildPtr(mv);
		mv->setSwipeCallback([this](ds::ui::Sprite* spr, const ci::Vec3f& amount){
			// don't advance if we're zoomed in
			if(spr->getWidth() <= getWidth()){
				if(amount.x > 20.0f){
					gotoPrev(false);
				} else if(amount.x < -20.0f){
					gotoNext(false);
				}
			}
		});
		mv->setAnimateDuration(mAnimateDuration);
		mv->setDoubleTapCallback([this, mv](ds::ui::Sprite* bs, const ci::Vec3f& pos){
			callAfterDelay([this]{recenterSlides(); }, 0.01f);
		});
		mViewers.push_back(mv);
	}

	loadCurrentAndAdjacent();
	layout();
	recenterSlides();
}
Ejemplo n.º 3
0
TreeItem::TreeItem(Globals& g, ds::ui::Sprite* linkedItem)
	: ds::ui::Sprite(g.mEngine)
	, mGlobals(g)
	, mLinkedSprite(linkedItem)
	, mNameText(nullptr)
	, mLabelTextTwo(nullptr)
{
	
	ds::ui::ImageButton* deleteButton = new ds::ui::ImageButton(mEngine, "%APP%/data/images/ui/close_button.png", "%APP%/data/images/ui/close_button.png", 10.0f);
	deleteButton->setScale(0.25f, 0.25f);
	deleteButton->getHighImage().setColor(ci::Color(0.7f, 0.2f, 0.2f));
	addChildPtr(deleteButton);
	deleteButton->setClickFn([this]{
		callAfterDelay([this]{
			mEngine.getNotifier().notify(DeleteSpriteRequest(mLinkedSprite));
		}, 0.01f);
	});


	float paddin = 10.0f;
	mLayoutLPad = paddin / 2.0f;
	mLayoutRPad = paddin/2.0f;
	float theWiddy = 0.0f;
	float theHiddy = 0.0f;
	mNameText = mGlobals.getText("tree:item").create(mEngine, this);
	mNameText->setText(mLinkedSprite->getSpriteName());
	mNameText->setPosition(deleteButton->getScaleWidth(), paddin / 2.0f);
	theWiddy += mNameText->getWidth() + paddin / 2.0f + deleteButton->getScaleWidth();
	theHiddy = mNameText->getFontSize() + paddin;
	

	mLabelTextTwo = mGlobals.getText("tree:item_two").create(mEngine, this);
	mLabelTextTwo->setText(ds::ui::XmlImporter::getSpriteTypeForSprite(mLinkedSprite));
	mLabelTextTwo->setPosition(theWiddy, paddin / 2.0f);
	theWiddy += mLabelTextTwo->getWidth() + paddin / 2.0f;
	if(mLabelTextTwo->getFontSize() + paddin > theHiddy){
		theHiddy = mLabelTextTwo->getFontSize() + paddin;
	}

	setTransparent(false);
	setColor(ci::Color(0.1f, 0.1f, 0.1f));
	setSize(theWiddy, theHiddy);
	enable(true);
	enableMultiTouch(ds::ui::MULTITOUCH_CAN_POSITION);
	setTapCallback([this](ds::ui::Sprite* bs, const ci::Vec3f& pos){
		if(mLinkedSprite){
			mEngine.getNotifier().notify(InspectSpriteRequest(mLinkedSprite));
		} 
	});
}