summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-03-21 16:12:56 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-03-22 00:29:00 +0100
commit751191ed2d7d6af6eddc3d738e8c45b0a2ab2572 (patch)
treedaba0416a5327cc4eb16c2361fffab8cbbd99b75 /vcl
parentbcb1392505ee3a19d8062402ff66888f1631b264 (diff)
move btndlg from vcl to toolkit
Change-Id: Iecc528bce1df9a67af43f9d9dd3ed41af24b0fad Reviewed-on: https://gerrit.libreoffice.org/51713 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/Library_vcl.mk1
-rw-r--r--vcl/source/window/btndlg.cxx363
2 files changed, 0 insertions, 364 deletions
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index a777f238a070..82971a424eb3 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -142,7 +142,6 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
vcl/source/window/stacking \
vcl/source/window/debug \
vcl/source/window/globalization \
- vcl/source/window/btndlg \
vcl/source/window/builder \
vcl/source/window/commandevent \
vcl/source/window/cursor \
diff --git a/vcl/source/window/btndlg.cxx b/vcl/source/window/btndlg.cxx
deleted file mode 100644
index ba1b1d77e697..000000000000
--- a/vcl/source/window/btndlg.cxx
+++ /dev/null
@@ -1,363 +0,0 @@
-/* -*- 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 <memory>
-#include <svdata.hxx>
-
-#include <vcl/button.hxx>
-#include <vcl/btndlg.hxx>
-
-
-struct ImplBtnDlgItem
-{
- sal_uInt16 mnId;
- bool mbOwnButton;
- long mnSepSize;
- VclPtr<PushButton> mpPushButton;
-
- ImplBtnDlgItem() : mnId(0), mbOwnButton(false), mnSepSize(0) {}
-};
-
-void ButtonDialog::ImplInitButtonDialogData()
-{
- mnButtonSize = 0;
- mnCurButtonId = 0;
- mnFocusButtonId = BUTTONDIALOG_BUTTON_NOTFOUND;
- mbFormat = true;
-}
-
-ButtonDialog::ButtonDialog( WindowType nType ) :
- Dialog( nType )
-{
- ImplInitButtonDialogData();
-}
-
-ButtonDialog::ButtonDialog( vcl::Window* pParent, WinBits nStyle ) :
- Dialog( WindowType::BUTTONDIALOG )
-{
- ImplInitButtonDialogData();
- ImplInit( pParent, nStyle );
-}
-
-ButtonDialog::~ButtonDialog()
-{
- disposeOnce();
-}
-
-void ButtonDialog::dispose()
-{
- for (auto & it : m_ItemList)
- {
- if ( it->mbOwnButton )
- it->mpPushButton.disposeAndClear();
- }
- m_ItemList.clear();
- Dialog::dispose();
-}
-
-VclPtr<PushButton> ButtonDialog::ImplCreatePushButton( ButtonDialogFlags nBtnFlags )
-{
- VclPtr<PushButton> pBtn;
- WinBits nStyle = 0;
-
- if ( nBtnFlags & ButtonDialogFlags::Default )
- nStyle |= WB_DEFBUTTON;
- if ( nBtnFlags & ButtonDialogFlags::Cancel )
- pBtn = VclPtr<CancelButton>::Create( this, nStyle );
- else if ( nBtnFlags & ButtonDialogFlags::OK )
- pBtn = VclPtr<OKButton>::Create( this, nStyle );
- else if ( nBtnFlags & ButtonDialogFlags::Help )
- pBtn = VclPtr<HelpButton>::Create( this, nStyle );
- else
- pBtn = VclPtr<PushButton>::Create( this, nStyle );
-
- if ( !(nBtnFlags & ButtonDialogFlags::Help) )
- pBtn->SetClickHdl( LINK( this, ButtonDialog, ImplClickHdl ) );
-
- return pBtn;
-}
-
-ImplBtnDlgItem* ButtonDialog::ImplGetItem( sal_uInt16 nId ) const
-{
- for (auto & it : m_ItemList)
- {
- if (it->mnId == nId)
- return &(*it);
- }
-
- return nullptr;
-}
-
-long ButtonDialog::ImplGetButtonSize()
-{
- if ( !mbFormat )
- return mnButtonSize;
-
- // Calculate ButtonSize
- long nLastSepSize = 0;
- long nSepSize = 0;
- maCtrlSize = Size( IMPL_MINSIZE_BUTTON_WIDTH, IMPL_MINSIZE_BUTTON_HEIGHT );
-
- for (auto & it : m_ItemList)
- {
- nSepSize += nLastSepSize;
-
- long nTxtWidth = it->mpPushButton->GetCtrlTextWidth(it->mpPushButton->GetText());
- nTxtWidth += IMPL_EXTRA_BUTTON_WIDTH;
-
- if ( nTxtWidth > maCtrlSize.Width() )
- maCtrlSize.setWidth( nTxtWidth );
-
- long nTxtHeight = it->mpPushButton->GetTextHeight();
- nTxtHeight += IMPL_EXTRA_BUTTON_HEIGHT;
-
- if ( nTxtHeight > maCtrlSize.Height() )
- maCtrlSize.setHeight( nTxtHeight );
-
- nSepSize += it->mnSepSize;
-
- if ( GetStyle() & WB_HORZ )
- nLastSepSize = IMPL_SEP_BUTTON_X;
- else
- nLastSepSize = IMPL_SEP_BUTTON_Y;
- }
-
- size_t const nButtonCount = m_ItemList.size();
-
- if ( GetStyle() & WB_HORZ )
- mnButtonSize = nSepSize + (nButtonCount*maCtrlSize.Width());
- else
- mnButtonSize = nSepSize + (nButtonCount*maCtrlSize.Height());
-
- return mnButtonSize;
-}
-
-void ButtonDialog::ImplPosControls()
-{
- if ( !mbFormat )
- return;
-
- // Create PushButtons and determine Sizes
- ImplGetButtonSize();
-
- // determine dialog size
- Size aDlgSize = maPageSize;
- long nX;
- long nY;
- if ( GetStyle() & WB_HORZ )
- {
- if ( mnButtonSize+(IMPL_DIALOG_OFFSET*2) > aDlgSize.Width() )
- aDlgSize.setWidth( mnButtonSize+(IMPL_DIALOG_OFFSET*2) );
- if ( GetStyle() & WB_LEFT )
- nX = IMPL_DIALOG_OFFSET;
- else if ( GetStyle() & WB_RIGHT )
- nX = aDlgSize.Width()-mnButtonSize-IMPL_DIALOG_OFFSET;
- else
- nX = (aDlgSize.Width()-mnButtonSize)/2;
-
- aDlgSize.AdjustHeight(IMPL_DIALOG_OFFSET+maCtrlSize.Height() );
- nY = aDlgSize.Height()-maCtrlSize.Height()-IMPL_DIALOG_OFFSET;
- }
- else
- {
- if ( mnButtonSize+(IMPL_DIALOG_OFFSET*2) > aDlgSize.Height() )
- aDlgSize.setHeight( mnButtonSize+(IMPL_DIALOG_OFFSET*2) );
- if ( GetStyle() & WB_BOTTOM )
- nY = aDlgSize.Height()-mnButtonSize-IMPL_DIALOG_OFFSET;
- else if ( GetStyle() & WB_VCENTER )
- nY = (aDlgSize.Height()-mnButtonSize)/2;
- else
- nY = IMPL_DIALOG_OFFSET;
-
- aDlgSize.AdjustWidth(IMPL_DIALOG_OFFSET+maCtrlSize.Width() );
- nX = aDlgSize.Width()-maCtrlSize.Width()-IMPL_DIALOG_OFFSET;
- }
-
- // Arrange PushButtons
- for (auto & it : m_ItemList)
- {
- if ( GetStyle() & WB_HORZ )
- nX += it->mnSepSize;
- else
- nY += it->mnSepSize;
-
- it->mpPushButton->SetPosSizePixel( Point( nX, nY ), maCtrlSize );
- it->mpPushButton->Show();
-
- if ( GetStyle() & WB_HORZ )
- nX += maCtrlSize.Width()+IMPL_SEP_BUTTON_X;
- else
- nY += maCtrlSize.Height()+IMPL_SEP_BUTTON_Y;
- }
-
- SetOutputSizePixel(aDlgSize);
- SetMinOutputSizePixel(aDlgSize);
-
- mbFormat = false;
-}
-
-IMPL_LINK( ButtonDialog, ImplClickHdl, Button*, pBtn, void )
-{
- for (auto & it : m_ItemList)
- {
- if ( it->mpPushButton == pBtn )
- {
- mnCurButtonId = it->mnId;
- if ( IsInExecute() )
- EndDialog( mnCurButtonId );
- break;
- }
- }
-}
-
-void ButtonDialog::Resize()
-{
-}
-
-void ButtonDialog::StateChanged( StateChangedType nType )
-{
- if ( nType == StateChangedType::InitShow )
- {
- ImplPosControls();
- for (auto & it : m_ItemList)
- {
- if ( it->mpPushButton && it->mbOwnButton )
- it->mpPushButton->SetZOrder(nullptr, ZOrderFlags::Last);
- }
-
- // Set focus on default button.
- if ( mnFocusButtonId != BUTTONDIALOG_BUTTON_NOTFOUND )
- {
- for (auto & it : m_ItemList)
- {
- if (it->mnId == mnFocusButtonId )
- {
- if (it->mpPushButton->IsVisible())
- it->mpPushButton->GrabFocus();
-
- break;
- }
- }
- }
- }
-
- Dialog::StateChanged( nType );
-}
-
-void ButtonDialog::AddButton( const OUString& rText, sal_uInt16 nId,
- ButtonDialogFlags nBtnFlags, long nSepPixel )
-{
- // PageItem anlegen
- std::unique_ptr<ImplBtnDlgItem> pItem(new ImplBtnDlgItem);
- pItem->mnId = nId;
- pItem->mbOwnButton = true;
- pItem->mnSepSize = nSepPixel;
- pItem->mpPushButton = ImplCreatePushButton( nBtnFlags );
-
- if (!rText.isEmpty())
- pItem->mpPushButton->SetText( rText );
-
- m_ItemList.push_back(std::move(pItem));
-
- if ( nBtnFlags & ButtonDialogFlags::Focus )
- mnFocusButtonId = nId;
-
- mbFormat = true;
-}
-
-void ButtonDialog::AddButton( StandardButtonType eType, sal_uInt16 nId,
- ButtonDialogFlags nBtnFlags, long nSepPixel )
-{
- // PageItem anlegen
- std::unique_ptr<ImplBtnDlgItem> pItem(new ImplBtnDlgItem);
- pItem->mnId = nId;
- pItem->mbOwnButton = true;
- pItem->mnSepSize = nSepPixel;
-
- if ( eType == StandardButtonType::OK )
- nBtnFlags |= ButtonDialogFlags::OK;
- else if ( eType == StandardButtonType::Help )
- nBtnFlags |= ButtonDialogFlags::Help;
- else if ( (eType == StandardButtonType::Cancel) || (eType == StandardButtonType::Close) )
- nBtnFlags |= ButtonDialogFlags::Cancel;
- pItem->mpPushButton = ImplCreatePushButton( nBtnFlags );
-
- // Standard-Buttons have the right text already
- if ( !((eType == StandardButtonType::OK && pItem->mpPushButton->GetType() == WindowType::OKBUTTON) ||
- (eType == StandardButtonType::Cancel && pItem->mpPushButton->GetType() == WindowType::CANCELBUTTON) ||
- (eType == StandardButtonType::Help && pItem->mpPushButton->GetType() == WindowType::HELPBUTTON)) )
- {
- std::map<StandardButtonType, OUString> mapButtonTypeToID = {{StandardButtonType::Yes, "yes"},
- {StandardButtonType::No, "no"}, {StandardButtonType::Retry, "retry"},
- {StandardButtonType::Close, "close"}, {StandardButtonType::More, "more"},
- {StandardButtonType::Ignore, "ignore"}, {StandardButtonType::Abort, "abort"},
- {StandardButtonType::Less, "less"}, {StandardButtonType::Count, "count"}};
- auto itr = mapButtonTypeToID.find(eType);
- if (itr != mapButtonTypeToID.end())
- pItem->mpPushButton->set_id(itr->second);
- pItem->mpPushButton->SetText( Button::GetStandardText( eType ) );
- }
-
- if ( nBtnFlags & ButtonDialogFlags::Focus )
- mnFocusButtonId = nId;
-
- m_ItemList.push_back(std::move(pItem));
-
- mbFormat = true;
-}
-
-void ButtonDialog::RemoveButton( sal_uInt16 nId )
-{
- for (std::vector<std::unique_ptr<ImplBtnDlgItem>>::iterator it
- = m_ItemList.begin(); it != m_ItemList.end(); ++it)
- {
- if ((*it)->mnId == nId)
- {
- (*it)->mpPushButton->Hide();
- if ((*it)->mbOwnButton)
- (*it)->mpPushButton.disposeAndClear();
- else
- (*it)->mpPushButton.clear();
- m_ItemList.erase(it);
- return;
- }
- }
-
- SAL_WARN( "vcl.window", "ButtonDialog::RemoveButton(): ButtonId invalid" );
-}
-
-sal_uInt16 ButtonDialog::GetButtonId( sal_uInt16 nButton ) const
-{
- if ( nButton < m_ItemList.size() )
- return m_ItemList[nButton]->mnId;
- else
- return BUTTONDIALOG_BUTTON_NOTFOUND;
-}
-
-PushButton* ButtonDialog::GetPushButton( sal_uInt16 nId ) const
-{
- ImplBtnDlgItem* pItem = ImplGetItem( nId );
-
- if ( pItem )
- return pItem->mpPushButton;
- else
- return nullptr;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */