icon-themes/galaxy/sfx2/res/create_draw.png |binary icon-themes/galaxy/sfx2/res/create_present.png |binary icon-themes/galaxy/sfx2/res/create_sheet.png |binary icon-themes/galaxy/sfx2/res/create_text.png |binary icon-themes/galaxy/sfx2/res/exec_action.png |binary icon-themes/galaxy/sfx2/res/import.png |binary icon-themes/galaxy/sfx2/res/search.png |binary icon-themes/galaxy/sfx2/res/sortascending.png |binary sfx2/Library_sfx.mk | 2 sfx2/inc/sfx2/templatefolderview.hxx | 3 sfx2/inc/sfx2/templateview.hxx | 1 sfx2/inc/templatedlg.hxx | 5 + sfx2/source/control/templatefolderview.cxx | 25 +++++ sfx2/source/control/templatesearchview.cxx | 56 ++++++++++++ sfx2/source/control/templateview.cxx | 48 +++++++---- sfx2/source/dialog/inputdlg.cxx | 58 +++++++++++++ sfx2/source/dialog/inputdlg.hrc | 7 + sfx2/source/dialog/inputdlg.src | 10 ++ sfx2/source/doc/templatedlg.cxx | 108 +++++++++++++++++++++++-- sfx2/source/doc/templatedlg.hrc | 6 + sfx2/source/doc/templatedlg.src | 68 +++++++++++++++ sfx2/source/inc/inputdlg.hxx | 37 ++++++++ sfx2/source/inc/templatesearchview.hxx | 30 ++++++ 23 files changed, 442 insertions(+), 22 deletions(-)
New commits: commit 1ceca7ac90cfc6d07ff0bd1357c640180c900553 Author: Rafael Dominguez <venccsra...@gmail.com> Date: Wed Jul 4 10:09:40 2012 -0430 Fetch and display templates that contains the search keyword. Change-Id: I248bcf7fb1a0248fdbb1cd4e57c815b3d5d0b28b diff --git a/sfx2/inc/sfx2/templatefolderview.hxx b/sfx2/inc/sfx2/templatefolderview.hxx index b1dcade..1e0c2b5 100644 --- a/sfx2/inc/sfx2/templatefolderview.hxx +++ b/sfx2/inc/sfx2/templatefolderview.hxx @@ -49,6 +49,9 @@ public: void filterTemplatesByApp (const FILTER_APPLICATION &eApp); + std::vector<std::pair<sal_uInt16,std::vector<ThumbnailViewItem*> > > + getFilteredItems (const boost::function<bool (const ThumbnailViewItem*) > &rFunc) const; + void sortOverlayItems (const boost::function<bool (const ThumbnailViewItem*, const ThumbnailViewItem*) > &func); diff --git a/sfx2/source/control/templatefolderview.cxx b/sfx2/source/control/templatefolderview.cxx index e8b01f5..d202293 100644 --- a/sfx2/source/control/templatefolderview.cxx +++ b/sfx2/source/control/templatefolderview.cxx @@ -394,6 +394,31 @@ void TemplateFolderView::filterTemplatesByApp (const FILTER_APPLICATION &eApp) } } +std::vector<std::pair<sal_uInt16,std::vector<ThumbnailViewItem*> > > +TemplateFolderView::getFilteredItems(const boost::function<bool (const ThumbnailViewItem*) > &rFunc) const +{ + std::vector<ThumbnailViewItem*> aRegionItems; + std::vector<std::pair<sal_uInt16,std::vector<ThumbnailViewItem*> > > aItems; + + for (size_t i = 0; i < mItemList.size(); ++i) + { + TemplateFolderViewItem *pFolderItem = static_cast<TemplateFolderViewItem*>(mItemList[i]); + + sal_uInt16 nRegionId = pFolderItem->mnId-1; + + for (size_t j = 0; j < pFolderItem->maTemplates.size(); ++j) + { + if (rFunc(pFolderItem->maTemplates[j])) + aRegionItems.push_back(pFolderItem->maTemplates[j]); + } + + aItems.push_back(std::make_pair(nRegionId,aRegionItems)); + aRegionItems.clear(); + } + + return aItems; +} + void TemplateFolderView::sortOverlayItems(const boost::function<bool (const ThumbnailViewItem*, const ThumbnailViewItem*) > &func) { diff --git a/sfx2/source/control/templatesearchview.cxx b/sfx2/source/control/templatesearchview.cxx index dbcf0d1..fa6eabc 100644 --- a/sfx2/source/control/templatesearchview.cxx +++ b/sfx2/source/control/templatesearchview.cxx @@ -47,6 +47,8 @@ void TemplateSearchView::AppendItem(sal_uInt16 nItemId, sal_uInt16 nRegionId, sa pItem->setSelectClickHdl(LINK(this,ThumbnailView,OnFolderSelected)); mItemList.push_back(pItem); + + CalculateItemPositions(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index 13db34c..7f86129 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -64,6 +64,24 @@ public: } }; +class SearchView_Keyword +{ +public: + + SearchView_Keyword (const rtl::OUString &rKeyword) + : maKeyword(rKeyword) + {} + + bool operator() (const ThumbnailViewItem *pItem) + { + return pItem->maText.indexOf(maKeyword) != -1; + } + +private: + + rtl::OUString maKeyword; +}; + SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent) : ModalDialog(parent, SfxResId(DLG_TEMPLATE_MANAGER)), aButtonAll(this,SfxResId(BTN_SELECT_ALL)), @@ -523,11 +541,40 @@ IMPL_LINK (SfxTemplateManagerDlg, SearchUpdateHdl, Edit*, pEdit) // if the search view is hidden, hide the folder view and display search one if (!mpSearchView->IsVisible()) { + mpSearchView->Clear(); mpSearchView->Show(); maView->Hide(); } - mpSearchView->Clear(); + rtl::OUString aKeyword = mpSearchEdit->GetText(); + + if (!aKeyword.isEmpty()) + { + mpSearchView->Clear(); + + std::vector<std::pair<sal_uInt16,std::vector<ThumbnailViewItem*> > > aItems = + maView->getFilteredItems(SearchView_Keyword(aKeyword)); + + size_t nCounter = 0; + for (size_t i = 0; i < aItems.size(); ++i) + { + sal_uInt16 nRegionId = aItems[i].first; + std::vector<ThumbnailViewItem*> &rRegionItems = aItems[i].second; + + for (size_t j = 0; j < rRegionItems.size(); ++j) + { + TemplateViewItem *pItem = static_cast<TemplateViewItem*>(rRegionItems[j]); + + mpSearchView->AppendItem(++nCounter,nRegionId, + pItem->mnId-1, + pItem->maText, + pItem->getPath(), + pItem->maPreview1); + } + } + + mpSearchView->Invalidate(); + } return 0; } commit 822532024d078685ab6baa59673d46645dde74de Author: Rafael Dominguez <venccsra...@gmail.com> Date: Wed Jul 4 09:46:29 2012 -0430 Set search view size an position. Change-Id: Ifed9e633ef73c4248fa67adc8b0e90dd2c484dbd diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index 927dff6..13db34c 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -170,6 +170,13 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent) maView->setTemplateStateHdl(LINK(this,SfxTemplateManagerDlg,TVTemplateStateHdl)); maView->setOverlayDblClickHdl(LINK(this,SfxTemplateManagerDlg,OpenTemplateHdl)); + mpSearchView->SetSizePixel(aThumbSize); + mpSearchView->setItemMaxTextLength(ITEM_MAX_TEXT_LENGTH); + + mpSearchView->setItemDimensions(ITEM_MAX_WIDTH,THUMBNAIL_MAX_HEIGHT, + ITEM_MAX_HEIGHT-THUMBNAIL_MAX_HEIGHT, + ITEM_PADDING); + // Set OK button position Point aBtnPos; Size aBtnSize = maButtonClose.GetSizePixel(); @@ -626,6 +633,7 @@ void SfxTemplateManagerDlg::OnTemplateSearch () SetSizePixel(aWinSize); maView->SetPosPixel(aPos); + mpSearchView->SetPosPixel(aPos); maButtonClose.SetPosPixel(aClosePos); // Hide search view commit c11eff1e28f462ee2371fa9283cd9baa5cb8e5e9 Author: Rafael Dominguez <venccsra...@gmail.com> Date: Wed Jul 4 09:03:59 2012 -0430 Dont cache search term when you finish searching. Change-Id: I2975bd530dc2377d8b2e0003f9a5c5986d270d6a diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index 018e98d..927dff6 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -636,6 +636,7 @@ void SfxTemplateManagerDlg::OnTemplateSearch () } mpSearchEdit->Show(!bVisible); + mpSearchEdit->SetText(rtl::OUString()); } void SfxTemplateManagerDlg::OnTemplateEdit () commit 74780aa9a984df9d8556abc9a299ece4dbedb0d1 Author: Rafael Dominguez <venccsra...@gmail.com> Date: Wed Jul 4 08:53:29 2012 -0430 Create a view to display search results. Change-Id: I85b34937a91dbc321ff98ee873f9e8b9cc037fd2 diff --git a/sfx2/Library_sfx.mk b/sfx2/Library_sfx.mk index da80159..1b2944b 100644 --- a/sfx2/Library_sfx.mk +++ b/sfx2/Library_sfx.mk @@ -152,6 +152,7 @@ $(eval $(call gb_Library_add_exception_objects,sfx,\ sfx2/source/control/templateviewitem \ sfx2/source/control/templatefolderview \ sfx2/source/control/templatefolderviewitem \ + sfx2/source/control/templatesearchview \ sfx2/source/control/thumbnailviewitem \ sfx2/source/control/thumbnailviewacc \ sfx2/source/control/thumbnailview \ diff --git a/sfx2/inc/templatedlg.hxx b/sfx2/inc/templatedlg.hxx index f729b6e..3698381 100644 --- a/sfx2/inc/templatedlg.hxx +++ b/sfx2/inc/templatedlg.hxx @@ -18,6 +18,8 @@ class Edit; class PopupMenu; class TemplateFolderView; +class TemplateSearchView; +class ThumbnailView; class ThumbnailViewItem; class ToolBox; @@ -62,6 +64,8 @@ private: DECL_LINK(OpenTemplateHdl, ThumbnailViewItem*); + DECL_LINK(SearchUpdateHdl, Edit*); + void OnTemplateImport (); void OnTemplateSearch (); void OnTemplateEdit (); @@ -83,6 +87,7 @@ private: ToolBox *mpViewBar; ToolBox *mpActionBar; ToolBox *mpTemplateBar; + TemplateSearchView *mpSearchView; TemplateFolderView *maView; PopupMenu *mpCreateMenu; PopupMenu *mpActionMenu; diff --git a/sfx2/source/control/templatesearchview.cxx b/sfx2/source/control/templatesearchview.cxx new file mode 100644 index 0000000..dbcf0d1 --- /dev/null +++ b/sfx2/source/control/templatesearchview.cxx @@ -0,0 +1,54 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Copyright 2012 LibreOffice contributors. + * + * 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 "templatesearchview.hxx" + +#include <sfx2/templateviewitem.hxx> + +struct TemplateSearchViewItem : public TemplateViewItem +{ + TemplateSearchViewItem (ThumbnailView &rView, Window *pParent) + : TemplateViewItem(rView,pParent) + {} + + virtual ~TemplateSearchViewItem () + {} + + sal_uInt16 mnIdx; // Template associated Index + sal_uInt16 mnRegionId; // Template associated Region id +}; + +TemplateSearchView::TemplateSearchView (Window *pParent, WinBits nWinStyle) + : ThumbnailView(pParent,nWinStyle) +{ +} + +TemplateSearchView::~TemplateSearchView () +{ +} + +void TemplateSearchView::AppendItem(sal_uInt16 nItemId, sal_uInt16 nRegionId, sal_uInt16 nIdx, + const rtl::OUString &rStr, const rtl::OUString &rPath, + const BitmapEx &rImage) +{ + TemplateSearchViewItem *pItem = new TemplateSearchViewItem(*this,this); + pItem->mnId = nItemId; + pItem->mnIdx = nIdx; + pItem->mnRegionId = nRegionId; + pItem->maPreview1 = rImage; + pItem->maText = rStr; + pItem->setPath(rPath); + pItem->setSelectClickHdl(LINK(this,ThumbnailView,OnFolderSelected)); + + mItemList.push_back(pItem); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ + + diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index 357c247..018e98d 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -10,6 +10,7 @@ #include "templatedlg.hxx" #include "inputdlg.hxx" +#include "templatesearchview.hxx" #include <comphelper/processfactory.hxx> #include <sfx2/filedlghelper.hxx> @@ -76,6 +77,7 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent) mpViewBar( new ToolBox(this, SfxResId(TBX_ACTION_VIEW))), mpActionBar( new ToolBox(this, SfxResId(TBX_ACTION_ACTION))), mpTemplateBar( new ToolBox(this, SfxResId(TBX_ACTION_TEMPLATES))), + mpSearchView(new TemplateSearchView(this)), maView(new TemplateFolderView(this,SfxResId(TEMPLATE_VIEW))), mnSelectionCount(0), mxDesktop(comphelper::getProcessServiceFactory()->createInstance( "com.sun.star.frame.Desktop" ),uno::UNO_QUERY ) @@ -152,6 +154,8 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent) mpSearchEdit->SetSizePixel(aSearchSize); mpSearchEdit->SetPosPixel(Point(PADDING_DLG_BORDER,aActionPos.Y()+aActionSize.getHeight())); + mpSearchEdit->SetUpdateDataHdl(LINK(this,SfxTemplateManagerDlg,SearchUpdateHdl)); + mpSearchEdit->EnableUpdateData(); maView->SetStyle(WB_VSCROLL); maView->SetColor(GetBackground().GetColor()); @@ -507,6 +511,20 @@ IMPL_LINK(SfxTemplateManagerDlg, OpenTemplateHdl, ThumbnailViewItem*, pItem) return 0; } +IMPL_LINK (SfxTemplateManagerDlg, SearchUpdateHdl, Edit*, pEdit) +{ + // if the search view is hidden, hide the folder view and display search one + if (!mpSearchView->IsVisible()) + { + mpSearchView->Show(); + maView->Hide(); + } + + mpSearchView->Clear(); + + return 0; +} + void SfxTemplateManagerDlg::OnTemplateImport () { sal_Int16 nDialogType = @@ -609,6 +627,14 @@ void SfxTemplateManagerDlg::OnTemplateSearch () SetSizePixel(aWinSize); maView->SetPosPixel(aPos); maButtonClose.SetPosPixel(aClosePos); + + // Hide search view + if (bVisible) + { + mpSearchView->Hide(); + maView->Show(); + } + mpSearchEdit->Show(!bVisible); } diff --git a/sfx2/source/inc/templatesearchview.hxx b/sfx2/source/inc/templatesearchview.hxx new file mode 100644 index 0000000..3d453b3 --- /dev/null +++ b/sfx2/source/inc/templatesearchview.hxx @@ -0,0 +1,30 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Copyright 2012 LibreOffice contributors. + * + * 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/. + */ + +#ifndef __SFX2_TEMPLATESEARCHVIEW_HXX__ +#define __SFX2_TEMPLATESEARCHVIEW_HXX__ + +#include <sfx2/thumbnailview.hxx> + +class TemplateSearchView : public ThumbnailView +{ +public: + + TemplateSearchView ( Window* pParent, WinBits nWinStyle = WB_TABSTOP | WB_VSCROLL); + + virtual ~TemplateSearchView(); + + void AppendItem(sal_uInt16 nItemId, sal_uInt16 nRegionId, sal_uInt16 nIdx, + const rtl::OUString &rStr, const rtl::OUString &rPath, + const BitmapEx &rImage ); +}; + +#endif // __SFX2_TEMPLATESEARCHVIEW_HXX__ + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 89cb69a018568029be04663361ea5813870b3d95 Author: Rafael Dominguez <venccsra...@gmail.com> Date: Tue Jul 3 14:20:19 2012 -0430 Dont draw folder name while we are editing it. Change-Id: I9bec6832725b2a5e194968d938de1dac875a59f0 diff --git a/sfx2/inc/sfx2/templateview.hxx b/sfx2/inc/sfx2/templateview.hxx index 3ecdc9b..8934b58 100644 --- a/sfx2/inc/sfx2/templateview.hxx +++ b/sfx2/inc/sfx2/templateview.hxx @@ -56,6 +56,7 @@ protected: private: Image maCloseImg; + bool mbRenderTitle; sal_uInt16 mnRegionId; rtl::OUString maFolderName; SfxDocumentTemplates *mpDocTemplates; diff --git a/sfx2/source/control/templateview.cxx b/sfx2/source/control/templateview.cxx index 5078fbd..d9748f5 100644 --- a/sfx2/source/control/templateview.cxx +++ b/sfx2/source/control/templateview.cxx @@ -36,6 +36,7 @@ using namespace drawinglayer::primitive2d; TemplateView::TemplateView (Window *pParent, SfxDocumentTemplates *pTemplates) : ThumbnailView(pParent,WB_VSCROLL), maCloseImg(SfxResId(IMG_TEMPLATE_VIEW_CLOSE)), + mbRenderTitle(true), mnRegionId(0), mpDocTemplates(pTemplates), mpEditName(new Edit(this, WB_BORDER | WB_HIDE)) @@ -60,27 +61,36 @@ void TemplateView::Paint (const Rectangle &rRect) { ThumbnailView::Paint(rRect); - Primitive2DSequence aSeq(2); + int nCount = 0; + int nMaxCount = 1; + + if (mbRenderTitle) + ++nMaxCount; + + Primitive2DSequence aSeq(nMaxCount); TextLayouterDevice aTextDev; // Draw centered region name Point aPos; Size aWinSize = GetOutputSizePixel(); - aPos.X() = (aWinSize.getWidth() - aTextDev.getTextWidth(maFolderName,0,maFolderName.getLength()))/2; - aPos.Y() = aTextDev.getTextHeight() + (mnHeaderHeight - aTextDev.getTextHeight())/2; - - basegfx::B2DHomMatrix aTextMatrix( createScaleTranslateB2DHomMatrix( - mpItemAttrs->aFontSize.getX(), mpItemAttrs->aFontSize.getY(), - double( aPos.X() ), double( aPos.Y() ) ) ); - - aSeq[0] = Primitive2DReference( - new TextSimplePortionPrimitive2D(aTextMatrix, - maFolderName,0,maFolderName.getLength(), - std::vector< double >( ), - mpItemAttrs->aFontAttr, - com::sun::star::lang::Locale(), - Color(COL_BLACK).getBColor() ) ); + if (mbRenderTitle) + { + aPos.X() = (aWinSize.getWidth() - aTextDev.getTextWidth(maFolderName,0,maFolderName.getLength()))/2; + aPos.Y() = aTextDev.getTextHeight() + (mnHeaderHeight - aTextDev.getTextHeight())/2; + + basegfx::B2DHomMatrix aTextMatrix( createScaleTranslateB2DHomMatrix( + mpItemAttrs->aFontSize.getX(), mpItemAttrs->aFontSize.getY(), + double( aPos.X() ), double( aPos.Y() ) ) ); + + aSeq[nCount++] = Primitive2DReference( + new TextSimplePortionPrimitive2D(aTextMatrix, + maFolderName,0,maFolderName.getLength(), + std::vector< double >( ), + mpItemAttrs->aFontAttr, + com::sun::star::lang::Locale(), + Color(COL_BLACK).getBColor() ) ); + } // Draw close icon Size aImageSize = maCloseImg.GetSizePixel(); @@ -88,7 +98,7 @@ void TemplateView::Paint (const Rectangle &rRect) aPos.Y() = (mnHeaderHeight - aImageSize.Height())/2; aPos.X() = aWinSize.Width() - aImageSize.Width() - aPos.Y(); - aSeq[1] = Primitive2DReference( new FillBitmapPrimitive2D( + aSeq[nCount] = Primitive2DReference( new FillBitmapPrimitive2D( createTranslateB2DHomMatrix(aPos.X(),aPos.Y()), FillBitmapAttribute(maCloseImg.GetBitmapEx(), B2DPoint(0,0), @@ -161,6 +171,7 @@ void TemplateView::MouseButtonDown (const MouseEvent &rMEvt) if (mpEditName->IsVisible()) { mpEditName->Show(false); + mbRenderTitle = true; // Update name if its not empty rtl::OUString aTmp = mpEditName->GetText(); @@ -203,7 +214,12 @@ void TemplateView::MouseButtonDown (const MouseEvent &rMEvt) Rectangle aTitleRect(aPos,Size(fTextWidth,aTextDev.getTextHeight())); if (aTitleRect.IsInside(rMEvt.GetPosPixel())) + { + mbRenderTitle = false; + + Invalidate(); mpEditName->Show(); + } } } commit 9f55545a1a1d96e133eb734607ef52a463a0f0ea Author: Rafael Dominguez <venccsra...@gmail.com> Date: Tue Jul 3 14:06:50 2012 -0430 Create dialog skeleton to ask user for new folder name. Change-Id: I5f861753c7b4d0e901c8268f4004676df7da124f diff --git a/sfx2/Library_sfx.mk b/sfx2/Library_sfx.mk index 0bff14e..da80159 100644 --- a/sfx2/Library_sfx.mk +++ b/sfx2/Library_sfx.mk @@ -164,6 +164,7 @@ $(eval $(call gb_Library_add_exception_objects,sfx,\ sfx2/source/dialog/filedlghelper \ sfx2/source/dialog/filtergrouping \ sfx2/source/dialog/itemconnect \ + sfx2/source/dialog/inputdlg \ sfx2/source/dialog/mailmodel \ sfx2/source/dialog/mgetempl \ sfx2/source/dialog/navigat \ diff --git a/sfx2/source/dialog/inputdlg.cxx b/sfx2/source/dialog/inputdlg.cxx new file mode 100644 index 0000000..41d5d4f --- /dev/null +++ b/sfx2/source/dialog/inputdlg.cxx @@ -0,0 +1,58 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Copyright 2012 LibreOffice contributors. + * + * 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 "inputdlg.hxx" + +#include <vcl/button.hxx> +#include <vcl/edit.hxx> +#include <vcl/fixed.hxx> + +#define LABEL_TEXT_SPACE 10 +#define DIALOG_BORDER 10 +#define MAX_FOLDER_NAME_LENGTH 20 + +InputDialog::InputDialog (const rtl::OUString &rLabelText, Window *pParent) + : ModalDialog(pParent), + mpEntry(new Edit(this)), + mpLabel(new FixedText(this)) +{ + SetStyle(GetStyle() | WB_CENTER | WB_VCENTER); + + Point aPos(DIALOG_BORDER,DIALOG_BORDER); + + Size aTextSize = mpLabel->CalcMinimumTextSize(mpLabel,100); + Size aEntrySize = mpEntry->CalcSize(MAX_FOLDER_NAME_LENGTH); + + aTextSize.setWidth(aEntrySize.getHeight()); + + mpLabel->SetPosPixel(Point(DIALOG_BORDER,DIALOG_BORDER)); + mpLabel->SetSizePixel(aTextSize); + mpLabel->SetText(String("Enter name")); + + aPos.setX(DIALOG_BORDER + aTextSize.getWidth() + LABEL_TEXT_SPACE + DIALOG_BORDER); + + mpEntry->SetPosPixel(aPos); + mpEntry->SetSizePixel(aEntrySize); + + // Set windows correct size + SetSizePixel(Size(aTextSize.getWidth() + aEntrySize.getWidth() + 2*DIALOG_BORDER, + aTextSize.getHeight()+2*DIALOG_BORDER)); + + mpEntry->Show(); + mpLabel->Show(); +} + +rtl::OUString InputDialog::getEntryText () const +{ + return mpEntry->GetText(); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ + + diff --git a/sfx2/source/dialog/inputdlg.hrc b/sfx2/source/dialog/inputdlg.hrc new file mode 100644 index 0000000..b9fdf70 --- /dev/null +++ b/sfx2/source/dialog/inputdlg.hrc @@ -0,0 +1,7 @@ +/* + * Copyright 2012 LibreOffice contributors. + * + * 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/. + */ diff --git a/sfx2/source/dialog/inputdlg.src b/sfx2/source/dialog/inputdlg.src new file mode 100644 index 0000000..cece9f8 --- /dev/null +++ b/sfx2/source/dialog/inputdlg.src @@ -0,0 +1,10 @@ +/* + * Copyright 2012 LibreOffice contributors. + * + * 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 "inputdlg.hrc" + diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index 9b819ba..357c247 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -9,6 +9,8 @@ #include "templatedlg.hxx" +#include "inputdlg.hxx" + #include <comphelper/processfactory.hxx> #include <sfx2/filedlghelper.hxx> #include <sfx2/sfxresid.hxx> @@ -459,6 +461,9 @@ IMPL_LINK(SfxTemplateManagerDlg, MoveMenuSelectHdl, Menu*, pMenu) if (nMenuId == MNI_MOVE_NEW) { + InputDialog dlg(SfxResId(STR_INPUT_NEW).toString(),this); + + int ret = dlg.Execute(); } else if (nMenuId == MNI_MOVE_DELETE) { diff --git a/sfx2/source/doc/templatedlg.hrc b/sfx2/source/doc/templatedlg.hrc index b24d844..8a46b11 100644 --- a/sfx2/source/doc/templatedlg.hrc +++ b/sfx2/source/doc/templatedlg.hrc @@ -51,6 +51,7 @@ #define STR_MOVE_NEW 268 #define STR_MOVE_DELETE 270 +#define STR_INPUT_NEW 271 #define IMG_ONLINE_REPOSITORY 100 #define IMG_CREATE_TEXT 300 diff --git a/sfx2/source/doc/templatedlg.src b/sfx2/source/doc/templatedlg.src index 27fdfbb..f0ac332 100644 --- a/sfx2/source/doc/templatedlg.src +++ b/sfx2/source/doc/templatedlg.src @@ -45,6 +45,11 @@ String STR_MOVE_DELETE Text [ en-US ] = "No folder"; }; +String STR_INPUT_NEW +{ + Text [ en-US ] = "Enter folder name:"; +}; + ModalDialog DLG_TEMPLATE_MANAGER { HelpId = CMD_SID_TEMPLATE_MANAGER; diff --git a/sfx2/source/inc/inputdlg.hxx b/sfx2/source/inc/inputdlg.hxx new file mode 100644 index 0000000..7e09c9f --- /dev/null +++ b/sfx2/source/inc/inputdlg.hxx @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Copyright 2012 LibreOffice contributors. + * + * 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/. + */ + +#ifndef INPUTDLG_HXX +#define INPUTDLG_HXX + +#include <vcl/dialog.hxx> + +class Edit; +class FixedText; +class PushButton; + +class InputDialog : public ModalDialog +{ +public: + + InputDialog (const rtl::OUString &labelText, Window *pParent = NULL); + + rtl::OUString getEntryText () const; + +private: + + Edit *mpEntry; + FixedText *mpLabel; + PushButton *mpOK; + PushButton *mpCancel; +}; + +#endif // INPUTDLG_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit ff1ba1fc3c45b7449e2f4fe3c46a1d4c134a7092 Author: Rafael Dominguez <venccsra...@gmail.com> Date: Mon Jul 2 23:13:12 2012 -0430 Move close button down while search is active. Change-Id: I42eed0d99b6eae6510c62fda76492e8114624459 diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index 2483dcb..9b819ba 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -581,6 +581,7 @@ void SfxTemplateManagerDlg::OnTemplateImport () void SfxTemplateManagerDlg::OnTemplateSearch () { Point aPos = maView->GetPosPixel(); + Point aClosePos = maButtonClose.GetPosPixel(); bool bVisible = mpSearchEdit->IsVisible(); Size aWinSize = GetSizePixel(); long nEditHeight = mpSearchEdit->GetSizePixel().getHeight(); @@ -589,17 +590,20 @@ void SfxTemplateManagerDlg::OnTemplateSearch () { aWinSize.setHeight(aWinSize.getHeight() - nEditHeight ); aPos.setY(aPos.getY() - nEditHeight ); + aClosePos.setY(aClosePos.getY() - nEditHeight ); mpActionBar->SetItemState(TBI_TEMPLATE_SEARCH,STATE_NOCHECK); } else { aWinSize.setHeight(aWinSize.getHeight() + nEditHeight ); aPos.setY(aPos.getY() + nEditHeight ); + aClosePos.setY(aClosePos.getY() + nEditHeight ); mpActionBar->SetItemState(TBI_TEMPLATE_SEARCH,STATE_CHECK); } SetSizePixel(aWinSize); maView->SetPosPixel(aPos); + maButtonClose.SetPosPixel(aClosePos); mpSearchEdit->Show(!bVisible); } commit 007ad58e5108431b01db5e2aa93fd21b6ca508f2 Author: Rafael Dominguez <venccsra...@gmail.com> Date: Mon Jul 2 22:59:53 2012 -0430 Add icons to toolbar buttons and menus. Change-Id: Ia1415d3cab1f381a7b84ad3cabeacefe739a047c diff --git a/icon-themes/galaxy/sfx2/res/create_draw.png b/icon-themes/galaxy/sfx2/res/create_draw.png new file mode 100644 index 0000000..f99e503 Binary files /dev/null and b/icon-themes/galaxy/sfx2/res/create_draw.png differ diff --git a/icon-themes/galaxy/sfx2/res/create_present.png b/icon-themes/galaxy/sfx2/res/create_present.png new file mode 100644 index 0000000..f3e7e26 Binary files /dev/null and b/icon-themes/galaxy/sfx2/res/create_present.png differ diff --git a/icon-themes/galaxy/sfx2/res/create_sheet.png b/icon-themes/galaxy/sfx2/res/create_sheet.png new file mode 100644 index 0000000..e317659 Binary files /dev/null and b/icon-themes/galaxy/sfx2/res/create_sheet.png differ diff --git a/icon-themes/galaxy/sfx2/res/create_text.png b/icon-themes/galaxy/sfx2/res/create_text.png new file mode 100644 index 0000000..35bc877 Binary files /dev/null and b/icon-themes/galaxy/sfx2/res/create_text.png differ diff --git a/icon-themes/galaxy/sfx2/res/exec_action.png b/icon-themes/galaxy/sfx2/res/exec_action.png new file mode 100644 index 0000000..e57abd7 Binary files /dev/null and b/icon-themes/galaxy/sfx2/res/exec_action.png differ diff --git a/icon-themes/galaxy/sfx2/res/import.png b/icon-themes/galaxy/sfx2/res/import.png new file mode 100644 index 0000000..37f6406 Binary files /dev/null and b/icon-themes/galaxy/sfx2/res/import.png differ diff --git a/icon-themes/galaxy/sfx2/res/search.png b/icon-themes/galaxy/sfx2/res/search.png new file mode 100644 index 0000000..228d958 Binary files /dev/null and b/icon-themes/galaxy/sfx2/res/search.png differ diff --git a/icon-themes/galaxy/sfx2/res/sortascending.png b/icon-themes/galaxy/sfx2/res/sortascending.png new file mode 100644 index 0000000..3d710f9 Binary files /dev/null and b/icon-themes/galaxy/sfx2/res/sortascending.png differ diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index 4a8322e..2483dcb 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -82,14 +82,14 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent) // Create popup menus mpCreateMenu = new PopupMenu; - mpCreateMenu->InsertItem(MNI_CREATE_TEXT,SfxResId(STR_CREATE_TEXT).toString()); - mpCreateMenu->InsertItem(MNI_CREATE_SHEET,SfxResId(STR_CREATE_SHEET).toString()); - mpCreateMenu->InsertItem(MNI_CREATE_PRESENT,SfxResId(STR_CREATE_PRESENT).toString()); - mpCreateMenu->InsertItem(MNI_CREATE_DRAW,SfxResId(STR_CREATE_DRAW).toString()); + mpCreateMenu->InsertItem(MNI_CREATE_TEXT,SfxResId(STR_CREATE_TEXT).toString(),SfxResId(IMG_CREATE_TEXT)); + mpCreateMenu->InsertItem(MNI_CREATE_SHEET,SfxResId(STR_CREATE_SHEET).toString(),SfxResId(IMG_CREATE_SHEET)); + mpCreateMenu->InsertItem(MNI_CREATE_PRESENT,SfxResId(STR_CREATE_PRESENT).toString(),SfxResId(IMG_CREATE_PRESENT)); + mpCreateMenu->InsertItem(MNI_CREATE_DRAW,SfxResId(STR_CREATE_DRAW).toString(),SfxResId(IMG_CREATE_DRAW)); mpCreateMenu->SetSelectHdl(LINK(this, SfxTemplateManagerDlg, MenuSelectHdl)); mpActionMenu = new PopupMenu; - mpActionMenu->InsertItem(MNI_ACTION_SORT_NAME,SfxResId(STR_ACTION_SORT_NAME).toString()); + mpActionMenu->InsertItem(MNI_ACTION_SORT_NAME,SfxResId(STR_ACTION_SORT_NAME).toString(),SfxResId(IMG_ACTION_SORT)); mpActionMenu->SetSelectHdl(LINK(this,SfxTemplateManagerDlg,MenuSelectHdl)); Size aWinSize = GetOutputSize(); diff --git a/sfx2/source/doc/templatedlg.hrc b/sfx2/source/doc/templatedlg.hrc index 245466f..b24d844 100644 --- a/sfx2/source/doc/templatedlg.hrc +++ b/sfx2/source/doc/templatedlg.hrc @@ -53,3 +53,8 @@ #define STR_MOVE_DELETE 270 #define IMG_ONLINE_REPOSITORY 100 +#define IMG_CREATE_TEXT 300 +#define IMG_CREATE_SHEET 301 +#define IMG_CREATE_PRESENT 302 +#define IMG_CREATE_DRAW 303 +#define IMG_ACTION_SORT 304 diff --git a/sfx2/source/doc/templatedlg.src b/sfx2/source/doc/templatedlg.src index f4b6962..27fdfbb 100644 --- a/sfx2/source/doc/templatedlg.src +++ b/sfx2/source/doc/templatedlg.src @@ -129,10 +129,51 @@ ModalDialog DLG_TEMPLATE_MANAGER { ImageBitmap = Bitmap { - File = "signet.png"; + File = "ln053.png"; }; }; + Image IMG_CREATE_TEXT + { + ImageBitmap = Bitmap + { + File = "create_text.png"; + }; + }; + + Image IMG_CREATE_SHEET + { + ImageBitmap = Bitmap + { + File = "create_sheet.png"; + }; + }; + + Image IMG_CREATE_PRESENT + { + ImageBitmap = Bitmap + { + File = "create_present.png"; + }; + }; + + Image IMG_CREATE_DRAW + { + ImageBitmap = Bitmap + { + File = "create_draw.png"; + }; + }; + + Image IMG_ACTION_SORT + { + ImageBitmap = Bitmap + { + File = "sortascending.png"; + }; + }; + + ToolBox TBX_ACTION_VIEW { SVLook = TRUE ; @@ -145,12 +186,22 @@ ModalDialog DLG_TEMPLATE_MANAGER { Identifier = TBI_TEMPLATE_CREATE; Text [ en-US ] = "Create a template" ; + + ItemImage = Image + { + ImageBitmap = Bitmap { File = "create_text.png" ; }; + }; }; ToolBoxItem { Identifier = TBI_TEMPLATE_IMPORT ; Text [ en-US ] = "Import a template" ; + + ItemImage = Image + { + ImageBitmap = Bitmap { File = "import.png" ; }; + }; }; }; }; @@ -167,12 +218,22 @@ ModalDialog DLG_TEMPLATE_MANAGER { Identifier = TBI_TEMPLATE_SEARCH; Text [en-US] = "Search"; + + ItemImage = Image + { + ImageBitmap = Bitmap { File = "search.png" ; }; + }; }; ToolBoxItem { Identifier = TBI_TEMPLATE_ACTION; Text [en-US] = "Action Menu"; + + ItemImage = Image + { + ImageBitmap = Bitmap { File = "exec_action.png" ; }; + }; }; }; }; commit 93a378e081d7311ee43ea4f8f283eed38814ca0e Author: Rafael Dominguez <venccsra...@gmail.com> Date: Mon Jul 2 21:41:37 2012 -0430 Disable importing a template while a folder isnt selected. Change-Id: I3428205cafe41784ee8df24f8511511eebca81c2 diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index 4488bc9..4a8322e 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -122,6 +122,7 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent) mpTemplateBar->SetButtonType(BUTTON_SYMBOLTEXT); // Set toolbox button bits + mpViewBar->EnableItem(TBI_TEMPLATE_IMPORT,false); mpViewBar->SetItemBits(TBI_TEMPLATE_CREATE, TIB_DROPDOWNONLY); mpActionBar->SetItemBits(TBI_TEMPLATE_ACTION, TIB_DROPDOWNONLY); mpTemplateBar->SetItemBits(TBI_TEMPLATE_MOVE,TIB_DROPDOWNONLY); @@ -370,11 +371,17 @@ IMPL_LINK(SfxTemplateManagerDlg, TVFolderStateHdl, const ThumbnailViewItem*, pIt { if (pItem->isSelected()) { + if (maSelFolders.empty()) + mpViewBar->EnableItem(TBI_TEMPLATE_IMPORT,true); + maSelFolders.insert(pItem); } else { maSelFolders.erase(pItem); + + if (maSelFolders.empty()) + mpViewBar->EnableItem(TBI_TEMPLATE_IMPORT,false); } return 0; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits