22 #include <com/sun/star/lang/XInitialization.hpp>
23 #include <com/sun/star/lang/XServiceInfo.hpp>
24 #include <com/sun/star/datatransfer/dnd/XDropTarget.hpp>
29 #include <unordered_map>
37 typedef std::map<OString, weld::Widget*>
WidgetMap;
67 this->m_pData = std::move(pData);
73 std::unique_ptr<ActionDataMap> pData)
76 , m_pData(
std::move(pData))
106 std::string sTypeOfJSON);
113 std::unique_ptr<ActionDataMap> pData =
nullptr);
120 std::unique_ptr<tools::JsonWriter>
131 std::string sTypeOfJSON)
142 void flush() { mpIdleNotify->Invoke(); }
146 std::string sTypeOfJSON)
148 mpIdleNotify.reset(
new JSDialogNotifyIdle(aNotifierWindow, aContentWindow, sTypeOfJSON));
153 :
public cppu::WeakComponentImplHelper<css::datatransfer::dnd::XDropTarget,
154 css::lang::XInitialization, css::lang::XServiceInfo>
157 std::vector<css::uno::Reference<css::datatransfer::dnd::XDropTargetListener>>
m_aListeners;
163 virtual void SAL_CALL
initialize(
const css::uno::Sequence<css::uno::Any>& rArgs)
override;
167 const css::uno::Reference<css::datatransfer::dnd::XDropTargetListener>&)
override;
169 const css::uno::Reference<css::datatransfer::dnd::XDropTargetListener>&)
override;
181 void fire_drop(
const css::datatransfer::dnd::DropTargetDropEvent& dtde);
183 void fire_dragEnter(
const css::datatransfer::dnd::DropTargetDragEnterEvent& dtde);
200 const OString& rWidget);
211 const css::uno::Reference<css::frame::XFrame>& rFrame,
212 sal_uInt64 nWindowId = 0);
218 const OUString& rUIFile);
221 const css::uno::Reference<css::frame::XFrame>& rFrame,
222 sal_uInt64 nWindowId = 0);
224 const OUString& rUIRoot,
225 const OUString& rUIFile);
228 virtual std::unique_ptr<weld::MessageDialog>
weld_message_dialog(
const OString&
id)
override;
229 virtual std::unique_ptr<weld::Dialog>
weld_dialog(
const OString&
id)
override;
230 virtual std::unique_ptr<weld::Label>
weld_label(
const OString&
id)
override;
231 virtual std::unique_ptr<weld::Button>
weld_button(
const OString&
id)
override;
232 virtual std::unique_ptr<weld::Entry>
weld_entry(
const OString&
id)
override;
233 virtual std::unique_ptr<weld::ComboBox>
weld_combo_box(
const OString&
id)
override;
234 virtual std::unique_ptr<weld::Notebook>
weld_notebook(
const OString&
id)
override;
235 virtual std::unique_ptr<weld::SpinButton>
weld_spin_button(
const OString&
id)
override;
236 virtual std::unique_ptr<weld::CheckButton>
weld_check_button(
const OString&
id)
override;
237 virtual std::unique_ptr<weld::DrawingArea>
240 void* pUserData =
nullptr)
override;
241 virtual std::unique_ptr<weld::Toolbar>
weld_toolbar(
const OString&
id)
override;
242 virtual std::unique_ptr<weld::TextView>
weld_text_view(
const OString&
id)
override;
243 virtual std::unique_ptr<weld::TreeView>
weld_tree_view(
const OString&
id)
override;
244 virtual std::unique_ptr<weld::Expander>
weld_expander(
const OString&
id)
override;
245 virtual std::unique_ptr<weld::IconView>
weld_icon_view(
const OString&
id)
override;
246 virtual std::unique_ptr<weld::RadioButton>
weld_radio_button(
const OString&
id)
override;
251 const OUString& rPrimaryMessage);
269 virtual void sendUpdate(
bool bForce =
false) = 0;
276 template <
class BaseInstanceClass,
class VclClass>
288 : BaseInstanceClass(pObject, pBuilder, bTakeOwnership)
289 , m_bIsFreezed(false)
297 : BaseInstanceClass(pObject, pBuilder, rAlly, pUITestFactoryFunction, pUserData,
299 , m_bIsFreezed(false)
306 BaseInstanceClass::show();
312 BaseInstanceClass::hide();
316 using BaseInstanceClass::set_sensitive;
319 bool bIsSensitive = BaseInstanceClass::get_sensitive();
320 BaseInstanceClass::set_sensitive(sensitive);
321 if (bIsSensitive != sensitive)
325 virtual css::uno::Reference<css::datatransfer::dnd::XDropTarget>
get_drop_target()
override
335 BaseInstanceClass::freeze();
341 BaseInstanceClass::thaw();
342 m_bIsFreezed =
false;
354 if (!m_bIsFreezed && m_pSender)
355 m_pSender->
sendUpdate(BaseInstanceClass::m_xWidget, bForce);
360 if ((!m_bIsFreezed || bForce) && m_pSender)
364 virtual void sendAction(std::unique_ptr<ActionDataMap> pData)
override
366 if (!m_bIsFreezed && m_pSender && pData)
367 m_pSender->
sendAction(BaseInstanceClass::m_xWidget, std::move(pData));
375 bool bTakeOwnership);
386 bool bTakeOwnership);
387 virtual void set_label(
const OUString& rText)
override;
394 bool bTakeOwnership);
401 bool bTakeOwnership);
402 virtual void set_text(
const OUString& rText)
override;
410 bool bTakeOwnership);
411 virtual void insert(
int pos,
const OUString& rStr,
const OUString* pId,
412 const OUString* pIconName,
VirtualDevice* pImageSurface)
override;
413 virtual void remove(
int pos)
override;
421 bool bTakeOwnership);
422 virtual void insert(
int pos,
const OUString& rStr,
const OUString* pId,
423 const OUString* pIconName,
VirtualDevice* pImageSurface)
override;
424 virtual void remove(
int pos)
override;
433 bool bTakeOwnership);
439 virtual void remove_page(
const OString& rIdent)
override;
441 virtual void insert_page(
const OString& rIdent,
const OUString& rLabel,
int nPos)
override;
448 bool bTakeOwnership);
464 bool bTakeOwnership);
479 bool bTakeOwnership);
481 virtual void set_active(
bool active)
override;
499 bool bTakeOwnership);
506 bool bTakeOwnership);
507 virtual void set_text(
const OUString& rText)
override;
514 bool bTakeOwnership);
523 virtual void select(
int pos)
override;
529 const OUString* pId,
const OUString* pIconName,
533 virtual void set_text(
int row,
const OUString& rText,
int col = -1)
override;
540 virtual void remove(
int pos)
override;
543 virtual void clear()
override;
553 bool bTakeOwnership);
562 bool bTakeOwnership);
564 virtual void insert(
int pos,
const OUString* pStr,
const OUString* pId,
567 virtual void insert(
int pos,
const OUString* pStr,
const OUString* pId,
569 virtual void clear()
override;
570 virtual void select(
int pos)
override;
571 virtual void unselect(
int pos)
override;
580 virtual void set_active(
bool active)
override;
std::unique_ptr< JSButton > m_pOK
std::unique_ptr< ActionDataMap > m_pData
JSIconView(JSDialogSender *pSender,::IconView *pIconView, SalInstanceBuilder *pBuilder, bool bTakeOwnership)
void sendUpdate(VclPtr< vcl::Window > pWindow, bool bForce=false)
std::string m_LastNotificationMessage
VclPtr< vcl::Window > m_aNotifierWindow
virtual void clear() override
virtual void sendFullUpdate(bool bForce=false)
std::unique_ptr< ContentProperties > pData
static JSInstanceBuilder * CreateAutofilterWindowBuilder(vcl::Window *pParent, const OUString &rUIRoot, const OUString &rUIFile)
A widget used to choose from a list of items and which has no entry.
virtual std::unique_ptr< weld::Button > weld_button(const OString &id) override
virtual void set_toggle(int pos, TriState eState, int col=-1) override
pos is used differently here, it defines how many steps of iterator we need to perform to take entry ...
JSLabel(JSDialogSender *pSender, FixedText *pLabel, SalInstanceBuilder *pBuilder, bool bTakeOwnership)
virtual sal_Bool SAL_CALL isActive() override
css::uno::Reference< css::accessibility::XAccessible > a11yref
std::function< std::unique_ptr< UIObject >vcl::Window *)> FactoryFunction
virtual ~JSMessageDialog()
virtual void set_active(int pos) override
VclPtr< vcl::Window > m_pWindow
JSNotebook(JSDialogSender *pSender,::TabControl *pControl, SalInstanceBuilder *pBuilder, bool bTakeOwnership)
void initializeSender(VclPtr< vcl::Window > aNotifierWindow, VclPtr< vcl::Window > aContentWindow, std::string sTypeOfJSON)
std::unique_ptr< tools::JsonWriter > generateCloseMessage() const
std::unique_ptr< tools::JsonWriter > generateWidgetUpdate(VclPtr< vcl::Window > pWindow) const
static weld::MessageDialog * CreateMessageDialog(weld::Widget *pParent, VclMessageType eMessageType, VclButtonsType eButtonType, const OUString &rPrimaryMessage)
virtual void set_secondary_text(const OUString &rText) override
VCL_DLLPUBLIC void SendFullUpdate(sal_uInt64 nWindowId, const OString &rWidget)
virtual void set_current_page(int nPage) override
void copy(const JSDialogMessageInfo &rInfo)
virtual sal_Int8 SAL_CALL getDefaultActions() override
void send(tools::JsonWriter &aJsonWriter)
static void RemoveWindowWidget(sal_uInt64 nWindowId)
VclPtr< vcl::Window > m_aContentWindow
virtual std::unique_ptr< weld::RadioButton > weld_radio_button(const OString &id) override
virtual std::unique_ptr< weld::Entry > weld_entry(const OString &id) override
virtual void SAL_CALL initialize(const css::uno::Sequence< css::uno::Any > &rArgs) override
static void InsertWindowToMap(sal_uInt64 nWindowId)
virtual std::unique_ptr< weld::Dialog > weld_dialog(const OString &id) override
static std::map< sal_uInt64, WidgetMap > & GetLOKWeldWidgetsMap()
virtual ~JSDialogSender()
JSTextView(JSDialogSender *pSender,::VclMultiLineEdit *pTextView, SalInstanceBuilder *pBuilder, bool bTakeOwnership)
virtual void remove(int pos) override
void fire_dragEnter(const css::datatransfer::dnd::DropTargetDragEnterEvent &dtde)
VCL_DLLPUBLIC bool ExecuteAction(sal_uInt64 nWindowId, const OString &rWidget, StringMap &rData)
virtual std::unique_ptr< weld::TextView > weld_text_view(const OString &id) override
void set_toggle(SvTreeListEntry *pEntry, TriState eState, int col)
OUString SAL_CALL getImplementationName() override
JSDialog(JSDialogSender *pSender,::Dialog *pDialog, SalInstanceBuilder *pBuilder, bool bTakeOwnership)
JSExpander(JSDialogSender *pSender,::VclExpander *pExpander, SalInstanceBuilder *pBuilder, bool bTakeOwnership)
virtual std::unique_ptr< weld::DrawingArea > weld_drawing_area(const OString &id, const a11yref &rA11yImpl=nullptr, FactoryFunction pUITestFactoryFunction=nullptr, void *pUserData=nullptr) override
virtual void SAL_CALL setDefaultActions(sal_Int8 actions) override
virtual void sendAction(VclPtr< vcl::Window > pWindow, std::unique_ptr< ActionDataMap > pData)
virtual std::unique_ptr< weld::CheckButton > weld_check_button(const OString &id) override
sal_Bool SAL_CALL supportsService(OUString const &ServiceName) override
std::unique_ptr< JSButton > m_pCancel
virtual void insert(const weld::TreeIter *pParent, int pos, const OUString *pStr, const OUString *pId, const OUString *pIconName, VirtualDevice *pImageSurface, bool bChildrenOnDemand, weld::TreeIter *pRet) override
virtual void select(int pos) override
virtual void collapse(weld::Widget *pEdit, weld::Widget *pButton) override
VclPtr< vcl::Window > & GetContentWindow()
virtual void set_expanded(bool bExpand) override
std::unordered_map< std::string, OUString > ActionDataMap
virtual void set_label(const OUString &rText) override
JSInstanceBuilder(weld::Widget *pParent, const OUString &rUIRoot, const OUString &rUIFile)
used for dialogs
virtual std::unique_ptr< weld::Expander > weld_expander(const OString &id) override
static weld::Widget * FindWeldWidgetsMap(sal_uInt64 nWindowId, const OString &rWidget)
std::deque< JSDialogMessageInfo > m_aMessageQueue
JSTreeView(JSDialogSender *pSender,::SvTabListBox *pTextView, SalInstanceBuilder *pBuilder, bool bTakeOwnership)
virtual void remove_page(const OString &rIdent) override
void fire_drop(const css::datatransfer::dnd::DropTargetDropEvent &dtde)
JSDialogNotifyIdle(VclPtr< vcl::Window > aNotifierWindow, VclPtr< vcl::Window > aContentWindow, std::string sTypeOfJSON)
virtual std::unique_ptr< weld::IconView > weld_icon_view(const OString &id) override
JSDrawingArea(JSDialogSender *pSender, VclDrawingArea *pDrawingArea, SalInstanceBuilder *pBuilder, const a11yref &rAlly, FactoryFunction pUITestFactoryFunction, void *pUserData)
std::string m_sTypeOfJSON
virtual void insert_page(const OString &rIdent, const OUString &rLabel, int nPos) override
VclPtr< vcl::Window > m_aParentDialog
used in case of tab pages where dialog is not a direct top level
virtual void queue_draw() override
VclPtr< vcl::Window > m_aContentWindow
virtual void clear() override
jsdialog::MessageType m_eType
virtual void undo_collapse() override
virtual std::unique_ptr< weld::Notebook > weld_notebook(const OString &id) override
void sendMessage(jsdialog::MessageType eType, VclPtr< vcl::Window > pWindow, std::unique_ptr< ActionDataMap > pData=nullptr)
virtual void select(int pos) override
pos is used differently here, it defines how many steps of iterator we need to perform to take entry ...
VclPtr< vcl::Window > & GetNotifierWindow()
std::unique_ptr< JSDialogNotifyIdle > mpIdleNotify
std::list< std::string > m_aRememberedWidgets
virtual std::unique_ptr< weld::ComboBox > weld_combo_box(const OString &id) override
virtual void set_text(int row, const OUString &rText, int col=-1) override
bool m_bHasTopLevelDialog
virtual void set_entry_text(const OUString &rText) override
JSComboBox(JSDialogSender *pSender,::ComboBox *pComboBox, SalInstanceBuilder *pBuilder, bool bTakeOwnership)
virtual void response(int response) override
virtual void SAL_CALL setActive(sal_Bool active) override
void set_text_without_notify(const OUString &rText)
virtual void set_active(int pos) override
virtual ~JSInstanceBuilder() override
virtual void SAL_CALL removeDropTargetListener(const css::uno::Reference< css::datatransfer::dnd::XDropTargetListener > &) override
JSMessageDialog(JSDialogSender *pSender,::MessageDialog *pDialog, SalInstanceBuilder *pBuilder, bool bTakeOwnership)
static void AddChildWidget(sal_uInt64 nWindowId, const OString &id, weld::Widget *pWidget)
std::map< OString, weld::Widget * > WidgetMap
Class with the message description for storing in the queue.
virtual std::unique_ptr< weld::TreeView > weld_tree_view(const OString &id) override
css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
DECL_LINK(OKHdl, weld::Button &, void)
JSDialogMessageInfo(jsdialog::MessageType eType, VclPtr< vcl::Window > pWindow, std::unique_ptr< ActionDataMap > pData)
JSEntry(JSDialogSender *pSender,::Edit *pEntry, SalInstanceBuilder *pBuilder, bool bTakeOwnership)
JSDialogMessageInfo(const JSDialogMessageInfo &rInfo)
virtual void queue_draw_area(int x, int y, int width, int height) override
virtual std::unique_ptr< weld::Toolbar > weld_toolbar(const OString &id) override
std::string m_sTypeOfJSON
std::unique_ptr< tools::JsonWriter > generateActionMessage(VclPtr< vcl::Window > pWindow, std::unique_ptr< ActionDataMap > pData) const
virtual void response(int response) override
std::vector< css::uno::Reference< css::datatransfer::dnd::XDropTargetListener > > m_aListeners
std::map< OUString, OUString > StringMap
void RememberWidget(const OString &id, weld::Widget *pWidget)
std::unique_ptr< JSDialogSender > m_pOwnedSender
JSDialogSender(VclPtr< vcl::Window > aNotifierWindow, VclPtr< vcl::Window > aContentWindow, std::string sTypeOfJSON)
virtual std::unique_ptr< weld::MessageDialog > weld_message_dialog(const OString &id) override
virtual void set_text(const OUString &rText) override
virtual void collapse_row(const weld::TreeIter &rIter) override
virtual void SAL_CALL addDropTargetListener(const css::uno::Reference< css::datatransfer::dnd::XDropTargetListener > &) override
virtual void set_text(const OUString &rText) override
virtual void select(int pos) override
virtual void unselect(int pos) override
const std::string & GetTypeOfJSON()
static JSInstanceBuilder * CreateDialogBuilder(weld::Widget *pParent, const OUString &rUIRoot, const OUString &rUIFile)
A widget used to choose from a list of items and which has an entry.
virtual void insert(const weld::TreeIter *pParent, int pos, const OUString *pStr, const OUString *pId, const OUString *pIconName, VirtualDevice *pImageSurface, bool bChildrenOnDemand, weld::TreeIter *pRet) override
JSDialogMessageInfo & operator=(JSDialogMessageInfo aInfo)
virtual void insert(int pos, const OUString &rStr, const OUString *pId, const OUString *pIconName, VirtualDevice *pImageSurface) override
virtual void insert(int pos, const OUString &rStr, const OUString *pId, const OUString *pIconName, VirtualDevice *pImageSurface) override
virtual std::unique_ptr< weld::SpinButton > weld_spin_button(const OString &id) override
virtual weld::TreeView * get_drag_source() const override
virtual void expand_row(const weld::TreeIter &rIter) override
void Invoke() override
Calls the maInvokeHandler with the parameter this.
static JSInstanceBuilder * CreateNotebookbarBuilder(vcl::Window *pParent, const OUString &rUIRoot, const OUString &rUIFile, const css::uno::Reference< css::frame::XFrame > &rFrame, sal_uInt64 nWindowId=0)
virtual std::unique_ptr< weld::Label > weld_label(const OString &id) override
virtual void insert(int pos, const OUString *pStr, const OUString *pId, const OUString *pIconName, weld::TreeIter *pRet) override
JSListBox(JSDialogSender *pSender,::ListBox *pListBox, SalInstanceBuilder *pBuilder, bool bTakeOwnership)
std::unique_ptr< tools::JsonWriter > generateFullUpdate() const
An idle is a timer to be scheduled immediately.
virtual void set_primary_text(const OUString &rText) override