xref: /trunk/main/desktop/source/app/checkinstall.cxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_desktop.hxx"
30 
31 #include "checkinstall.hxx"
32 #include <com/sun/star/beans/XExactName.hpp>
33 #include <com/sun/star/beans/XMaterialHolder.hpp>
34 #include <com/sun/star/container/XContentEnumerationAccess.hpp>
35 #include <com/sun/star/util/Date.hpp>
36 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
37 #include <comphelper/processfactory.hxx>
38 #include <vcl/msgbox.hxx>
39 #include <tools/date.hxx>
40 
41 using namespace rtl;
42 using namespace com::sun::star::uno;
43 using namespace com::sun::star::lang;
44 using namespace com::sun::star::beans;
45 
46 namespace desktop
47 {
48 
49 sal_Bool CheckInstallation( OUString& rTitle )
50 {
51     try
52     {
53         Reference< XMultiServiceFactory > xSMgr = ::comphelper::getProcessServiceFactory();
54         Reference< XExactName > xExactName( xSMgr->createInstance(
55                                     ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
56                                         "com.sun.star.comp.desktop.Evaluation" ))),
57                                     UNO_QUERY );
58         if ( xExactName.is() )
59         {
60             try
61             {
62                 rTitle = xExactName->getExactName( rTitle );
63                 Reference< XMaterialHolder > xMaterialHolder( xExactName, UNO_QUERY );
64                 if ( xMaterialHolder.is() )
65                 {
66                     com::sun::star::util::Date aExpirationDate;
67                     Any a = xMaterialHolder->getMaterial();
68                     if ( a >>= aExpirationDate )
69                     {
70                         Date aToday;
71                         Date aTimeBombDate( aExpirationDate.Day, aExpirationDate.Month, aExpirationDate.Year );
72                         if ( aToday > aTimeBombDate )
73                         {
74                             InfoBox aInfoBox( NULL, String::CreateFromAscii( "This version has expired" ) );
75                             aInfoBox.Execute();
76                             return sal_False;
77                         }
78                     }
79 
80                     return sal_True;
81                 }
82                 else
83                 {
84                     InfoBox aInfoBox( NULL, rTitle );
85                     aInfoBox.Execute();
86                     return sal_False;
87                 }
88             }
89             catch ( RuntimeException& )
90             {
91                 // Evaluation version expired!
92                 return sal_False;
93             }
94         }
95         else
96         {
97             Reference< com::sun::star::container::XContentEnumerationAccess > rContent( xSMgr , UNO_QUERY );
98             if( rContent.is() )
99             {
100                 OUString sEvalService = OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.office.Evaluation" ) );
101                 Reference < com::sun::star::container::XEnumeration > rEnum = rContent->createContentEnumeration( sEvalService );
102                 if ( rEnum.is() )
103                 {
104                     InfoBox aInfoBox( NULL, rTitle );
105                     aInfoBox.Execute();
106                     return sal_False;
107                 }
108             }
109         }
110     }
111     catch(Exception)
112     {
113     }
114 
115     return sal_True;
116 }
117 
118 } // namespace desktop
119