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

Add sort options to the autofilter popup.

Change-Id: I217b41f966220b8b1ee9638d3f6a31a23dc4bf2e
üst 3da4ab93
...@@ -304,7 +304,7 @@ protected: ...@@ -304,7 +304,7 @@ protected:
virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel ); virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel );
public: public:
enum AutoFilterMode { Normal, Top10, Custom, Empty, NonEmpty }; enum AutoFilterMode { Normal, Top10, Custom, Empty, NonEmpty, SortAscending, SortDescending };
ScGridWindow( Window* pParent, ScViewData* pData, ScSplitPos eWhichPos ); ScGridWindow( Window* pParent, ScViewData* pData, ScSplitPos eWhichPos );
~ScGridWindow(); ~ScGridWindow();
......
...@@ -129,6 +129,8 @@ ...@@ -129,6 +129,8 @@
#include "cliputil.hxx" #include "cliputil.hxx"
#include "queryentry.hxx" #include "queryentry.hxx"
#include "markdata.hxx" #include "markdata.hxx"
#include "checklistmenu.hrc"
#include "strload.hxx"
#include <svx/sdrpagewindow.hxx> #include <svx/sdrpagewindow.hxx>
#include <svx/sdr/overlay/overlaymanager.hxx> #include <svx/sdr/overlay/overlaymanager.hxx>
...@@ -704,6 +706,13 @@ void ScGridWindow::LaunchAutoFilterMenu(SCCOL nCol, SCROW nRow) ...@@ -704,6 +706,13 @@ void ScGridWindow::LaunchAutoFilterMenu(SCCOL nCol, SCROW nRow)
mpAutoFilterPopup->initMembers(); mpAutoFilterPopup->initMembers();
// Populate the menu. // Populate the menu.
mpAutoFilterPopup->addMenuItem(
ScRscStrLoader(RID_POPUP_FILTER, STR_MENU_SORT_ASC).GetString(),
true, new AutoFilterAction(this, SortAscending));
mpAutoFilterPopup->addMenuItem(
ScRscStrLoader(RID_POPUP_FILTER, STR_MENU_SORT_DESC).GetString(),
true, new AutoFilterAction(this, SortDescending));
mpAutoFilterPopup->addSeparator();
mpAutoFilterPopup->addMenuItem( mpAutoFilterPopup->addMenuItem(
SC_RESSTR(SCSTR_TOP10FILTER), true, new AutoFilterAction(this, Top10)); SC_RESSTR(SCSTR_TOP10FILTER), true, new AutoFilterAction(this, Top10));
mpAutoFilterPopup->addMenuItem( mpAutoFilterPopup->addMenuItem(
...@@ -746,6 +755,43 @@ void ScGridWindow::UpdateAutoFilterFromMenu(AutoFilterMode eMode) ...@@ -746,6 +755,43 @@ void ScGridWindow::UpdateAutoFilterFromMenu(AutoFilterMode eMode)
if (!pDBData) if (!pDBData)
return; return;
switch (eMode)
{
case SortAscending:
case SortDescending:
{
ScDocument* pDoc = pViewData->GetDocument();
SCTAB nTab = pViewData->GetTabNo();
SCCOL nCol = rPos.Col();
ScSortParam aSortParam;
pDBData->GetSortParam(aSortParam);
if (nCol < aSortParam.nCol1 || nCol > aSortParam.nCol2)
// out of bound
return;
bool bHasHeader = pDoc->HasColHeader(
aSortParam.nCol1, aSortParam.nRow1, aSortParam.nCol2, aSortParam.nRow2, nTab);
aSortParam.bHasHeader = bHasHeader;
aSortParam.bByRow = true;
aSortParam.bCaseSens = false;
aSortParam.bNaturalSort = false;
aSortParam.bIncludePattern = true;
aSortParam.bInplace = true;
aSortParam.maKeyState[0].bDoSort = true;
aSortParam.maKeyState[0].nField = nCol;
aSortParam.maKeyState[0].bAscending = (eMode == SortAscending);
for (size_t i = 1; i < aSortParam.GetSortKeyCount(); ++i)
aSortParam.maKeyState[i].bDoSort = false;
pViewData->GetViewShell()->UISort(aSortParam);
return;
}
default:
;
}
if (eMode == Custom) if (eMode == Custom)
{ {
ScRange aRange; ScRange aRange;
......
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