summaryrefslogtreecommitdiff
path: root/sw/source/uibase/sidebar/WrapPropertyPanel.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/uibase/sidebar/WrapPropertyPanel.cxx')
-rw-r--r--sw/source/uibase/sidebar/WrapPropertyPanel.cxx243
1 files changed, 243 insertions, 0 deletions
diff --git a/sw/source/uibase/sidebar/WrapPropertyPanel.cxx b/sw/source/uibase/sidebar/WrapPropertyPanel.cxx
new file mode 100644
index 000000000000..96d8d344b6f0
--- /dev/null
+++ b/sw/source/uibase/sidebar/WrapPropertyPanel.cxx
@@ -0,0 +1,243 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "WrapPropertyPanel.hxx"
+#include "PropertyPanel.hrc"
+
+#include <cmdid.h>
+#include <swtypes.hxx>
+
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/sidebar/ControlFactory.hxx>
+#include <sfx2/imagemgr.hxx>
+#include <svl/eitem.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/settings.hxx>
+
+#include <com/sun/star/lang/IllegalArgumentException.hpp>
+
+const char UNO_WRAPOFF[] = ".uno:WrapOff";
+const char UNO_WRAPLEFT[] = ".uno:WrapLeft";
+const char UNO_WRAPRIGHT[] = ".uno:WrapRight";
+const char UNO_WRAPON[] = ".uno:WrapOn";
+const char UNO_WRAPTHROUGH[] = ".uno:WrapThrough";
+const char UNO_WRAPIDEAL[] = ".uno:WrapIdeal";
+
+namespace sw { namespace sidebar {
+
+WrapPropertyPanel* WrapPropertyPanel::Create (
+ Window* pParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rxFrame,
+ SfxBindings* pBindings)
+{
+ if (pParent == NULL)
+ throw ::com::sun::star::lang::IllegalArgumentException("no parent Window given to WrapPropertyPanel::Create", NULL, 0);
+ if ( ! rxFrame.is())
+ throw ::com::sun::star::lang::IllegalArgumentException("no XFrame given to WrapPropertyPanel::Create", NULL, 1);
+ if (pBindings == NULL)
+ throw ::com::sun::star::lang::IllegalArgumentException("no SfxBindings given to WrapPropertyPanel::Create", NULL, 2);
+
+ return new WrapPropertyPanel(
+ pParent,
+ rxFrame,
+ pBindings);
+}
+
+WrapPropertyPanel::WrapPropertyPanel(
+ Window* pParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rxFrame,
+ SfxBindings* pBindings )
+ : PanelLayout(pParent, "WrapPropertyPanel", "modules/swriter/ui/sidebarwrap.ui", rxFrame)
+ , mxFrame( rxFrame )
+ , mpBindings(pBindings)
+ // resources
+ , aWrapIL(6,2)
+ // controller items
+ , maSwNoWrapControl(FN_FRAME_NOWRAP, *pBindings, *this)
+ , maSwWrapLeftControl(FN_FRAME_WRAP, *pBindings, *this)
+ , maSwWrapRightControl(FN_FRAME_WRAP_RIGHT, *pBindings, *this)
+ , maSwWrapParallelControl(FN_FRAME_WRAP_LEFT, *pBindings, *this)
+ , maSwWrapThroughControl(FN_FRAME_WRAPTHRU, *pBindings, *this)
+ , maSwWrapIdealControl(FN_FRAME_WRAP_IDEAL, *pBindings, *this)
+{
+ get(mpRBNoWrap, "buttonnone");
+ get(mpRBWrapLeft, "buttonbefore");
+ get(mpRBWrapRight, "buttonafter");
+ get(mpRBWrapParallel, "buttonparallel");
+ get(mpRBWrapThrough, "buttonthrough");
+ get(mpRBIdealWrap, "buttonoptimal");
+
+ Initialize();
+}
+
+WrapPropertyPanel::~WrapPropertyPanel()
+{
+}
+
+void WrapPropertyPanel::Initialize()
+{
+ Link aLink = LINK(this, WrapPropertyPanel, WrapTypeHdl);
+ mpRBNoWrap->SetClickHdl(aLink);
+ mpRBWrapLeft->SetClickHdl(aLink);
+ mpRBWrapRight->SetClickHdl(aLink);
+ mpRBWrapParallel->SetClickHdl(aLink);
+ mpRBWrapThrough->SetClickHdl(aLink);
+ mpRBIdealWrap->SetClickHdl(aLink);
+
+ aWrapIL.AddImage( UNO_WRAPOFF,
+ ::GetImage( mxFrame, UNO_WRAPOFF, false ) );
+ aWrapIL.AddImage( UNO_WRAPLEFT,
+ ::GetImage( mxFrame, UNO_WRAPLEFT, false ) );
+ aWrapIL.AddImage( UNO_WRAPRIGHT,
+ ::GetImage( mxFrame, UNO_WRAPRIGHT, false ) );
+ aWrapIL.AddImage( UNO_WRAPON,
+ ::GetImage( mxFrame, UNO_WRAPON, false ) );
+ aWrapIL.AddImage( UNO_WRAPTHROUGH,
+ ::GetImage( mxFrame, UNO_WRAPTHROUGH, false ) );
+ aWrapIL.AddImage( UNO_WRAPIDEAL,
+ ::GetImage( mxFrame, UNO_WRAPIDEAL, false ) );
+
+ mpRBNoWrap->SetModeRadioImage( aWrapIL.GetImage(UNO_WRAPOFF) );
+ if ( Application::GetSettings().GetLayoutRTL() )
+ {
+ mpRBWrapLeft->SetModeRadioImage( aWrapIL.GetImage(UNO_WRAPRIGHT) );
+ mpRBWrapRight->SetModeRadioImage( aWrapIL.GetImage(UNO_WRAPLEFT) );
+ }
+ else
+ {
+ mpRBWrapLeft->SetModeRadioImage( aWrapIL.GetImage(UNO_WRAPLEFT) );
+ mpRBWrapRight->SetModeRadioImage( aWrapIL.GetImage(UNO_WRAPRIGHT) );
+ }
+ mpRBWrapParallel->SetModeRadioImage( aWrapIL.GetImage(UNO_WRAPON) );
+ mpRBWrapThrough->SetModeRadioImage( aWrapIL.GetImage(UNO_WRAPTHROUGH) );
+ mpRBIdealWrap->SetModeRadioImage( aWrapIL.GetImage(UNO_WRAPIDEAL) );
+
+ mpRBNoWrap->SetAccessibleName(mpRBNoWrap->GetQuickHelpText());
+ mpRBWrapLeft->SetAccessibleName(mpRBWrapLeft->GetQuickHelpText());
+ mpRBWrapRight->SetAccessibleName(mpRBWrapRight->GetQuickHelpText());
+ mpRBWrapParallel->SetAccessibleName(mpRBWrapParallel->GetQuickHelpText());
+ mpRBWrapThrough->SetAccessibleName(mpRBWrapThrough->GetQuickHelpText());
+ mpRBIdealWrap->SetAccessibleName(mpRBIdealWrap->GetQuickHelpText());
+
+ mpBindings->Update( FN_FRAME_NOWRAP );
+ mpBindings->Update( FN_FRAME_WRAP );
+ mpBindings->Update( FN_FRAME_WRAP_RIGHT );
+ mpBindings->Update( FN_FRAME_WRAP_LEFT );
+ mpBindings->Update( FN_FRAME_WRAPTHRU );
+ mpBindings->Update( FN_FRAME_WRAP_IDEAL );
+}
+
+IMPL_LINK(WrapPropertyPanel, WrapTypeHdl, void *, EMPTYARG)
+{
+ sal_uInt16 nSlot = 0;
+ if ( mpRBWrapLeft->IsChecked() )
+ {
+ nSlot = FN_FRAME_WRAP_LEFT;
+ }
+ else if( mpRBWrapRight->IsChecked() )
+ {
+ nSlot = FN_FRAME_WRAP_RIGHT;
+ }
+ else if ( mpRBWrapParallel->IsChecked() )
+ {
+ nSlot = FN_FRAME_WRAP;
+ }
+ else if( mpRBWrapThrough->IsChecked() )
+ {
+ nSlot = FN_FRAME_WRAPTHRU;
+ }
+ else if( mpRBIdealWrap->IsChecked() )
+ {
+ nSlot = FN_FRAME_WRAP_IDEAL;
+ }
+ else
+ {
+ nSlot = FN_FRAME_NOWRAP;
+ }
+ SfxBoolItem bStateItem( nSlot, true );
+ mpBindings->GetDispatcher()->Execute( nSlot, SFX_CALLMODE_RECORD, &bStateItem, 0L );
+
+ return 0;
+}
+
+void WrapPropertyPanel::NotifyItemUpdate(
+ const sal_uInt16 nSId,
+ const SfxItemState eState,
+ const SfxPoolItem* pState,
+ const bool bIsEnabled)
+{
+ (void)bIsEnabled;
+
+ if ( eState == SFX_ITEM_AVAILABLE &&
+ pState->ISA(SfxBoolItem) )
+ {
+ //Set Radio Button enable
+ mpRBNoWrap->Enable(true);
+ mpRBWrapLeft->Enable(true);
+ mpRBWrapRight->Enable(true);
+ mpRBWrapParallel->Enable(true);
+ mpRBWrapThrough->Enable(true);
+ mpRBIdealWrap->Enable(true);
+
+ const SfxBoolItem* pBoolItem = static_cast< const SfxBoolItem* >( pState );
+ switch( nSId )
+ {
+ case FN_FRAME_WRAP_RIGHT:
+ mpRBWrapRight->Check( pBoolItem->GetValue() );
+ break;
+ case FN_FRAME_WRAP_LEFT:
+ mpRBWrapLeft->Check( pBoolItem->GetValue() );
+ break;
+ case FN_FRAME_WRAPTHRU:
+ mpRBWrapThrough->Check( pBoolItem->GetValue() );
+ break;
+ case FN_FRAME_WRAP_IDEAL:
+ mpRBIdealWrap->Check( pBoolItem->GetValue() );
+ break;
+ case FN_FRAME_WRAP:
+ mpRBWrapParallel->Check( pBoolItem->GetValue() );
+ break;
+ case FN_FRAME_NOWRAP:
+ default:
+ mpRBNoWrap->Check( pBoolItem->GetValue() );
+ break;
+ }
+ }
+ else
+ {
+ mpRBNoWrap->Enable(false);
+ mpRBWrapLeft->Enable(false);
+ mpRBWrapRight->Enable(false);
+ mpRBWrapParallel->Enable(false);
+ mpRBWrapThrough->Enable(false);
+ mpRBIdealWrap->Enable(false);
+
+ mpRBNoWrap->Check( false );
+ mpRBWrapLeft->Check( false );
+ mpRBWrapRight->Check( false );
+ mpRBWrapParallel->Check( false );
+ mpRBWrapThrough->Check( false );
+ mpRBIdealWrap->Check( false );
+ }
+}
+
+} } // end of namespace ::sw::sidebar
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */