diff options
author | Gulsah Kose <gulsah.1004@gmail.com> | 2018-01-17 19:09:13 +0300 |
---|---|---|
committer | Gülşah Köse <gulsah.1004@gmail.com> | 2018-01-24 13:29:55 +0100 |
commit | 844c92793c1399e2f14f671f964ea35e1bce24ac (patch) | |
tree | 678c6e33e945e70168a123d8e8d531ccb9ddc2eb /sc | |
parent | 2adf811370116cfb0e6280d74abdd733e078e8ff (diff) |
[Pardus] tdf#108989 Add contextual validity command.
When cursor is in a cell has following validity attributes
SC_VALID_WHOLE, SC_VALID_DECIMAL, SC_VALID_DATE,
SC_VALID_TIME,SC_VALID_TEXTLEN, SC_VALID_LIST,
SC_VALID_CUSTOM, Validity command appears on context
menu.
This patch is sponsored by ULAKBIM/Pardus project.
Change-Id: I47c0de7b62befdf02c343c1419cf32441d8f4df2
Signed-off-by: Gulsah Kose <gulsah.1004@gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/48067
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Heiko Tietze <tietze.heiko@gmail.com>
Tested-by: Heiko Tietze <tietze.heiko@gmail.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/inc/document.hxx | 1 | ||||
-rw-r--r-- | sc/inc/sc.hrc | 1 | ||||
-rw-r--r-- | sc/sdi/cellsh.sdi | 1 | ||||
-rw-r--r-- | sc/sdi/scalc.sdi | 18 | ||||
-rw-r--r-- | sc/source/core/data/document.cxx | 12 | ||||
-rw-r--r-- | sc/source/ui/view/cellsh.cxx | 6 | ||||
-rw-r--r-- | sc/source/ui/view/cellsh2.cxx | 1 | ||||
-rw-r--r-- | sc/uiconfig/scalc/popupmenu/cell.xml | 1 |
8 files changed, 40 insertions, 1 deletions
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index 77ad1046294a..c1c628fb451f 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -1135,6 +1135,7 @@ public: /** Returns true, if there is any data to create a selection list for rPos. */ bool HasSelectionData( SCCOL nCol, SCROW nRow, SCTAB nTab ) const; + bool HasValidationData( SCCOL nCol, SCROW nRow, SCTAB nTab ) const; /** * Check if the specified range contains either: 1) one non-empty cell, 2) diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc index ee3caa1d7e7c..b20f0680711f 100644 --- a/sc/inc/sc.hrc +++ b/sc/inc/sc.hrc @@ -549,6 +549,7 @@ #define SID_OLE_SELECT (SID_NEW_SLOTS+50) +#define FID_CURRENTVALIDATION (SID_NEW_SLOTS+51) #define SID_RANGE_NOTETEXT (SID_NEW_SLOTS+52) #define FID_INSERT_FILE (SID_NEW_SLOTS+53) diff --git a/sc/sdi/cellsh.sdi b/sc/sdi/cellsh.sdi index decb76cfc659..b21769d8d258 100644 --- a/sc/sdi/cellsh.sdi +++ b/sc/sdi/cellsh.sdi @@ -60,6 +60,7 @@ interface CellSelection SID_SUBTOTALS [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ] SID_PIVOT_TABLE [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ] FID_VALIDATION [ ExecMethod = ExecuteDB; StateMethod = GetBlockState; ] + FID_CURRENTVALIDATION [ ExecMethod = ExecuteDB; StateMethod = GetState; ] SID_TEXT_TO_COLUMNS [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ] // } database operations diff --git a/sc/sdi/scalc.sdi b/sc/sdi/scalc.sdi index 6db3054a7cf6..956bacaae8e3 100644 --- a/sc/sdi/scalc.sdi +++ b/sc/sdi/scalc.sdi @@ -5618,6 +5618,24 @@ SfxVoidItem Validation FID_VALIDATION ] +SfxVoidItem CurrentValidation FID_CURRENTVALIDATION +() +[ + AutoUpdate = FALSE, + FastCall = FALSE, + ReadOnlyDoc = TRUE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + + AccelConfig = TRUE, + MenuConfig = TRUE, + ToolBoxConfig = TRUE, + GroupId = SfxGroupId::Data; +] + + ScDoubleItem Value SID_RANGE_VALUE [ diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index f4e2d98bb41c..44bef6c0310e 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -3820,6 +3820,18 @@ bool ScDocument::HasSelectionData( SCCOL nCol, SCROW nRow, SCTAB nTab ) const return HasStringCells( ScRange( nCol, 0, nTab, nCol, MAXROW, nTab ) ); } +bool ScDocument::HasValidationData( SCCOL nCol, SCROW nRow, SCTAB nTab ) const +{ + sal_uInt32 nValidation = static_cast< const SfxUInt32Item* >( GetAttr( nCol, nRow, nTab, ATTR_VALIDDATA ) )->GetValue(); + if( nValidation ) + { + const ScValidationData* pData = GetValidationEntry( nValidation ); + if( pData && pData->GetDataMode() != ScValidationMode::SC_VALID_ANY ) + return true; + } + return false; +} + void ScDocument::CheckVectorizationState() { bool bOldAutoCalc = GetAutoCalc(); diff --git a/sc/source/ui/view/cellsh.cxx b/sc/source/ui/view/cellsh.cxx index 92b389504b99..7157d112f766 100644 --- a/sc/source/ui/view/cellsh.cxx +++ b/sc/source/ui/view/cellsh.cxx @@ -301,7 +301,6 @@ void ScCellShell::GetBlockState( SfxItemSet& rSet ) } } break; - case SID_TRANSLITERATE_HALFWIDTH: case SID_TRANSLITERATE_FULLWIDTH: case SID_TRANSLITERATE_HIRAGANA: @@ -836,6 +835,11 @@ void ScCellShell::GetState(SfxItemSet &rSet) rSet.DisableItem( nWhich ); break; + case FID_CURRENTVALIDATION: + if ( !pDoc->HasValidationData( nPosX, nPosY, nTab )) + rSet.DisableItem( nWhich ); + break; + case SID_STATUS_SUM: { OUString aFuncStr; diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx index ce5fb36a4bb7..cfd3a4cbe28a 100644 --- a/sc/source/ui/view/cellsh2.cxx +++ b/sc/source/ui/view/cellsh2.cxx @@ -806,6 +806,7 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq ) ExecuteXMLSourceDialog(); break; case FID_VALIDATION: + case FID_CURRENTVALIDATION: { const SfxPoolItem* pItem; const SfxItemSet* pArgs = rReq.GetArgs(); diff --git a/sc/uiconfig/scalc/popupmenu/cell.xml b/sc/uiconfig/scalc/popupmenu/cell.xml index 7412caf636ff..fada79e703ce 100644 --- a/sc/uiconfig/scalc/popupmenu/cell.xml +++ b/sc/uiconfig/scalc/popupmenu/cell.xml @@ -39,4 +39,5 @@ <menu:menuitem menu:id=".uno:HideNote"/> <menu:menuseparator/> <menu:menuitem menu:id=".uno:DataSelect"/> + <menu:menuitem menu:id=".uno:CurrentValidation"/> </menu:menupopup> |