Kaydet (Commit) 4c5219d5 authored tarafından Anurag Jain's avatar Anurag Jain Kaydeden (comit) Noel Power

basic multiline input implementation

üst db6d94b8
...@@ -1096,7 +1096,7 @@ ScAccessibleEditLineTextData::ScAccessibleEditLineTextData(EditView* pEditView, ...@@ -1096,7 +1096,7 @@ ScAccessibleEditLineTextData::ScAccessibleEditLineTextData(EditView* pEditView,
ScAccessibleEditObjectTextData(pEditView, pWin), ScAccessibleEditObjectTextData(pEditView, pWin),
mbEditEngineCreated(false) mbEditEngineCreated(false)
{ {
ScTextWnd* pTxtWnd = (ScTextWnd*)pWin; ScTextWnd* pTxtWnd = dynamic_cast<ScTextWnd*>( pWin );
if (pTxtWnd) if (pTxtWnd)
pTxtWnd->InsertAccessibleTextData( *this ); pTxtWnd->InsertAccessibleTextData( *this );
...@@ -1104,7 +1104,7 @@ ScAccessibleEditLineTextData::ScAccessibleEditLineTextData(EditView* pEditView, ...@@ -1104,7 +1104,7 @@ ScAccessibleEditLineTextData::ScAccessibleEditLineTextData(EditView* pEditView,
ScAccessibleEditLineTextData::~ScAccessibleEditLineTextData() ScAccessibleEditLineTextData::~ScAccessibleEditLineTextData()
{ {
ScTextWnd* pTxtWnd = (ScTextWnd*)mpWindow; ScTextWnd* pTxtWnd = dynamic_cast< ScTextWnd* >(mpWindow);
if (pTxtWnd) if (pTxtWnd)
pTxtWnd->RemoveAccessibleTextData( *this ); pTxtWnd->RemoveAccessibleTextData( *this );
...@@ -1125,7 +1125,7 @@ ScAccessibleEditLineTextData::~ScAccessibleEditLineTextData() ...@@ -1125,7 +1125,7 @@ ScAccessibleEditLineTextData::~ScAccessibleEditLineTextData()
void ScAccessibleEditLineTextData::Dispose() void ScAccessibleEditLineTextData::Dispose()
{ {
ScTextWnd* pTxtWnd = (ScTextWnd*)mpWindow; ScTextWnd* pTxtWnd = dynamic_cast<ScTextWnd*>(mpWindow);
if (pTxtWnd) if (pTxtWnd)
pTxtWnd->RemoveAccessibleTextData( *this ); pTxtWnd->RemoveAccessibleTextData( *this );
...@@ -1141,7 +1141,7 @@ ScAccessibleTextData* ScAccessibleEditLineTextData::Clone() const ...@@ -1141,7 +1141,7 @@ ScAccessibleTextData* ScAccessibleEditLineTextData::Clone() const
SvxTextForwarder* ScAccessibleEditLineTextData::GetTextForwarder() SvxTextForwarder* ScAccessibleEditLineTextData::GetTextForwarder()
{ {
ScTextWnd* pTxtWnd = (ScTextWnd*)mpWindow; ScTextWnd* pTxtWnd = dynamic_cast<ScTextWnd*>(mpWindow);
if (pTxtWnd) if (pTxtWnd)
{ {
...@@ -1187,7 +1187,7 @@ SvxTextForwarder* ScAccessibleEditLineTextData::GetTextForwarder() ...@@ -1187,7 +1187,7 @@ SvxTextForwarder* ScAccessibleEditLineTextData::GetTextForwarder()
SvxEditViewForwarder* ScAccessibleEditLineTextData::GetEditViewForwarder( sal_Bool bCreate ) SvxEditViewForwarder* ScAccessibleEditLineTextData::GetEditViewForwarder( sal_Bool bCreate )
{ {
ScTextWnd* pTxtWnd = (ScTextWnd*)mpWindow; ScTextWnd* pTxtWnd = dynamic_cast<ScTextWnd*>(mpWindow);
if (pTxtWnd) if (pTxtWnd)
{ {
...@@ -1209,7 +1209,7 @@ SvxEditViewForwarder* ScAccessibleEditLineTextData::GetEditViewForwarder( sal_Bo ...@@ -1209,7 +1209,7 @@ SvxEditViewForwarder* ScAccessibleEditLineTextData::GetEditViewForwarder( sal_Bo
void ScAccessibleEditLineTextData::ResetEditMode() void ScAccessibleEditLineTextData::ResetEditMode()
{ {
ScTextWnd* pTxtWnd = (ScTextWnd*)mpWindow; ScTextWnd* pTxtWnd = dynamic_cast<ScTextWnd*>(mpWindow);
if (mbEditEngineCreated && mpEditEngine) if (mbEditEngineCreated && mpEditEngine)
delete mpEditEngine; delete mpEditEngine;
...@@ -1227,7 +1227,7 @@ void ScAccessibleEditLineTextData::TextChanged() ...@@ -1227,7 +1227,7 @@ void ScAccessibleEditLineTextData::TextChanged()
{ {
if (mbEditEngineCreated && mpEditEngine) if (mbEditEngineCreated && mpEditEngine)
{ {
ScTextWnd* pTxtWnd = (ScTextWnd*)mpWindow; ScTextWnd* pTxtWnd = dynamic_cast<ScTextWnd*>(mpWindow);
if (pTxtWnd) if (pTxtWnd)
mpEditEngine->SetText(pTxtWnd->GetTextString()); mpEditEngine->SetText(pTxtWnd->GetTextString());
......
This diff is collapsed.
...@@ -47,32 +47,48 @@ class ScRangeList; ...@@ -47,32 +47,48 @@ class ScRangeList;
//======================================================================== //========================================================================
class ScTextWnd : public Window, public DragSourceHelper // edit window class ScTextWndBase : public Window
{
public:
ScTextWndBase( Window* pParent, WinBits nStyle ) : Window ( pParent, nStyle ) {}
virtual void InsertAccessibleTextData( ScAccessibleEditLineTextData& rTextData ) = 0;
virtual void RemoveAccessibleTextData( ScAccessibleEditLineTextData& rTextData ) = 0;
virtual void SetTextString( const String& rString ) = 0;
virtual const String& GetTextString() const = 0;
virtual void StartEditEngine() = 0;
virtual void StopEditEngine( sal_Bool bAll ) = 0;
virtual EditView* GetEditView() = 0;
virtual void MakeDialogEditView() = 0;
virtual void SetFormulaMode( sal_Bool bSet ) = 0;
virtual sal_Bool IsInputActive() = 0;
};
class ScTextWnd : public ScTextWndBase, public DragSourceHelper // edit window
{ {
public: public:
ScTextWnd( Window* pParent ); ScTextWnd( Window* pParent );
virtual ~ScTextWnd(); virtual ~ScTextWnd();
void SetTextString( const String& rString ); virtual void SetTextString( const String& rString );
const String& GetTextString() const; virtual const String& GetTextString() const;
sal_Bool IsInputActive(); sal_Bool IsInputActive();
EditView* GetEditView(); virtual EditView* GetEditView();
// fuer FunktionsAutopiloten // fuer FunktionsAutopiloten
void MakeDialogEditView(); virtual void MakeDialogEditView();
void StartEditEngine(); virtual void StartEditEngine();
void StopEditEngine( sal_Bool bAll ); virtual void StopEditEngine( sal_Bool bAll );
virtual void DataChanged( const DataChangedEvent& rDCEvt ); virtual void DataChanged( const DataChangedEvent& rDCEvt );
void SetFormulaMode( sal_Bool bSet ); virtual void SetFormulaMode( sal_Bool bSet );
virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible(); virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
void InsertAccessibleTextData( ScAccessibleEditLineTextData& rTextData ); virtual void InsertAccessibleTextData( ScAccessibleEditLineTextData& rTextData );
void RemoveAccessibleTextData( ScAccessibleEditLineTextData& rTextData ); virtual void RemoveAccessibleTextData( ScAccessibleEditLineTextData& rTextData );
DECL_LINK( NotifyHdl, EENotify* ); DECL_LINK( NotifyHdl, EENotify* );
...@@ -92,11 +108,9 @@ protected: ...@@ -92,11 +108,9 @@ protected:
virtual String GetText() const; virtual String GetText() const;
private:
void ImplInitSettings(); void ImplInitSettings();
void UpdateAutoCorrFlag(); void UpdateAutoCorrFlag();
private:
typedef ::std::vector< ScAccessibleEditLineTextData* > AccTextDataVector; typedef ::std::vector< ScAccessibleEditLineTextData* > AccTextDataVector;
String aString; String aString;
...@@ -111,6 +125,7 @@ private: ...@@ -111,6 +125,7 @@ private:
// #102710#; this flag should be true if a key input or a command is handled // #102710#; this flag should be true if a key input or a command is handled
// it prevents the call of InputChanged in the ModifyHandler of the EditEngine // it prevents the call of InputChanged in the ModifyHandler of the EditEngine
sal_Bool bInputMode; sal_Bool bInputMode;
sal_Int16 nTextStartPos;
}; };
//======================================================================== //========================================================================
...@@ -150,6 +165,50 @@ private: ...@@ -150,6 +165,50 @@ private:
//======================================================================== //========================================================================
class ScMultiTextWnd : public ScTextWnd
{
public:
ScMultiTextWnd( Window* pParent );
virtual void StartEditEngine();
virtual void StopEditEngine( sal_Bool bAll );
protected:
void InitEditEngine(SfxObjectShell* pObjSh);
virtual void Paint( const Rectangle& rRec );
virtual void Resize();
};
class ScInputBarGroup : public ScTextWndBase
{
public:
ScInputBarGroup( Window* Parent );
virtual ~ScInputBarGroup();
virtual void InsertAccessibleTextData( ScAccessibleEditLineTextData& rTextData );
virtual void RemoveAccessibleTextData( ScAccessibleEditLineTextData& rTextData );
// virtual void Paint(const Rectangle& rRec );
void SetTextString( const String& rString );
void StartEditEngine();
EditView* GetEditView();
void SetSize(Size aSize);
virtual void Resize();
virtual const String& GetTextString() const;
virtual void StopEditEngine( sal_Bool bAll );
void InitEditEngine(SfxObjectShell* pObjSh);
void GainFocus();
void SetFormulaMode( sal_Bool bSet );
bool IsFocus();
void MakeDialogEditView();
sal_Bool IsInputActive();
private:
ScMultiTextWnd aTextWindow;
bool bIsMultiLine;
};
class ScInputWindow : public ToolBox // Parent-Toolbox class ScInputWindow : public ToolBox // Parent-Toolbox
{ {
public: public:
...@@ -169,7 +228,7 @@ public: ...@@ -169,7 +228,7 @@ public:
void SetFormulaMode( sal_Bool bSet ); void SetFormulaMode( sal_Bool bSet );
sal_Bool IsInputActive(); virtual sal_Bool IsInputActive();
EditView* GetEditView(); EditView* GetEditView();
void TextGrabFocus(); void TextGrabFocus();
...@@ -199,7 +258,8 @@ protected: ...@@ -199,7 +258,8 @@ protected:
private: private:
ScPosWnd aWndPos; ScPosWnd aWndPos;
ScTextWnd aTextWindow; std::auto_ptr<ScTextWndBase> pRuntimeWindow;
ScTextWndBase& aTextWindow;
ScInputHandler* pInputHdl; ScInputHandler* pInputHdl;
SfxBindings* pBindings; SfxBindings* pBindings;
String aTextOk; String aTextOk;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment