summaryrefslogtreecommitdiff
path: root/sw/source/ui/dialog
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-11-02 18:21:20 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-11-04 17:33:06 +0100
commit4d83c24cdd433d5c63800290e2da6317ae12111c (patch)
treebfd4c863f0f79d40ac1671812fef1976ca4a9c85 /sw/source/ui/dialog
parent628e96ce1fce194b30a5c2912feb8b7ec0328db0 (diff)
reweld SwWordCountFloatDlg
fixing up the bit that failed the last time Change-Id: I235f8f92cbc0c3e31837e01a9b094580c6f5aecf Reviewed-on: https://gerrit.libreoffice.org/62786 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sw/source/ui/dialog')
-rw-r--r--sw/source/ui/dialog/swdlgfact.cxx19
-rw-r--r--sw/source/ui/dialog/swdlgfact.hxx17
-rw-r--r--sw/source/ui/dialog/wordcountdialog.cxx114
3 files changed, 63 insertions, 87 deletions
diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx
index 6badd0175224..84a3b5400b91 100644
--- a/sw/source/ui/dialog/swdlgfact.cxx
+++ b/sw/source/ui/dialog/swdlgfact.cxx
@@ -89,7 +89,11 @@ using namespace ::com::sun::star;
using namespace css::frame;
using namespace css::uno;
-IMPL_ABSTDLG_BASE(AbstractSwWordCountFloatDlg_Impl);
+short AbstractSwWordCountFloatDlg_Impl::Execute()
+{
+ return m_xDlg->run();
+}
+
IMPL_ABSTDLG_BASE(AbstractSwInsertAbstractDlg_Impl);
IMPL_ABSTDLG_BASE(SwAbstractSfxDialog_Impl);
@@ -704,19 +708,19 @@ vcl::Window* AbstractAuthMarkFloatDlg_Impl::GetWindow()
return static_cast<vcl::Window*>(pDlg);
}
-vcl::Window* AbstractSwWordCountFloatDlg_Impl::GetWindow()
+std::shared_ptr<SfxModelessDialogController> AbstractSwWordCountFloatDlg_Impl::GetController()
{
- return static_cast<vcl::Window*>(pDlg);
+ return m_xDlg;
}
void AbstractSwWordCountFloatDlg_Impl::UpdateCounts()
{
- pDlg->UpdateCounts();
+ m_xDlg->UpdateCounts();
}
void AbstractSwWordCountFloatDlg_Impl::SetCounts(const SwDocStat &rCurrCnt, const SwDocStat &rDocStat)
{
- pDlg->SetCounts(rCurrCnt, rDocStat);
+ m_xDlg->SetCounts(rCurrCnt, rDocStat);
}
AbstractMailMergeWizard_Impl::~AbstractMailMergeWizard_Impl()
@@ -1131,11 +1135,10 @@ VclPtr<AbstractMarkFloatDlg> SwAbstractDialogFactory_Impl::CreateAuthMarkFloatDl
VclPtr<AbstractSwWordCountFloatDlg> SwAbstractDialogFactory_Impl::CreateSwWordCountDialog(
SfxBindings* pBindings,
SfxChildWindow* pChild,
- vcl::Window *pParent,
+ weld::Window *pParent,
SfxChildWinInfo* pInfo)
{
- VclPtr<SwWordCountFloatDlg> pDlg = VclPtr<SwWordCountFloatDlg>::Create( pBindings, pChild, pParent, pInfo );
- return VclPtr<AbstractSwWordCountFloatDlg_Impl>::Create( pDlg );
+ return VclPtr<AbstractSwWordCountFloatDlg_Impl>::Create(o3tl::make_unique<SwWordCountFloatDlg>(pBindings, pChild, pParent, pInfo));
}
VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateIndexMarkModalDlg(
diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx
index 103b04b35a02..14b802ef7e2d 100644
--- a/sw/source/ui/dialog/swdlgfact.hxx
+++ b/sw/source/ui/dialog/swdlgfact.hxx
@@ -74,10 +74,17 @@ bool Class::StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) \
class SwWordCountFloatDlg;
class AbstractSwWordCountFloatDlg_Impl : public AbstractSwWordCountFloatDlg
{
- DECL_ABSTDLG_BASE(AbstractSwWordCountFloatDlg_Impl,SwWordCountFloatDlg)
- virtual void UpdateCounts() override;
- virtual void SetCounts(const SwDocStat &rCurrCnt, const SwDocStat &rDocStat) override;
- virtual vcl::Window * GetWindow() override; //this method is added for return a Window type pointer
+protected:
+ std::shared_ptr<SwWordCountFloatDlg> m_xDlg;
+public:
+ explicit AbstractSwWordCountFloatDlg_Impl(std::unique_ptr<SwWordCountFloatDlg> p)
+ : m_xDlg(std::move(p))
+ {
+ }
+ virtual short Execute() override;
+ virtual void UpdateCounts() override;
+ virtual void SetCounts(const SwDocStat &rCurrCnt, const SwDocStat &rDocStat) override;
+ virtual std::shared_ptr<SfxModelessDialogController> GetController() override;
};
class AbstractSwInsertAbstractDlg_Impl : public AbstractSwInsertAbstractDlg
@@ -596,7 +603,7 @@ public:
virtual VclPtr<SfxAbstractDialog> CreateSwDropCapsDialog(weld::Window* pParent, const SfxItemSet& rSet) override;
virtual VclPtr<SfxAbstractDialog> CreateSwBackgroundDialog(weld::Window* pParent, const SfxItemSet& rSet) override;
virtual VclPtr<AbstractSwWordCountFloatDlg> CreateSwWordCountDialog(SfxBindings* pBindings,
- SfxChildWindow* pChild, vcl::Window *pParent, SfxChildWinInfo* pInfo) override;
+ SfxChildWindow* pChild, weld::Window *pParent, SfxChildWinInfo* pInfo) override;
virtual VclPtr<AbstractSwInsertAbstractDlg> CreateSwInsertAbstractDlg() override;
virtual VclPtr<SfxAbstractDialog> CreateSwAddressAbstractDlg(vcl::Window* pParent, const SfxItemSet& rSet) override;
virtual VclPtr<AbstractSwAsciiFilterDlg> CreateSwAsciiFilterDlg(weld::Window* pParent, SwDocShell& rDocSh,
diff --git a/sw/source/ui/dialog/wordcountdialog.cxx b/sw/source/ui/dialog/wordcountdialog.cxx
index cc350e6fb9c8..b24767823963 100644
--- a/sw/source/ui/dialog/wordcountdialog.cxx
+++ b/sw/source/ui/dialog/wordcountdialog.cxx
@@ -31,126 +31,92 @@
#include <unotools/localedatawrapper.hxx>
#include <vcl/settings.hxx>
-IMPL_STATIC_LINK_NOARG(SwWordCountFloatDlg, CloseHdl, Button*, void)
-{
- SfxViewFrame* pVFrame = ::GetActiveView()->GetViewFrame();
- if (pVFrame != nullptr)
- {
- pVFrame->ToggleChildWindow(FN_WORDCOUNT_DIALOG);
- }
-}
-
SwWordCountFloatDlg::~SwWordCountFloatDlg()
{
- disposeOnce();
-}
-
-void SwWordCountFloatDlg::dispose()
-{
SwViewShell::SetCareWin( nullptr );
- m_pCurrentWordFT.clear();
- m_pCurrentCharacterFT.clear();
- m_pCurrentCharacterExcludingSpacesFT.clear();
- m_pCurrentCjkcharsFT.clear();
- m_pCurrentStandardizedPagesFT.clear();
- m_pDocWordFT.clear();
- m_pDocCharacterFT.clear();
- m_pDocCharacterExcludingSpacesFT.clear();
- m_pDocCjkcharsFT.clear();
- m_pDocStandardizedPagesFT.clear();
- m_pCjkcharsLabelFT.clear();
- m_pStandardizedPagesLabelFT.clear();
- m_pClosePB.clear();
- SfxModelessDialog::dispose();
}
namespace
{
- void setValue(FixedText *pWidget, sal_uLong nValue, const LocaleDataWrapper& rLocaleData)
+ void setValue(weld::Label& rWidget, sal_uLong nValue, const LocaleDataWrapper& rLocaleData)
{
- pWidget->SetText(rLocaleData.getNum(nValue, 0));
+ rWidget.set_label(rLocaleData.getNum(nValue, 0));
}
- void setDoubleValue(FixedText *pWidget, double fValue)
+ void setDoubleValue(weld::Label& rWidget, double fValue)
{
OUString sValue(OUString::number(::rtl::math::round(fValue, 1)));
- pWidget->SetText(sValue);
+ rWidget.set_label(sValue);
}
}
void SwWordCountFloatDlg::SetValues(const SwDocStat& rCurrent, const SwDocStat& rDoc)
{
- const LocaleDataWrapper& rLocaleData = GetSettings().GetUILocaleDataWrapper();
- setValue(m_pCurrentWordFT, rCurrent.nWord, rLocaleData);
- setValue(m_pCurrentCharacterFT, rCurrent.nChar, rLocaleData);
- setValue(m_pCurrentCharacterExcludingSpacesFT, rCurrent.nCharExcludingSpaces, rLocaleData);
- setValue(m_pCurrentCjkcharsFT, rCurrent.nAsianWord, rLocaleData);
- setValue(m_pDocWordFT, rDoc.nWord, rLocaleData);
- setValue(m_pDocCharacterFT, rDoc.nChar, rLocaleData);
- setValue(m_pDocCharacterExcludingSpacesFT, rDoc.nCharExcludingSpaces, rLocaleData);
- setValue(m_pDocCjkcharsFT, rDoc.nAsianWord, rLocaleData);
-
- if (m_pStandardizedPagesLabelFT->IsVisible())
+ const LocaleDataWrapper& rLocaleData = Application::GetSettings().GetUILocaleDataWrapper();
+ setValue(*m_xCurrentWordFT, rCurrent.nWord, rLocaleData);
+ setValue(*m_xCurrentCharacterFT, rCurrent.nChar, rLocaleData);
+ setValue(*m_xCurrentCharacterExcludingSpacesFT, rCurrent.nCharExcludingSpaces, rLocaleData);
+ setValue(*m_xCurrentCjkcharsFT, rCurrent.nAsianWord, rLocaleData);
+ setValue(*m_xDocWordFT, rDoc.nWord, rLocaleData);
+ setValue(*m_xDocCharacterFT, rDoc.nChar, rLocaleData);
+ setValue(*m_xDocCharacterExcludingSpacesFT, rDoc.nCharExcludingSpaces, rLocaleData);
+ setValue(*m_xDocCjkcharsFT, rDoc.nAsianWord, rLocaleData);
+
+ if (m_xStandardizedPagesLabelFT->get_visible())
{
sal_Int64 nCharsPerStandardizedPage = officecfg::Office::Writer::WordCount::StandardizedPageSize::get();
- setDoubleValue(m_pCurrentStandardizedPagesFT,
+ setDoubleValue(*m_xCurrentStandardizedPagesFT,
static_cast<double>(rCurrent.nChar) / nCharsPerStandardizedPage);
- setDoubleValue(m_pDocStandardizedPagesFT,
+ setDoubleValue(*m_xDocStandardizedPagesFT,
static_cast<double>(rDoc.nChar) / nCharsPerStandardizedPage);
}
bool bShowCJK = (SvtCJKOptions().IsAnyEnabled() || rDoc.nAsianWord);
- bool bToggleCJK = m_pCurrentCjkcharsFT->IsVisible() != bShowCJK;
+ bool bToggleCJK = m_xCurrentCjkcharsFT->get_visible() != bShowCJK;
if (bToggleCJK)
{
showCJK(bShowCJK);
- setOptimalLayoutSize(); //force resize of dialog
+ m_xDialog->resize_to_request(); //force resize of dialog
}
}
void SwWordCountFloatDlg::showCJK(bool bShowCJK)
{
- m_pCurrentCjkcharsFT->Show(bShowCJK);
- m_pDocCjkcharsFT->Show(bShowCJK);
- m_pCjkcharsLabelFT->Show(bShowCJK);
+ m_xCurrentCjkcharsFT->show(bShowCJK);
+ m_xDocCjkcharsFT->show(bShowCJK);
+ m_xCjkcharsLabelFT->show(bShowCJK);
}
void SwWordCountFloatDlg::showStandardizedPages(bool bShowStandardizedPages)
{
- m_pCurrentStandardizedPagesFT->Show(bShowStandardizedPages);
- m_pDocStandardizedPagesFT->Show(bShowStandardizedPages);
- m_pStandardizedPagesLabelFT->Show(bShowStandardizedPages);
+ m_xCurrentStandardizedPagesFT->show(bShowStandardizedPages);
+ m_xDocStandardizedPagesFT->show(bShowStandardizedPages);
+ m_xStandardizedPagesLabelFT->show(bShowStandardizedPages);
}
SwWordCountFloatDlg::SwWordCountFloatDlg(SfxBindings* _pBindings,
SfxChildWindow* pChild,
- vcl::Window *pParent,
+ weld::Window *pParent,
SfxChildWinInfo const * pInfo)
- : SfxModelessDialog(_pBindings, pChild, pParent, "WordCountDialog", "modules/swriter/ui/wordcount.ui")
+ : SfxModelessDialogController(_pBindings, pChild, pParent, "modules/swriter/ui/wordcount.ui", "WordCountDialog")
+ , m_xCurrentWordFT(m_xBuilder->weld_label("selectwords"))
+ , m_xCurrentCharacterFT(m_xBuilder->weld_label("selectchars"))
+ , m_xCurrentCharacterExcludingSpacesFT(m_xBuilder->weld_label("selectcharsnospaces"))
+ , m_xCurrentCjkcharsFT(m_xBuilder->weld_label("selectcjkchars"))
+ , m_xCurrentStandardizedPagesFT(m_xBuilder->weld_label("selectstandardizedpages"))
+ , m_xDocWordFT(m_xBuilder->weld_label("docwords"))
+ , m_xDocCharacterFT(m_xBuilder->weld_label("docchars"))
+ , m_xDocCharacterExcludingSpacesFT(m_xBuilder->weld_label("doccharsnospaces"))
+ , m_xDocCjkcharsFT(m_xBuilder->weld_label("doccjkchars"))
+ , m_xDocStandardizedPagesFT(m_xBuilder->weld_label("docstandardizedpages"))
+ , m_xCjkcharsLabelFT(m_xBuilder->weld_label("cjkcharsft"))
+ , m_xStandardizedPagesLabelFT(m_xBuilder->weld_label("standardizedpages"))
+ , m_xClosePB(m_xBuilder->weld_button("close"))
{
- get(m_pCurrentWordFT, "selectwords");
- get(m_pCurrentCharacterFT, "selectchars");
- get(m_pCurrentCharacterExcludingSpacesFT, "selectcharsnospaces");
- get(m_pCurrentCjkcharsFT, "selectcjkchars");
- get(m_pCurrentStandardizedPagesFT, "selectstandardizedpages");
-
- get(m_pDocWordFT, "docwords");
- get(m_pDocCharacterFT, "docchars");
- get(m_pDocCharacterExcludingSpacesFT, "doccharsnospaces");
- get(m_pDocCjkcharsFT, "doccjkchars");
- get(m_pDocStandardizedPagesFT, "docstandardizedpages");
-
- get(m_pCjkcharsLabelFT, "cjkcharsft");
- get(m_pStandardizedPagesLabelFT, "standardizedpages");
-
- get(m_pClosePB, "close");
-
showCJK(SvtCJKOptions().IsAnyEnabled());
showStandardizedPages(officecfg::Office::Writer::WordCount::ShowStandardizedPageCount::get());
Initialize(pInfo);
-
- m_pClosePB->SetClickHdl(LINK(this, SwWordCountFloatDlg, CloseHdl));
}
void SwWordCountFloatDlg::UpdateCounts()