diff options
Diffstat (limited to 'dbaccess/source/ui/app/AppDetailView.hxx')
-rw-r--r-- | dbaccess/source/ui/app/AppDetailView.hxx | 171 |
1 files changed, 60 insertions, 111 deletions
diff --git a/dbaccess/source/ui/app/AppDetailView.hxx b/dbaccess/source/ui/app/AppDetailView.hxx index 38bc41ab1e46..9b0df37bcfdd 100644 --- a/dbaccess/source/ui/app/AppDetailView.hxx +++ b/dbaccess/source/ui/app/AppDetailView.hxx @@ -16,87 +16,37 @@ * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -#ifndef INCLUDED_DBACCESS_SOURCE_UI_APP_APPDETAILVIEW_HXX -#define INCLUDED_DBACCESS_SOURCE_UI_APP_APPDETAILVIEW_HXX +#pragma once #include <com/sun/star/container/XNameAccess.hpp> #include <com/sun/star/sdbc/XConnection.hpp> #include <com/sun/star/ucb/XContent.hpp> #include <com/sun/star/sdb/application/NamedDatabaseObject.hpp> -#include <vcl/split.hxx> -#include <vcl/fixed.hxx> #include <vcl/mnemonic.hxx> #include <IClipBoardTest.hxx> #include "AppTitleWindow.hxx" #include <AppElementType.hxx> -#include <vcl/treelistbox.hxx> -#include <VertSplitView.hxx> #include <vector> -class SvTreeListEntry; - namespace dbaui { class OAppBorderWindow; class OApplicationDetailView; class OAppDetailPageHelper; - class OTasksWindow; - - class OCreationList : public SvTreeListBox - { - OTasksWindow& m_rTaskWindow; - - // members related to drawing the currently hovered/selected entry - SvTreeListEntry* m_pMouseDownEntry; - SvTreeListEntry* m_pLastActiveEntry; - Color m_aOriginalBackgroundColor; - vcl::Font m_aOriginalFont; - - public: - explicit OCreationList( OTasksWindow& _rParent ); - // Window overrides - virtual void MouseMove( const MouseEvent& rMEvt ) override; - virtual void MouseButtonDown( const MouseEvent& rMEvt ) override; - virtual void MouseButtonUp( const MouseEvent& rMEvt ) override; - virtual void KeyInput( const KeyEvent& rKEvt ) override; - virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override; - virtual void StartDrag( sal_Int8 _nAction, const Point& _rPosPixel ) override; - virtual void GetFocus() override; - virtual void LoseFocus() override; - - void resetLastActive() { m_pLastActiveEntry = nullptr;} - - void updateHelpText(); - - protected: - virtual void PreparePaint(vcl::RenderContext& rRenderContext, SvTreeListEntry& rEntry) override; - virtual tools::Rectangle GetFocusRect(const SvTreeListEntry* _pEntry, long _nLine) override; - virtual void ModelHasCleared() override; - - // IMnemonicEntryList - virtual void SelectSearchEntry( const void* _pEntry ) override; - virtual void ExecuteSearchEntry( const void* _pEntry ) const override; - - private: - void onSelected( SvTreeListEntry const * _pEntry ) const; - /** sets a new current entry, and invalidates the old and the new one, if necessary - @return <TRUE/> if and only if the "current entry" changed - */ - bool setCurrentEntryInvalidate( SvTreeListEntry* _pEntry ); - }; + class TreeListBox; struct TaskEntry { OUString sUNOCommand; - const char* pHelpID; + TranslateId pHelpID; OUString sTitle; bool bHideWhenDisabled; // TODO: we should be consistent in the task pane and the menus/toolbars: // If an entry is disabled in the latter, it should also be disabled in the former. // If an entry is *hidden* in the former, it should also be hidden in the latter. - TaskEntry( const char* _pAsciiUNOCommand, const char* pHelpID, const char* pTitleResourceID, bool _bHideWhenDisabled = false ); + TaskEntry( const OUString& _rAsciiUNOCommand, TranslateId pHelpID, TranslateId pTitleResourceID, bool _bHideWhenDisabled = false ); }; typedef std::vector< TaskEntry > TaskEntryList; @@ -105,63 +55,62 @@ namespace dbaui /// the tasks available in the pane TaskEntryList aTasks; /// the resource ID for the title of the pane - const char* pTitleId; + TranslateId pTitleId; }; - class OTasksWindow : public vcl::Window + class OTasksWindow final : public OChildWindow { - VclPtr<OCreationList> m_aCreation; - VclPtr<FixedText> m_aDescription; - VclPtr<FixedText> m_aHelpText; - VclPtr<FixedLine> m_aFL; - VclPtr<OApplicationDetailView> m_pDetailView; - - DECL_LINK( OnEntrySelectHdl, SvTreeListBox*, void ); - void ImplInitSettings(); - protected: - virtual void DataChanged(const DataChangedEvent& rDCEvt) override; + std::unique_ptr<weld::TreeView> m_xTreeView; + std::unique_ptr<weld::Label> m_xDescription; + std::unique_ptr<weld::TextView> m_xHelpText; + OApplicationDetailView* m_pDetailView; + + int m_nCursorIndex; + + DECL_LINK(onSelected, weld::TreeView&, bool); + DECL_LINK(OnEntrySelectHdl, weld::TreeView&, void); + DECL_LINK(FocusInHdl, weld::Widget&, void); + DECL_LINK(FocusOutHdl, weld::Widget&, void); + + void updateHelpText(); + public: - OTasksWindow(vcl::Window* _pParent,OApplicationDetailView* _pDetailView); - virtual ~OTasksWindow() override; - virtual void dispose() override; + OTasksWindow(weld::Container* pParent, OApplicationDetailView* pDetailView); + ~OTasksWindow(); + + virtual void GrabFocus() override; - // Window overrides - virtual void Resize() override; + virtual bool HasChildPathFocus() const override; OApplicationDetailView* getDetailView() const { return m_pDetailView; } /// fills the Creation listbox with the necessary strings and images void fillTaskEntryList( const TaskEntryList& _rList ); - bool HandleKeyInput( const KeyEvent& _rKEvt ) - { - return m_aCreation->HandleKeyInput( _rKEvt ); - } - void Clear(); - void setHelpText(const char* pId); + void setHelpText(TranslateId pId); }; - class OApplicationDetailView : public OSplitterView - , public IClipboardTest + + class OApplicationDetailView final : public IClipboardTest { - VclPtr<Splitter> m_aHorzSplitter; - VclPtr<OTitleWindow> m_aTasks; - VclPtr<OTitleWindow> m_aContainer; + std::unique_ptr<weld::Builder> m_xBuilder; + std::unique_ptr<weld::Container> m_xContainer; + std::unique_ptr<weld::Paned> m_xHorzSplitter; + std::unique_ptr<weld::Container> m_xTasksParent; + std::unique_ptr<weld::Container> m_xContainerParent; + std::unique_ptr<OTitleWindow> m_xTasks; + std::unique_ptr<OTitleWindow> m_xTitleContainer; OAppBorderWindow& m_rBorderWin; // my parent - VclPtr<OAppDetailPageHelper> m_pControlHelper; - std::vector< TaskPaneData > m_aTaskPaneData; + std::shared_ptr<OChildWindow> m_xControlHelper; + std::vector< TaskPaneData > m_aTaskPaneData; MnemonicGenerator m_aExternalMnemonics; - void ImplInitSettings(); - - protected: - virtual void DataChanged(const DataChangedEvent& rDCEvt) override; + const OAppDetailPageHelper* GetControlHelper() const; + OAppDetailPageHelper* GetControlHelper(); public: - OApplicationDetailView(OAppBorderWindow& _rParent,PreviewMode _ePreviewMode); - virtual ~OApplicationDetailView() override; - // Window overrides - virtual void dispose() override; + OApplicationDetailView(weld::Container* pParent, OAppBorderWindow& rBorder, PreviewMode ePreviewMode); + ~OApplicationDetailView(); /** creates the tables page @param _xConnection @@ -179,16 +128,8 @@ namespace dbaui void setTaskExternalMnemonics( MnemonicGenerator const & _rMnemonics ); - /** called to give the window the chance to intercept key events, while it has not - the focus - - @return <TRUE/> if and only if the event has been handled, and should not - not be further processed - */ - bool interceptKeyInput( const KeyEvent& _rEvent ); - OAppBorderWindow& getBorderWin() const { return m_rBorderWin; } - OTasksWindow& getTasksWindow() const { return *static_cast< OTasksWindow* >( m_aTasks->getChildWindow() ); } + OTasksWindow& getTasksWindow() const { return *static_cast< OTasksWindow* >( m_xTasks->getChildWindow() ); } bool isCutAllowed() override ; bool isCopyAllowed() override ; @@ -204,15 +145,17 @@ namespace dbaui @return the qualified name */ - OUString getQualifiedName( SvTreeListEntry* _pEntry ) const; + OUString getQualifiedName(const weld::TreeIter* _pEntry) const; /** returns if an entry is a leaf - @param _pEntry + @param rTreeView + The TreeView pEntry belongs to + @param rEntry The entry to check @return <TRUE/> if the entry is a leaf, otherwise <FALSE/> */ - static bool isLeaf(SvTreeListEntry const * _pEntry); + static bool isLeaf(const weld::TreeView& rTreeView, const weld::TreeIter& rEntry); /** returns if one of the selected entries is a leaf @return @@ -260,7 +203,7 @@ namespace dbaui /** describes the current selection for the given control */ void describeCurrentSelectionForControl( - const Control& _rControl, + const weld::TreeView& rControl, css::uno::Sequence< css::sdb::application::NamedDatabaseObject >& _out_rSelectedObjects ); @@ -271,6 +214,11 @@ namespace dbaui css::uno::Sequence< css::sdb::application::NamedDatabaseObject >& _out_rSelectedObjects ); + /** get the menu parent window for the given control + */ + vcl::Window* getMenuParent() const; + void adjustMenuPosition(const weld::TreeView& rControl, ::Point& rPos) const; + /** select all names on the currently selected container. Non existence names where ignored. * * \param _aNames the element names @@ -287,9 +235,9 @@ namespace dbaui @param _rxConn If we insert a table, the connection must be set. */ - SvTreeListEntry* elementAdded(ElementType eType - ,const OUString& _rName - ,const css::uno::Any& _rObject ); + std::unique_ptr<weld::TreeIter> elementAdded(ElementType eType, + const OUString& rName, + const css::uno::Any& rObject); /** replaces an objects name with a new one @param _eType @@ -349,9 +297,11 @@ namespace dbaui const OUString& _sName, bool _bTable); - SvTreeListEntry* getEntry( const Point& _aPoint ) const; + std::unique_ptr<weld::TreeIter> getEntry(const Point& rPosPixel) const; + + TreeListBox* getTreeWindow() const; - vcl::Window* getTreeWindow() const; + bool HasChildPathFocus() const; private: void impl_createPage( ElementType _eType, @@ -363,6 +313,5 @@ namespace dbaui void impl_fillTaskPaneData( ElementType _eType, TaskPaneData& _rData ) const; }; } -#endif // INCLUDED_DBACCESS_SOURCE_UI_APP_APPDETAILVIEW_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |