summaryrefslogtreecommitdiff
path: root/sd/source/ui/dlg/navigatr.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/dlg/navigatr.cxx')
-rw-r--r--sd/source/ui/dlg/navigatr.cxx330
1 files changed, 118 insertions, 212 deletions
diff --git a/sd/source/ui/dlg/navigatr.cxx b/sd/source/ui/dlg/navigatr.cxx
index 225e5c78f15d..084fdaf2fc03 100644
--- a/sd/source/ui/dlg/navigatr.cxx
+++ b/sd/source/ui/dlg/navigatr.cxx
@@ -40,7 +40,6 @@
#include "pres.hxx"
#include "navigatr.hxx"
-#include "navigatr.hrc"
#include "pgjump.hxx"
#include "app.hrc"
#include "strings.hrc"
@@ -63,46 +62,35 @@ static const sal_uInt16 nShowAllShapesFilter=2;
/**
* SdNavigatorWin - FloatingWindow
*/
-SdNavigatorWin::SdNavigatorWin(
- vcl::Window* pParent,
- SfxBindings* pInBindings)
- : vcl::Window( pParent, SdResId(FLT_NAVIGATOR) )
- , maToolbox ( VclPtr<ToolBox>::Create( this, SdResId( 1 ) ) )
- , maTlbObjects( VclPtr<SdPageObjsTLB>::Create( this, SdResId( TLB_OBJECTS ) ) )
- , maLbDocs ( VclPtr<ListBox>::Create( this, SdResId( LB_DOCS ) ) )
+SdNavigatorWin::SdNavigatorWin(vcl::Window* pParent, SfxBindings* pInBindings)
+ : PanelLayout(pParent, "NavigatorPanel", "modules/simpress/ui/navigatorpanel.ui", nullptr)
, mbDocImported ( false )
// On changes of the DragType: adjust SelectionMode of TLB!
, meDragType ( NAVIGATOR_DRAGTYPE_EMBEDDED )
, mpBindings ( pInBindings )
, mpNavigatorCtrlItem( nullptr )
, mpPageNameCtrlItem( nullptr )
- , maImageList ( SdResId( IL_NAVIGATR ) )
{
- maTlbObjects->SetViewFrame( mpBindings->GetDispatcher()->GetFrame() );
+ get(maToolbox, "toolbox");
+ get(maTlbObjects, "tree");
+ Size aSize(maTlbObjects->LogicToPixel(Size(97, 67), MapUnit::MapAppFont));
+ maTlbObjects->set_height_request(aSize.Width());
+ maTlbObjects->set_width_request(aSize.Height());
+ get(maLbDocs, "documents");
- FreeResource();
+ maTlbObjects->SetViewFrame( mpBindings->GetDispatcher()->GetFrame() );
maTlbObjects->SetAccessibleName(SD_RESSTR(STR_OBJECTS_TREE));
- ApplyImageList(); // load images *before* calculating sizes to get something useful !!!
-
- Size aTbxSize( maToolbox->CalcWindowSizePixel() );
- maToolbox->SetOutputSizePixel( aTbxSize );
maToolbox->SetSelectHdl( LINK( this, SdNavigatorWin, SelectToolboxHdl ) );
maToolbox->SetDropdownClickHdl( LINK(this, SdNavigatorWin, DropdownClickToolBoxHdl) );
- maToolbox->SetItemBits( TBI_DRAGTYPE, maToolbox->GetItemBits( TBI_DRAGTYPE ) | ToolBoxItemBits::DROPDOWNONLY );
+ const sal_uInt16 nDragTypeId = maToolbox->GetItemId("dragmode");
+ maToolbox->SetItemBits(nDragTypeId, maToolbox->GetItemBits(nDragTypeId) | ToolBoxItemBits::DROPDOWNONLY);
// Shape filter drop down menu.
- maToolbox->SetItemBits(
- TBI_SHAPE_FILTER,
- maToolbox->GetItemBits(TBI_SHAPE_FILTER) | ToolBoxItemBits::DROPDOWNONLY);
-
- // TreeListBox
- // set position below toolbox
- long nListboxYPos = maToolbox->GetPosPixel().Y() + maToolbox->GetSizePixel().Height() + 4;
- maTlbObjects->setPosSizePixel( 0, nListboxYPos, 0, 0, PosSizeFlags::Y );
- maTlbObjects->SetDoubleClickHdl( LINK( this, SdNavigatorWin, ClickObjectHdl ) );
- maTlbObjects->SetSelectionMode( SelectionMode::Single );
+ const sal_uInt16 nShapeId = maToolbox->GetItemId("shapes");
+ maToolbox->SetItemBits(nShapeId, maToolbox->GetItemBits(nShapeId) | ToolBoxItemBits::DROPDOWNONLY);
+
// set focus to listbox, otherwise it is in the toolbox which is only useful
// for keyboard navigation
maTlbObjects->GrabFocus();
@@ -110,43 +98,12 @@ SdNavigatorWin::SdNavigatorWin(
// DragTypeListBox
maLbDocs->SetSelectHdl( LINK( this, SdNavigatorWin, SelectDocumentHdl ) );
- // set position below treelistbox
- nListboxYPos = maTlbObjects->GetPosPixel().Y() + maTlbObjects->GetSizePixel().Height() + 4;
- maLbDocs->setPosSizePixel( 0, nListboxYPos, 0, 0, PosSizeFlags::Y );
-
- // assure that tool box is at least as wide as the tree list box
- {
- const Size aTlbSize( maTlbObjects->GetOutputSizePixel() );
- if ( aTlbSize.Width() > aTbxSize.Width() )
- {
- maToolbox->setPosSizePixel( 0, 0, aTlbSize.Width(), 0, PosSizeFlags::Width );
- aTbxSize = maToolbox->GetOutputSizePixel();
- }
- }
-
- // set min outputsize after all sizes are known
- const long nFullHeight = nListboxYPos + maLbDocs->GetSizePixel().Height() + 4;
- maSize = GetOutputSizePixel();
- if( maSize.Height() < nFullHeight )
- {
- maSize.Height() = nFullHeight;
- SetOutputSizePixel( maSize );
- }
- maMinSize = maSize;
- const long nMinWidth = 2*maToolbox->GetPosPixel().X() + aTbxSize.Width(); // never clip the toolbox
- if( nMinWidth > maMinSize.Width() )
- maMinSize.Width() = nMinWidth;
- maMinSize.Height() -= 40;
- SfxDockingWindow* pDockingParent = dynamic_cast<SfxDockingWindow*>(GetParent());
- if (pDockingParent != nullptr)
- pDockingParent->SetMinOutputSizePixel( maMinSize );
-
}
void SdNavigatorWin::SetUpdateRequestFunctor(const UpdateRequestFunctor& rUpdateRequest)
{
- mpNavigatorCtrlItem = new SdNavigatorControllerItem( SID_NAVIGATOR_STATE, this, mpBindings, rUpdateRequest);
- mpPageNameCtrlItem = new SdPageNameControllerItem( SID_NAVIGATOR_PAGENAME, this, mpBindings);
+ mpNavigatorCtrlItem = new SdNavigatorControllerItem(SID_NAVIGATOR_STATE, this, mpBindings, rUpdateRequest);
+ mpPageNameCtrlItem = new SdPageNameControllerItem(SID_NAVIGATOR_PAGENAME, this, mpBindings);
// InitTlb; is initiated over Slot
if (rUpdateRequest)
@@ -160,12 +117,12 @@ SdNavigatorWin::~SdNavigatorWin()
void SdNavigatorWin::dispose()
{
- DELETEZ( mpNavigatorCtrlItem );
- DELETEZ( mpPageNameCtrlItem );
- maToolbox.disposeAndClear();
- maTlbObjects.disposeAndClear();
- maLbDocs.disposeAndClear();
- vcl::Window::dispose();
+ DELETEZ(mpNavigatorCtrlItem);
+ DELETEZ(mpPageNameCtrlItem);
+ maToolbox.clear();
+ maTlbObjects.clear();
+ maLbDocs.clear();
+ PanelLayout::dispose();
}
//when object is marked , fresh the corresponding entry tree .
@@ -206,10 +163,11 @@ void SdNavigatorWin::InitTreeLB( const SdDrawDocument* pDoc )
// Disable the shape filter drop down menu when there is a running slide
// show.
+ const sal_uInt16 nShapeId = maToolbox->GetItemId("shapes");
if (pViewShell!=nullptr && sd::SlideShow::IsRunning( pViewShell->GetViewShellBase() ))
- maToolbox->EnableItem(TBI_SHAPE_FILTER, false);
+ maToolbox->EnableItem(nShapeId, false);
else
- maToolbox->EnableItem(TBI_SHAPE_FILTER);
+ maToolbox->EnableItem(nShapeId);
if( !maTlbObjects->IsEqualToDoc( pDoc ) )
{
@@ -265,18 +223,19 @@ sd::DrawDocShell* SdNavigatorWin::GetDrawDocShell( const SdDrawDocument* pDoc )
IMPL_LINK_NOARG(SdNavigatorWin, SelectToolboxHdl, ToolBox *, void)
{
sal_uInt16 nId = maToolbox->GetCurItemId();
+ const OUString sCommand = maToolbox->GetItemCommand(nId);
PageJump ePage = PAGE_NONE;
- if( nId == TBI_FIRST )
+ if (sCommand == "first")
ePage = PAGE_FIRST;
- else if( nId == TBI_PREVIOUS )
+ else if (sCommand == "previous")
ePage = PAGE_PREVIOUS;
- else if( nId == TBI_NEXT )
+ else if (sCommand == "next")
ePage = PAGE_NEXT;
- else if( nId == TBI_LAST )
+ else if (sCommand == "last")
ePage = PAGE_LAST;
- if( ePage != PAGE_NONE )
+ if (ePage != PAGE_NONE)
{
SfxUInt16Item aItem( SID_NAVIGATOR_PAGE, (sal_uInt16)ePage );
mpBindings->GetDispatcher()->ExecuteList(SID_NAVIGATOR_PAGE,
@@ -287,73 +246,68 @@ IMPL_LINK_NOARG(SdNavigatorWin, SelectToolboxHdl, ToolBox *, void)
IMPL_LINK( SdNavigatorWin, DropdownClickToolBoxHdl, ToolBox*, pBox, void )
{
sal_uInt16 nId = maToolbox->GetCurItemId();
+ const OUString sCommand = maToolbox->GetItemCommand(nId);
- switch( nId )
+ if (sCommand == "dragmode")
{
- case TBI_DRAGTYPE:
- {
- // Popup menu is created depending if the document is saved or not
- ScopedVclPtrInstance<PopupMenu> pMenu;
-
- static const char* aHIDs[] =
- {
- HID_SD_NAVIGATOR_MENU1,
- HID_SD_NAVIGATOR_MENU2,
- HID_SD_NAVIGATOR_MENU3,
- nullptr
- };
-
- for (sal_uInt16 nID = NAVIGATOR_DRAGTYPE_URL; nID < NAVIGATOR_DRAGTYPE_COUNT; ++nID)
- {
- sal_uInt16 nRId = GetDragTypeSdResId( (NavigatorDragType)nID, false );
- if( nRId > 0 )
- {
- DBG_ASSERT(aHIDs[nID-NAVIGATOR_DRAGTYPE_URL],"HelpId not added!");
- pMenu->InsertItem(nID, SD_RESSTR(nRId), MenuItemBits::RADIOCHECK);
- pMenu->SetHelpId(nID, aHIDs[nID - NAVIGATOR_DRAGTYPE_URL]);
- }
+ // Popup menu is created depending if the document is saved or not
+ ScopedVclPtrInstance<PopupMenu> pMenu;
- }
- NavDocInfo* pInfo = GetDocInfo();
+ static const char* aHIDs[] =
+ {
+ HID_SD_NAVIGATOR_MENU1,
+ HID_SD_NAVIGATOR_MENU2,
+ HID_SD_NAVIGATOR_MENU3,
+ nullptr
+ };
- if( ( pInfo && !pInfo->HasName() ) || !maTlbObjects->IsLinkableSelected() )
+ for (sal_uInt16 nID = NAVIGATOR_DRAGTYPE_URL; nID < NAVIGATOR_DRAGTYPE_COUNT; ++nID)
+ {
+ sal_uInt16 nRId = GetDragTypeSdResId( (NavigatorDragType)nID, false );
+ if( nRId > 0 )
{
- pMenu->EnableItem( NAVIGATOR_DRAGTYPE_LINK, false );
- pMenu->EnableItem( NAVIGATOR_DRAGTYPE_URL, false );
- meDragType = NAVIGATOR_DRAGTYPE_EMBEDDED;
+ DBG_ASSERT(aHIDs[nID-NAVIGATOR_DRAGTYPE_URL],"HelpId not added!");
+ pMenu->InsertItem(nID, SD_RESSTR(nRId), MenuItemBits::RADIOCHECK);
+ pMenu->SetHelpId(nID, aHIDs[nID - NAVIGATOR_DRAGTYPE_URL]);
}
- pMenu->CheckItem( (sal_uInt16)meDragType );
- pMenu->SetSelectHdl( LINK( this, SdNavigatorWin, MenuSelectHdl ) );
-
- pMenu->Execute( this, maToolbox->GetItemRect( nId ), PopupMenuFlags::ExecuteDown );
- pBox->EndSelection();
}
- break;
+ NavDocInfo* pInfo = GetDocInfo();
- case TBI_SHAPE_FILTER:
+ if( ( pInfo && !pInfo->HasName() ) || !maTlbObjects->IsLinkableSelected() )
{
- ScopedVclPtrInstance<PopupMenu> pMenu;
-
- pMenu->InsertItem(
- nShowNamedShapesFilter,
- SD_RESSTR(STR_NAVIGATOR_SHOW_NAMED_SHAPES),
- MenuItemBits::RADIOCHECK);
- pMenu->InsertItem(
- nShowAllShapesFilter,
- SD_RESSTR(STR_NAVIGATOR_SHOW_ALL_SHAPES),
- MenuItemBits::RADIOCHECK);
-
- if (maTlbObjects->GetShowAllShapes())
- pMenu->CheckItem(nShowAllShapesFilter);
- else
- pMenu->CheckItem(nShowNamedShapesFilter);
- pMenu->SetSelectHdl( LINK( this, SdNavigatorWin, ShapeFilterCallback ) );
-
- pMenu->Execute( this, maToolbox->GetItemRect( nId ), PopupMenuFlags::ExecuteDown );
- pBox->EndSelection();
+ pMenu->EnableItem( NAVIGATOR_DRAGTYPE_LINK, false );
+ pMenu->EnableItem( NAVIGATOR_DRAGTYPE_URL, false );
+ meDragType = NAVIGATOR_DRAGTYPE_EMBEDDED;
}
- break;
+
+ pMenu->CheckItem( (sal_uInt16)meDragType );
+ pMenu->SetSelectHdl( LINK( this, SdNavigatorWin, MenuSelectHdl ) );
+
+ pMenu->Execute( this, maToolbox->GetItemRect( nId ), PopupMenuFlags::ExecuteDown );
+ pBox->EndSelection();
+ }
+ else if (sCommand == "shapes")
+ {
+ ScopedVclPtrInstance<PopupMenu> pMenu;
+
+ pMenu->InsertItem(
+ nShowNamedShapesFilter,
+ SD_RESSTR(STR_NAVIGATOR_SHOW_NAMED_SHAPES),
+ MenuItemBits::RADIOCHECK);
+ pMenu->InsertItem(
+ nShowAllShapesFilter,
+ SD_RESSTR(STR_NAVIGATOR_SHOW_ALL_SHAPES),
+ MenuItemBits::RADIOCHECK);
+
+ if (maTlbObjects->GetShowAllShapes())
+ pMenu->CheckItem(nShowAllShapesFilter);
+ else
+ pMenu->CheckItem(nShowNamedShapesFilter);
+ pMenu->SetSelectHdl( LINK( this, SdNavigatorWin, ShapeFilterCallback ) );
+
+ pMenu->Execute( this, maToolbox->GetItemRect( nId ), PopupMenuFlags::ExecuteDown );
+ pBox->EndSelection();
}
}
@@ -518,43 +472,6 @@ IMPL_LINK( SdNavigatorWin, ShapeFilterCallback, Menu *, pMenu, bool )
return false;
}
-void SdNavigatorWin::Resize()
-{
- Size aWinSize( GetOutputSizePixel() );
- if( aWinSize.Height() >= maMinSize.Height() )
- //aWinSize.Width() >= maMinSize.Width() )
- {
- Size aDiffSize;
- aDiffSize.Width() = aWinSize.Width() - maSize.Width();
- aDiffSize.Height() = aWinSize.Height() - maSize.Height();
-
- // change size of Toolbox
- Size aObjSize( maToolbox->GetOutputSizePixel() );
- aObjSize.Width() += aDiffSize.Width();
- maToolbox->SetOutputSizePixel( aObjSize );
-
- // change size of TreeLB
- aObjSize = maTlbObjects->GetSizePixel();
- aObjSize.Width() += aDiffSize.Width();
- aObjSize.Height() = maLbDocs->GetPosPixel().Y() + aDiffSize.Height() -
- maTlbObjects->GetPosPixel().Y() - 4;
- maTlbObjects->SetSizePixel( aObjSize );
-
- Point aPt( 0, aDiffSize.Height() );
-
- // move other controls (DocumentLB)
- maLbDocs->Hide();
- aObjSize = maLbDocs->GetOutputSizePixel();
- aObjSize.Width() += aDiffSize.Width();
- maLbDocs->SetPosPixel( maLbDocs->GetPosPixel() + aPt );
- maLbDocs->SetOutputSizePixel( aObjSize );
- maLbDocs->Show();
-
- maSize = aWinSize;
- }
- Window::Resize();
-}
-
bool SdNavigatorWin::InsertFile(const OUString& rFileName)
{
INetURLObject aURL( rFileName );
@@ -703,11 +620,11 @@ sal_uInt16 SdNavigatorWin::GetDragTypeSdResId( NavigatorDragType eDT, bool bImag
case NAVIGATOR_DRAGTYPE_NONE:
return( bImage ? 0 : STR_NONE );
case NAVIGATOR_DRAGTYPE_URL:
- return( bImage ? TBI_HYPERLINK : STR_DRAGTYPE_URL );
+ return( bImage ? IMG_HYPERLINK : STR_DRAGTYPE_URL );
case NAVIGATOR_DRAGTYPE_EMBEDDED:
- return( bImage ? TBI_EMBEDDED : STR_DRAGTYPE_EMBEDDED );
+ return( bImage ? IMG_EMBEDDED : STR_DRAGTYPE_EMBEDDED );
case NAVIGATOR_DRAGTYPE_LINK:
- return( bImage ? TBI_LINK : STR_DRAGTYPE_LINK );
+ return( bImage ? IMG_LINK : STR_DRAGTYPE_LINK );
default: OSL_FAIL( "No resource for DragType available!" );
}
return 0;
@@ -798,26 +715,10 @@ void SdNavigatorWin::KeyInput( const KeyEvent& rKEvt )
}
}
-void SdNavigatorWin::DataChanged( const DataChangedEvent& rDCEvt )
-{
- if ( (rDCEvt.GetType() == DataChangedEventType::SETTINGS) && (rDCEvt.GetFlags() & AllSettingsFlags::STYLE) )
- ApplyImageList();
-
- Window::DataChanged( rDCEvt );
-}
-
void SdNavigatorWin::SetDragImage()
{
- maToolbox->SetItemImage( TBI_DRAGTYPE, maToolbox->GetImageList().GetImage( GetDragTypeSdResId( meDragType, true ) ) );
-}
-
-void SdNavigatorWin::ApplyImageList()
-{
-
- maToolbox->SetImageList( maImageList );
- maToolbox->SetItemImage(TBI_SHAPE_FILTER, Image(BitmapEx(SdResId(BMP_GRAPHIC))));
-
- SetDragImage();
+ const sal_uInt16 nDragTypeId = maToolbox->GetItemId("dragmode");
+ maToolbox->SetItemImage(nDragTypeId, Image(SdResId(GetDragTypeSdResId(meDragType, true))));
}
/**
@@ -846,39 +747,44 @@ void SdNavigatorControllerItem::StateChanged( sal_uInt16 nSId,
NavDocInfo* pInfo = pNavigatorWin->GetDocInfo();
if( pInfo && pInfo->IsActive() )
{
+ sal_uInt16 nFirstId = pNavigatorWin->maToolbox->GetItemId("first");
+ sal_uInt16 nPrevId = pNavigatorWin->maToolbox->GetItemId("previous");
+ sal_uInt16 nLastId = pNavigatorWin->maToolbox->GetItemId("last");
+ sal_uInt16 nNextId = pNavigatorWin->maToolbox->GetItemId("next");
+
// First
- if( nState & NavState::BtnFirstEnabled &&
- !pNavigatorWin->maToolbox->IsItemEnabled( TBI_FIRST ) )
- pNavigatorWin->maToolbox->EnableItem( TBI_FIRST );
- if( nState & NavState::BtnFirstDisabled &&
- pNavigatorWin->maToolbox->IsItemEnabled( TBI_FIRST ) )
- pNavigatorWin->maToolbox->EnableItem( TBI_FIRST, false );
+ if (nState & NavState::BtnFirstEnabled &&
+ !pNavigatorWin->maToolbox->IsItemEnabled(nFirstId))
+ pNavigatorWin->maToolbox->EnableItem(nFirstId);
+ if (nState & NavState::BtnFirstDisabled &&
+ pNavigatorWin->maToolbox->IsItemEnabled(nFirstId))
+ pNavigatorWin->maToolbox->EnableItem(nFirstId, false);
// Prev
- if( nState & NavState::BtnPrevEnabled &&
- !pNavigatorWin->maToolbox->IsItemEnabled( TBI_PREVIOUS ) )
- pNavigatorWin->maToolbox->EnableItem( TBI_PREVIOUS );
- if( nState & NavState::BtnPrevDisabled &&
- pNavigatorWin->maToolbox->IsItemEnabled( TBI_PREVIOUS ) )
- pNavigatorWin->maToolbox->EnableItem( TBI_PREVIOUS, false );
+ if (nState & NavState::BtnPrevEnabled &&
+ !pNavigatorWin->maToolbox->IsItemEnabled(nPrevId))
+ pNavigatorWin->maToolbox->EnableItem(nPrevId);
+ if (nState & NavState::BtnPrevDisabled &&
+ pNavigatorWin->maToolbox->IsItemEnabled(nPrevId))
+ pNavigatorWin->maToolbox->EnableItem(nPrevId, false);
// Last
- if( nState & NavState::BtnLastEnabled &&
- !pNavigatorWin->maToolbox->IsItemEnabled( TBI_LAST ) )
- pNavigatorWin->maToolbox->EnableItem( TBI_LAST );
- if( nState & NavState::BtnLastDisabled &&
- pNavigatorWin->maToolbox->IsItemEnabled( TBI_LAST ) )
- pNavigatorWin->maToolbox->EnableItem( TBI_LAST, false );
+ if (nState & NavState::BtnLastEnabled &&
+ !pNavigatorWin->maToolbox->IsItemEnabled(nLastId))
+ pNavigatorWin->maToolbox->EnableItem(nLastId);
+ if (nState & NavState::BtnLastDisabled &&
+ pNavigatorWin->maToolbox->IsItemEnabled(nLastId))
+ pNavigatorWin->maToolbox->EnableItem(nLastId, false);
// Next
- if( nState & NavState::BtnNextEnabled &&
- !pNavigatorWin->maToolbox->IsItemEnabled( TBI_NEXT ) )
- pNavigatorWin->maToolbox->EnableItem( TBI_NEXT );
- if( nState & NavState::BtnNextDisabled &&
- pNavigatorWin->maToolbox->IsItemEnabled( TBI_NEXT ) )
- pNavigatorWin->maToolbox->EnableItem( TBI_NEXT, false );
-
- if( nState & NavState::TableUpdate )
+ if (nState & NavState::BtnNextEnabled &&
+ !pNavigatorWin->maToolbox->IsItemEnabled(nNextId))
+ pNavigatorWin->maToolbox->EnableItem(nNextId);
+ if (nState & NavState::BtnNextDisabled &&
+ pNavigatorWin->maToolbox->IsItemEnabled(nNextId))
+ pNavigatorWin->maToolbox->EnableItem(nNextId, false);
+
+ if (nState & NavState::TableUpdate)
{
// InitTlb; is initiated by Slot
if (maUpdateRequest)