Kaydet (Commit) 2d5c1a3f authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Even more cleanup and fixing.

üst d049b05a
......@@ -60,8 +60,8 @@ namespace com { namespace sun { namespace star { namespace sheet {
#define SC_DAPI_LEVEL_QUARTER 1
#define SC_DAPI_LEVEL_MONTH 2
#define SC_DAPI_LEVEL_DAY 3
#define SC_DAPI_LEVEL_WEEK 1
#define SC_DAPI_LEVEL_WEEKDAY 2
#define SC_DAPI_LEVEL_WEEK 4
#define SC_DAPI_LEVEL_WEEKDAY 5
//
......
......@@ -128,7 +128,6 @@ public:
void RemoveReference(ScDPObject* pObj) const;
const ObjectSetType& GetAllReferences() const;
SCROW GetIdByItemData(long nDim, const rtl::OUString& sItemData) const;
SCROW GetIdByItemData(long nDim, const ScDPItemData& rItem) const;
rtl::OUString GetFormattedString(long nDim, const ScDPItemData& rItem) const;
long AppendGroupField();
......@@ -138,8 +137,6 @@ public:
void GetGroupDimMemberIds(long nDim, std::vector<SCROW>& rIds) const;
void ClearGroupFields();
SCROW GetAdditionalItemID( const ScDPItemData& rData ) const;
SCCOL GetDimensionIndex(const rtl::OUString& sName) const;
sal_uLong GetNumberFormat( long nDim ) const;
bool IsDateDimension( long nDim ) const ;
......
......@@ -872,49 +872,6 @@ const ScDPCache::ObjectSetType& ScDPCache::GetAllReferences() const
return maRefObjects;
}
SCROW ScDPCache::GetIdByItemData(long nDim, const rtl::OUString& sItemData) const
{
if (nDim < 0)
return -1;
if (nDim < mnColumnCount)
{
// source field.
const DataListType& rItems = maFields[nDim].maItems;
for (size_t i = 0, n = rItems.size(); i < n; ++i)
{
if (rItems[i].GetString() == sItemData)
return i;
}
if (!maFields[nDim].mpGroup)
return -1;
// grouped source field.
const DataListType& rGI = maFields[nDim].mpGroup->maItems;
for (size_t i = 0, n = rGI.size(); i < n; ++i)
{
if (rGI[i].GetString() == sItemData)
return rItems.size() + i;
}
return -1;
}
// group field.
nDim -= mnColumnCount;
if (static_cast<size_t>(nDim) < maGroupFields.size())
{
const DataListType& rGI = maGroupFields[nDim].maItems;
for (size_t i = 0, n = rGI.size(); i < n; ++i)
{
if (rGI[i].GetString() == sItemData)
return i;
}
}
return -1;
}
SCROW ScDPCache::GetIdByItemData(long nDim, const ScDPItemData& rItem) const
{
if (nDim < 0)
......@@ -1125,13 +1082,6 @@ void ScDPCache::ClearGroupFields()
std::for_each(maFields.begin(), maFields.end(), ClearGroupItems());
}
SCROW ScDPCache::GetAdditionalItemID(const ScDPItemData&) const
{
fprintf(stdout, "ScDPCache::GetAdditionalItemID: FIXME\n");
return -1;
}
SCROW ScDPCache::GetOrder(long nDim, SCROW nIndex) const
{
OSL_ENSURE( IsValid(), " IsValid() == false " );
......
......@@ -66,6 +66,7 @@
#include <com/sun/star/sheet/DataPilotFieldFilter.hpp>
#include <com/sun/star/sheet/DataPilotFieldReferenceType.hpp>
#include <com/sun/star/sheet/DataPilotFieldSortMode.hpp>
#include <com/sun/star/sheet/DataPilotFieldGroupBy.hpp>
#include <com/sun/star/sheet/DataPilotFieldAutoShowInfo.hpp>
#include <com/sun/star/table/CellAddress.hpp>
......@@ -2490,7 +2491,8 @@ ScDPMember* ScDPMembers::getByIndex(long nIndex) const
}
else if ( nHier != SC_DAPI_HIERARCHY_FLAT && pSource->IsDateDimension( nSrcDim ) )
{
long nVal = 0;
sal_Int32 nGroupBy = 0;
sal_Int32 nVal = 0;
rtl::OUString aName;
if ( nLev == SC_DAPI_LEVEL_YEAR ) // YEAR is in both hierarchies
......@@ -2521,14 +2523,33 @@ ScDPMember* ScDPMembers::getByIndex(long nIndex) const
else
nVal = nIndex + 1; // Quarter, Day, Week are 1-based
switch (nLev)
{
case SC_DAPI_LEVEL_YEAR:
nGroupBy = sheet::DataPilotFieldGroupBy::YEARS;
break;
case SC_DAPI_LEVEL_QUARTER:
case SC_DAPI_LEVEL_WEEK:
nGroupBy = sheet::DataPilotFieldGroupBy::QUARTERS;
break;
case SC_DAPI_LEVEL_MONTH:
case SC_DAPI_LEVEL_WEEKDAY:
nGroupBy = sheet::DataPilotFieldGroupBy::MONTHS;
break;
case SC_DAPI_LEVEL_DAY:
nGroupBy = sheet::DataPilotFieldGroupBy::DAYS;
break;
nGroupBy = sheet::DataPilotFieldGroupBy::YEARS;
break;
default:
;
}
if (aName.isEmpty())
aName = rtl::OUString::valueOf(nVal);
// TODO: This needs fixing.
fprintf(stdout, "ScDPMembers::getByIndex: FIXME\n");
ScDPItemData aData(nVal);
pNew = new ScDPMember(
pSource, nDim, nHier, nLev, pSource->GetCache()->GetAdditionalItemID(aData));
ScDPItemData aData(nGroupBy, nVal);
SCROW nId = pSource->GetCache()->GetIdByItemData(nDim, aData);
pNew = new ScDPMember(pSource, nDim, nHier, nLev, nId);
}
else
{
......
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