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:
virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel );
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();
......
......@@ -129,6 +129,8 @@
#include "cliputil.hxx"
#include "queryentry.hxx"
#include "markdata.hxx"
#include "checklistmenu.hrc"
#include "strload.hxx"
#include <svx/sdrpagewindow.hxx>
#include <svx/sdr/overlay/overlaymanager.hxx>
......@@ -704,6 +706,13 @@ void ScGridWindow::LaunchAutoFilterMenu(SCCOL nCol, SCROW nRow)
mpAutoFilterPopup->initMembers();
// 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(
SC_RESSTR(SCSTR_TOP10FILTER), true, new AutoFilterAction(this, Top10));
mpAutoFilterPopup->addMenuItem(
......@@ -746,6 +755,43 @@ void ScGridWindow::UpdateAutoFilterFromMenu(AutoFilterMode eMode)
if (!pDBData)
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)
{
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