Пример #1
0
	void deleteBackward()
	{
		CC_RETURN_IF(m_iCurPos == 0 || m_szText.empty());

		if (m_curSelCharRange.first != m_curSelCharRange.second)
		{
			if (!textValueChanged(m_curSelCharRange.first, m_curSelCharRange.second - m_curSelCharRange.first, ""))
				return;

			CC_RETURN_IF(execCurSelCharRange());
		}
		else
		{
			int nDeleteLen = 1;
			while (0x80 == (0xC0 & m_szText.at(m_iCurPos - nDeleteLen)))
			{
				++nDeleteLen;
			}

			if (!textValueChanged(m_iCurPos, nDeleteLen, ""))
				return;

			m_iCurPos = MAX(m_iCurPos, nDeleteLen);
			m_szText.erase(m_iCurPos - nDeleteLen, nDeleteLen);
			m_iCurPos -= nDeleteLen;

			updateImage();
		}
	}
Пример #2
0
void CATextView::deleteBackward()
{
    CC_RETURN_IF(m_iCurPos == 0 || m_szText.empty());

	std::string cszDelStr;
	if (m_curSelCharRange.first != m_curSelCharRange.second)
	{
		cszDelStr = m_szText.substr(m_curSelCharRange.first, m_curSelCharRange.second - m_curSelCharRange.first);
	}
	else
	{
		int nDeleteLen = 1;
		while (1)
		{
			CC_BREAK_IF(m_iCurPos - nDeleteLen < 0);
			CC_BREAK_IF(0x80 != (0xC0 & m_szText.at(m_iCurPos - nDeleteLen)));
			++nDeleteLen;
		}
		cszDelStr = m_szText.substr(m_iCurPos - nDeleteLen, nDeleteLen);
	}

	CC_RETURN_IF(m_pTextViewDelegate && m_pTextViewDelegate->onTextViewDeleteBackward(this, cszDelStr.c_str(), (int)cszDelStr.length()));
    CC_RETURN_IF(execCurSelCharRange());
	
	int nDeleteLen = (int)cszDelStr.size();
    m_iCurPos = MAX(m_iCurPos, nDeleteLen);
	m_szText.erase(m_iCurPos - nDeleteLen, nDeleteLen);
	m_iCurPos -= nDeleteLen;
    
	updateImage();
	m_pTextArrView->hideTextArrView();
}
Пример #3
0
	void insertText(const char * text, int len)
	{
		if (!strcmp(text, "\n"))
		{
			if (m_pCATextView->getReturnType() != CrossApp::CATextView::Default)
			{
				m_pCATextView->resignFirstResponder();
				if (m_pCATextView->getDelegate())
				{
					m_pCATextView->getDelegate()->textViewShouldReturn(m_pCATextView);
				}
				return;
			}
		}

		std::string cszAddText;
		cszAddText.append(text, len);
		if (m_curSelCharRange.first != m_curSelCharRange.second)
		{
			if (!textValueChanged(m_curSelCharRange.first, m_curSelCharRange.second - m_curSelCharRange.first, cszAddText))
				return;
		}
		else
		{
			if (!textValueChanged(m_iCurPos, 0, cszAddText))
				return;
		}

		execCurSelCharRange();
		m_szText.insert(m_iCurPos, text, len);
		m_iCurPos += len;
		m_curSelCharRange = std::make_pair(m_iCurPos, m_iCurPos);
		updateImage();
	}
Пример #4
0
void CATextView::willInsertText(const char* text, int len)
{
	execCurSelCharRange();
	int iOldCurPos = m_iCurPos;
	insertText(text, len);
	m_curSelCharRange = std::make_pair(iOldCurPos, m_iCurPos);
	m_pTextSelView->showTextViewMark(getZZCRect());
}
Пример #5
0
void CATextField::keyboardWillHide(CCIMEKeyboardNotificationInfo& info)
{
    m_curSelCharRange = std::make_pair(m_iCurPos, m_iCurPos);
    execCurSelCharRange();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    this->resignFirstResponder();
    this->hideCursorMark();
#endif
 
}
Пример #6
0
void CATextView::insertText(const char * text, int len)
{
    CC_RETURN_IF(len <= 0);
    CC_RETURN_IF(text == 0);
    
	execCurSelCharRange();
	m_szText.insert(m_iCurPos, text, len);
 	m_iCurPos += len;
	m_curSelCharRange = std::make_pair(m_iCurPos, m_iCurPos);
	updateImage();
}
Пример #7
0
void CATextView::insertText(const char * text, int len)
{
    CCLog("insertText: %s, %d", text, len);
    if (len<=0)return;
	execCurSelCharRange();
	m_szText.insert(m_iCurPos, text, len);
 	m_iCurPos += len;
	m_curSelCharRange = std::make_pair(m_iCurPos, m_iCurPos);
	updateImage();
	m_pTextArrView->hideTextArrView();
}
Пример #8
0
void CATextField::willInsertText(const char *text, int len)
{
	execCurSelCharRange();

	int iOldCurPos = m_iCurPos;
	insertText(text, len);
	m_curSelCharRange = std::make_pair(iOldCurPos, m_iCurPos);

	m_pTextViewMark->setFrame(getZZCRect());
	m_pTextViewMark->setVisible(true);
}
Пример #9
0
void CATextField::willInsertText(const char *text, int len)
{
	if (m_nInputType == KEY_BOARD_INPUT_PASSWORD)
		return;

	execCurSelCharRange();

	int iOldCurPos = m_iCurPos;
	insertText(text, len);
	m_curSelCharRange = std::make_pair(iOldCurPos, m_iCurPos);

	m_pTextViewMark->setFrame(getZZCRect());
	m_pTextViewMark->setVisible(true);
}
Пример #10
0
void CATextField::deleteBackward()
{
	CC_RETURN_IF(m_iCurPos == 0 || m_sText.empty());
    if (m_nInputType==KEY_BOARD_INPUT_PASSWORD)
    {
		CC_RETURN_IF(m_pDelegate && m_pDelegate->onTextFieldDeleteBackward(this, m_sText.c_str(), (int)m_sText.length(), m_iCurPos - (int)m_sText.length()));
        CC_RETURN_IF(m_pDelegate && m_pDelegate->onTextFieldDeleteBackward(this, m_sText.c_str(), (int)m_sText.length()));
        m_sText.clear();
		m_vTextFiledChars.clear();
		this->updateImage();
		m_iString_l_length = 0;
		m_iString_r_length = 0;
		m_iString_o_length = 0;
		m_iCurPos = 0;
		m_curSelCharRange = std::make_pair(0, 0);
        setCursorPosition();
        return;
    }

	std::string cszDelStr;
	if (m_curSelCharRange.first != m_curSelCharRange.second)
	{
		cszDelStr = m_sText.substr(m_curSelCharRange.first, m_curSelCharRange.second - m_curSelCharRange.first);
	}
	else
	{
		int nDeleteLen = 1;
		while (0x80 == (0xC0 & m_sText.at(m_iCurPos - nDeleteLen)))
		{
			++nDeleteLen;
		}
		cszDelStr = m_sText.substr(m_iCurPos - nDeleteLen, nDeleteLen);
	}
	CC_RETURN_IF(m_pDelegate && m_pDelegate->onTextFieldDeleteBackward(this, cszDelStr.c_str(), (int)cszDelStr.length(), m_iCurPos - (int)cszDelStr.length()));
	CC_RETURN_IF(m_pDelegate && m_pDelegate->onTextFieldDeleteBackward(this, cszDelStr.c_str(), (int)cszDelStr.length()));
	CC_RETURN_IF(execCurSelCharRange());

	int nDeleteLen = (int)cszDelStr.size();
    m_sText.erase(m_iCurPos - nDeleteLen, nDeleteLen);
    m_iCurPos -= nDeleteLen;
	m_curSelCharRange = std::make_pair(m_iCurPos, m_iCurPos);
	m_vTextFiledChars.erase(m_vTextFiledChars.begin() + getStringCharCount(m_sText.substr(0, m_iCurPos)));
	
	adjustCursorMove(false);
    CCLog("··· deleteBackward text:%s", m_sText.c_str());
}
Пример #11
0
void CATextField::insertText(const char * text, int len)
{
    CC_RETURN_IF(len <= 0);
    CC_RETURN_IF(text == 0);
    CC_RETURN_IF(m_pDelegate && m_pDelegate->onTextFieldInsertText(this, text, len, m_iCurPos));
	CC_RETURN_IF(m_pDelegate && m_pDelegate->onTextFieldInsertText(this, text, len));
    
    if (!strcmp(text, "\n"))
    {
        getKeyBoradReturnCallBack();
        return;
    }
	
	execCurSelCharRange();
    analyzeString(text, len);
	adjustCursorMove(true);
}
Пример #12
0
void CATextField::ccTouchEnded(CATouch *pTouch, CAEvent *pEvent)
{
    CCPoint point = this->convertTouchToNodeSpace(pTouch);
    
    if (this->getBounds().containsPoint(point))
    {
		becomeFirstResponder();
		if (isFirstResponder())
        {
            this->showCursorMark();
            if (m_nInputType == KEY_BOARD_INPUT_PASSWORD)
            {
                if (!m_sText.empty())
                {
                    m_iCurPos =(int)m_vTextFiledChars.size();
                    m_iString_l_length = m_cImageSize.width;
                }
                m_pCursorMark->setCenterOrigin(CCPoint(getCursorX() + m_iHoriMargins, m_obContentSize.height / 2));

                return;
            }
			calculateSelChars(point, m_iString_l_length, m_iString_r_length, m_iCurPos);
           
			m_pCursorMark->setCenterOrigin(CCPoint(getCursorX() + m_iHoriMargins, m_obContentSize.height / 2));
        }

#if CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID
        CCEGLView * pGlView = CAApplication::getApplication()->getOpenGLView();
		pGlView->setIMECursorPos(getCursorPos(), getContentText());
#endif

    }
    else
    {
        hideCursorMark();
        
        if (resignFirstResponder())
        {
			this->updateImage();
        }
    }

	m_curSelCharRange = std::make_pair(m_iCurPos, m_iCurPos);
	execCurSelCharRange();
}
Пример #13
0
void CATextField::insertText(const char * text, int len)
{
    CC_RETURN_IF(len <= 0);
    CC_RETURN_IF(text == 0);
    
    if (!strcmp(text, "\n")) {
        getKeyBoradReturnCallBack();
        return;
    }
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    CC_RETURN_IF(m_nInputType == KEY_BOARD_INPUT_PASSWORD && len >= 2);
#endif
    
	execCurSelCharRange();
    analyzeString(text, len);
    CC_RETURN_IF(m_pDelegate && m_pDelegate->onTextFieldInsertText(this, m_sText.c_str(), (int)m_sText.length()));

    adjustCursorMoveForward();
}
Пример #14
0
void CATextField::ccTouchEnded(CATouch *pTouch, CAEvent *pEvent)
{
	CATouchView::ccTouchEnded(pTouch, pEvent);

	if (CATextToolBarView::isTextToolBarShow())
		return;

    if (m_bMoved)
    {
        m_bMoved = false;
        return;
    }
    
    CCPoint point = this->convertTouchToNodeSpace(pTouch);
    
    if (this->getBounds().containsPoint(point))
    {
        if (canAttachWithIME())
        {
            becomeFirstResponder();
            
            calculateSelChars(point, m_iString_l_length, m_iString_r_length, m_iCurPos);
            
            m_pCursorMark->setCenterOrigin(CCPoint(getCursorX() + m_iHoriMargins, m_obContentSize.height / 2));
            
#if CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID
            CCEGLView * pGlView = CAApplication::getApplication()->getOpenGLView();
            pGlView->setIMECursorPos(getCursorPos(), getContentText());
#endif
        }
    }
    else
    {
        if (canDetachWithIME())
        {
            resignFirstResponder();
        }
    }

	m_curSelCharRange = std::make_pair(m_iCurPos, m_iCurPos);
	execCurSelCharRange();
}
Пример #15
0
void CATextView::ccTouchEnded(CATouch *pTouch, CAEvent *pEvent)
{
	CAScheduler::unschedule(schedule_selector(CATextView::ccTouchTimer), this);

	if (CATextToolBarView::isTextToolBarShow() || m_pTextSelView->isTextViewShow())
		return;
	
	CCPoint point = this->convertTouchToNodeSpace(pTouch);

	if (!isScrollWindowNotOutSide())
	{
		if (this->getBounds().containsPoint(point))
		{
			becomeFirstResponder();
			if (isFirstResponder())
			{
                this->showCursorMark();

				int iCurLine = 0; int iCurPosX = 0;
				calculateSelChars(point, iCurLine, iCurPosX, m_iCurPos);
				m_pCursorMark->setCenterOrigin(CCPoint(iCurPosX, m_iLineHeight*1.25f*iCurLine + m_iLineHeight / 2));

				CCPoint pt = m_pCursorMark->getCenterOrigin();
				m_pTextArrView->showTextArrView(CCPoint(pt.x, pt.y + m_iLineHeight*1.2f + getContentOffset().y));
			}
		}
		else
		{
			m_pTextArrView->hideTextArrView();
			m_pTextSelView->hideTextSelView();

			if (resignFirstResponder())
			{
                this->hideCursorMark();
			}
		}
	}

	m_curSelCharRange = std::make_pair(m_iCurPos, m_iCurPos);
	execCurSelCharRange();
	CAScrollView::ccTouchEnded(pTouch, pEvent);
}
Пример #16
0
void CATextView::deleteBackward()
{
    CC_RETURN_IF(m_iCurPos == 0 || m_szText.empty());
	CC_RETURN_IF(m_pTextViewDelegate && m_pTextViewDelegate->onTextViewDeleteBackward(this, m_szText.c_str(), (int)m_szText.length()));
    CC_RETURN_IF(execCurSelCharRange());

	int nDeleteLen = 1;
    while (1)
    {
        CC_BREAK_IF(m_iCurPos - nDeleteLen < 0);
        CC_BREAK_IF(0x80 != (0xC0 & m_szText.at(m_iCurPos - nDeleteLen)));
        ++nDeleteLen;
    }
    m_iCurPos = MAX(m_iCurPos, nDeleteLen);
	m_szText.erase(m_iCurPos - nDeleteLen, nDeleteLen);
	m_iCurPos -= nDeleteLen;
    
	updateImage();
	m_pTextArrView->hideTextArrView();
}
Пример #17
0
	void insertText(const char * text, int len)
	{
		if (!strcmp(text, "\n"))
		{
			getKeyBoradReturnCallBack();

			CATextFieldDelegate* pDelegate = m_pTextFieldX->getDelegate();
            if (m_pTextFieldX->isAllowkeyBoardHide())
            {
                m_pTextFieldX->resignFirstResponder();
				EndMouseMoveArr();
            }
			if (pDelegate)
			{
				pDelegate->textFieldShouldReturn(m_pTextFieldX);
			}
			return;
		}

		if (m_sText.size() + len > m_pTextFieldX->getMaxLenght())
			return;
		
		std::string cszAddText;
		cszAddText.append(text, len);
		if (m_curSelCharRange.first != m_curSelCharRange.second)
		{
			if (!textValueChanged(m_curSelCharRange.first, m_curSelCharRange.second - m_curSelCharRange.first, cszAddText))
				return;
		}
		else
		{
			if (!textValueChanged(m_iCurPos, 0, cszAddText))
				return;
		}

		execCurSelCharRange();
		analyzeString(text, len);
		adjustCursorMove();
	}
