2012-08-15 14:33:56 +08:00
|
|
|
/****************************************************************************
|
|
|
|
Copyright (c) 2010-2012 cocos2d-x.org
|
|
|
|
Copyright (c) 2012 James Chen
|
|
|
|
|
|
|
|
http://www.cocos2d-x.org
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
|
|
in the Software without restriction, including without limitation the rights
|
|
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
|
|
all copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
|
|
THE SOFTWARE.
|
|
|
|
****************************************************************************/
|
|
|
|
|
|
|
|
#ifndef __CCEDITTEXT_H__
|
|
|
|
#define __CCEDITTEXT_H__
|
|
|
|
|
|
|
|
#include "cocos2d.h"
|
|
|
|
#include "ExtensionMacros.h"
|
|
|
|
#include "../CCControlExtension/CCControlExtensions.h"
|
|
|
|
|
|
|
|
NS_CC_EXT_BEGIN
|
|
|
|
|
|
|
|
|
|
|
|
enum KeyboardReturnType {
|
|
|
|
kKeyboardReturnTypeDefault = 0,
|
|
|
|
kKeyboardReturnTypeDone,
|
|
|
|
kKeyboardReturnTypeSend,
|
|
|
|
kKeyboardReturnTypeSearch,
|
|
|
|
kKeyboardReturnTypeGo
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief The EditBoxInputMode defines the type of text that the user is allowed
|
|
|
|
* to enter.
|
|
|
|
*/
|
|
|
|
enum EditBoxInputMode
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* The user is allowed to enter any text, including line breaks.
|
|
|
|
*/
|
|
|
|
kEditBoxInputModeAny = 0,
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The user is allowed to enter an e-mail address.
|
|
|
|
*/
|
|
|
|
kEditBoxInputModeEmailAddr,
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The user is allowed to enter an integer value.
|
|
|
|
*/
|
|
|
|
kEditBoxInputModeNumeric,
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The user is allowed to enter a phone number.
|
|
|
|
*/
|
|
|
|
kEditBoxInputModePhoneNumber,
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The user is allowed to enter a URL.
|
|
|
|
*/
|
|
|
|
kEditBoxInputModeUrl,
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The user is allowed to enter a real number value.
|
|
|
|
* This extends kEditBoxInputModeNumeric by allowing a decimal point.
|
|
|
|
*/
|
|
|
|
kEditBoxInputModeDecimal,
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The user is allowed to enter any text, except for line breaks.
|
|
|
|
*/
|
|
|
|
kEditBoxInputModeSingleLine
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief The EditBoxInputFlag defines how the input text is displayed/formatted.
|
|
|
|
*/
|
|
|
|
enum EditBoxInputFlag
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Indicates that the text entered is confidential data that should be
|
|
|
|
* obscured whenever possible. This implies EDIT_BOX_INPUT_FLAG_SENSITIVE.
|
|
|
|
*/
|
|
|
|
kEditBoxInputFlagPassword = 0,
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Indicates that the text entered is sensitive data that the
|
|
|
|
* implementation must never store into a dictionary or table for use
|
|
|
|
* in predictive, auto-completing, or other accelerated input schemes.
|
|
|
|
* A credit card number is an example of sensitive data.
|
|
|
|
*/
|
|
|
|
kEditBoxInputFlagSensitive,
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This flag is a hint to the implementation that during text editing,
|
|
|
|
* the initial letter of each word should be capitalized.
|
|
|
|
*/
|
|
|
|
kEditBoxInputFlagInitialCapsWord,
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This flag is a hint to the implementation that during text editing,
|
|
|
|
* the initial letter of each sentence should be capitalized.
|
|
|
|
*/
|
|
|
|
kEditBoxInputFlagInitialCapsSentence,
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Capitalize all characters automatically.
|
|
|
|
*/
|
|
|
|
kEditBoxInputFlagInitialCapsAllCharacters
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class CCEditBox;
|
|
|
|
class CCEditBoxImpl;
|
|
|
|
|
|
|
|
|
|
|
|
class CCEditBoxDelegate
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual ~CCEditBoxDelegate() {};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method is called when an edit box gains focus after keyboard is shown.
|
|
|
|
* @param editBox The edit box object that generated the event.
|
|
|
|
*/
|
|
|
|
virtual void editBoxEditingDidBegin(CCEditBox* editBox) {};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method is called when an edit box loses focus after keyboard is hidden.
|
|
|
|
* @param editBox The edit box object that generated the event.
|
|
|
|
*/
|
|
|
|
virtual void editBoxEditingDidEnd(CCEditBox* editBox) {};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method is called when the edit box text was changed.
|
|
|
|
* @param editBox The edit box object that generated the event.
|
|
|
|
* @param text The new text.
|
|
|
|
*/
|
2012-08-17 14:29:07 +08:00
|
|
|
virtual void editBoxTextChanged(CCEditBox* editBox, const std::string& text) {};
|
2012-08-15 14:33:56 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* This method is called when the return button was pressed or the outside area of keyboard was touched.
|
|
|
|
* @param editBox The edit box object that generated the event.
|
|
|
|
*/
|
|
|
|
virtual void editBoxReturn(CCEditBox* editBox) = 0;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Class for edit box.
|
|
|
|
*
|
|
|
|
* You can use this widget to gather small amounts of text from the user.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
class CCEditBox
|
|
|
|
: public CCControlButton
|
|
|
|
, public CCIMEDelegate
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* Constructor.
|
|
|
|
*/
|
|
|
|
CCEditBox(void);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Destructor.
|
|
|
|
*/
|
|
|
|
virtual ~CCEditBox(void);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* create a edit box with size.
|
|
|
|
* @return An autorelease pointer of CCEditBox, you don't need to release it only if you retain it again.
|
|
|
|
*/
|
2012-08-17 14:29:07 +08:00
|
|
|
static CCEditBox* create(const CCSize& size, CCScale9Sprite* pNormal9SpriteBg, CCScale9Sprite* pPressed9SpriteBg = NULL, CCScale9Sprite* pDisabled9SpriteBg = NULL);
|
2012-08-15 14:33:56 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Init edit box with specified size. This method should be invoked right after constructor.
|
|
|
|
* @param size The size of edit box.
|
|
|
|
*/
|
2012-08-17 14:29:07 +08:00
|
|
|
bool initWithSizeAndBackgroundSprite(const CCSize& size, CCScale9Sprite* pNormal9SpriteBg);
|
2012-08-15 14:33:56 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the delegate for edit box.
|
|
|
|
*/
|
|
|
|
void setDelegate(CCEditBoxDelegate* pDelegate);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the text entered in the edit box.
|
|
|
|
* @param pText The given text.
|
|
|
|
*/
|
|
|
|
void setText(const char* pText);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the text entered in the edit box.
|
|
|
|
* @return The text entered in the edit box.
|
|
|
|
*/
|
|
|
|
const char* getText(void);
|
2013-02-20 21:41:08 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the font.
|
|
|
|
* @param pFontName The font name.
|
|
|
|
* @param fontSize The font size.
|
|
|
|
*/
|
|
|
|
void setFont(const char* pFontName, int fontSize);
|
2012-08-15 14:33:56 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the font color of the widget's text.
|
|
|
|
*/
|
|
|
|
void setFontColor(const ccColor3B& color);
|
|
|
|
|
2013-02-25 14:05:38 +08:00
|
|
|
/**
|
|
|
|
* Set the placeholder's font.
|
|
|
|
* @param pFontName The font name.
|
|
|
|
* @param fontSize The font size.
|
|
|
|
*/
|
|
|
|
void setPlaceholderFont(const char* pFontName, int fontSize);
|
|
|
|
|
2012-08-15 14:33:56 +08:00
|
|
|
/**
|
|
|
|
* Set the font color of the placeholder text when the edit box is empty.
|
2012-08-17 15:24:33 +08:00
|
|
|
* Not supported on IOS.
|
2012-08-15 14:33:56 +08:00
|
|
|
*/
|
|
|
|
void setPlaceholderFontColor(const ccColor3B& color);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set a text in the edit box that acts as a placeholder when an
|
|
|
|
* edit box is empty.
|
|
|
|
* @param pText The given text.
|
|
|
|
*/
|
|
|
|
void setPlaceHolder(const char* pText);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get a text in the edit box that acts as a placeholder when an
|
|
|
|
* edit box is empty.
|
|
|
|
*/
|
|
|
|
const char* getPlaceHolder(void);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the input mode of the edit box.
|
|
|
|
* @param inputMode One of the EditBoxInputMode constants.
|
|
|
|
*/
|
|
|
|
void setInputMode(EditBoxInputMode inputMode);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the maximum input length of the edit box.
|
|
|
|
* Setting this value enables multiline input mode by default.
|
|
|
|
* Available on Android, iOS and Windows Phone.
|
|
|
|
*
|
|
|
|
* @param maxLength The maximum length.
|
|
|
|
*/
|
|
|
|
void setMaxLength(int maxLength);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the maximum input length of the edit box.
|
|
|
|
*
|
|
|
|
* @return Maximum input length.
|
|
|
|
*/
|
|
|
|
int getMaxLength();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the input flags that are to be applied to the edit box.
|
|
|
|
* @param inputFlag One of the EditBoxInputFlag constants.
|
|
|
|
*/
|
|
|
|
void setInputFlag(EditBoxInputFlag inputFlag);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the return type that are to be applied to the edit box.
|
|
|
|
* @param returnType One of the CCKeyboardReturnType constants.
|
|
|
|
*/
|
|
|
|
void setReturnType(KeyboardReturnType returnType);
|
|
|
|
|
|
|
|
/* override functions */
|
|
|
|
virtual void setPosition(const CCPoint& pos);
|
2013-03-03 18:58:51 +08:00
|
|
|
virtual void setVisible(bool visible);
|
2012-08-15 14:33:56 +08:00
|
|
|
virtual void setContentSize(const CCSize& size);
|
2013-02-20 21:41:08 +08:00
|
|
|
virtual void setAnchorPoint(const CCPoint& anchorPoint);
|
2012-08-15 14:33:56 +08:00
|
|
|
virtual void visit(void);
|
|
|
|
virtual void onExit(void);
|
|
|
|
virtual void keyboardWillShow(CCIMEKeyboardNotificationInfo& info);
|
|
|
|
virtual void keyboardDidShow(CCIMEKeyboardNotificationInfo& info);
|
|
|
|
virtual void keyboardWillHide(CCIMEKeyboardNotificationInfo& info);
|
|
|
|
virtual void keyboardDidHide(CCIMEKeyboardNotificationInfo& info);
|
|
|
|
|
|
|
|
/* callback funtions */
|
|
|
|
void touchDownAction(CCObject *sender, CCControlEvent controlEvent);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
CCEditBoxImpl* m_pEditBoxImpl;
|
|
|
|
CCEditBoxDelegate* m_pDelegate;
|
|
|
|
|
|
|
|
EditBoxInputMode m_eEditBoxInputMode;
|
|
|
|
EditBoxInputFlag m_eEditBoxInputFlag;
|
|
|
|
KeyboardReturnType m_eKeyboardReturnType;
|
|
|
|
|
|
|
|
std::string m_strText;
|
|
|
|
std::string m_strPlaceHolder;
|
|
|
|
|
|
|
|
ccColor3B m_colText;
|
|
|
|
ccColor3B m_colPlaceHolder;
|
|
|
|
|
|
|
|
int m_nMaxLength;
|
|
|
|
float m_fAdjustHeight;
|
|
|
|
};
|
|
|
|
|
|
|
|
NS_CC_EXT_END
|
|
|
|
|
|
|
|
#endif /* __CCEDITTEXT_H__ */
|
|
|
|
|