tdf#162475 sc: added date condition option in conditional format manage dialog
Change-Id: I453b4ef47bed1607f42fbb3e48303531c6f355a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169323 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Szymon Kłos <szymon.klos@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170911 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Jenkins
This commit is contained in:
committed by
Caolán McNamara
parent
20350c7f10
commit
723e035e1f
@@ -85,6 +85,20 @@ enum class ScConditionMode
|
||||
EndsWith,
|
||||
ContainsText,
|
||||
NotContainsText,
|
||||
Formula,
|
||||
Today,
|
||||
Yesterday,
|
||||
Tomorrow,
|
||||
Last7days,
|
||||
ThisWeek,
|
||||
LastWeek,
|
||||
NextWeek,
|
||||
ThisMonth,
|
||||
LastMonth,
|
||||
NextMonth,
|
||||
ThisYear,
|
||||
LastYear,
|
||||
NextYear,
|
||||
NONE
|
||||
};
|
||||
|
||||
@@ -169,6 +183,48 @@ inline std::basic_ostream<charT, traits> & operator <<(std::basic_ostream<charT,
|
||||
case ScConditionMode::NotContainsText:
|
||||
stream << "NOTCONTAINSTEXT";
|
||||
break;
|
||||
case ScConditionMode::Formula:
|
||||
stream << "FORMULA";
|
||||
break;
|
||||
case ScConditionMode::Today:
|
||||
stream << "TODAY";
|
||||
break;
|
||||
case ScConditionMode::Yesterday:
|
||||
stream << "YESTERDAY";
|
||||
break;
|
||||
case ScConditionMode::Tomorrow:
|
||||
stream << "TOMORROW";
|
||||
break;
|
||||
case ScConditionMode::Last7days:
|
||||
stream << "LAST7DAYS";
|
||||
break;
|
||||
case ScConditionMode::ThisWeek:
|
||||
stream << "THISWEEK";
|
||||
break;
|
||||
case ScConditionMode::LastWeek:
|
||||
stream << "LASTWEEK";
|
||||
break;
|
||||
case ScConditionMode::NextWeek:
|
||||
stream << "NEXTWEEK";
|
||||
break;
|
||||
case ScConditionMode::ThisMonth:
|
||||
stream << "THISMONTH";
|
||||
break;
|
||||
case ScConditionMode::LastMonth:
|
||||
stream << "LASTMONTH";
|
||||
break;
|
||||
case ScConditionMode::NextMonth:
|
||||
stream << "NEXTMONTH";
|
||||
break;
|
||||
case ScConditionMode::ThisYear:
|
||||
stream << "THISYEAR";
|
||||
break;
|
||||
case ScConditionMode::LastYear:
|
||||
stream << "LASTYEAR";
|
||||
break;
|
||||
case ScConditionMode::NextYear:
|
||||
stream << "NEXTYEAR";
|
||||
break;
|
||||
case ScConditionMode::NONE:
|
||||
stream << "NONE";
|
||||
break;
|
||||
|
||||
+39
-24
@@ -398,31 +398,46 @@
|
||||
#define STR_A11Y_DESC_ANNOT NC_("extended_tip|annot", "Specifies that a small rectangle in the top right corner of the cell indicates that a comment exists. The comment will be shown only when you enable tips under %PRODUCTNAME - General in the Options dialog box.")
|
||||
|
||||
// Simple conditional formatting dialog
|
||||
#define STR_CONDITION_EQUAL NC_("STR_CONDITION_EQUAL", "equal to")
|
||||
#define STR_CONDITION_LESS NC_("STR_CONDITION_LESS", "less than")
|
||||
#define STR_CONDITION_GREATER NC_("STR_CONDITION_GREATER", "greater than")
|
||||
#define STR_CONDITION_EQLESS NC_("STR_CONDITION_EQLESS", "equal or less than")
|
||||
#define STR_CONDITION_EQGREATER NC_("STR_CONDITION_EQGREATER", "equal or greater than")
|
||||
#define STR_CONDITION_NOT_EQUAL NC_("STR_CONDITION_NOT_EQUAL", "not equal to")
|
||||
#define STR_CONDITION_EQUAL NC_("STR_CONDITION_EQUAL", "values equal to")
|
||||
#define STR_CONDITION_LESS NC_("STR_CONDITION_LESS", "values less than")
|
||||
#define STR_CONDITION_GREATER NC_("STR_CONDITION_GREATER", "values greater than")
|
||||
#define STR_CONDITION_EQLESS NC_("STR_CONDITION_EQLESS", "values equal or less than")
|
||||
#define STR_CONDITION_EQGREATER NC_("STR_CONDITION_EQGREATER", "values equal or greater than")
|
||||
#define STR_CONDITION_NOT_EQUAL NC_("STR_CONDITION_NOT_EQUAL", "values not equal to")
|
||||
|
||||
#define STR_CONDITION_BETWEEN NC_("STR_CONDITION_BETWEEN", "values between")
|
||||
#define STR_CONDITION_NOT_BETWEEN NC_("STR_CONDITION_NOT_BETWEEN", "values not between")
|
||||
#define STR_CONDITION_DUPLICATE NC_("STR_CONDITION_DUPLICATE", "values duplicate")
|
||||
#define STR_CONDITION_NOT_DUPLICATE NC_("STR_CONDITION_NOT_DUPLICATE", "values not duplicate")
|
||||
#define STR_CONDITION_TOP_N_ELEMENTS NC_("STR_CONDITION_TOP_N_ELEMENTS", "values in top N elements")
|
||||
#define STR_CONDITION_BOTTOM_N_ELEMENTS NC_("STR_CONDITION_BOTTOM_N_ELEMENTS", "values in bottom N elements")
|
||||
#define STR_CONDITION_TOP_N_PERCENT NC_("STR_CONDITION_TOP_N_PERCENT", "values in top N percent")
|
||||
#define STR_CONDITION_BOTTOM_N_PERCENT NC_("STR_CONDITION_BOTTOM_N_PERCENT", "values in bottom N percent")
|
||||
#define STR_CONDITION_ABOVE_AVERAGE NC_("STR_CONDITION_ABOVE_AVERAGE", "values above average")
|
||||
#define STR_CONDITION_BELOW_AVERAGE NC_("STR_CONDITION_BELOW_AVERAGE", "values below average")
|
||||
#define STR_CONDITION_ABOVE_OR_EQUAL_AVERAGE NC_("STR_CONDITION_ABOVE_OR_EQUAL_AVERAGE", "values above or equal average")
|
||||
#define STR_CONDITION_BELOW_OR_EQUAL_AVERAGE NC_("STR_CONDITION_BELOW_OR_EQUAL_AVERAGE", "values below or equal average")
|
||||
#define STR_CONDITION_ERROR NC_("STR_CONDITION_ERROR", "values have error")
|
||||
#define STR_CONDITION_NOERROR NC_("STR_CONDITION_NOERROR", "values don't have error")
|
||||
#define STR_CONDITION_BEGINS_WITH NC_("STR_CONDITION_BEGINS_WITH", "values begin with")
|
||||
#define STR_CONDITION_ENDS_WITH NC_("STR_CONDITION_ENDS_WITH", "values end with")
|
||||
#define STR_CONDITION_CONTAINS_TEXT NC_("STR_CONDITION_CONTAINS_TEXT", "values contain text")
|
||||
#define STR_CONDITION_NOT_CONTAINS_TEXT NC_("STR_CONDITION_NOT_CONTAINS_TEXT", "values don't contain text")
|
||||
#define STR_CONDITION_FORMULA NC_("STR_CONDITION_FORMULA", "formula is")
|
||||
#define STR_CONDITION_TODAY NC_("STR_CONDITION_TODAY", "date is today")
|
||||
#define STR_CONDITION_YESTERDAY NC_("STR_CONDITION_YESTERDAY", "date is yesterday")
|
||||
#define STR_CONDITION_TOMORROW NC_("STR_CONDITION_TOMORROW", "date is tomorrow")
|
||||
#define STR_CONDITION_LAST7DAYS NC_("STR_CONDITION_LAST7DAYS", "date is in last 7 days")
|
||||
#define STR_CONDITION_THISWEEK NC_("STR_CONDITION_THISWEEK", "date is in this week")
|
||||
#define STR_CONDITION_LASTWEEK NC_("STR_CONDITION_LASTWEEK", "date is in last week")
|
||||
#define STR_CONDITION_NEXTWEEK NC_("STR_CONDITION_NEXTWEEK", "date is in next week")
|
||||
#define STR_CONDITION_THISMONTH NC_("STR_CONDITION_THISMONTH", "date is in this month")
|
||||
#define STR_CONDITION_LASTMONTH NC_("STR_CONDITION_LASTMONTH", "date is in last month")
|
||||
#define STR_CONDITION_NEXTMONTH NC_("STR_CONDITION_NEXTMONTH", "date is in next month")
|
||||
#define STR_CONDITION_THISYEAR NC_("STR_CONDITION_THISYEAR", "date is in this year")
|
||||
#define STR_CONDITION_LASTYEAR NC_("STR_CONDITION_LASTYEAR", "date is in last year")
|
||||
#define STR_CONDITION_NEXTYEAR NC_("STR_CONDITION_NEXTYEAR", "date is in next year")
|
||||
|
||||
#define STR_CONDITION_BETWEEN NC_("STR_CONDITION_BETWEEN", "between")
|
||||
#define STR_CONDITION_NOT_BETWEEN NC_("STR_CONDITION_NOT_BETWEEN", "not between")
|
||||
#define STR_CONDITION_DUPLICATE NC_("STR_CONDITION_DUPLICATE", "duplicate")
|
||||
#define STR_CONDITION_NOT_DUPLICATE NC_("STR_CONDITION_NOT_DUPLICATE", "not duplicate")
|
||||
#define STR_CONDITION_TOP_N_ELEMENTS NC_("STR_CONDITION_TOP_N_ELEMENTS", "in top N elements")
|
||||
#define STR_CONDITION_BOTTOM_N_ELEMENTS NC_("STR_CONDITION_BOTTOM_N_ELEMENTS", "in bottom N elements")
|
||||
#define STR_CONDITION_TOP_N_PERCENT NC_("STR_CONDITION_TOP_N_PERCENT", "in top N percent")
|
||||
#define STR_CONDITION_BOTTOM_N_PERCENT NC_("STR_CONDITION_BOTTOM_N_PERCENT", "in bottom N percent")
|
||||
#define STR_CONDITION_ABOVE_AVERAGE NC_("STR_CONDITION_ABOVE_AVERAGE", "above average")
|
||||
#define STR_CONDITION_BELOW_AVERAGE NC_("STR_CONDITION_BELOW_AVERAGE", "below average")
|
||||
#define STR_CONDITION_ABOVE_OR_EQUAL_AVERAGE NC_("STR_CONDITION_ABOVE_OR_EQUAL_AVERAGE", "above or equal average")
|
||||
#define STR_CONDITION_BELOW_OR_EQUAL_AVERAGE NC_("STR_CONDITION_BELOW_OR_EQUAL_AVERAGE", "below or equal average")
|
||||
#define STR_CONDITION_ERROR NC_("STR_CONDITION_ERROR", "with error ")
|
||||
#define STR_CONDITION_NOERROR NC_("STR_CONDITION_NOERROR", "without error ")
|
||||
#define STR_CONDITION_BEGINS_WITH NC_("STR_CONDITION_BEGINS_WITH", "begins with")
|
||||
#define STR_CONDITION_ENDS_WITH NC_("STR_CONDITION_ENDS_WITH", "ends with")
|
||||
#define STR_CONDITION_CONTAINS_TEXT NC_("STR_CONDITION_CONTAINS_TEXT", "containing text")
|
||||
#define STR_CONDITION_NOT_CONTAINS_TEXT NC_("STR_CONDITION_NOT_CONTAINS_TEXT", "not containing text")
|
||||
|
||||
#define STR_CONTENT_WITH_UNKNOWN_ENCRYPTION NC_("STR_CONTENT_WITH_UNKNOWN_ENCRYPTION", "Document contains DRM content that is encrypted with an unknown encryption method. Only the un-encrypted content will be shown.")
|
||||
|
||||
|
||||
@@ -1139,6 +1139,22 @@ bool ScConditionEntry::IsValid( double nArg, const ScAddress& rPos ) const
|
||||
if( eOp == ScConditionMode::NotContainsText )
|
||||
bValid = !bValid;
|
||||
break;
|
||||
case ScConditionMode::Formula:
|
||||
case ScConditionMode::Today:
|
||||
case ScConditionMode::Yesterday:
|
||||
case ScConditionMode::Tomorrow:
|
||||
case ScConditionMode::Last7days:
|
||||
case ScConditionMode::ThisWeek:
|
||||
case ScConditionMode::LastWeek:
|
||||
case ScConditionMode::NextWeek:
|
||||
case ScConditionMode::ThisMonth:
|
||||
case ScConditionMode::LastMonth:
|
||||
case ScConditionMode::NextMonth:
|
||||
case ScConditionMode::ThisYear:
|
||||
case ScConditionMode::LastYear:
|
||||
case ScConditionMode::NextYear:
|
||||
bValid = true;
|
||||
break;
|
||||
default:
|
||||
SAL_WARN("sc", "unknown operation at ScConditionEntry");
|
||||
break;
|
||||
|
||||
@@ -128,32 +128,45 @@ void FillStyleListBox( const ScDocument* pDoc, weld::ComboBox& rLbStyle )
|
||||
|
||||
}
|
||||
|
||||
const ScConditionMode ScConditionFrmtEntry::mpEntryToCond[ScConditionFrmtEntry::NUM_COND_ENTRIES] = {
|
||||
ScConditionMode::Equal,
|
||||
ScConditionMode::Less,
|
||||
ScConditionMode::Greater,
|
||||
ScConditionMode::EqLess,
|
||||
ScConditionMode::EqGreater,
|
||||
ScConditionMode::NotEqual,
|
||||
ScConditionMode::Between,
|
||||
ScConditionMode::NotBetween,
|
||||
ScConditionMode::Duplicate,
|
||||
ScConditionMode::NotDuplicate,
|
||||
ScConditionMode::Top10,
|
||||
ScConditionMode::Bottom10,
|
||||
ScConditionMode::TopPercent,
|
||||
ScConditionMode::BottomPercent,
|
||||
ScConditionMode::AboveAverage,
|
||||
ScConditionMode::BelowAverage,
|
||||
ScConditionMode::AboveEqualAverage,
|
||||
ScConditionMode::BelowEqualAverage,
|
||||
ScConditionMode::Error,
|
||||
ScConditionMode::NoError,
|
||||
ScConditionMode::BeginsWith,
|
||||
ScConditionMode::EndsWith,
|
||||
ScConditionMode::ContainsText,
|
||||
ScConditionMode::NotContainsText
|
||||
};
|
||||
const ScConditionMode ScConditionFrmtEntry::mpEntryToCond[ScConditionFrmtEntry::NUM_COND_ENTRIES]
|
||||
= { ScConditionMode::Equal,
|
||||
ScConditionMode::Less,
|
||||
ScConditionMode::Greater,
|
||||
ScConditionMode::EqLess,
|
||||
ScConditionMode::EqGreater,
|
||||
ScConditionMode::NotEqual,
|
||||
ScConditionMode::Between,
|
||||
ScConditionMode::NotBetween,
|
||||
ScConditionMode::Duplicate,
|
||||
ScConditionMode::NotDuplicate,
|
||||
ScConditionMode::Top10,
|
||||
ScConditionMode::Bottom10,
|
||||
ScConditionMode::TopPercent,
|
||||
ScConditionMode::BottomPercent,
|
||||
ScConditionMode::AboveAverage,
|
||||
ScConditionMode::BelowAverage,
|
||||
ScConditionMode::AboveEqualAverage,
|
||||
ScConditionMode::BelowEqualAverage,
|
||||
ScConditionMode::Error,
|
||||
ScConditionMode::NoError,
|
||||
ScConditionMode::BeginsWith,
|
||||
ScConditionMode::EndsWith,
|
||||
ScConditionMode::ContainsText,
|
||||
ScConditionMode::NotContainsText,
|
||||
ScConditionMode::Formula,
|
||||
ScConditionMode::Today,
|
||||
ScConditionMode::Yesterday,
|
||||
ScConditionMode::Tomorrow,
|
||||
ScConditionMode::Last7days,
|
||||
ScConditionMode::ThisWeek,
|
||||
ScConditionMode::LastWeek,
|
||||
ScConditionMode::NextWeek,
|
||||
ScConditionMode::ThisMonth,
|
||||
ScConditionMode::LastMonth,
|
||||
ScConditionMode::NextMonth,
|
||||
ScConditionMode::ThisYear,
|
||||
ScConditionMode::LastYear,
|
||||
ScConditionMode::NextYear };
|
||||
|
||||
ScConditionFrmtEntry::ScConditionFrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, ScCondFormatDlg* pDialogParent,
|
||||
const ScAddress& rPos, const ScCondFormatEntry* pFormatEntry)
|
||||
@@ -357,6 +370,20 @@ sal_Int32 ScConditionFrmtEntry::GetNumberEditFields( ScConditionMode eMode )
|
||||
case ScConditionMode::BelowEqualAverage:
|
||||
case ScConditionMode::Duplicate:
|
||||
case ScConditionMode::NotDuplicate:
|
||||
case ScConditionMode::Formula:
|
||||
case ScConditionMode::Today:
|
||||
case ScConditionMode::Yesterday:
|
||||
case ScConditionMode::Tomorrow:
|
||||
case ScConditionMode::Last7days:
|
||||
case ScConditionMode::ThisWeek:
|
||||
case ScConditionMode::LastWeek:
|
||||
case ScConditionMode::NextWeek:
|
||||
case ScConditionMode::ThisMonth:
|
||||
case ScConditionMode::LastMonth:
|
||||
case ScConditionMode::NextMonth:
|
||||
case ScConditionMode::ThisYear:
|
||||
case ScConditionMode::LastYear:
|
||||
case ScConditionMode::NextYear:
|
||||
return 0;
|
||||
case ScConditionMode::Between:
|
||||
case ScConditionMode::NotBetween:
|
||||
|
||||
@@ -31,6 +31,41 @@ void UpdateStyleList(const ScDocument* pDocument, weld::ComboBox& rCombo)
|
||||
FillStyleListBox(pDocument, rCombo);
|
||||
rCombo.set_active_text(sSelectedStyle);
|
||||
}
|
||||
|
||||
condformat::ScCondFormatDateType GetScCondFormatDateType(ScConditionMode mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case ScConditionMode::Today:
|
||||
return condformat::ScCondFormatDateType::TODAY;
|
||||
case ScConditionMode::Yesterday:
|
||||
return condformat::ScCondFormatDateType::YESTERDAY;
|
||||
case ScConditionMode::Tomorrow:
|
||||
return condformat::ScCondFormatDateType::TOMORROW;
|
||||
case ScConditionMode::Last7days:
|
||||
return condformat::ScCondFormatDateType::LAST7DAYS;
|
||||
case ScConditionMode::ThisWeek:
|
||||
return condformat::ScCondFormatDateType::THISWEEK;
|
||||
case ScConditionMode::LastWeek:
|
||||
return condformat::ScCondFormatDateType::LASTWEEK;
|
||||
case ScConditionMode::NextWeek:
|
||||
return condformat::ScCondFormatDateType::NEXTWEEK;
|
||||
case ScConditionMode::ThisMonth:
|
||||
return condformat::ScCondFormatDateType::THISMONTH;
|
||||
case ScConditionMode::LastMonth:
|
||||
return condformat::ScCondFormatDateType::LASTMONTH;
|
||||
case ScConditionMode::NextMonth:
|
||||
return condformat::ScCondFormatDateType::NEXTMONTH;
|
||||
case ScConditionMode::ThisYear:
|
||||
return condformat::ScCondFormatDateType::THISYEAR;
|
||||
case ScConditionMode::LastYear:
|
||||
return condformat::ScCondFormatDateType::LASTYEAR;
|
||||
case ScConditionMode::NextYear:
|
||||
return condformat::ScCondFormatDateType::NEXTYEAR;
|
||||
default:
|
||||
return condformat::ScCondFormatDateType::TODAY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace sc
|
||||
@@ -162,6 +197,62 @@ ConditionalFormatEasyDialog::ConditionalFormatEasyDialog(SfxBindings* pBindings,
|
||||
case ScConditionMode::NotContainsText:
|
||||
SetDescription(ScResId(STR_CONDITION_NOT_CONTAINS_TEXT));
|
||||
break;
|
||||
case ScConditionMode::Formula:
|
||||
SetDescription(ScResId(STR_CONDITION_FORMULA));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
case ScConditionMode::Today:
|
||||
SetDescription(ScResId(STR_CONDITION_TODAY));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
case ScConditionMode::Yesterday:
|
||||
SetDescription(ScResId(STR_CONDITION_YESTERDAY));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
case ScConditionMode::Tomorrow:
|
||||
SetDescription(ScResId(STR_CONDITION_TOMORROW));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
case ScConditionMode::Last7days:
|
||||
SetDescription(ScResId(STR_CONDITION_LAST7DAYS));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
case ScConditionMode::ThisWeek:
|
||||
SetDescription(ScResId(STR_CONDITION_THISWEEK));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
case ScConditionMode::LastWeek:
|
||||
SetDescription(ScResId(STR_CONDITION_LASTWEEK));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
case ScConditionMode::NextWeek:
|
||||
SetDescription(ScResId(STR_CONDITION_NEXTWEEK));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
case ScConditionMode::ThisMonth:
|
||||
SetDescription(ScResId(STR_CONDITION_THISMONTH));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
case ScConditionMode::LastMonth:
|
||||
SetDescription(ScResId(STR_CONDITION_LASTMONTH));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
case ScConditionMode::NextMonth:
|
||||
SetDescription(ScResId(STR_CONDITION_NEXTMONTH));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
case ScConditionMode::ThisYear:
|
||||
SetDescription(ScResId(STR_CONDITION_THISYEAR));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
case ScConditionMode::LastYear:
|
||||
SetDescription(ScResId(STR_CONDITION_LASTYEAR));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
case ScConditionMode::NextYear:
|
||||
SetDescription(ScResId(STR_CONDITION_NEXTYEAR));
|
||||
mxAllInputs->hide();
|
||||
break;
|
||||
default:
|
||||
SAL_WARN("sc",
|
||||
"ConditionalFormatEasyDialog::ConditionalFormatEasyDialog: invalid format");
|
||||
@@ -259,9 +350,29 @@ IMPL_LINK(ConditionalFormatEasyDialog, ButtonPressed, weld::Button&, rButton, vo
|
||||
break;
|
||||
}
|
||||
|
||||
ScFormatEntry* pEntry
|
||||
= new ScCondFormatEntry(meMode, sExpression1, sExpression2, *mpDocument, maPosition,
|
||||
mxStyles->get_active_text());
|
||||
ScFormatEntry* pEntry;
|
||||
if (meMode < ScConditionMode::Formula)
|
||||
{
|
||||
pEntry = new ScCondFormatEntry(meMode, sExpression1, sExpression2, *mpDocument,
|
||||
maPosition, mxStyles->get_active_text());
|
||||
}
|
||||
else if (meMode >= ScConditionMode::Today && meMode < ScConditionMode::NONE)
|
||||
{
|
||||
ScCondDateFormatEntry entry(mpDocument);
|
||||
entry.SetDateType(GetScCondFormatDateType(meMode));
|
||||
entry.SetStyleName(mxStyles->get_active_text());
|
||||
pEntry = new ScCondDateFormatEntry(mpDocument, entry);
|
||||
}
|
||||
else if (meMode == ScConditionMode::Formula)
|
||||
{
|
||||
pEntry = new ScCondFormatEntry(ScConditionMode::Direct, "", OUString(), *mpDocument,
|
||||
maPosition, mxStyles->get_active_text());
|
||||
}
|
||||
else
|
||||
{
|
||||
DBG_ASSERT(false, "Invalid conidtion type selected.");
|
||||
return;
|
||||
}
|
||||
|
||||
ScRangeList aRange;
|
||||
ScRefFlags nFlags
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <svl/eitem.hxx>
|
||||
#include <svl/intitem.hxx>
|
||||
#include <unotools/viewoptions.hxx>
|
||||
#include <iostream>
|
||||
|
||||
ScCondFormatManagerWindow::ScCondFormatManagerWindow(weld::TreeView& rTreeView,
|
||||
ScDocument& rDoc, ScConditionalFormatList* pFormatList)
|
||||
@@ -98,6 +99,8 @@ ScCondFormatManagerDlg::ScCondFormatManagerDlg(weld::Window* pParent, ScDocument
|
||||
, m_xFormatList( pFormatList ? new ScConditionalFormatList(*pFormatList) : nullptr)
|
||||
, m_xConditionalType(m_xBuilder->weld_combo_box("type"))
|
||||
, m_xConditionalCellValue(m_xBuilder->weld_combo_box("typeis"))
|
||||
, m_xConditionalFormula(m_xBuilder->weld_entry("formula"))
|
||||
, m_xConditionalDate(m_xBuilder->weld_combo_box("datetype"))
|
||||
, m_xBtnAdd(m_xBuilder->weld_button(u"add"_ustr))
|
||||
, m_xBtnRemove(m_xBuilder->weld_button(u"remove"_ustr))
|
||||
, m_xBtnEdit(m_xBuilder->weld_button(u"edit"_ustr))
|
||||
@@ -108,6 +111,8 @@ ScCondFormatManagerDlg::ScCondFormatManagerDlg(weld::Window* pParent, ScDocument
|
||||
m_xBtnEdit->connect_clicked(LINK(this, ScCondFormatManagerDlg, EditBtnClickHdl));
|
||||
m_xBtnAdd->connect_clicked(LINK(this, ScCondFormatManagerDlg, AddBtnHdl));
|
||||
m_xTreeView->connect_row_activated(LINK(this, ScCondFormatManagerDlg, EditBtnHdl));
|
||||
m_xTreeView->connect_changed(LINK(this, ScCondFormatManagerDlg, EntryFocus));
|
||||
m_xConditionalType->connect_changed(LINK(this, ScCondFormatManagerDlg, ComboHdl));
|
||||
|
||||
SvtViewOptions aDlgOpt(EViewType::Dialog, u"CondFormatDialog"_ustr);
|
||||
if (aDlgOpt.Exists())
|
||||
@@ -148,13 +153,29 @@ void ScCondFormatManagerDlg::ShowEasyConditionalDialog()
|
||||
return;
|
||||
|
||||
auto id = m_xConditionalType->get_active();
|
||||
SfxBoolItem IsManaged(FN_PARAM_2, true);
|
||||
switch (id)
|
||||
{
|
||||
case 0: // Cell value
|
||||
{
|
||||
SfxInt16Item FormatRule(FN_PARAM_1,
|
||||
m_xConditionalCellValue->get_active_id().toUInt32());
|
||||
SfxBoolItem IsManaged(FN_PARAM_2, true);
|
||||
SfxViewShell::Current()->GetDispatcher()->ExecuteList(
|
||||
SID_EASY_CONDITIONAL_FORMAT_DIALOG, SfxCallMode::ASYNCHRON,
|
||||
{ &FormatRule, &IsManaged });
|
||||
}
|
||||
break;
|
||||
case 1: // Formula
|
||||
{
|
||||
SfxInt16Item FormatRule(FN_PARAM_1, static_cast<sal_Int16>(ScConditionMode::Formula));
|
||||
SfxViewShell::Current()->GetDispatcher()->ExecuteList(
|
||||
SID_EASY_CONDITIONAL_FORMAT_DIALOG, SfxCallMode::ASYNCHRON,
|
||||
{ &FormatRule, &IsManaged });
|
||||
}
|
||||
break;
|
||||
case 2: // Date
|
||||
{
|
||||
SfxInt16Item FormatRule(FN_PARAM_1, m_xConditionalDate->get_active_id().toUInt32());
|
||||
SfxViewShell::Current()->GetDispatcher()->ExecuteList(
|
||||
SID_EASY_CONDITIONAL_FORMAT_DIALOG, SfxCallMode::ASYNCHRON,
|
||||
{ &FormatRule, &IsManaged });
|
||||
@@ -196,6 +217,67 @@ IMPL_LINK_NOARG(ScCondFormatManagerDlg, AddBtnHdl, weld::Button&, void)
|
||||
m_xDialog->response( DLG_RET_ADD );
|
||||
}
|
||||
|
||||
IMPL_LINK_NOARG(ScCondFormatManagerDlg, ComboHdl, weld::ComboBox&, void)
|
||||
{
|
||||
auto id = m_xConditionalType->get_active();
|
||||
switch (id)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_xConditionalCellValue->set_visible(true);
|
||||
m_xConditionalFormula->set_visible(false);
|
||||
m_xConditionalDate->set_visible(false);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
m_xConditionalCellValue->set_visible(false);
|
||||
m_xConditionalFormula->set_visible(true);
|
||||
m_xConditionalDate->set_visible(false);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
m_xConditionalCellValue->set_visible(false);
|
||||
m_xConditionalFormula->set_visible(false);
|
||||
m_xConditionalDate->set_visible(true);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
IMPL_LINK_NOARG(ScCondFormatManagerDlg, EntryFocus, weld::TreeView&, void)
|
||||
{
|
||||
ScConditionalFormat* conditionFrmt = m_xCtrlManager->GetSelection();
|
||||
|
||||
if (!conditionFrmt)
|
||||
return;
|
||||
|
||||
const ScFormatEntry* entry = conditionFrmt->GetEntry(0);
|
||||
if (!entry)
|
||||
return;
|
||||
auto type = entry->GetType();
|
||||
|
||||
if (type == ScFormatEntry::Type::Condition)
|
||||
{
|
||||
const ScCondFormatEntry* conditionEntry = dynamic_cast<const ScCondFormatEntry*>(entry);
|
||||
auto conditionType = conditionEntry->GetOperation();
|
||||
m_xConditionalType->set_active(0);
|
||||
this->ComboHdl(*m_xConditionalType);
|
||||
m_xConditionalCellValue->set_active(static_cast<int>(conditionType));
|
||||
}
|
||||
else if (type == ScFormatEntry::Type::Date)
|
||||
{
|
||||
const ScCondDateFormatEntry* dateEntry = dynamic_cast<const ScCondDateFormatEntry*>(entry);
|
||||
auto dateType = dateEntry->GetDateType();
|
||||
m_xConditionalType->set_active(2);
|
||||
this->ComboHdl(*m_xConditionalType);
|
||||
m_xConditionalDate->set_active(dateType);
|
||||
}
|
||||
}
|
||||
|
||||
void ScCondFormatManagerDlg::SetModified()
|
||||
{
|
||||
m_bModified = true;
|
||||
|
||||
@@ -103,7 +103,7 @@ class ScConditionFrmtEntry : public ScCondFrmtEntry, public SfxListener
|
||||
std::unique_ptr<weld::CustomWeld> mxWdPreview;
|
||||
bool mbIsInStyleCreate;
|
||||
|
||||
static const sal_Int32 NUM_COND_ENTRIES = 24;
|
||||
static const sal_Int32 NUM_COND_ENTRIES = 38;
|
||||
// Lookup table from positions in maLbCondType to the condition mode enum
|
||||
static const ScConditionMode mpEntryToCond[NUM_COND_ENTRIES];
|
||||
|
||||
|
||||
@@ -52,6 +52,8 @@ private:
|
||||
|
||||
std::unique_ptr<weld::ComboBox> m_xConditionalType;
|
||||
std::unique_ptr<weld::ComboBox> m_xConditionalCellValue;
|
||||
std::unique_ptr<weld::Entry> m_xConditionalFormula;
|
||||
std::unique_ptr<weld::ComboBox> m_xConditionalDate;
|
||||
std::unique_ptr<weld::Button> m_xBtnAdd;
|
||||
std::unique_ptr<weld::Button> m_xBtnRemove;
|
||||
std::unique_ptr<weld::Button> m_xBtnEdit;
|
||||
@@ -64,6 +66,8 @@ private:
|
||||
DECL_LINK(EditBtnClickHdl, weld::Button&, void);
|
||||
DECL_LINK(AddBtnHdl, weld::Button&, void);
|
||||
DECL_LINK(EditBtnHdl, weld::TreeView&, bool);
|
||||
DECL_LINK(ComboHdl, weld::ComboBox&, void);
|
||||
DECL_LINK(EntryFocus, weld::TreeView&, void);
|
||||
};
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
||||
@@ -224,6 +224,54 @@
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="formula">
|
||||
<property name="can-focus">True</property>
|
||||
<property name="no-show-all">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="visibility">False</property>
|
||||
<property name="truncate-multiline">True</property>
|
||||
<child internal-child="accessible">
|
||||
<object class="AtkObject" id="formula-atkobject">
|
||||
<property name="AtkObject::accessible-description" translatable="yes" context="condformatmanager|extended_tip|formula">Here you can add formula for conditional formatting.</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="datetype">
|
||||
<property name="can-focus">False</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="visible">False</property>
|
||||
<property name="no_show_all">True</property>
|
||||
<property name="active">0</property>
|
||||
<items>
|
||||
<item translatable="yes" context="condformatmanager|datetype" id="26">Today</item>
|
||||
<item translatable="yes" context="condformatmanager|datetype" id="27">Yesterday</item>
|
||||
<item translatable="yes" context="condformatmanager|datetype" id="28">Tomorrow</item>
|
||||
<item translatable="yes" context="condformatmanager|datetype" id="29">Last 7 days</item>
|
||||
<item translatable="yes" context="condformatmanager|datetype" id="30">This week</item>
|
||||
<item translatable="yes" context="condformatmanager|datetype" id="31">Last week</item>
|
||||
<item translatable="yes" context="condformatmanager|datetype" id="32">Next week</item>
|
||||
<item translatable="yes" context="condformatmanager|datetype" id="33">This month</item>
|
||||
<item translatable="yes" context="condformatmanager|datetype" id="34">Last month</item>
|
||||
<item translatable="yes" context="condformatmanager|datetype" id="35">Next month</item>
|
||||
<item translatable="yes" context="condformatmanager|datetype" id="36">This year</item>
|
||||
<item translatable="yes" context="condformatmanager|datetype" id="37">Last year</item>
|
||||
<item translatable="yes" context="condformatmanager|datetype" id="38">Next year</item>
|
||||
</items>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="add">
|
||||
<property name="label" translatable="yes" context="condformatmanager|add">Add</property>
|
||||
@@ -239,7 +287,7 @@
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
<property name="position"></property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -257,7 +305,7 @@
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">3</property>
|
||||
<property name="position">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -275,7 +323,7 @@
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">4</property>
|
||||
<property name="position">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
<object class="GtkLabel" id="description">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes" context="conditionaleasydialog|label">Conditional formatting rule: %1</property>
|
||||
<property name="label" translatable="yes" context="conditionaleasydialog|label">Highlight cells if %1</property>
|
||||
<accessibility>
|
||||
<relation type="label-for" target="entryNumber"/>
|
||||
<relation type="label-for" target="entryNumber2"/>
|
||||
|
||||
Reference in New Issue
Block a user