summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authortagezi <lera.goncharuk@gmail.com>2017-12-22 01:05:13 +0200
committerMike Kaganski <mike.kaganski@collabora.com>2017-12-22 22:22:44 +0100
commita5fe3117e1877fa0bfb55f1cf22cf9394b3f0795 (patch)
treeef6086fb6873434993db903b54e9cbeb045ee9a3 /sc
parent6a312a4a3d642f0f9769df54c0ec25471c9916bd (diff)
tdf#39593 deduplicate code in ScCellShell
Change-Id: I240715d73c5ae320a3dfab786b446e229083ff4b Reviewed-on: https://gerrit.libreoffice.org/46941 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/view/cellsh1.cxx86
1 files changed, 28 insertions, 58 deletions
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index 8f0063986168..89bda8c80c2e 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -107,6 +107,31 @@ using namespace ::com::sun::star;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::uno;
+namespace{
+InsertDeleteFlags FlagsFromString(const OUString& rFlagsStr,
+ InsertDeleteFlags nFlagsMask = InsertDeleteFlags::CONTENTS | InsertDeleteFlags::ATTRIB)
+{
+ OUString aFlagsStr = rFlagsStr.toAsciiUpperCase();
+ InsertDeleteFlags nFlags = InsertDeleteFlags::NONE;
+
+ for (sal_Int32 i=0 ; i < aFlagsStr.getLength(); ++i)
+ {
+ switch (aFlagsStr[i])
+ {
+ case 'A': return InsertDeleteFlags::ALL;
+ case 'S': nFlags |= InsertDeleteFlags::STRING & nFlagsMask; break;
+ case 'V': nFlags |= InsertDeleteFlags::VALUE & nFlagsMask; break;
+ case 'D': nFlags |= InsertDeleteFlags::DATETIME & nFlagsMask; break;
+ case 'F': nFlags |= InsertDeleteFlags::FORMULA & nFlagsMask; break;
+ case 'N': nFlags |= InsertDeleteFlags::NOTE & nFlagsMask; break;
+ case 'T': nFlags |= InsertDeleteFlags::ATTRIB & nFlagsMask; break;
+ case 'O': nFlags |= InsertDeleteFlags::OBJECTS & nFlagsMask; break;
+ }
+ }
+ return nFlags;
+}
+}
+
void ScCellShell::ExecuteEdit( SfxRequest& rReq )
{
ScModule* pScMod = SC_MOD();
@@ -348,26 +373,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
if( pReqArgs->HasItem( SID_DELETE, &pItem ) )
aFlags = static_cast<const SfxStringItem*>(pItem)->GetValue();
- aFlags = aFlags.toAsciiUpperCase();
- bool bCont = true;
-
- for (sal_Int32 i=0 ; bCont && i<aFlags.getLength(); ++i)
- {
- switch (aFlags[i])
- {
- case 'A': // all
- nFlags |= InsertDeleteFlags::ALL;
- bCont = false; // don't continue!
- break;
- case 'S': nFlags |= InsertDeleteFlags::STRING; break;
- case 'V': nFlags |= InsertDeleteFlags::VALUE; break;
- case 'D': nFlags |= InsertDeleteFlags::DATETIME; break;
- case 'F': nFlags |= InsertDeleteFlags::FORMULA; break;
- case 'N': nFlags |= InsertDeleteFlags::NOTE; break;
- case 'T': nFlags |= InsertDeleteFlags::ATTRIB; break;
- case 'O': nFlags |= InsertDeleteFlags::OBJECTS; break;
- }
- }
+ nFlags |= FlagsFromString(aFlags, InsertDeleteFlags::ALL);
}
else
{
@@ -459,25 +465,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
if( pReqArgs->HasItem( FID_FILL_TAB, &pItem ) )
aFlags = static_cast<const SfxStringItem*>(pItem)->GetValue();
- aFlags = aFlags.toAsciiUpperCase();
- bool bCont = true;
-
- for (sal_Int32 i=0; bCont && i < aFlags.getLength(); ++i)
- {
- switch (aFlags[i])
- {
- case 'A': // all
- nFlags |= InsertDeleteFlags::ALL;
- bCont = false; // don't continue!
- break;
- case 'S': nFlags |= InsertDeleteFlags::STRING; break;
- case 'V': nFlags |= InsertDeleteFlags::VALUE; break;
- case 'D': nFlags |= InsertDeleteFlags::DATETIME; break;
- case 'F': nFlags |= InsertDeleteFlags::FORMULA; break;
- case 'N': nFlags |= InsertDeleteFlags::NOTE; break;
- case 'T': nFlags |= InsertDeleteFlags::ATTRIB; break;
- }
- }
+ nFlags |= FlagsFromString(aFlags);
}
else
{
@@ -1354,25 +1342,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
if( pReqArgs->HasItem( FID_INS_CELL_CONTENTS, &pItem ) )
aFlags = static_cast<const SfxStringItem*>(pItem)->GetValue();
- aFlags = aFlags.toAsciiUpperCase();
- bool bCont = true;
-
- for (sal_Int32 i=0 ; bCont && i<aFlags.getLength(); ++i)
- {
- switch (aFlags[i])
- {
- case 'A': // all
- nFlags |= InsertDeleteFlags::ALL;
- bCont = false; // don't continue!
- break;
- case 'S': nFlags |= InsertDeleteFlags::STRING; break;
- case 'V': nFlags |= InsertDeleteFlags::VALUE; break;
- case 'D': nFlags |= InsertDeleteFlags::DATETIME; break;
- case 'F': nFlags |= InsertDeleteFlags::FORMULA; break;
- case 'N': nFlags |= InsertDeleteFlags::NOTE; break;
- case 'T': nFlags |= InsertDeleteFlags::ATTRIB; break;
- }
- }
+ nFlags |= FlagsFromString(aFlags);
const SfxUInt16Item* pFuncItem = rReq.GetArg<SfxUInt16Item>(FN_PARAM_1);
const SfxBoolItem* pSkipItem = rReq.GetArg<SfxBoolItem>(FN_PARAM_2);