sc/inc/conditio.hxx | 6 + sc/inc/globstr.hrc | 8 +- sc/source/core/data/conditio.cxx | 76 ++++++++++++++++++++++--- sc/source/filter/oox/condformatbuffer.cxx | 52 +++++------------ sc/source/filter/xml/xmlcondformat.cxx | 40 +++++++++++++ sc/source/filter/xml/xmlexprt.cxx | 26 ++++++++ sc/source/ui/condformat/condformatdlgentry.cxx | 27 ++++++++ sc/source/ui/condformat/condformathelper.cxx | 12 +++ sc/source/ui/src/condformatdlg.src | 6 + sc/source/ui/src/globstr.src | 16 +++++ 10 files changed, 219 insertions(+), 50 deletions(-)
New commits: commit 0159e9e193011053ebe4cc988bd6c740bf232f44 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Nov 4 16:02:11 2012 +0100 we don't need to use the indirection here Change-Id: I138f35852951db5411c535b467fb82d844d8f25c diff --git a/sc/source/filter/oox/condformatbuffer.cxx b/sc/source/filter/oox/condformatbuffer.cxx index a622ef5..7840be1 100644 --- a/sc/source/filter/oox/condformatbuffer.cxx +++ b/sc/source/filter/oox/condformatbuffer.cxx @@ -666,10 +666,10 @@ void CondFormatRule::finalizeImport() eOperator = static_cast<ScConditionMode>(CondFormatBuffer::convertToInternalOperator( maModel.mnOperator )); break; case XML_duplicateValues: - eOperator = static_cast<ScConditionMode>(CondFormatBuffer::convertToInternalOperator( XML_duplicateValues )); + eOperator = SC_COND_DUPLICATE; break; case XML_uniqueValues: - eOperator = static_cast<ScConditionMode>(CondFormatBuffer::convertToInternalOperator( XML_uniqueValues )); + eOperator = SC_COND_NOTDUPLICATE; break; case XML_expression: eOperator = SC_COND_DIRECT; commit 491abc60c1ea0d708173d3614e9097b01a67f607 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Nov 4 15:56:11 2012 +0100 implement text cond format import from odf Change-Id: Ic3616bf28711a3a5f0ea35caacaf181458eb5bb1 diff --git a/sc/source/filter/xml/xmlcondformat.cxx b/sc/source/filter/xml/xmlcondformat.cxx index ab71696..806cb87 100644 --- a/sc/source/filter/xml/xmlcondformat.cxx +++ b/sc/source/filter/xml/xmlcondformat.cxx @@ -441,6 +441,38 @@ void GetConditionData(const rtl::OUString& rValue, ScConditionMode& eMode, rtl:: { eMode = SC_COND_NOERROR; } + else if(rValue.indexOf("begins-with") == 0) + { + eMode = SC_COND_BEGINS_WITH; + const sal_Unicode* pStr = rValue.getStr(); + const sal_Unicode* pStart = pStr + 12; + const sal_Unicode* pEnd = pStr + rValue.getLength(); + rExpr1 = ScXMLConditionHelper::getExpression( pStart, pEnd, ')'); + } + else if(rValue.indexOf("ends-with") == 0) + { + eMode = SC_COND_ENDS_WITH; + const sal_Unicode* pStr = rValue.getStr(); + const sal_Unicode* pStart = pStr + 10; + const sal_Unicode* pEnd = pStr + rValue.getLength(); + rExpr1 = ScXMLConditionHelper::getExpression( pStart, pEnd, ')'); + } + else if(rValue.indexOf("contains-text") == 0) + { + eMode = SC_COND_CONTAINS_TEXT; + const sal_Unicode* pStr = rValue.getStr(); + const sal_Unicode* pStart = pStr + 14; + const sal_Unicode* pEnd = pStr + rValue.getLength(); + rExpr1 = ScXMLConditionHelper::getExpression( pStart, pEnd, ')'); + } + else if(rValue.indexOf("not-contains-text") == 0) + { + eMode = SC_COND_NOT_CONTAINS_TEXT; + const sal_Unicode* pStr = rValue.getStr(); + const sal_Unicode* pStart = pStr + 18; + const sal_Unicode* pEnd = pStr + rValue.getLength(); + rExpr1 = ScXMLConditionHelper::getExpression( pStart, pEnd, ')'); + } else eMode = SC_COND_NONE; } commit 14b78ada71d0a6fff0336c7bccd4dfdbc32d33bd Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Nov 4 14:59:14 2012 +0100 add the new cond formats to the dialogs Change-Id: I5383d74abaa1d568a4be8271d0e081f914ac4067 diff --git a/sc/inc/globstr.hrc b/sc/inc/globstr.hrc index 5e27e71..ea2d870 100644 --- a/sc/inc/globstr.hrc +++ b/sc/inc/globstr.hrc @@ -608,9 +608,13 @@ #define STR_COND_BELOW_AVERAGE 483 #define STR_COND_ERROR 484 #define STR_COND_NOERROR 485 +#define STR_COND_BEGINS_WITH 486 +#define STR_COND_ENDS_WITH 487 +#define STR_COND_CONTAINS 488 +#define STR_COND_NOT_CONTAINS 489 -#define STR_ERR_CONDFORMAT_PROTECTED 486 +#define STR_ERR_CONDFORMAT_PROTECTED 490 -#define STR_COUNT 487 +#define STR_COUNT 491 #endif diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx b/sc/source/ui/condformat/condformatdlgentry.cxx index 180b1fc..817da0b 100644 --- a/sc/source/ui/condformat/condformatdlgentry.cxx +++ b/sc/source/ui/condformat/condformatdlgentry.cxx @@ -227,6 +227,18 @@ ScConditionFrmtEntry::ScConditionFrmtEntry( Window* pParent, ScDocument* pDoc, c maEdVal1.Hide(); maLbCondType.SelectEntryPos(17); break; + case SC_COND_BEGINS_WITH: + maLbCondType.SelectEntryPos(18); + break; + case SC_COND_ENDS_WITH: + maLbCondType.SelectEntryPos(19); + break; + case SC_COND_CONTAINS_TEXT: + maLbCondType.SelectEntryPos(20); + break; + case SC_COND_NOT_CONTAINS_TEXT: + maLbCondType.SelectEntryPos(21); + break; case SC_COND_NONE: break; } @@ -331,6 +343,18 @@ ScFormatEntry* ScConditionFrmtEntry::createConditionEntry() const case 17: eMode = SC_COND_NOERROR; break; + case 18: + eMode = SC_COND_BEGINS_WITH; + break; + case 19: + eMode = SC_COND_ENDS_WITH; + break; + case 20: + eMode = SC_COND_CONTAINS_TEXT; + break; + case 21: + eMode = SC_COND_NOT_CONTAINS_TEXT; + break; default: assert(false); // this cannot happen return NULL; @@ -977,7 +1001,8 @@ IMPL_LINK_NOARG( ScConditionFrmtEntry, ConditionTypeSelectHdl ) maEdVal2.Hide(); maEdVal1.Hide(); } - else if(nSelectPos < 6 || (nSelectPos >= 10 && nSelectPos <= 13)) + else if(nSelectPos <= 5 || (nSelectPos >= 10 && nSelectPos <= 13) + || nSelectPos >= 18) { maEdVal1.Show(); maEdVal2.Hide(); diff --git a/sc/source/ui/condformat/condformathelper.cxx b/sc/source/ui/condformat/condformathelper.cxx index 3d8b5ee..09eaa24 100644 --- a/sc/source/ui/condformat/condformathelper.cxx +++ b/sc/source/ui/condformat/condformathelper.cxx @@ -76,6 +76,14 @@ rtl::OUString getExpression(sal_Int32 nIndex) return ScGlobal::GetRscString(STR_COND_ERROR); case 18: return ScGlobal::GetRscString(STR_COND_NOERROR); + case 19: + return ScGlobal::GetRscString(STR_COND_BEGINS_WITH); + case 20: + return ScGlobal::GetRscString(STR_COND_ENDS_WITH); + case 21: + return ScGlobal::GetRscString(STR_COND_CONTAINS); + case 22: + return ScGlobal::GetRscString(STR_COND_NOT_CONTAINS); } return rtl::OUString(); } @@ -111,7 +119,7 @@ rtl::OUString ScCondFormatHelper::GetExpression(const ScConditionalFormat& rForm aBuffer.append(rtl::OUString(" and ")); aBuffer.append(pEntry->GetExpression(rPos, 1)); } - else if(eMode <= SC_COND_NOTEQUAL) + else if(eMode <= SC_COND_NOTEQUAL || eMode >= SC_COND_BEGINS_WITH) { aBuffer.append(pEntry->GetExpression(rPos, 0)); } @@ -141,7 +149,7 @@ rtl::OUString ScCondFormatHelper::GetExpression( ScCondFormatEntryType eType, sa if(eType == CONDITION) { aBuffer.append(getExpression(nIndex)); - if(nIndex <= 7) + if(nIndex <= 7 || nIndex >= 19) { aBuffer.append(" ").append(aStr1); if(nIndex == 6 || nIndex == 7) diff --git a/sc/source/ui/src/condformatdlg.src b/sc/source/ui/src/condformatdlg.src index 1cc7c67..8318cc1 100644 --- a/sc/source/ui/src/condformatdlg.src +++ b/sc/source/ui/src/condformatdlg.src @@ -149,6 +149,10 @@ Control RID_COND_ENTRY "below average"; "Error"; "No Error"; + "Begins with"; + "Ends with"; + "Contains"; + "Not Contains"; }; }; Edit ED_VAL1 diff --git a/sc/source/ui/src/globstr.src b/sc/source/ui/src/globstr.src index 2212b42..226bb1a 100644 --- a/sc/source/ui/src/globstr.src +++ b/sc/source/ui/src/globstr.src @@ -1931,6 +1931,22 @@ Resource RID_GLOBSTR { Text [ en-US ] = "not an Error code"; }; + String STR_COND_BEGINS_WITH + { + Text [ en-US ] = "Begins with"; + }; + String STR_COND_ENDS_WITH + { + Text [ en-US ] = "Ends with"; + }; + String STR_COND_CONTAINS + { + Text [ en-US ] = "Contains"; + }; + String STR_COND_NOT_CONTAINS + { + Text [ en-US ] = "Not Contains"; + }; String STR_ERR_CONDFORMAT_PROTECTED { Text [ en-US ] = "Conditional Formats can not be created, deleted or changed in protected sheets!"; commit 7365db393b5c9f7035c9a8ea36e44904e641a269 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Nov 4 02:34:17 2012 +0100 implement text cond format export to odf Change-Id: I3992fb7150fff1422a04d85ead5f666f2d3f1bfb diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx index b38f273..58cdaa4 100644 --- a/sc/source/filter/xml/xmlexprt.cxx +++ b/sc/source/filter/xml/xmlexprt.cxx @@ -3914,6 +3914,26 @@ void ScXMLExport::ExportConditionalFormat(SCTAB nTab) case SC_COND_NOERROR: aCond.append("is-no-error"); break; + case SC_COND_BEGINS_WITH: + aCond.append("begins-with("); + aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(")"); + break; + case SC_COND_ENDS_WITH: + aCond.append("ends-with("); + aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(")"); + break; + case SC_COND_CONTAINS_TEXT: + aCond.append("contains-text("); + aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(")"); + break; + case SC_COND_NOT_CONTAINS_TEXT: + aCond.append("not-contains-text("); + aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(")"); + break; case SC_COND_NONE: continue; default: commit 63ea94f1e5134e09fe33c8d36375d3608a5861ce Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Nov 4 02:25:14 2012 +0100 clean cond format ooxml import code Except for the base cell we no onger need to modify the formula Change-Id: I57426910b570b4c4605a5d6e265c165324233a8a diff --git a/sc/source/filter/oox/condformatbuffer.cxx b/sc/source/filter/oox/condformatbuffer.cxx index 4929e19..a622ef5 100644 --- a/sc/source/filter/oox/condformatbuffer.cxx +++ b/sc/source/filter/oox/condformatbuffer.cxx @@ -779,36 +779,6 @@ void CondFormatRule::finalizeImport() aAddress = FormulaProcessorBase::generateAddress2dString( mrCondFormat.getRanges().getBaseAddress(), false ); aReplaceFormula = aReplaceFormula.replaceAt( nStrPos, 2, aAddress ); break; - case 'R': // range list of conditional formatting - if( aRanges.isEmpty() ) - aRanges = FormulaProcessorBase::generateRangeList2dString( mrCondFormat.getRanges(), true, ',', true ); - aReplaceFormula = aReplaceFormula.replaceAt( nStrPos, 2, aRanges ); - break; - case 'T': // comparison text - if( aText.isEmpty() ) - // quote the comparison text, and handle embedded quote characters - aText = FormulaProcessorBase::generateApiString( maModel.maText ); - aReplaceFormula = aReplaceFormula.replaceAt( nStrPos, 2, aText ); - break; - case 'L': // length of comparison text - aReplaceFormula = aReplaceFormula.replaceAt( nStrPos, 2, - OUString::valueOf( maModel.maText.getLength() ) ); - break; - case 'K': // top-10 rank - aReplaceFormula = aReplaceFormula.replaceAt( nStrPos, 2, - OUString::valueOf( maModel.mnRank ) ); - break; - case 'M': // top-10 top/bottom flag - aReplaceFormula = aReplaceFormula.replaceAt( nStrPos, 2, - OUString::valueOf( static_cast< sal_Int32 >( maModel.mbBottom ? 1 : 0 ) ) ); - break; - case 'C': // average comparison operator - if( aComp.isEmpty() ) - aComp = maModel.mbAboveAverage ? - (maModel.mbEqualAverage ? OUString( ">=" ) : OUString( ">" ) ) : - (maModel.mbEqualAverage ? OUString( "<=" ) : OUString( "<" ) ); - aReplaceFormula = aReplaceFormula.replaceAt( nStrPos, 2, aComp ); - break; default: OSL_FAIL( "CondFormatRule::finalizeImport - unknown placeholder" ); } commit 13fa07a4e369ad24ce7279292fb6604f57f86691 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Nov 4 02:23:26 2012 +0100 implement text cond formats ooxml import Change-Id: Icf6677131c6602e539515d73b1f08abd6e883dc9 diff --git a/sc/source/filter/oox/condformatbuffer.cxx b/sc/source/filter/oox/condformatbuffer.cxx index eb0f1dc..4929e19 100644 --- a/sc/source/filter/oox/condformatbuffer.cxx +++ b/sc/source/filter/oox/condformatbuffer.cxx @@ -676,20 +676,20 @@ void CondFormatRule::finalizeImport() break; case XML_containsText: OSL_ENSURE( maModel.mnOperator == XML_containsText, "CondFormatRule::finalizeImport - unexpected operator" ); - aReplaceFormula = "NOT(ISERROR(SEARCH(#T,#B)))"; + eOperator = SC_COND_CONTAINS_TEXT; break; case XML_notContainsText: // note: type XML_notContainsText vs. operator XML_notContains OSL_ENSURE( maModel.mnOperator == XML_notContains, "CondFormatRule::finalizeImport - unexpected operator" ); - aReplaceFormula = "ISERROR(SEARCH(#T,#B))"; + eOperator = SC_COND_NOT_CONTAINS_TEXT; break; case XML_beginsWith: OSL_ENSURE( maModel.mnOperator == XML_beginsWith, "CondFormatRule::finalizeImport - unexpected operator" ); - aReplaceFormula = "LEFT(#B,#L)=#T"; + eOperator = SC_COND_BEGINS_WITH; break; case XML_endsWith: OSL_ENSURE( maModel.mnOperator == XML_endsWith, "CondFormatRule::finalizeImport - unexpected operator" ); - aReplaceFormula = "RIGHT(#B,#L)=#T"; + eOperator = SC_COND_ENDS_WITH; break; case XML_timePeriod: switch( maModel.mnTimePeriod ) @@ -831,6 +831,16 @@ void CondFormatRule::finalizeImport() ScCondFormatEntry* pNewEntry = new ScCondFormatEntry( eOperator, NULL, NULL, &rDoc, aPos, aStyleName ); mpFormat->AddEntry(pNewEntry); } + else if( eOperator == SC_COND_BEGINS_WITH || eOperator == SC_COND_ENDS_WITH || + eOperator == SC_COND_CONTAINS_TEXT || eOperator == SC_COND_NOT_CONTAINS_TEXT ) + { + ScDocument& rDoc = getScDocument(); + ScTokenArray aTokenArray; + aTokenArray.AddString(maModel.maText); + OUString aStyleName = getStyles().createDxfStyle( maModel.mnDxfId ); + ScCondFormatEntry* pNewEntry = new ScCondFormatEntry( eOperator, &aTokenArray, NULL, &rDoc, aPos, aStyleName ); + mpFormat->AddEntry(pNewEntry); + } else if( (eOperator != SC_COND_NONE) && !maModel.maFormulas.empty() ) { ScDocument& rDoc = getScDocument(); commit bca1f6b9cae0aacf4b49b237a913510c91ca10d1 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Nov 4 02:22:48 2012 +0100 implement text conditional formats Change-Id: I29e837c3495264b04c25a8d6977e3f8dd1efd73b diff --git a/sc/inc/conditio.hxx b/sc/inc/conditio.hxx index 935f33e..2f2eb49 100644 --- a/sc/inc/conditio.hxx +++ b/sc/inc/conditio.hxx @@ -78,6 +78,10 @@ enum ScConditionMode SC_COND_BELOW_AVERAGE, SC_COND_ERROR, SC_COND_NOERROR, + SC_COND_BEGINS_WITH, + SC_COND_ENDS_WITH, + SC_COND_CONTAINS_TEXT, + SC_COND_NOT_CONTAINS_TEXT, SC_COND_NONE }; diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx index 4e3ffcb..f164cc4 100644 --- a/sc/source/core/data/conditio.cxx +++ b/sc/source/core/data/conditio.cxx @@ -1000,9 +1000,18 @@ bool ScConditionEntry::IsValid( double nArg, const ScAddress& rPos ) const if ( bIsStr1 ) { - // wenn auf String getestet wird, bei Zahlen immer sal_False, ausser bei "ungleich" - - return ( eOp == SC_COND_NOTEQUAL ); + switch( eOp ) + { + case SC_COND_BEGINS_WITH: + case SC_COND_ENDS_WITH: + case SC_COND_CONTAINS_TEXT: + case SC_COND_NOT_CONTAINS_TEXT: + break; + case SC_COND_NOTEQUAL: + return true; + default: + return false; + } } if ( eOp == SC_COND_BETWEEN || eOp == SC_COND_NOTBETWEEN ) @@ -1088,6 +1097,47 @@ bool ScConditionEntry::IsValid( double nArg, const ScAddress& rPos ) const if( eOp == SC_COND_NOERROR ) bValid = !bValid; break; + case SC_COND_BEGINS_WITH: + if(!aStrVal1.Len()) + { + rtl::OUString aStr = rtl::OUString::valueOf(nVal1); + rtl::OUString aStr2 = rtl::OUString::valueOf(nArg); + bValid = aStr2.indexOf(aStr) == 0; + } + else + { + rtl::OUString aStr2 = rtl::OUString::valueOf(nArg); + bValid = aStr2.indexOf(aStrVal1) == 0; + } + case SC_COND_ENDS_WITH: + if(!aStrVal1.Len()) + { + rtl::OUString aStr = rtl::OUString::valueOf(nVal1); + rtl::OUString aStr2 = rtl::OUString::valueOf(nArg); + bValid = aStr2.endsWith(aStr) == 0; + } + else + { + rtl::OUString aStr2 = rtl::OUString::valueOf(nArg); + bValid = aStr2.endsWith(aStrVal1) == 0; + } + case SC_COND_CONTAINS_TEXT: + case SC_COND_NOT_CONTAINS_TEXT: + if(!aStrVal1.Len()) + { + rtl::OUString aStr = rtl::OUString::valueOf(nVal1); + rtl::OUString aStr2 = rtl::OUString::valueOf(nArg); + bValid = aStr2.indexOf(aStr) != -1; + } + else + { + rtl::OUString aStr2 = rtl::OUString::valueOf(nArg); + bValid = aStr2.indexOf(aStrVal1) != -1; + } + + if( eOp == SC_COND_NOT_CONTAINS_TEXT ) + bValid = !bValid; + break; default: OSL_FAIL("unbekannte Operation bei ScConditionEntry"); break; @@ -1156,6 +1206,18 @@ bool ScConditionEntry::IsValidStr( const rtl::OUString& rArg, const ScAddress& r if(eOp == SC_COND_NOERROR) bValid = !bValid; break; + case SC_COND_BEGINS_WITH: + bValid = rArg.indexOf(aUpVal1) == 0; + break; + case SC_COND_ENDS_WITH: + bValid = rArg.endsWith(aUpVal1); + break; + case SC_COND_CONTAINS_TEXT: + case SC_COND_NOT_CONTAINS_TEXT: + bValid = rArg.indexOf(aUpVal1) != -1; + if(eOp == SC_COND_NOT_CONTAINS_TEXT) + bValid = !bValid; + break; default: { sal_Int32 nCompare = ScGlobal::GetCollator()->compareString( commit 13deb4cd8fca3f222003e0ace9875b80fda433d2 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Nov 4 01:22:43 2012 +0100 switch from String to OUString Change-Id: I755d6e6e9c1118792578de52bd3af484f88072be diff --git a/sc/inc/conditio.hxx b/sc/inc/conditio.hxx index 72f1fc8..935f33e 100644 --- a/sc/inc/conditio.hxx +++ b/sc/inc/conditio.hxx @@ -186,7 +186,7 @@ class SC_DLLPUBLIC ScConditionEntry : public ScFormatEntry void Interpret( const ScAddress& rPos ); bool IsValid( double nArg, const ScAddress& rPos ) const; - bool IsValidStr( const String& rArg, const ScAddress& rPos ) const; + bool IsValidStr( const rtl::OUString& rArg, const ScAddress& rPos ) const; public: ScConditionEntry( ScConditionMode eOper, diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx index f660b3b..4e3ffcb 100644 --- a/sc/source/core/data/conditio.cxx +++ b/sc/source/core/data/conditio.cxx @@ -1095,7 +1095,7 @@ bool ScConditionEntry::IsValid( double nArg, const ScAddress& rPos ) const return bValid; } -bool ScConditionEntry::IsValidStr( const String& rArg, const ScAddress& rPos ) const +bool ScConditionEntry::IsValidStr( const rtl::OUString& rArg, const ScAddress& rPos ) const { bool bValid = false; // Interpret muss schon gerufen sein @@ -1105,7 +1105,7 @@ bool ScConditionEntry::IsValidStr( const String& rArg, const ScAddress& rPos ) c if ( eOp == SC_COND_DUPLICATE || eOp == SC_COND_NOTDUPLICATE ) { - if( pCondFormat && rArg.Len() ) + if( pCondFormat && !rArg.isEmpty() ) { bValid = IsDuplicate( 0.0, rArg ); if( eOp == SC_COND_NOTDUPLICATE ) @@ -1122,8 +1122,8 @@ bool ScConditionEntry::IsValidStr( const String& rArg, const ScAddress& rPos ) c if ( !bIsStr2 ) return false; - String aUpVal1( aStrVal1 ); //! als Member? (dann auch in Interpret setzen) - String aUpVal2( aStrVal2 ); + rtl::OUString aUpVal1( aStrVal1 ); //! als Member? (dann auch in Interpret setzen) + rtl::OUString aUpVal2( aStrVal2 ); if ( eOp == SC_COND_BETWEEN || eOp == SC_COND_NOTBETWEEN ) if ( ScGlobal::GetCollator()->compareString( aUpVal1, aUpVal2 ) commit 2a87ed2c3dbd71dcf7d791b5d3fb756872582aa5 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Nov 4 00:41:36 2012 +0100 implement (no) error cond format import from odf Change-Id: I97d049360c9d7868ed1b92e3453f9523747b526a diff --git a/sc/source/filter/xml/xmlcondformat.cxx b/sc/source/filter/xml/xmlcondformat.cxx index fa2d2f9..ab71696 100644 --- a/sc/source/filter/xml/xmlcondformat.cxx +++ b/sc/source/filter/xml/xmlcondformat.cxx @@ -433,6 +433,14 @@ void GetConditionData(const rtl::OUString& rValue, ScConditionMode& eMode, rtl:: rExpr1 = ScXMLConditionHelper::getExpression( pStart, pEnd, ')'); eMode = SC_COND_DIRECT; } + else if(rValue.indexOf("is-error") == 0) + { + eMode = SC_COND_ERROR; + } + else if(rValue.indexOf("is-no-error") == 0) + { + eMode = SC_COND_NOERROR; + } else eMode = SC_COND_NONE; } commit f506e99344158f0215228ab478bd3a19391d7220 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Nov 4 00:38:25 2012 +0100 implement export for (no) error cond format export to odf Change-Id: I5652803231651393b5f01d7c20e853819aef539d diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx index 069b238..b38f273 100644 --- a/sc/source/filter/xml/xmlexprt.cxx +++ b/sc/source/filter/xml/xmlexprt.cxx @@ -3908,6 +3908,12 @@ void ScXMLExport::ExportConditionalFormat(SCTAB nTab) aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); aCond.append(')'); break; + case SC_COND_ERROR: + aCond.append("is-error"); + break; + case SC_COND_NOERROR: + aCond.append("is-no-error"); + break; case SC_COND_NONE: continue; default: commit 1d1004f604cbdb74b16e963ac6ab8252c7124f0b Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Nov 4 00:32:35 2012 +0100 make the drop down box larger Change-Id: Iee7d2480eebd94497d8a8547fcd57b1bbc157c64 diff --git a/sc/source/ui/src/condformatdlg.src b/sc/source/ui/src/condformatdlg.src index e0e0306..1cc7c67 100644 --- a/sc/source/ui/src/condformatdlg.src +++ b/sc/source/ui/src/condformatdlg.src @@ -126,7 +126,7 @@ Control RID_COND_ENTRY ListBox LB_CELLIS_TYPE { Pos = MAP_APPFONT( 90, 15 ); - Size = MAP_APPFONT( 80, 40 ); + Size = MAP_APPFONT( 80, 80 ); Border = TRUE; DropDown = TRUE; StringList [ en-US ] = _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits