| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #include <vcl/lstbox.hxx> |
| #include <vcl/button.hxx> |
| #include <vcl/menu.hxx> |
| #include <svl/lstner.hxx> |
| #include <vector> |
| #include "svx/galbrws.hxx" |
| |
| #include <boost/function.hpp> |
| |
| // ----------------- |
| // - GalleryButton - |
| // ----------------- |
| |
| class GalleryButton : public PushButton |
| { |
| private: |
| |
| virtual void KeyInput( const KeyEvent& rKEvt ); |
| |
| public: |
| |
| GalleryButton( GalleryBrowser1* pParent, WinBits nWinBits ); |
| ~GalleryButton(); |
| }; |
| |
| // ----------------------- |
| // - GalleryThemeListBox - |
| // ----------------------- |
| |
| class GalleryThemeListBox : public ListBox |
| { |
| protected: |
| |
| void InitSettings(); |
| |
| virtual void DataChanged( const DataChangedEvent& rDCEvt ); |
| virtual long PreNotify( NotifyEvent& rNEvt ); |
| |
| public: |
| |
| GalleryThemeListBox( GalleryBrowser1* pParent, WinBits nWinBits ); |
| ~GalleryThemeListBox(); |
| }; |
| |
| // ------------------- |
| // - GalleryBrowser1 - |
| // ------------------- |
| |
| class Gallery; |
| class GalleryThemeEntry; |
| class GalleryTheme; |
| class VclAbstractDialog2; |
| struct ExchangeData; |
| class SfxItemSet; |
| |
| namespace svx { namespace sidebar { class GalleryControl; } } |
| |
| class GalleryBrowser1 : public Control, SfxListener |
| { |
| friend class GalleryBrowser; |
| friend class svx::sidebar::GalleryControl; |
| friend class GalleryThemeListBox; |
| using Control::Notify; |
| using Window::KeyInput; |
| |
| private: |
| |
| GalleryButton maNewTheme; |
| GalleryThemeListBox* mpThemes; |
| Gallery* mpGallery; |
| ExchangeData* mpExchangeData; |
| SfxItemSet* mpThemePropsDlgItemSet; |
| |
| Image aImgNormal; |
| Image aImgDefault; |
| Image aImgReadOnly; |
| Image aImgImported; |
| |
| ::boost::function<sal_Bool(const KeyEvent&,Window*)> maKeyInputHandler; |
| ::boost::function<void(void)> maThemeSlectionHandler; |
| |
| void ImplAdjustControls(); |
| sal_uIntPtr ImplInsertThemeEntry( const GalleryThemeEntry* pEntry ); |
| void ImplFillExchangeData( const GalleryTheme* pThm, ExchangeData& rData ); |
| void ImplGetExecuteVector(::std::vector< sal_uInt16 >& o_aExec); |
| void ImplExecute( sal_uInt16 nId ); |
| void ImplGalleryThemeProperties( const String & rThemeName, bool bCreateNew ); |
| void ImplEndGalleryThemeProperties( VclAbstractDialog2* pDialog, bool bCreateNew ); |
| |
| // Control |
| virtual void Resize(); |
| virtual void GetFocus(); |
| |
| // SfxListener |
| virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); |
| |
| DECL_LINK( ClickNewThemeHdl, void* ); |
| DECL_LINK( SelectThemeHdl, void* ); |
| DECL_LINK( ShowContextMenuHdl, void* ); |
| DECL_LINK( PopupMenuHdl, Menu* ); |
| DECL_LINK( EndNewThemePropertiesDlgHdl, VclAbstractDialog2* ); |
| DECL_LINK( EndThemePropertiesDlgHdl, VclAbstractDialog2* ); |
| DECL_LINK( DestroyThemePropertiesDlgHdl, VclAbstractDialog2* ); |
| |
| public: |
| |
| GalleryBrowser1( |
| Window* pParent, |
| const ResId& rResId, |
| Gallery* pGallery, |
| const ::boost::function<sal_Bool(const KeyEvent&,Window*)>& rKeyInputHandler, |
| const ::boost::function<void(void)>& rThemeSlectionHandler); |
| ~GalleryBrowser1(); |
| |
| void SelectTheme( const String& rThemeName ) { mpThemes->SelectEntry( rThemeName ); SelectThemeHdl( NULL ); } |
| void SelectTheme( sal_uIntPtr nThemePos ) { mpThemes->SelectEntryPos( (sal_uInt16) nThemePos ); SelectThemeHdl( NULL ); } |
| String GetSelectedTheme() { return mpThemes->GetEntryCount() ? mpThemes->GetEntry( mpThemes->GetSelectEntryPos() ) : String(); } |
| |
| void ShowContextMenu(); |
| sal_Bool KeyInput( const KeyEvent& rKEvt, Window* pWindow ); |
| }; |