From 1349c70beb7b4bbfb5cf07ce37195c5b35d27d08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Hor=C3=A1=C4=8Dek?= <horaceklubos@gmail.com> Date: Wed, 22 Apr 2015 18:35:43 +0200 Subject: [PATCH] #22 Stamp and signature dialog --- .../screen/createuser/FormScreen.java | 59 +++++++++++++++---- .../util/listener/DragActorListener.java | 57 +++++++++++++----- 2 files changed, 89 insertions(+), 27 deletions(-) diff --git a/core/src/cz/nic/tablexia/screen/createuser/FormScreen.java b/core/src/cz/nic/tablexia/screen/createuser/FormScreen.java index 664db791a..9d60786fb 100644 --- a/core/src/cz/nic/tablexia/screen/createuser/FormScreen.java +++ b/core/src/cz/nic/tablexia/screen/createuser/FormScreen.java @@ -8,6 +8,7 @@ import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputListener; +import com.badlogic.gdx.scenes.scene2d.ui.Dialog; import com.badlogic.gdx.scenes.scene2d.ui.HorizontalGroup; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Label; @@ -27,13 +28,15 @@ import cz.nic.tablexia.util.Log; import cz.nic.tablexia.util.ScaleUtil; import cz.nic.tablexia.util.listener.DragActorListener; import cz.nic.tablexia.util.listener.DragSwitchListener; +import cz.nic.tablexia.util.ui.dialog.TablexiaDialog; +import cz.nic.tablexia.util.ui.dialog.text.DialogTextContent; public class FormScreen extends AbstractAutoloadTablexiaScreen<Void> { public static final String BASET_ASSET_PATH = "screen/createuser/form"; private static final int MUGSHOT_HEIGHT = 250; - private Actor stamp, pen, mugshotFrame; - private Image mugshotImage; + private Actor pen, mugshotFrame, stamp; + private Image stampPlaceholder, mugshotImage; private Actor buttonPlus, buttonMinus; private Label ageLabel, nameLabel; private int age; @@ -61,7 +64,7 @@ public class FormScreen extends AbstractAutoloadTablexiaScreen<Void> { group.addActor(mugshotImage = ScaleUtil.createImageWidthPosition(getTexture("avatar/0"), getStage().getWidth() * 0.13f, getStage().getWidth() * 0.6f, getStage().getWidth() * 0.34f)); // size for all mugshots group.addActor(mugshotFrame = ScaleUtil.createImageWidthPosition(getTexture("mugshotframe"), getStage().getWidth() * 0.17f, getStage().getWidth() * 0.58f, getStage().getWidth() * 0.32f)); group.addActor(ScaleUtil.createImageWidthPosition(getTexture("textfield_covername"), getStage().getWidth() * 0.2f, getStage().getWidth() * 0.57f, getStage().getWidth() * 0.27f)); - group.addActor(ScaleUtil.createImageWidthPosition(getTexture("stampplaceholder"), getStage().getWidth() * 0.1f, getStage().getWidth() * 0.73f, getStage().getWidth() * 0.04f)); + group.addActor(stampPlaceholder = ScaleUtil.createImageWidthPosition(getTexture("stampplaceholder"), getStage().getWidth() * 0.1f, getStage().getWidth() * 0.73f, getStage().getWidth() * 0.04f)); group.addActor(ScaleUtil.createImageWidthPosition(getTexture("texfield_signature"), getStage().getWidth() * 0.15f, getStage().getWidth() * 0.55f, getStage().getWidth() * 0.07f)); // TODO pens and stamps variant mugshotFrame.addListener(new ClickListener() { @@ -90,8 +93,6 @@ public class FormScreen extends AbstractAutoloadTablexiaScreen<Void> { @Override public void clicked(InputEvent event, float x, float y) { Gdx.input.setOnscreenKeyboardVisible(true); - // TODO input listener for writing - getStage().setKeyboardFocus(nameLabel); } @@ -103,7 +104,6 @@ public class FormScreen extends AbstractAutoloadTablexiaScreen<Void> { group.addActor(gender); group.addActor(ScaleUtil.createImageWidthPosition(getTexture("sex_female"), getStage().getWidth() * 0.015f, getStage().getWidth() * 0.69f, getStage().getWidth() * 0.18f)); group.addActor(ScaleUtil.createImageWidthPosition(getTexture("sex_male"), getStage().getWidth() * 0.015f, getStage().getWidth() * 0.80f, getStage().getWidth() * 0.18f)); - // TODO age buttons actions group.addActor(buttonMinus = ScaleUtil.createImageWidthPosition(getTexture("button_minus"), getStage().getWidth() * 0.035f, getStage().getWidth() * 0.535f, getStage().getWidth() * 0.18f)); // size for all mugshots group.addActor(buttonPlus = ScaleUtil.createImageWidthPosition(getTexture("button_plus"), getStage().getWidth() * 0.035f, getStage().getWidth() * 0.615f, getStage().getWidth() * 0.18f)); // size for all mugshots buttonPlus.addListener(new ClickListener() { @@ -151,8 +151,23 @@ public class FormScreen extends AbstractAutoloadTablexiaScreen<Void> { // TODO pencil and stamp layers group.addActor(pen = ScaleUtil.createImageWidthPosition(getTexture("pencil_dropped"), getStage().getWidth() * 0.2f, getStage().getWidth() * 0.85f, getStage().getWidth() * -0.13f)); group.addActor(stamp = ScaleUtil.createImageWidthPosition(getTexture("stamp_left_dropped"), getStage().getWidth() * 0.2f, getStage().getWidth() * -0.01f, getStage().getWidth() * -0.05f)); - pen.addListener(new DragActorListener(pen, true)); - stamp.addListener(new DragActorListener(stamp, true)); + pen.addListener(new DragActorListener(pen, true, new DragActorListener.DragDropListener() { + @Override + public void dropped(float x, float y) { + if ((x > 526 && x < 700) && (y > -300 && y < -190)) { + showSubscribeDialog(); + } + } + })); + stamp.addListener(new DragActorListener(stamp, true, new DragActorListener.DragDropListener() { + @Override + public void dropped(float x, float y) { + if ((x > 636 && x < 775) && (y > -130 && y < 50)) { + Drawable d = new TextureRegionDrawable(new TextureRegion(getTexture("stamp"))); + stampPlaceholder.setDrawable(d); + } + } + })); getStage().addActor(group); } @@ -179,7 +194,7 @@ public class FormScreen extends AbstractAutoloadTablexiaScreen<Void> { HorizontalGroup hg = new HorizontalGroup(); for (int i = 0; i < TablexiaSettings.AVATAR_COUNT; i++) { final Actor avatar = prepareAvatarPicture(i + 1); - avatar.setName(String.valueOf(i+1)); + avatar.setName(String.valueOf(i + 1)); avatar.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { @@ -249,10 +264,28 @@ public class FormScreen extends AbstractAutoloadTablexiaScreen<Void> { ageLabel.setText(String.valueOf(this.age = age)); } - class StampStack extends Stack { - public StampStack(float width) { - // TODO position dependent images - } + + private void showSubscribeDialog() { + final Group signature = new Group(); + + // grey translucent overlay + Image overlay = new Image(getTexture("avatar/overlay")); + overlay.getColor().a = 0.5f; + signature.addActor(ScaleUtil.setFullScreen(overlay, getStage())); + overlay.addListener(new InputListener() { + @Override + public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { + event.stop(); + signature.remove(); + return false; + } + }); + // TODO show sign dialog + + + getStage().addActor(signature); + Dialog dialog = new TablexiaDialog(getStage().getWidth() * 0.1f, getStage().getWidth() * 0.1f - (getStage().getCamera().position.y - getStage().getHeight()/2)/2, getStage().getWidth() * 0.8f, getStage().getHeight() * 0.8f, TablexiaDialog.BackGroundType.DIALOG_RECTANGLE, new DialogTextContent("", "")).show(getStage()); } + } diff --git a/core/src/cz/nic/tablexia/util/listener/DragActorListener.java b/core/src/cz/nic/tablexia/util/listener/DragActorListener.java index 10bf902cd..ce5f515f6 100644 --- a/core/src/cz/nic/tablexia/util/listener/DragActorListener.java +++ b/core/src/cz/nic/tablexia/util/listener/DragActorListener.java @@ -6,6 +6,8 @@ import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputListener; import com.badlogic.gdx.scenes.scene2d.actions.Actions; +import cz.nic.tablexia.util.Log; + /** * Created by lhoracek on 4/10/15. */ @@ -13,6 +15,7 @@ public class DragActorListener extends InputListener { private float grabX, grabY, startX, startY; private final Actor actor; private boolean bounceBack; + private DragDropListener dragDropListener; public DragActorListener(Actor actor) { this.actor = actor; @@ -23,6 +26,15 @@ public class DragActorListener extends InputListener { this.bounceBack = bounceBack; } + public DragActorListener(Actor actor, boolean bounceBack, DragDropListener dragDropListener) { + this(actor,bounceBack); + this.dragDropListener = dragDropListener; + } + + public void setDragDropListener(DragDropListener dragDropListener) { + this.dragDropListener = dragDropListener; + } + // TODO add callback method private void moveBack() { actor.addAction(Actions.moveTo(startX, startY, 0.5f, Interpolation.elasticOut)); @@ -31,29 +43,46 @@ public class DragActorListener extends InputListener { @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { super.touchDown(event, x, y, pointer, button); - grabX = x; - grabY = y; - startX = actor.getX(); - startY = actor.getY(); - event.stop(); - return true; + if (pointer == 0 && button == 0) { + grabX = x; + grabY = y; + startX = actor.getX(); + startY = actor.getY(); + event.stop(); + return true; + } + return false; } @Override public void touchDragged(InputEvent event, float x, float y, int pointer) { super.touchDragged(event, x, y, pointer); - float bx = actor.getX() + (x - grabX); - float by = actor.getY() + (y - grabY); - actor.setPosition(bx, by); - event.stop(); + if (pointer == 0) { + float bx = actor.getX() + (x - grabX); + float by = actor.getY() + (y - grabY); + actor.setPosition(bx, by); + if (actor.getDebug()) { + Log.info(((Object) this).getClass().getName(), "Position " + bx + "x" + by); + } + event.stop(); + } } @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { - super.touchUp(event, x, y, pointer, button); - if(bounceBack){ - moveBack(); + if (pointer == 0 && button == 0) { + super.touchUp(event, x, y, pointer, button); + if (bounceBack) { + moveBack(); + } + if(dragDropListener != null){ + dragDropListener.dropped(actor.getX(),actor.getY()); + } + event.stop(); } - event.stop(); + } + + public static interface DragDropListener { + public void dropped(float x, float y); } } -- GitLab