diff options
author | George Bateman <george.bateman16@gmail.com> | 2020-12-08 10:22:22 +0000 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2021-02-19 10:59:44 +0100 |
commit | 57dec020b9527d3dd472e33010381822d4ca306c (patch) | |
tree | 0a84849c92f4a860f954cff1727bd75892932d2e | |
parent | 3d8c288deca6257838aa5b9eb56922754b2532a3 (diff) |
tdf#65872 [WIP] Allow prefered interpretation of pasted numbers to be saved
Change-Id: I065f1f8cff1b3c7d7198ce431df39a7b8cb7b593
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107402
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r-- | sc/inc/scabstdlg.hxx | 1 | ||||
-rw-r--r-- | sc/source/ui/attrdlg/scdlgfact.cxx | 5 | ||||
-rw-r--r-- | sc/source/ui/attrdlg/scdlgfact.hxx | 1 | ||||
-rw-r--r-- | sc/source/ui/dbgui/textimportoptions.cxx | 6 | ||||
-rw-r--r-- | sc/source/ui/inc/textimportoptions.hxx | 2 | ||||
-rw-r--r-- | sc/source/ui/view/viewfun5.cxx | 48 | ||||
-rw-r--r-- | sc/uiconfig/scalc/ui/textimportoptions.ui | 16 |
7 files changed, 58 insertions, 21 deletions
diff --git a/sc/inc/scabstdlg.hxx b/sc/inc/scabstdlg.hxx index e6971503a051..0656ca16cc10 100644 --- a/sc/inc/scabstdlg.hxx +++ b/sc/inc/scabstdlg.hxx @@ -393,6 +393,7 @@ protected: public: virtual LanguageType GetLanguageType() const = 0; virtual bool IsDateConversionSet() const = 0; + virtual bool IsKeepAskingSet() const = 0; }; class ScAbstractDialogFactory diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx index 061db5614a66..b77f603540de 100644 --- a/sc/source/ui/attrdlg/scdlgfact.cxx +++ b/sc/source/ui/attrdlg/scdlgfact.cxx @@ -876,6 +876,11 @@ bool AbstractScTextImportOptionsDlg_Impl::IsDateConversionSet() const return m_xDlg->isDateConversionSet(); } +bool AbstractScTextImportOptionsDlg_Impl::IsKeepAskingSet() const +{ + return m_xDlg->isKeepAskingSet(); +} + BitmapEx AbstractScTextImportOptionsDlg_Impl::createScreenshot() const { VclPtr<VirtualDevice> xDialogSurface(m_xDlg->getDialog()->screenshot()); diff --git a/sc/source/ui/attrdlg/scdlgfact.hxx b/sc/source/ui/attrdlg/scdlgfact.hxx index 980b3f4270bc..be01347f495f 100644 --- a/sc/source/ui/attrdlg/scdlgfact.hxx +++ b/sc/source/ui/attrdlg/scdlgfact.hxx @@ -626,6 +626,7 @@ public: virtual short Execute() override; virtual LanguageType GetLanguageType() const override; virtual bool IsDateConversionSet() const override; + virtual bool IsKeepAskingSet() const override; // screenshotting virtual BitmapEx createScreenshot() const override; diff --git a/sc/source/ui/dbgui/textimportoptions.cxx b/sc/source/ui/dbgui/textimportoptions.cxx index 63353d4b28a8..b8e99ca2e6df 100644 --- a/sc/source/ui/dbgui/textimportoptions.cxx +++ b/sc/source/ui/dbgui/textimportoptions.cxx @@ -31,6 +31,7 @@ ScTextImportOptionsDlg::ScTextImportOptionsDlg(weld::Window* pParent) , m_xRbAutomatic(m_xBuilder->weld_radio_button("automatic")) , m_xRbCustom(m_xBuilder->weld_radio_button("custom")) , m_xBtnConvertDate(m_xBuilder->weld_check_button("convertdata")) + , m_xBtnKeepAsking(m_xBuilder->weld_check_button("keepasking")) , m_xLbCustomLang(new SvxLanguageBox(m_xBuilder->weld_combo_box("lang"))) { init(); @@ -53,6 +54,11 @@ bool ScTextImportOptionsDlg::isDateConversionSet() const return m_xBtnConvertDate->get_active(); } +bool ScTextImportOptionsDlg::isKeepAskingSet() const +{ + return m_xBtnKeepAsking->get_active(); +} + void ScTextImportOptionsDlg::init() { m_xBtnOk->connect_clicked(LINK(this, ScTextImportOptionsDlg, OKHdl)); diff --git a/sc/source/ui/inc/textimportoptions.hxx b/sc/source/ui/inc/textimportoptions.hxx index 3b50655c7d72..78fd5cb88e01 100644 --- a/sc/source/ui/inc/textimportoptions.hxx +++ b/sc/source/ui/inc/textimportoptions.hxx @@ -33,6 +33,7 @@ public: LanguageType getLanguageType() const; bool isDateConversionSet() const; + bool isKeepAskingSet() const; private: void init(); @@ -42,6 +43,7 @@ private: std::unique_ptr<weld::RadioButton> m_xRbAutomatic; std::unique_ptr<weld::RadioButton> m_xRbCustom; std::unique_ptr<weld::CheckButton> m_xBtnConvertDate; + std::unique_ptr<weld::CheckButton> m_xBtnKeepAsking; std::unique_ptr<SvxLanguageBox> m_xLbCustomLang; DECL_LINK(OKHdl, weld::Button&, void); diff --git a/sc/source/ui/view/viewfun5.cxx b/sc/source/ui/view/viewfun5.cxx index 1773c2fb4474..010febb22012 100644 --- a/sc/source/ui/view/viewfun5.cxx +++ b/sc/source/ui/view/viewfun5.cxx @@ -304,28 +304,50 @@ bool ScViewFunc::PasteDataFormat( SotClipboardFormatId nFormatId, tools::SvRef<SotTempStream> xStream; if ( aDataHelper.GetSotStorageStream( nFormatId, xStream ) && xStream.is() ) { + // Static variables for per-session storage. This could be + // changed to longer-term storage in future. + static bool bHaveSavedPreferences = false; + static LanguageType eSavedLanguage; + static bool bSavedDateConversion; + if (nFormatId == SotClipboardFormatId::HTML && !comphelper::LibreOfficeKit::isActive()) { - // Launch the text import options dialog. For now, we do - // this for html pasting only, but in the future it may - // make sense to do it for other data types too. - ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); - vcl::Window* pParent = GetActiveWin(); - ScopedVclPtr<AbstractScTextImportOptionsDlg> pDlg( - pFact->CreateScTextImportOptionsDlg(pParent ? pParent->GetFrameWeld() : nullptr)); - - if (pDlg->Execute() == RET_OK) + if (bHaveSavedPreferences) { ScAsciiOptions aOptions; - aOptions.SetLanguage(pDlg->GetLanguageType()); - aOptions.SetDetectSpecialNumber(pDlg->IsDateConversionSet()); + aOptions.SetLanguage(eSavedLanguage); + aOptions.SetDetectSpecialNumber(bSavedDateConversion); pObj->SetExtOptions(aOptions); } else { - // prevent error dialog for user cancel action - bRet = true; + // Launch the text import options dialog. For now, we do + // this for html pasting only, but in the future it may + // make sense to do it for other data types too. + ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); + vcl::Window* pParent = GetActiveWin(); + ScopedVclPtr<AbstractScTextImportOptionsDlg> pDlg( + pFact->CreateScTextImportOptionsDlg(pParent ? pParent->GetFrameWeld() : nullptr)); + + if (pDlg->Execute() == RET_OK) + { + ScAsciiOptions aOptions; + aOptions.SetLanguage(pDlg->GetLanguageType()); + aOptions.SetDetectSpecialNumber(pDlg->IsDateConversionSet()); + if (!pDlg->IsKeepAskingSet()) + { + bHaveSavedPreferences = true; + eSavedLanguage = pDlg->GetLanguageType(); + bSavedDateConversion = pDlg->IsDateConversionSet(); + } + pObj->SetExtOptions(aOptions); + } + else + { + // prevent error dialog for user cancel action + bRet = true; + } } } if(!bRet) diff --git a/sc/uiconfig/scalc/ui/textimportoptions.ui b/sc/uiconfig/scalc/ui/textimportoptions.ui index eead1426cb69..f09e0b052b4f 100644 --- a/sc/uiconfig/scalc/ui/textimportoptions.ui +++ b/sc/uiconfig/scalc/ui/textimportoptions.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.22.1 --> +<!-- Generated with glade 3.22.2 --> <interface domain="sc"> <requires lib="gtk+" version="3.20"/> <object class="GtkDialog" id="TextImportOptionsDialog"> @@ -10,7 +10,7 @@ <property name="default_width">0</property> <property name="default_height">0</property> <property name="type_hint">dialog</property> - <child> + <child type="titlebar"> <placeholder/> </child> <child internal-child="vbox"> @@ -53,12 +53,13 @@ </packing> </child> <child> - <object class="GtkButton" id="help"> - <property name="label" translatable="yes" context="stock">_Help</property> + <object class="GtkCheckButton" id="keepasking"> + <property name="label" translatable="yes" context="textimportoptions|keepasking">Keep asking during this session</property> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="use-underline">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="active">True</property> + <property name="draw-indicator">True</property> </object> <packing> <property name="expand">False</property> @@ -204,7 +205,6 @@ <action-widgets> <action-widget response="-5">ok</action-widget> <action-widget response="-6">cancel</action-widget> - <action-widget response="-11">help</action-widget> </action-widgets> </object> </interface> |