jsdialog: use const for command data
All used fields are mandatory so fetching them using ::at Change-Id: I15c9b96c2aae42d49c726ea4e0448befab852a09 (cherry picked from commit 658bea27f47e66aba625f1e3c2613781daaec14d) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183124 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
This commit is contained in:
@@ -5040,7 +5040,7 @@ static void lcl_sendDialogEvent(unsigned long long int nWindowId, const char* pA
|
||||
{
|
||||
SolarMutexGuard aGuard;
|
||||
|
||||
StringMap aMap(jsdialog::jsonToStringMap(pArguments));
|
||||
const StringMap aMap(jsdialog::jsonToStringMap(pArguments));
|
||||
|
||||
if (aMap.find(u"id"_ustr) == aMap.end() || aMap.at(u"id"_ustr).isEmpty())
|
||||
{
|
||||
@@ -5049,13 +5049,13 @@ static void lcl_sendDialogEvent(unsigned long long int nWindowId, const char* pA
|
||||
return;
|
||||
}
|
||||
|
||||
sal_uInt64 nCurrentShellId = reinterpret_cast<sal_uInt64>(SfxViewShell::Current());
|
||||
const sal_uInt64 nCurrentShellId = reinterpret_cast<sal_uInt64>(SfxViewShell::Current());
|
||||
|
||||
try
|
||||
{
|
||||
OUString sControlId = aMap[u"id"_ustr];
|
||||
const OUString sControlId = aMap.at(u"id"_ustr);
|
||||
OUString sWindowId = OUString::number(nWindowId);
|
||||
OUString sCurrentShellId = OUString::number(nCurrentShellId);
|
||||
const OUString sCurrentShellId = OUString::number(nCurrentShellId);
|
||||
|
||||
// special values for window id
|
||||
if (nWindowId == static_cast<unsigned long long int>(-1))
|
||||
@@ -5087,7 +5087,13 @@ static void lcl_sendDialogEvent(unsigned long long int nWindowId, const char* pA
|
||||
// force resend - used in mobile-wizard
|
||||
jsdialog::SendFullUpdate(sCurrentShellId + "sidebar", u"Panel"_ustr);
|
||||
|
||||
} catch(...) {}
|
||||
}
|
||||
catch (std::out_of_range& e)
|
||||
{
|
||||
SAL_WARN("lok", "jsdialog::ExecuteAction syntax error - field not found in '" << e.what() << "'");
|
||||
assert(false);
|
||||
}
|
||||
catch (...) {}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -150,7 +150,7 @@ typedef std::unordered_map<OString, OUString> ActionDataMap;
|
||||
|
||||
/// execute action on a widget
|
||||
VCL_DLLPUBLIC bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget,
|
||||
StringMap& rData);
|
||||
const StringMap& rData);
|
||||
/// send full update message to the client
|
||||
VCL_DLLPUBLIC void SendFullUpdate(const OUString& nWindowId, const OUString& rWidget);
|
||||
/// send action message to the client
|
||||
|
||||
@@ -119,7 +119,8 @@ class JSInstanceBuilder final : public SalInstanceBuilder, public JSDialogSender
|
||||
friend class JSAssistant;
|
||||
|
||||
friend VCL_DLLPUBLIC bool jsdialog::ExecuteAction(const OUString& nWindowId,
|
||||
const OUString& rWidget, StringMap& rData);
|
||||
const OUString& rWidget,
|
||||
const StringMap& rData);
|
||||
friend VCL_DLLPUBLIC void jsdialog::SendFullUpdate(const OUString& nWindowId,
|
||||
const OUString& rWidget);
|
||||
friend VCL_DLLPUBLIC void jsdialog::SendAction(const OUString& nWindowId,
|
||||
|
||||
@@ -19,11 +19,12 @@ template <class T> class WidgetRegister
|
||||
// Map to remember the LOKWindowId <-> widget binding.
|
||||
std::map<OUString, T> m_aWidgetMap;
|
||||
std::map<OUString, T>& Map() { return m_aWidgetMap; }
|
||||
const std::map<OUString, T>& Map() const { return m_aWidgetMap; }
|
||||
|
||||
public:
|
||||
void Remember(const OUString& rId, const T& pWidget);
|
||||
void Forget(const OUString& rId);
|
||||
T Find(const OUString& rId);
|
||||
T Find(const OUString& rId) const;
|
||||
};
|
||||
|
||||
template <class T> void WidgetRegister<T>::Remember(const OUString& nWindowId, const T& pMenu)
|
||||
@@ -38,7 +39,7 @@ template <class T> void WidgetRegister<T>::Forget(const OUString& nWindowId)
|
||||
Map().erase(it);
|
||||
}
|
||||
|
||||
template <class T> T WidgetRegister<T>::Find(const OUString& nWindowId)
|
||||
template <class T> T WidgetRegister<T>::Find(const OUString& nWindowId) const
|
||||
{
|
||||
const auto it = Map().find(nWindowId);
|
||||
|
||||
|
||||
+37
-37
@@ -108,13 +108,13 @@ void SendAction(const OUString& nWindowId, const OUString& rWidget,
|
||||
pJSWidget->sendAction(std::move(pData));
|
||||
}
|
||||
|
||||
bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap& rData)
|
||||
bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, const StringMap& rData)
|
||||
{
|
||||
auto aWidgetMap = JSInstanceBuilder::Widgets().Find(nWindowId);
|
||||
weld::Widget* pWidget = aWidgetMap ? aWidgetMap->Find(rWidget) : nullptr;
|
||||
|
||||
OUString sControlType = rData[u"type"_ustr];
|
||||
OUString sAction = rData[u"cmd"_ustr];
|
||||
OUString sControlType = rData.at(u"type"_ustr);
|
||||
OUString sAction = rData.at(u"cmd"_ustr);
|
||||
|
||||
if (sControlType == "responsebutton")
|
||||
{
|
||||
@@ -142,7 +142,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
weld::Menu* pMenu = JSInstanceBuilder::Menus().Find(nWindowId);
|
||||
if (pMenu && sAction == "select")
|
||||
{
|
||||
LOKTrigger::trigger_activated(*pMenu, rData["data"]);
|
||||
LOKTrigger::trigger_activated(*pMenu, rData.at("data"));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -166,7 +166,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
{
|
||||
if (sAction == "selecttab")
|
||||
{
|
||||
sal_Int32 page = o3tl::toInt32(rData[u"data"_ustr]);
|
||||
sal_Int32 page = o3tl::toInt32(rData.at(u"data"_ustr));
|
||||
|
||||
OUString aCurrentPage = pNotebook->get_current_page_ident();
|
||||
LOKTrigger::leave_page(*pNotebook, aCurrentPage);
|
||||
@@ -184,7 +184,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
{
|
||||
if (sAction == "selected")
|
||||
{
|
||||
OUString sSelectedData = rData[u"data"_ustr];
|
||||
OUString sSelectedData = rData.at(u"data"_ustr);
|
||||
int separatorPos = sSelectedData.indexOf(';');
|
||||
if (separatorPos > 0)
|
||||
{
|
||||
@@ -200,9 +200,9 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
// it might be other class than JSComboBox
|
||||
auto pJSCombobox = dynamic_cast<JSComboBox*>(pWidget);
|
||||
if (pJSCombobox)
|
||||
pJSCombobox->set_entry_text_without_notify(rData[u"data"_ustr]);
|
||||
pJSCombobox->set_entry_text_without_notify(rData.at(u"data"_ustr));
|
||||
else
|
||||
pCombobox->set_entry_text(rData[u"data"_ustr]);
|
||||
pCombobox->set_entry_text(rData.at(u"data"_ustr));
|
||||
LOKTrigger::trigger_changed(*pCombobox);
|
||||
return true;
|
||||
}
|
||||
@@ -257,7 +257,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
}
|
||||
else if (sAction == "select")
|
||||
{
|
||||
LOKTrigger::trigger_selected(*pButton, rData[u"data"_ustr]);
|
||||
LOKTrigger::trigger_selected(*pButton, rData.at(u"data"_ustr));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -269,7 +269,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
{
|
||||
if (sAction == "change")
|
||||
{
|
||||
bool bChecked = rData[u"data"_ustr] == "true";
|
||||
bool bChecked = rData.at(u"data"_ustr) == "true";
|
||||
pCheckButton->set_state(bChecked ? TRISTATE_TRUE : TRISTATE_FALSE);
|
||||
LOKTrigger::trigger_toggled(*static_cast<weld::Toggleable*>(pCheckButton));
|
||||
return true;
|
||||
@@ -284,7 +284,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
if (sAction == "click" || sAction == "dblclick" || sAction == "mousemove"
|
||||
|| sAction == "mousedown" || sAction == "mouseup")
|
||||
{
|
||||
OUString sClickData = rData[u"data"_ustr];
|
||||
OUString sClickData = rData.at(u"data"_ustr);
|
||||
int nSeparatorPos = sClickData.indexOf(';');
|
||||
if (nSeparatorPos > 0)
|
||||
{
|
||||
@@ -321,14 +321,14 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
}
|
||||
else if (sAction == "keypress")
|
||||
{
|
||||
sal_uInt32 nKeyNo = rData[u"data"_ustr].toUInt32();
|
||||
sal_uInt32 nKeyNo = rData.at(u"data"_ustr).toUInt32();
|
||||
LOKTrigger::trigger_key_press(*pArea, KeyEvent(nKeyNo, vcl::KeyCode(nKeyNo)));
|
||||
LOKTrigger::trigger_key_release(*pArea, KeyEvent(nKeyNo, vcl::KeyCode(nKeyNo)));
|
||||
return true;
|
||||
}
|
||||
else if (sAction == "textselection")
|
||||
{
|
||||
OUString sTextData = rData[u"data"_ustr];
|
||||
OUString sTextData = rData.at(u"data"_ustr);
|
||||
int nSeparatorPos = sTextData.indexOf(';');
|
||||
if (nSeparatorPos <= 0)
|
||||
return true;
|
||||
@@ -396,14 +396,14 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
{
|
||||
if (sAction == "change" || sAction == "value")
|
||||
{
|
||||
if (rData[u"data"_ustr] == "undefined")
|
||||
if (rData.at(u"data"_ustr) == "undefined")
|
||||
return true;
|
||||
|
||||
// The Document will not scroll if that is in focus
|
||||
// maybe we could send a message with: sAction == "grab_focus"
|
||||
pWidget->grab_focus();
|
||||
|
||||
double nValue = o3tl::toDouble(rData[u"data"_ustr]);
|
||||
double nValue = o3tl::toDouble(rData.at(u"data"_ustr));
|
||||
pSpinField->set_value(nValue
|
||||
* weld::SpinButton::Power10(pSpinField->get_digits()));
|
||||
LOKTrigger::trigger_value_changed(*pSpinField);
|
||||
@@ -428,7 +428,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
{
|
||||
if (sAction == "change")
|
||||
{
|
||||
pFormattedField->set_text(rData[u"data"_ustr]);
|
||||
pFormattedField->set_text(rData.at(u"data"_ustr));
|
||||
LOKTrigger::trigger_changed(*pFormattedField);
|
||||
LOKTrigger::trigger_value_changed(*pFormattedField);
|
||||
return true;
|
||||
@@ -442,24 +442,24 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
{
|
||||
if (sAction == "click")
|
||||
{
|
||||
LOKTrigger::trigger_clicked(*pToolbar, rData[u"data"_ustr]);
|
||||
LOKTrigger::trigger_clicked(*pToolbar, rData.at(u"data"_ustr));
|
||||
return true;
|
||||
}
|
||||
else if (sAction == "togglemenu")
|
||||
{
|
||||
const OUString& sId = rData[u"data"_ustr];
|
||||
const OUString& sId = rData.at(u"data"_ustr);
|
||||
bool bIsActive = pToolbar->get_menu_item_active(sId);
|
||||
pToolbar->set_menu_item_active(sId, !bIsActive);
|
||||
return true;
|
||||
}
|
||||
else if (sAction == "closemenu")
|
||||
{
|
||||
pToolbar->set_menu_item_active(rData[u"data"_ustr], false);
|
||||
pToolbar->set_menu_item_active(rData.at(u"data"_ustr), false);
|
||||
return true;
|
||||
}
|
||||
else if (sAction == "openmenu")
|
||||
{
|
||||
pToolbar->set_menu_item_active(rData[u"data"_ustr], true);
|
||||
pToolbar->set_menu_item_active(rData.at(u"data"_ustr), true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -471,7 +471,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
{
|
||||
if (sAction == "change")
|
||||
{
|
||||
pEdit->set_text_without_notify(rData[u"data"_ustr]);
|
||||
pEdit->set_text_without_notify(rData.at(u"data"_ustr));
|
||||
LOKTrigger::trigger_changed(*pEdit);
|
||||
return true;
|
||||
}
|
||||
@@ -484,7 +484,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
{
|
||||
int rStartPos, rEndPos;
|
||||
pTextView->get_selection_bounds(rStartPos, rEndPos);
|
||||
pTextView->set_text_without_notify(rData[u"data"_ustr]);
|
||||
pTextView->set_text_without_notify(rData.at(u"data"_ustr));
|
||||
pTextView->select_region(rStartPos, rEndPos);
|
||||
LOKTrigger::trigger_changed(*pTextView);
|
||||
return true;
|
||||
@@ -492,7 +492,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
else if (sAction == "textselection")
|
||||
{
|
||||
// start;end
|
||||
OUString sTextData = rData[u"data"_ustr];
|
||||
OUString sTextData = rData.at(u"data"_ustr);
|
||||
int nSeparatorPos = sTextData.indexOf(';');
|
||||
if (nSeparatorPos <= 0)
|
||||
return true;
|
||||
@@ -521,7 +521,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
if (sAction == "change")
|
||||
{
|
||||
OUString sDataJSON = rtl::Uri::decode(
|
||||
rData[u"data"_ustr], rtl_UriDecodeMechanism::rtl_UriDecodeWithCharset,
|
||||
rData.at(u"data"_ustr), rtl_UriDecodeMechanism::rtl_UriDecodeWithCharset,
|
||||
RTL_TEXTENCODING_UTF8);
|
||||
StringMap aMap(jsonToStringMap(
|
||||
OUStringToOString(sDataJSON, RTL_TEXTENCODING_ASCII_US).getStr()));
|
||||
@@ -535,7 +535,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
}
|
||||
else if (sAction == "select")
|
||||
{
|
||||
sal_Int32 nAbsPos = o3tl::toInt32(rData[u"data"_ustr]);
|
||||
sal_Int32 nAbsPos = o3tl::toInt32(rData.at(u"data"_ustr));
|
||||
|
||||
pTreeView->unselect_all();
|
||||
|
||||
@@ -554,7 +554,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
}
|
||||
else if (sAction == "activate")
|
||||
{
|
||||
sal_Int32 nRow = o3tl::toInt32(rData[u"data"_ustr]);
|
||||
sal_Int32 nRow = o3tl::toInt32(rData.at(u"data"_ustr));
|
||||
|
||||
pTreeView->unselect_all();
|
||||
std::unique_ptr<weld::TreeIter> itEntry(pTreeView->make_iterator());
|
||||
@@ -573,7 +573,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
}
|
||||
else if (sAction == "expand")
|
||||
{
|
||||
sal_Int32 nAbsPos = o3tl::toInt32(rData[u"data"_ustr]);
|
||||
sal_Int32 nAbsPos = o3tl::toInt32(rData.at(u"data"_ustr));
|
||||
std::unique_ptr<weld::TreeIter> itEntry(pTreeView->make_iterator());
|
||||
if (pTreeView->get_iter_abs_pos(*itEntry, nAbsPos))
|
||||
{
|
||||
@@ -588,7 +588,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
}
|
||||
else if (sAction == "collapse")
|
||||
{
|
||||
sal_Int32 nAbsPos = o3tl::toInt32(rData[u"data"_ustr]);
|
||||
sal_Int32 nAbsPos = o3tl::toInt32(rData.at(u"data"_ustr));
|
||||
std::unique_ptr<weld::TreeIter> itEntry(pTreeView->make_iterator());
|
||||
if (pTreeView->get_iter_abs_pos(*itEntry, nAbsPos))
|
||||
{
|
||||
@@ -603,7 +603,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
}
|
||||
else if (sAction == "dragstart")
|
||||
{
|
||||
sal_Int32 nRow = o3tl::toInt32(rData[u"data"_ustr]);
|
||||
sal_Int32 nRow = o3tl::toInt32(rData.at(u"data"_ustr));
|
||||
|
||||
pTreeView->select(nRow);
|
||||
pTreeView->drag_start();
|
||||
@@ -617,7 +617,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
}
|
||||
else if (sAction == "contextmenu")
|
||||
{
|
||||
sal_Int32 nEntryAbsPos = o3tl::toInt32(rData["data"]);
|
||||
sal_Int32 nEntryAbsPos = o3tl::toInt32(rData.at(u"data"_ustr));
|
||||
|
||||
std::unique_ptr<weld::TreeIter> itEntry(pTreeView->make_iterator());
|
||||
if (pTreeView->get_iter_abs_pos(*itEntry, nEntryAbsPos))
|
||||
@@ -647,7 +647,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
{
|
||||
if (sAction == "select")
|
||||
{
|
||||
sal_Int32 nPos = o3tl::toInt32(rData[u"data"_ustr]);
|
||||
sal_Int32 nPos = o3tl::toInt32(rData.at(u"data"_ustr));
|
||||
|
||||
pIconView->select(nPos);
|
||||
LOKTrigger::trigger_changed(*pIconView);
|
||||
@@ -656,7 +656,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
}
|
||||
else if (sAction == "activate")
|
||||
{
|
||||
sal_Int32 nPos = o3tl::toInt32(rData[u"data"_ustr]);
|
||||
sal_Int32 nPos = o3tl::toInt32(rData.at(u"data"_ustr));
|
||||
|
||||
pIconView->select(nPos);
|
||||
LOKTrigger::trigger_changed(*pIconView);
|
||||
@@ -690,7 +690,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
}
|
||||
else if (sAction == "response")
|
||||
{
|
||||
sal_Int32 nResponse = o3tl::toInt32(rData[u"data"_ustr]);
|
||||
sal_Int32 nResponse = o3tl::toInt32(rData.at(u"data"_ustr));
|
||||
pDialog->response(nResponse);
|
||||
return true;
|
||||
}
|
||||
@@ -715,7 +715,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
{
|
||||
if (sAction == "change")
|
||||
{
|
||||
bool bChecked = rData[u"data"_ustr] == "true";
|
||||
bool bChecked = rData.at(u"data"_ustr) == "true";
|
||||
pRadioButton->set_state(bChecked ? TRISTATE_TRUE : TRISTATE_FALSE);
|
||||
LOKTrigger::trigger_toggled(*static_cast<weld::Toggleable*>(pRadioButton));
|
||||
return true;
|
||||
@@ -729,14 +729,14 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
{
|
||||
if (sAction == "scrollv")
|
||||
{
|
||||
sal_Int32 nValue = o3tl::toInt32(rData[u"data"_ustr]);
|
||||
sal_Int32 nValue = o3tl::toInt32(rData.at(u"data"_ustr));
|
||||
pScrolledWindow->vadjustment_set_value_no_notification(nValue);
|
||||
LOKTrigger::trigger_scrollv(*pScrolledWindow);
|
||||
return true;
|
||||
}
|
||||
else if (sAction == "scrollh")
|
||||
{
|
||||
sal_Int32 nValue = o3tl::toInt32(rData[u"data"_ustr]);
|
||||
sal_Int32 nValue = o3tl::toInt32(rData.at(u"data"_ustr));
|
||||
pScrolledWindow->hadjustment_set_value_no_notification(nValue);
|
||||
LOKTrigger::trigger_scrollh(*pScrolledWindow);
|
||||
return true;
|
||||
@@ -749,7 +749,7 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
|
||||
if (pCalendar && sAction == "selectdate")
|
||||
{
|
||||
// MM/DD/YYYY
|
||||
OUString aDate = rData[u"data"_ustr];
|
||||
OUString aDate = rData.at(u"data"_ustr);
|
||||
|
||||
if (aDate.getLength() < 10)
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user