sw/source/ui/index/swuiidxmrk.cxx |   34 +++++++++++++++++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)

New commits:
commit f6b419b8946c5fc2dafa8f4201a4c7379148f306
Author:     Miklos Vajna <vmik...@collabora.com>
AuthorDate: Tue Apr 27 11:29:18 2021 +0200
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Tue Apr 27 16:27:10 2021 +0200

    sw bibliography, refer to a page: save edited page number
    
    This is the writing side of commit
    e920406994dd2b880d4b752e3ea4e09e4a8f97cc (sw bibliography, refer to a
    page: add dedicate widget to show the page number, 2021-04-21).
    
    Change-Id: If47932eedd689ca474bfdf44613d0c30087053b7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114664
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>
    Tested-by: Jenkins

diff --git a/sw/source/ui/index/swuiidxmrk.cxx 
b/sw/source/ui/index/swuiidxmrk.cxx
index 483fe01cf3aa..58cd9e0e2bc3 100644
--- a/sw/source/ui/index/swuiidxmrk.cxx
+++ b/sw/source/ui/index/swuiidxmrk.cxx
@@ -99,6 +99,31 @@ bool SplitUrlAndPage(const OUString& rText, OUString& rUrl, 
int& nPageNumber)
     rUrl = xUriRef->getUriReference();
     return true;
 }
+
+OUString MergeUrlAndPage(const OUString& rUrl, const 
std::unique_ptr<weld::SpinButton>& xPageSB)
+{
+    if (!xPageSB->get_sensitive())
+    {
+        return rUrl;
+    }
+
+    uno::Reference<uri::XUriReferenceFactory> xUriReferenceFactory
+        = 
uri::UriReferenceFactory::create(comphelper::getProcessComponentContext());
+    uno::Reference<uri::XUriReference> xUriRef;
+    try
+    {
+        xUriRef = xUriReferenceFactory->parse(rUrl);
+    }
+    catch (const uno::Exception& rException)
+    {
+        SAL_WARN("sw.ui", "MergeUrlAndPage: failed to parse url: " << 
rException.Message);
+        return rUrl;
+    }
+
+    OUString aFragment("page=" + OUString::number(xPageSB->get_value()));
+    xUriRef->setFragment(aFragment);
+    return xUriRef->getUriReference();
+}
 }
 
 // dialog to insert a directory selection
@@ -1732,7 +1757,14 @@ OUString  
SwCreateAuthEntryDlg_Impl::GetEntryText(ToxAuthorityField eField) cons
         const TextInfo aCurInfo = aTextInfoArr[nIndex];
         if(aCurInfo.nToxField == eField)
         {
-            return pEdits[nIndex]->get_text();
+            if (aCurInfo.nToxField != AUTH_FIELD_URL)
+            {
+                return pEdits[nIndex]->get_text();
+            }
+            else
+            {
+                return MergeUrlAndPage(pEdits[nIndex]->get_text(), m_xPageSB);
+            }
         }
     }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to