Пример #18
0
void CATextField::deleteBackward()
{
    if (m_nInputType==KEY_BOARD_INPUT_PASSWORD)
    {
        m_sText.clear();
		m_vTextFiledChars.clear();
		this->updateImage();
		m_iString_l_length = 0;
		m_iString_r_length = 0;
		m_iString_left_offX = 0;
		m_iCurPos = 0;
		m_curSelCharRange = std::make_pair(0, 0);
		m_pCursorMark->setCenterOrigin(CCPoint(m_iHoriMargins + getCursorX(), m_obContentSize.height / 2));

        return;
    }

	if (m_iCurPos==0 || m_sText.empty())
		return;

	if (execCurSelCharRange())
		return;

	int nDeleteLen = 1;
	while (0x80 == (0xC0 & m_sText.at(m_iCurPos - nDeleteLen)))
	{
		++nDeleteLen;
	}
	
    m_sText.erase(m_iCurPos - nDeleteLen, nDeleteLen);
    m_iCurPos -= nDeleteLen;
	m_curSelCharRange = std::make_pair(m_iCurPos, m_iCurPos);
    CC_RETURN_IF(m_pDelegate && m_pDelegate->onTextFieldDeleteBackward(this, m_sText.c_str(), (int)m_sText.length()));
	
	m_vTextFiledChars.erase(m_vTextFiledChars.begin() + getStringCharCount(m_sText.substr(0, m_iCurPos)));
	
    adjustCursorMoveBackward();
}
Пример #19
0
	void deleteBackward()
	{
		CC_RETURN_IF(m_sText.empty() || m_iCurPos==0);
		if (m_pTextFieldX->isSecureTextEntry())
		{
			clearText();
			updateImage();
			return;
		}

		if (m_curSelCharRange.first != m_curSelCharRange.second)
		{
			if (!textValueChanged(m_curSelCharRange.first, m_curSelCharRange.second - m_curSelCharRange.first, ""))
				return;
			
			CC_RETURN_IF(execCurSelCharRange());
		}
		else
		{
			int nDeleteLen = 1;
			while (0x80 == (0xC0 & m_sText.at(m_iCurPos - nDeleteLen)))
			{
				++nDeleteLen;
			}

			if (!textValueChanged(m_iCurPos, nDeleteLen, ""))
				return;

			m_sText.erase(m_iCurPos - nDeleteLen, nDeleteLen);
			m_iCurPos -= nDeleteLen;
			m_curSelCharRange = std::make_pair(m_iCurPos, m_iCurPos);
			m_vTextFiledChars.erase(m_vTextFiledChars.begin() + getStringCharCount(m_sText.substr(0, m_iCurPos)));

			adjustCursorMove();
		}
	}
Пример #20
0
void CATextView::cutToClipboard()
{
	copyToClipboard();

	execCurSelCharRange();
}
Пример #21
0
void CATextView::keyboardWillHide(CCIMEKeyboardNotificationInfo& info)
{
    m_curSelCharRange = std::make_pair(m_iCurPos, m_iCurPos);
    execCurSelCharRange();
}
Пример #22
0
	void cutToClipboard() 
	{
		copyToClipboard();

		execCurSelCharRange();
	}