1*0a1e2f0eSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*0a1e2f0eSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*0a1e2f0eSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*0a1e2f0eSAndrew Rist * distributed with this work for additional information 6*0a1e2f0eSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*0a1e2f0eSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*0a1e2f0eSAndrew Rist * "License"); you may not use this file except in compliance 9*0a1e2f0eSAndrew Rist * with the License. You may obtain a copy of the License at 10*0a1e2f0eSAndrew Rist * 11*0a1e2f0eSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*0a1e2f0eSAndrew Rist * 13*0a1e2f0eSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*0a1e2f0eSAndrew Rist * software distributed under the License is distributed on an 15*0a1e2f0eSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*0a1e2f0eSAndrew Rist * KIND, either express or implied. See the License for the 17*0a1e2f0eSAndrew Rist * specific language governing permissions and limitations 18*0a1e2f0eSAndrew Rist * under the License. 19*0a1e2f0eSAndrew Rist * 20*0a1e2f0eSAndrew Rist *************************************************************/ 21*0a1e2f0eSAndrew Rist 22*0a1e2f0eSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef INCLUDED_DESKTOP_SOURCE_DEPLOYMENT_GUI_DP_GUI_UPDATEDIALOG_HXX 25cdf0e10cSrcweir #define INCLUDED_DESKTOP_SOURCE_DEPLOYMENT_GUI_DP_GUI_UPDATEDIALOG_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include "sal/config.h" 28cdf0e10cSrcweir 29cdf0e10cSrcweir #include <memory> 30cdf0e10cSrcweir #include <vector> 31cdf0e10cSrcweir #include "com/sun/star/uno/Reference.hxx" 32cdf0e10cSrcweir #include "com/sun/star/uno/Sequence.hxx" 33cdf0e10cSrcweir #include "rtl/ref.hxx" 34cdf0e10cSrcweir #include "rtl/ustring.hxx" 35cdf0e10cSrcweir #include "svtools/svlbitm.hxx" 36cdf0e10cSrcweir #include "svx/checklbx.hxx" 37cdf0e10cSrcweir #include "tools/link.hxx" 38cdf0e10cSrcweir #include "tools/solar.h" 39cdf0e10cSrcweir #ifndef _SV_BUTTON_HXX 40cdf0e10cSrcweir #include "vcl/button.hxx" 41cdf0e10cSrcweir #endif 42cdf0e10cSrcweir #include "vcl/dialog.hxx" 43cdf0e10cSrcweir #include "vcl/fixed.hxx" 44cdf0e10cSrcweir #include <svtools/fixedhyper.hxx> 45cdf0e10cSrcweir #include <vcl/throbber.hxx> 46cdf0e10cSrcweir 47cdf0e10cSrcweir #include "descedit.hxx" 48cdf0e10cSrcweir #include "dp_gui_updatedata.hxx" 49cdf0e10cSrcweir 50cdf0e10cSrcweir /// @HTML 51cdf0e10cSrcweir 52cdf0e10cSrcweir class Image; 53cdf0e10cSrcweir class KeyEvent; 54cdf0e10cSrcweir class MouseEvent; 55cdf0e10cSrcweir class ResId; 56cdf0e10cSrcweir class Window; 57cdf0e10cSrcweir 58cdf0e10cSrcweir namespace com { namespace sun { namespace star { 59cdf0e10cSrcweir namespace deployment { class XExtensionManager; 60cdf0e10cSrcweir class XPackage; } 61cdf0e10cSrcweir namespace uno { class XComponentContext; } 62cdf0e10cSrcweir } } } 63cdf0e10cSrcweir 64cdf0e10cSrcweir namespace dp_gui { 65cdf0e10cSrcweir /** 66cdf0e10cSrcweir The modal “Check for Updates” dialog. 67cdf0e10cSrcweir */ 68cdf0e10cSrcweir class UpdateDialog: public ModalDialog { 69cdf0e10cSrcweir public: 70cdf0e10cSrcweir /** 71cdf0e10cSrcweir Create an instance. 72cdf0e10cSrcweir 73cdf0e10cSrcweir <p>Exactly one of <code>selectedPackages</code> and 74cdf0e10cSrcweir <code>packageManagers</code> must be non-null.</p> 75cdf0e10cSrcweir 76cdf0e10cSrcweir @param context 77cdf0e10cSrcweir a non-null component context 78cdf0e10cSrcweir 79cdf0e10cSrcweir @param parent 80cdf0e10cSrcweir the parent window, may be null 81cdf0e10cSrcweir 82cdf0e10cSrcweir @param vExtensionList 83cdf0e10cSrcweir check for updates for the contained extensions. There must only be one extension with 84cdf0e10cSrcweir a particular identifier. If one extension is installed in several repositories, then the 85cdf0e10cSrcweir one with the highest version must be used, because it contains the latest known update 86cdf0e10cSrcweir information. 87cdf0e10cSrcweir */ 88cdf0e10cSrcweir UpdateDialog( 89cdf0e10cSrcweir com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > const & context, 90cdf0e10cSrcweir Window * parent, 91cdf0e10cSrcweir const std::vector< com::sun::star::uno::Reference< 92cdf0e10cSrcweir com::sun::star::deployment::XPackage > > & vExtensionList, 93cdf0e10cSrcweir std::vector< dp_gui::UpdateData > * updateData); 94cdf0e10cSrcweir 95cdf0e10cSrcweir ~UpdateDialog(); 96cdf0e10cSrcweir 97cdf0e10cSrcweir virtual sal_Bool Close(); 98cdf0e10cSrcweir 99cdf0e10cSrcweir virtual short Execute(); 100cdf0e10cSrcweir 101cdf0e10cSrcweir void notifyMenubar( bool bPrepareOnly, bool bRecheckOnly ); 102cdf0e10cSrcweir static void createNotifyJob( bool bPrepareOnly, 103cdf0e10cSrcweir com::sun::star::uno::Sequence< com::sun::star::uno::Sequence< rtl::OUString > > &rItemList ); 104cdf0e10cSrcweir 105cdf0e10cSrcweir private: 106cdf0e10cSrcweir UpdateDialog(UpdateDialog &); // not defined 107cdf0e10cSrcweir void operator =(UpdateDialog &); // not defined 108cdf0e10cSrcweir 109cdf0e10cSrcweir struct DisabledUpdate; 110cdf0e10cSrcweir struct SpecificError; 111cdf0e10cSrcweir struct IgnoredUpdate; 112cdf0e10cSrcweir struct Index; 113cdf0e10cSrcweir friend struct Index; 114cdf0e10cSrcweir class Thread; 115cdf0e10cSrcweir friend class Thread; 116cdf0e10cSrcweir 117cdf0e10cSrcweir class CheckListBox: public SvxCheckListBox { 118cdf0e10cSrcweir public: 119cdf0e10cSrcweir CheckListBox( 120cdf0e10cSrcweir UpdateDialog & dialog, ResId const & resource, 121cdf0e10cSrcweir Image const & normalStaticImage, 122cdf0e10cSrcweir Image const & highContrastStaticImage); 123cdf0e10cSrcweir 124cdf0e10cSrcweir virtual ~CheckListBox(); 125cdf0e10cSrcweir 126cdf0e10cSrcweir sal_uInt16 getItemCount() const; 127cdf0e10cSrcweir 128cdf0e10cSrcweir private: 129cdf0e10cSrcweir CheckListBox(UpdateDialog::CheckListBox &); // not defined 130cdf0e10cSrcweir void operator =(UpdateDialog::CheckListBox &); // not defined 131cdf0e10cSrcweir 132cdf0e10cSrcweir virtual void MouseButtonDown(MouseEvent const & event); 133cdf0e10cSrcweir virtual void MouseButtonUp(MouseEvent const & event); 134cdf0e10cSrcweir virtual void KeyInput(KeyEvent const & event); 135cdf0e10cSrcweir 136cdf0e10cSrcweir void handlePopupMenu( const Point &rPos ); 137cdf0e10cSrcweir 138cdf0e10cSrcweir rtl::OUString m_ignoreUpdate; 139cdf0e10cSrcweir rtl::OUString m_ignoreAllUpdates; 140cdf0e10cSrcweir rtl::OUString m_enableUpdate; 141cdf0e10cSrcweir UpdateDialog & m_dialog; 142cdf0e10cSrcweir }; 143cdf0e10cSrcweir 144cdf0e10cSrcweir 145cdf0e10cSrcweir friend class CheckListBox; 146cdf0e10cSrcweir 147cdf0e10cSrcweir sal_uInt16 insertItem( UpdateDialog::Index *pIndex, SvLBoxButtonKind kind ); 148cdf0e10cSrcweir void addAdditional( UpdateDialog::Index *pIndex, SvLBoxButtonKind kind ); 149cdf0e10cSrcweir bool isIgnoredUpdate( UpdateDialog::Index *pIndex ); 150cdf0e10cSrcweir void setIgnoredUpdate( UpdateDialog::Index *pIndex, bool bIgnore, bool bIgnoreAll ); 151cdf0e10cSrcweir 152cdf0e10cSrcweir void addEnabledUpdate( rtl::OUString const & name, dp_gui::UpdateData & data ); 153cdf0e10cSrcweir void addDisabledUpdate( UpdateDialog::DisabledUpdate & data ); 154cdf0e10cSrcweir void addSpecificError( UpdateDialog::SpecificError & data ); 155cdf0e10cSrcweir 156cdf0e10cSrcweir void checkingDone(); 157cdf0e10cSrcweir 158cdf0e10cSrcweir void enableOk(); 159cdf0e10cSrcweir 160cdf0e10cSrcweir void getIgnoredUpdates(); 161cdf0e10cSrcweir void storeIgnoredUpdates(); 162cdf0e10cSrcweir 163cdf0e10cSrcweir void initDescription(); 164cdf0e10cSrcweir void clearDescription(); 165cdf0e10cSrcweir bool showDescription(::com::sun::star::uno::Reference< 166cdf0e10cSrcweir ::com::sun::star::deployment::XPackage > const & aExtension); 167cdf0e10cSrcweir bool showDescription(std::pair< rtl::OUString, rtl::OUString > const & pairPublisher, 168cdf0e10cSrcweir rtl::OUString const & sReleaseNotes); 169cdf0e10cSrcweir bool showDescription( ::com::sun::star::uno::Reference< 170cdf0e10cSrcweir ::com::sun::star::xml::dom::XNode > const & aUpdateInfo); 171cdf0e10cSrcweir bool showDescription( const String& rDescription, bool bWithPublisher ); 172cdf0e10cSrcweir bool isReadOnly( const ::com::sun::star::uno::Reference< ::com::sun::star::deployment::XPackage > &xPackage ) const; 173cdf0e10cSrcweir 174cdf0e10cSrcweir DECL_LINK(selectionHandler, void *); 175cdf0e10cSrcweir DECL_LINK(allHandler, void *); 176cdf0e10cSrcweir DECL_LINK(okHandler, void *); 177cdf0e10cSrcweir DECL_LINK(closeHandler, void *); 178cdf0e10cSrcweir DECL_LINK(hyperlink_clicked, svt::FixedHyperlink *); 179cdf0e10cSrcweir 180cdf0e10cSrcweir com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > 181cdf0e10cSrcweir m_context; 182cdf0e10cSrcweir FixedText m_checking; 183cdf0e10cSrcweir Throbber m_throbber; 184cdf0e10cSrcweir FixedText m_update; 185cdf0e10cSrcweir UpdateDialog::CheckListBox m_updates; 186cdf0e10cSrcweir CheckBox m_all; 187cdf0e10cSrcweir FixedLine m_description; 188cdf0e10cSrcweir FixedText m_PublisherLabel; 189cdf0e10cSrcweir svt::FixedHyperlink m_PublisherLink; 190cdf0e10cSrcweir FixedText m_ReleaseNotesLabel; 191cdf0e10cSrcweir svt::FixedHyperlink m_ReleaseNotesLink; 192cdf0e10cSrcweir dp_gui::DescriptionEdit m_descriptions; 193cdf0e10cSrcweir FixedLine m_line; 194cdf0e10cSrcweir HelpButton m_help; 195cdf0e10cSrcweir PushButton m_ok; 196cdf0e10cSrcweir PushButton m_close; 197cdf0e10cSrcweir rtl::OUString m_error; 198cdf0e10cSrcweir rtl::OUString m_none; 199cdf0e10cSrcweir rtl::OUString m_noInstallable; 200cdf0e10cSrcweir rtl::OUString m_failure; 201cdf0e10cSrcweir rtl::OUString m_unknownError; 202cdf0e10cSrcweir rtl::OUString m_noDescription; 203cdf0e10cSrcweir rtl::OUString m_noInstall; 204cdf0e10cSrcweir rtl::OUString m_noDependency; 205cdf0e10cSrcweir rtl::OUString m_noDependencyCurVer; 206cdf0e10cSrcweir rtl::OUString m_browserbased; 207cdf0e10cSrcweir rtl::OUString m_version; 208cdf0e10cSrcweir rtl::OUString m_ignoredUpdate; 209cdf0e10cSrcweir std::vector< dp_gui::UpdateData > m_enabledUpdates; 210cdf0e10cSrcweir std::vector< UpdateDialog::DisabledUpdate > m_disabledUpdates; 211cdf0e10cSrcweir std::vector< UpdateDialog::SpecificError > m_specificErrors; 212cdf0e10cSrcweir std::vector< UpdateDialog::IgnoredUpdate* > m_ignoredUpdates; 213cdf0e10cSrcweir std::vector< Index* > m_ListboxEntries; 214cdf0e10cSrcweir std::vector< dp_gui::UpdateData > & m_updateData; 215cdf0e10cSrcweir rtl::Reference< UpdateDialog::Thread > m_thread; 216cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::deployment::XExtensionManager > m_xExtensionManager; 217cdf0e10cSrcweir 218cdf0e10cSrcweir Point m_aFirstLinePos; 219cdf0e10cSrcweir Size m_aFirstLineSize; 220cdf0e10cSrcweir long m_nFirstLineDelta; 221cdf0e10cSrcweir long m_nOneLineMissing; 222cdf0e10cSrcweir sal_uInt16 m_nLastID; 223cdf0e10cSrcweir bool m_bModified; 224cdf0e10cSrcweir }; 225cdf0e10cSrcweir 226cdf0e10cSrcweir } 227cdf0e10cSrcweir 228cdf0e10cSrcweir #endif 229