summaryrefslogtreecommitdiff
path: root/sfx2/source
diff options
context:
space:
mode:
authorCédric Bosdonnat <cedric.bosdonnat@free.fr>2012-12-17 21:51:04 +0100
committerCédric Bosdonnat <cedric.bosdonnat@free.fr>2012-12-18 09:30:15 +0100
commit3016b60bcb938eb2d4a5e5d7f9f4c0f5c136522e (patch)
treeb665335c83f53599f874071aaedb186f9e3d2d65 /sfx2/source
parent58fdb89bc384019e4eaf181a956fe4ca7ed5dd07 (diff)
Template Manager: moved repositories storage to dialog
Change-Id: If049e05b7cec060cbdbc5a366a4019f088325e1f
Diffstat (limited to 'sfx2/source')
-rw-r--r--sfx2/source/control/templateremoteview.cxx112
-rw-r--r--sfx2/source/control/templateremoteviewitem.cxx21
-rw-r--r--sfx2/source/doc/templatedlg.cxx117
3 files changed, 113 insertions, 137 deletions
diff --git a/sfx2/source/control/templateremoteview.cxx b/sfx2/source/control/templateremoteview.cxx
index a04e4712a243..9e84c3feb9a0 100644
--- a/sfx2/source/control/templateremoteview.cxx
+++ b/sfx2/source/control/templateremoteview.cxx
@@ -10,7 +10,6 @@
#include <sfx2/templateremoteview.hxx>
#include <comphelper/processfactory.hxx>
-#include <officecfg/Office/Common.hxx>
#include <sfx2/templateremoteviewitem.hxx>
#include <sfx2/templateview.hxx>
#include <sfx2/templateviewitem.hxx>
@@ -47,7 +46,6 @@ enum
TemplateRemoteView::TemplateRemoteView (Window *pParent, WinBits nWinStyle, bool bDisableTransientChildren)
: TemplateAbstractView(pParent,nWinStyle,bDisableTransientChildren)
- , mbIsSynced(true)
{
mpItemView->SetColor(Color(COL_WHITE));
@@ -60,36 +58,6 @@ TemplateRemoteView::TemplateRemoteView (Window *pParent, WinBits nWinStyle, bool
TemplateRemoteView::~TemplateRemoteView ()
{
- for (size_t i = 0, n = maRepositories.size(); i < n; ++i)
- delete maRepositories[i];
-}
-
-void TemplateRemoteView::Populate()
-{
- uno::Reference < uno::XComponentContext > m_context(comphelper::getProcessComponentContext());
-
- // Load from user settings
- com::sun::star::uno::Sequence<OUString> aUrls =
- officecfg::Office::Common::Misc::TemplateRepositoryUrls::get(m_context);
-
- com::sun::star::uno::Sequence<OUString> aNames =
- officecfg::Office::Common::Misc::TemplateRepositoryNames::get(m_context);
-
- for (sal_Int32 i = 0; i < aUrls.getLength() && i < aNames.getLength(); ++i)
- {
- TemplateRemoteViewItem *pItem = new TemplateRemoteViewItem(*this);
-
- pItem->mnId = i+1;
- pItem->maTitle = aNames[i];
- pItem->setURL(aUrls[i]);
-
- maRepositories.push_back(pItem);
- }
-}
-
-void TemplateRemoteView::reload ()
-{
- loadRepository(mpItemView->getId(),true);
}
void TemplateRemoteView::filterTemplatesByApp(const FILTER_APPLICATION &eApp)
@@ -109,19 +77,8 @@ void TemplateRemoteView::showOverlay (bool bVisible)
}
}
-bool TemplateRemoteView::loadRepository (const sal_uInt16 nRepositoryId, bool bRefresh)
+bool TemplateRemoteView::loadRepository (TemplateRemoteViewItem* pItem, bool bRefresh)
{
- TemplateRemoteViewItem *pItem = NULL;
-
- for (size_t i = 0, n = maRepositories.size(); i < n; ++i)
- {
- if (maRepositories[i]->mnId == nRepositoryId)
- {
- pItem = maRepositories[i];
- break;
- }
- }
-
if (!pItem)
return false;
@@ -132,7 +89,7 @@ bool TemplateRemoteView::loadRepository (const sal_uInt16 nRepositoryId, bool bR
}
mpItemView->Clear();
- mpItemView->setId(nRepositoryId);
+ mpItemView->setId(pItem->mnId);
mpItemView->setName(pItem->maTitle);
OUString aURL = static_cast<TemplateRemoteViewItem*>(pItem)->getURL();
@@ -156,7 +113,7 @@ bool TemplateRemoteView::loadRepository (const sal_uInt16 nRepositoryId, bool bR
uno::Reference< XResultSet > xResultSet;
uno::Reference< XDynamicResultSet > xDynResultSet;
- ucbhelper::ResultSetInclude eInclude = ucbhelper::INCLUDE_DOCUMENTS_ONLY;
+ ucbhelper::ResultSetInclude eInclude = ucbhelper::INCLUDE_FOLDERS_AND_DOCUMENTS;
xDynResultSet = aContent.createDynamicCursor( aProps, eInclude );
if ( xDynResultSet.is() )
@@ -243,67 +200,4 @@ bool TemplateRemoteView::loadRepository (const sal_uInt16 nRepositoryId, bool bR
return true;
}
-bool TemplateRemoteView::insertRepository(const OUString &rName, const OUString &rURL)
-{
- for (size_t i = 0, n = maRepositories.size(); i < n; ++i)
- {
- if (maRepositories[i]->maTitle == rName)
- return false;
- }
-
- TemplateRemoteViewItem *pItem = new TemplateRemoteViewItem(*this);
-
- pItem->mnId = maRepositories.size()+1;
- pItem->maTitle = rName;
- pItem->setURL(rURL);
-
- maRepositories.push_back(pItem);
-
- mbIsSynced = false;
- return true;
-}
-
-bool TemplateRemoteView::deleteRepository(const sal_uInt16 nRepositoryId)
-{
- bool bRet = false;
-
- for (size_t i = 0, n = maRepositories.size(); i < n; ++i)
- {
- if (maRepositories[i]->mnId == nRepositoryId)
- {
- delete maRepositories[i];
-
- maRepositories.erase(maRepositories.begin() + i);
- mbIsSynced = false;
- bRet = true;
- break;
- }
- }
-
- return bRet;
-}
-
-void TemplateRemoteView::syncRepositories() const
-{
- if (!mbIsSynced)
- {
- uno::Reference < uno::XComponentContext > pContext(comphelper::getProcessComponentContext());
- boost::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create(pContext));
-
- size_t nSize = maRepositories.size();
- uno::Sequence<OUString> aUrls(nSize);
- uno::Sequence<OUString> aNames(nSize);
-
- for(size_t i = 0; i < nSize; ++i)
- {
- aUrls[i] = maRepositories[i]->getURL();
- aNames[i] = maRepositories[i]->maTitle;
- }
-
- officecfg::Office::Common::Misc::TemplateRepositoryUrls::set(aUrls, batch, pContext);
- officecfg::Office::Common::Misc::TemplateRepositoryNames::set(aNames, batch, pContext);
- batch->commit();
- }
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/source/control/templateremoteviewitem.cxx b/sfx2/source/control/templateremoteviewitem.cxx
deleted file mode 100644
index 626786f84794..000000000000
--- a/sfx2/source/control/templateremoteviewitem.cxx
+++ /dev/null
@@ -1,21 +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/.
- */
-
-#include <sfx2/templateremoteviewitem.hxx>
-
-TemplateRemoteViewItem::TemplateRemoteViewItem (ThumbnailView &rView)
- : ThumbnailViewItem(rView)
-{
-}
-
-TemplateRemoteViewItem::~TemplateRemoteViewItem()
-{
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 3546826a8b31..1e1ebd7ee68c 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -15,6 +15,7 @@
#include <comphelper/processfactory.hxx>
#include <comphelper/storagehelper.hxx>
+#include <officecfg/Office/Common.hxx>
#include <sfx2/app.hxx>
#include <sfx2/docfac.hxx>
#include <sfx2/fcontnr.hxx>
@@ -106,7 +107,9 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent)
maView(new TemplateLocalView(this,SfxResId(TEMPLATE_VIEW))),
mpOnlineView(new TemplateRemoteView(this, WB_VSCROLL,false)),
mbIsSaveMode(false),
- mxDesktop(comphelper::getProcessServiceFactory()->createInstance( "com.sun.star.frame.Desktop" ),uno::UNO_QUERY )
+ mxDesktop(comphelper::getProcessServiceFactory()->createInstance( "com.sun.star.frame.Desktop" ),uno::UNO_QUERY ),
+ mbIsSynced(false),
+ maRepositories()
{
// Create popup menus
mpActionMenu = new PopupMenu;
@@ -179,7 +182,7 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent)
switchMainView(true);
- mpOnlineView->Populate();
+ loadRepositories();
createRepositoryMenu();
createDefaultTemplateMenu();
@@ -192,7 +195,10 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent)
SfxTemplateManagerDlg::~SfxTemplateManagerDlg ()
{
- mpOnlineView->syncRepositories();
+ // Synchronize the config before deleting it
+ syncRepositories();
+ for (size_t i = 0, n = maRepositories.size(); i < n; ++i)
+ delete maRepositories[i];
delete mpSearchEdit;
delete mpViewBar;
@@ -602,7 +608,7 @@ IMPL_LINK(SfxTemplateManagerDlg, RepositoryMenuSelectHdl, Menu*, pMenu)
{
boost::shared_ptr<Place> pPlace = dlg.GetPlace();
- if (mpOnlineView->insertRepository(pPlace->GetName(),pPlace->GetUrl()))
+ if (insertRepository(pPlace->GetName(),pPlace->GetUrl()))
{
// update repository list menu.
createRepositoryMenu();
@@ -619,7 +625,18 @@ IMPL_LINK(SfxTemplateManagerDlg, RepositoryMenuSelectHdl, Menu*, pMenu)
{
sal_uInt16 nRepoId = nMenuId - MNI_REPOSITORY_BASE;
- if (mpOnlineView->loadRepository(nRepoId,false))
+ TemplateRemoteViewItem *pRepository = NULL;
+
+ for (size_t i = 0, n = maRepositories.size(); i < n; ++i)
+ {
+ if (maRepositories[i]->mnId == nRepoId)
+ {
+ pRepository = maRepositories[i];
+ break;
+ }
+ }
+
+ if (mpOnlineView->loadRepository(pRepository,false))
{
switchMainView(false);
mpOnlineView->showOverlay(true);
@@ -1106,7 +1123,7 @@ void SfxTemplateManagerDlg::OnFolderDelete()
void SfxTemplateManagerDlg::OnRepositoryDelete()
{
- if(mpOnlineView->deleteRepository(mpOnlineView->getOverlayRegionId()))
+ if(deleteRepository(mpOnlineView->getOverlayRegionId()))
{
// close overlay and switch to local view
switchMainView(true);
@@ -1194,7 +1211,7 @@ void SfxTemplateManagerDlg::createRepositoryMenu()
mpRepositoryMenu->InsertItem(MNI_REPOSITORY_LOCAL,SfxResId(STR_REPOSITORY_LOCAL).toString());
- const std::vector<TemplateRemoteViewItem*> &rRepos = mpOnlineView->getRepositories();
+ const std::vector<TemplateRemoteViewItem*> &rRepos = getRepositories();
for (size_t i = 0, n = rRepos.size(); i < n; ++i)
mpRepositoryMenu->InsertItem(MNI_REPOSITORY_BASE+rRepos[i]->mnId,rRepos[i]->maTitle);
@@ -1419,6 +1436,92 @@ void SfxTemplateManagerDlg::localSearchMoveTo(sal_uInt16 nMenuId)
SearchUpdateHdl(mpSearchEdit);
}
+void SfxTemplateManagerDlg::loadRepositories()
+{
+ uno::Reference < uno::XComponentContext > m_context(comphelper::getProcessComponentContext());
+
+ // Load from user settings
+ com::sun::star::uno::Sequence<OUString> aUrls =
+ officecfg::Office::Common::Misc::TemplateRepositoryUrls::get(m_context);
+
+ com::sun::star::uno::Sequence<OUString> aNames =
+ officecfg::Office::Common::Misc::TemplateRepositoryNames::get(m_context);
+
+ for (sal_Int32 i = 0; i < aUrls.getLength() && i < aNames.getLength(); ++i)
+ {
+ TemplateRemoteViewItem *pItem = new TemplateRemoteViewItem();
+
+ pItem->mnId = i+1;
+ pItem->maTitle = aNames[i];
+ pItem->setURL(aUrls[i]);
+
+ maRepositories.push_back(pItem);
+ }
+}
+
+bool SfxTemplateManagerDlg::insertRepository(const OUString &rName, const OUString &rURL)
+{
+ for (size_t i = 0, n = maRepositories.size(); i < n; ++i)
+ {
+ if (maRepositories[i]->maTitle == rName)
+ return false;
+ }
+
+ TemplateRemoteViewItem *pItem = new TemplateRemoteViewItem();
+
+ pItem->mnId = maRepositories.size()+1;
+ pItem->maTitle = rName;
+ pItem->setURL(rURL);
+
+ maRepositories.push_back(pItem);
+
+ mbIsSynced = false;
+ return true;
+}
+
+bool SfxTemplateManagerDlg::deleteRepository(const sal_uInt16 nRepositoryId)
+{
+ bool bRet = false;
+
+ for (size_t i = 0, n = maRepositories.size(); i < n; ++i)
+ {
+ if (maRepositories[i]->mnId == nRepositoryId)
+ {
+ delete maRepositories[i];
+
+ maRepositories.erase(maRepositories.begin() + i);
+ mbIsSynced = false;
+ bRet = true;
+ break;
+ }
+ }
+
+ return bRet;
+}
+
+void SfxTemplateManagerDlg::syncRepositories() const
+{
+ if (!mbIsSynced)
+ {
+ uno::Reference < uno::XComponentContext > pContext(comphelper::getProcessComponentContext());
+ boost::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create(pContext));
+
+ size_t nSize = maRepositories.size();
+ uno::Sequence<OUString> aUrls(nSize);
+ uno::Sequence<OUString> aNames(nSize);
+
+ for(size_t i = 0; i < nSize; ++i)
+ {
+ aUrls[i] = maRepositories[i]->getURL();
+ aNames[i] = maRepositories[i]->maTitle;
+ }
+
+ officecfg::Office::Common::Misc::TemplateRepositoryUrls::set(aUrls, batch, pContext);
+ officecfg::Office::Common::Misc::TemplateRepositoryNames::set(aNames, batch, pContext);
+ batch->commit();
+ }
+}
+
static bool lcl_getServiceName ( const OUString &rFileURL, OUString &rName )
{
bool bRet = false;