package com.iambookmaster.client.iphone; import com.google.gwt.dom.client.Document; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.ui.Frame; import com.google.gwt.user.client.ui.Label; import com.iambookmaster.client.beans.Paragraph; import com.iambookmaster.client.common.Base64Coder; import com.iambookmaster.client.iphone.common.IPhoneButton; import com.iambookmaster.client.iphone.data.IPhoneDataService; import com.iambookmaster.client.iphone.images.IPhoneImages; import com.iambookmaster.client.iphone.images.IPhoneStyles; import com.iambookmaster.client.locale.AppConstants; import com.iambookmaster.client.locale.AppLocale; import com.iambookmaster.client.locale.AppMessages; import com.iambookmaster.client.model.Model; import com.iambookmaster.client.player.Feedback; public class IPhoneFeedbackPanel implements Feedback { private static final AppConstants appConstants = AppLocale.getAppConstants(); private static final AppMessages appMessages = AppLocale.getAppMessages(); private static final IPhoneStyles css = IPhoneImages.INSTANCE.css(); private static final String KEY_QUESTION = "question"; protected static final String KEY_FEEDBACK = "feedback"; protected static final String KEY_FIND_OTHERS = "others"; protected static final String KEY_MAKE_OWN = "own"; protected static final String KEY_BUY = "buy"; protected static final String KEY_PAPER = "paper"; private Model model; private IPhoneFeedbackPanelListener owner; private IPhoneCanvas canvas; private IPhoneViewListenerAdapter listener; private Paragraph paragraph; private ClickHandler goToFeedback; private ClickHandler viewOthers; private ClickHandler back; // private ClickHandler createOwnGame; // private ClickHandler goToQuestion; private ClickHandler buyFullVersion; private ClickHandler donateHandler; private ClickHandler buyPapperBook; private IPhoneDataService ds; public static void goToFullVersion(Model model,String state) { sendSignal(IPhoneDataService.generateCommandURL("full", state)); } private static void sendSignal(String url) { Frame frame = new Frame(); frame.setVisible(false); Document.get().getBody().appendChild(frame.getElement()); frame.setUrl(url); } public static void buyFullVersion(Model model) { model.getContentPlayer().openURL(createURL(KEY_BUY,model)); } private static String createURL(String key,Model model) { // "http://www.iambookmaster.com/feedback?lang" // StringBuilder builder = new StringBuilder(Base64Coder.decodeString("aHR0cDovL3d3dy5pYW1ib29rbWFzdGVyLmNvbS9mZWVkYmFjaz9sYW5nPQ==")); StringBuilder builder = new StringBuilder("http://localhost:8080/iambookmaster/feedback?lang"); builder.append(appConstants.locale()); builder.append("&book=").append(model.getGameKey()==null ? model.getGameId() : model.getGameKey()); builder.append("&key=").append(key); return builder.toString(); } public IPhoneFeedbackPanel(Model md,IPhoneDataService dataService) { this.model = md; this.ds = dataService; goToFeedback = new ClickHandler() { public void onClick(ClickEvent event) { model.getContentPlayer().openURL(createURL(KEY_FEEDBACK,model)); } }; viewOthers = new ClickHandler() { public void onClick(ClickEvent event) { model.getContentPlayer().openURL(createURL(KEY_FIND_OTHERS,model)); } }; back = new ClickHandler() { public void onClick(ClickEvent event) { owner.close(); } }; // createOwnGame = new ClickHandler() { // public void onClick(ClickEvent event) { // model.getContentPlayer().openURL(createURL(KEY_MAKE_OWN,model)); // } // }; // goToQuestion = new ClickHandler() { // public void onClick(ClickEvent event) { // model.getContentPlayer().openURL(createURL(KEY_QUESTION,model)); // } // }; buyPapperBook = new ClickHandler() { public void onClick(ClickEvent event) { model.getContentPlayer().openURL(createURL(KEY_PAPER,model)); } }; buyFullVersion = new ClickHandler() { public void onClick(ClickEvent event) { model.getContentPlayer().openURL(createURL(KEY_BUY,model)); } }; donateHandler = new ClickHandler() { public void onClick(ClickEvent event) { IPhoneThankyouPanel panel = new IPhoneThankyouPanel(model,ds); panel.show(new IPhoneThankyouPanelListener() { public void close() { canvas.setListener(listener); draw(canvas, true, true); } }, canvas, false); } }; listener = new IPhoneViewListenerAdapter(){ @Override public void back() { owner.close(); } @Override public void redraw(IPhoneCanvas viewer) { draw(viewer,false,false); } @Override public void forward() { } }; } private void draw(IPhoneCanvas canvas,boolean animate,boolean leftToRight) { if (animate) { canvas.clearWithAnimation(leftToRight); } else { canvas.clear(); } Label label; label = new Label(model.getSettings().getBookTitle()); label.setStyleName(css.bookName()); canvas.add(label); label = new Label(model.getSettings().getBookAuthors()); label.setStyleName(css.bookAuthors()); canvas.add(label); label = new Label(appConstants.iphoneFeedbackInstructions()); label.setStyleName(css.feedbackInstructions()); canvas.add(label); if (model.getSettings().isDemoVersion() && !ds.isLinkedVersionPresent()) { addButton(canvas,appConstants.iphoneBuyFullVersion(),buyFullVersion); } addButton(canvas,appConstants.iphoneFeedbackGo(),goToFeedback); // addButton(canvas,appConstants.iphoneQuestionGo(),goToQuestion); addButton(canvas,appConstants.iphoneViewOthers(),viewOthers); // addButton(canvas,appConstants.iphoneCreateOwnGame(),createOwnGame); label = new Label(appConstants.iphoneBuyPaperBookText()); label.setStyleName(css.feedbackDescription()); canvas.add(label); addButton(canvas,appConstants.iphoneBuyPaperBook(),buyPapperBook); if (ds.isInAppAvailable()) { label = new Label(appConstants.iphoneDonationText()); label.setStyleName(css.feedbackDescription()); canvas.add(label); addButton(canvas,appConstants.iphoneDonation(),donateHandler); } addButton(canvas,appConstants.iphoneBack(),back); canvas.done(); } private void addButton(IPhoneCanvas canvas, String title, ClickHandler handler) { IPhoneButton button = new IPhoneButton(title,handler); canvas.add(button); canvas.addClickHandler(button, handler); if (canvas.isVertical()) { button.setWidth(IPhoneViewerOldBook.toPixels(canvas.getClientWidth()-30)); } } // private void applyLableStyle(Label label) { // if (canvas.isVertical()==false) { // label.getElement().getStyle().setDisplay(Display.INLINE_BLOCK); // } // } public void show(IPhoneFeedbackPanelListener owner, IPhoneCanvas canvas,boolean leftToRight) { this.owner = owner; this.canvas = canvas; canvas.setListener(listener); draw(canvas,true,leftToRight); } }