1*2a97ec55SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*2a97ec55SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*2a97ec55SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*2a97ec55SAndrew Rist * distributed with this work for additional information 6*2a97ec55SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*2a97ec55SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*2a97ec55SAndrew Rist * "License"); you may not use this file except in compliance 9*2a97ec55SAndrew Rist * with the License. You may obtain a copy of the License at 10*2a97ec55SAndrew Rist * 11*2a97ec55SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*2a97ec55SAndrew Rist * 13*2a97ec55SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*2a97ec55SAndrew Rist * software distributed under the License is distributed on an 15*2a97ec55SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*2a97ec55SAndrew Rist * KIND, either express or implied. See the License for the 17*2a97ec55SAndrew Rist * specific language governing permissions and limitations 18*2a97ec55SAndrew Rist * under the License. 19*2a97ec55SAndrew Rist * 20*2a97ec55SAndrew Rist *************************************************************/ 21*2a97ec55SAndrew Rist 22*2a97ec55SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_extensions.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include "config.hxx" 28cdf0e10cSrcweir #include "myconfigurationhelper.hxx" 29cdf0e10cSrcweir #include <rtl/ustrbuf.hxx> 30cdf0e10cSrcweir 31cdf0e10cSrcweir 32cdf0e10cSrcweir using namespace ::com::sun::star::lang; 33cdf0e10cSrcweir using namespace ::com::sun::star::uno; 34cdf0e10cSrcweir using ::rtl::OUString; 35cdf0e10cSrcweir using ::rtl::OUStringBuffer; 36cdf0e10cSrcweir 37cdf0e10cSrcweir 38cdf0e10cSrcweir namespace 39cdf0e10cSrcweir { 40cdf0e10cSrcweir using namespace oooimprovement; 41cdf0e10cSrcweir 42cdf0e10cSrcweir static const OUString CFG_COUNTERS = OUString::createFromAscii("Counters"); 43cdf0e10cSrcweir static const OUString CFG_ENABLINGALLOWED = OUString::createFromAscii("EnablingAllowed"); 44cdf0e10cSrcweir static const OUString CFG_EVENTSCOUNT = OUString::createFromAscii("LoggedEvents"); 45cdf0e10cSrcweir static const OUString CFG_EXTENSION = OUString::createFromAscii("ooSetupExtension"); 46cdf0e10cSrcweir static const OUString CFG_FAILEDATTEMPTS = OUString::createFromAscii("FailedAttempts"); 47cdf0e10cSrcweir static const OUString CFG_INVACCEPT = OUString::createFromAscii("InvitationAccepted"); 48cdf0e10cSrcweir static const OUString CFG_L10N = OUString::createFromAscii("L10N"); 49cdf0e10cSrcweir static const OUString CFG_LOCALE = OUString::createFromAscii("ooLocale"); 50cdf0e10cSrcweir static const OUString CFG_LOGGING = OUString::createFromAscii("/org.openoffice.Office.Logging"); 51cdf0e10cSrcweir static const OUString CFG_LOGPATH = OUString::createFromAscii("LogPath"); 52cdf0e10cSrcweir static const OUString CFG_NAME = OUString::createFromAscii("ooName"); 53cdf0e10cSrcweir static const OUString CFG_OFFICESTARTCOUNTDOWN = OUString::createFromAscii("OfficeStartCounterdown"); 54cdf0e10cSrcweir static const OUString CFG_OOOIMPROVEMENT = OUString::createFromAscii("OOoImprovement"); 55cdf0e10cSrcweir static const OUString CFG_OOOIMPROVEMENTPACK = OUString::createFromAscii("/org.openoffice.Office.OOoImprovement.Settings"); 56cdf0e10cSrcweir static const OUString CFG_PARTICIPATION = OUString::createFromAscii("Participation"); 57cdf0e10cSrcweir static const OUString CFG_PRODUCT = OUString::createFromAscii("Product"); 58cdf0e10cSrcweir static const OUString CFG_REPORTCOUNT = OUString::createFromAscii("UploadedReports"); 59cdf0e10cSrcweir static const OUString CFG_REPORTEREMAIL = OUString::createFromAscii("ReporterEmail"); 60cdf0e10cSrcweir static const OUString CFG_SETUP = OUString::createFromAscii("/org.openoffice.Setup"); 61cdf0e10cSrcweir static const OUString CFG_SHOWEDINV = OUString::createFromAscii("ShowedInvitation"); 62cdf0e10cSrcweir static const OUString CFG_SOAPIDADD = OUString::createFromAscii("SoapIdAdditions"); 63cdf0e10cSrcweir static const OUString CFG_SOAPURL = OUString::createFromAscii("SoapUrl"); 64cdf0e10cSrcweir static const OUString CFG_UPLOAD = OUString::createFromAscii("Upload"); 65cdf0e10cSrcweir static const OUString CFG_VERSION = OUString::createFromAscii("ooSetupVersion"); 66cdf0e10cSrcweir 67cdf0e10cSrcweir static const OUString SOAPID = OUString::createFromAscii("OpenOffice.org Improvement Report - Version 1\n"); 68cdf0e10cSrcweir incrementCfgValue(const Reference<XMultiServiceFactory> sm,const OUString & package,const OUString & rel_path,const OUString & key,sal_Int32 increment_by)69cdf0e10cSrcweir static sal_Int32 incrementCfgValue( 70cdf0e10cSrcweir const Reference<XMultiServiceFactory> sm, 71cdf0e10cSrcweir const OUString& package, 72cdf0e10cSrcweir const OUString& rel_path, 73cdf0e10cSrcweir const OUString& key, 74cdf0e10cSrcweir sal_Int32 increment_by) 75cdf0e10cSrcweir { 76cdf0e10cSrcweir sal_Int32 value; 77cdf0e10cSrcweir Reference<XInterface> cfg = 78cdf0e10cSrcweir MyConfigurationHelper::openConfig( 79cdf0e10cSrcweir sm, 80cdf0e10cSrcweir package, MyConfigurationHelper::E_STANDARD); 81cdf0e10cSrcweir MyConfigurationHelper::readRelativeKey( 82cdf0e10cSrcweir cfg, 83cdf0e10cSrcweir rel_path, key) >>= value; 84cdf0e10cSrcweir value += increment_by; 85cdf0e10cSrcweir MyConfigurationHelper::writeRelativeKey( 86cdf0e10cSrcweir cfg, 87cdf0e10cSrcweir rel_path, key, 88cdf0e10cSrcweir Any(value)); 89cdf0e10cSrcweir MyConfigurationHelper::flush(cfg); 90cdf0e10cSrcweir return value; 91cdf0e10cSrcweir }; 92cdf0e10cSrcweir } 93cdf0e10cSrcweir 94cdf0e10cSrcweir namespace oooimprovement 95cdf0e10cSrcweir { Config(const Reference<XMultiServiceFactory> & sf)96cdf0e10cSrcweir Config::Config(const Reference<XMultiServiceFactory>& sf) 97cdf0e10cSrcweir : m_ServiceFactory(sf) 98cdf0e10cSrcweir {} 99cdf0e10cSrcweir getSoapUrl() const100cdf0e10cSrcweir OUString Config::getSoapUrl() const 101cdf0e10cSrcweir { 102cdf0e10cSrcweir OUString result; 103cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 104cdf0e10cSrcweir m_ServiceFactory, 105cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_UPLOAD, CFG_SOAPURL, 106cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= result; 107cdf0e10cSrcweir return result; 108cdf0e10cSrcweir } 109cdf0e10cSrcweir getSoapId() const110cdf0e10cSrcweir OUString Config::getSoapId() const 111cdf0e10cSrcweir { 112cdf0e10cSrcweir OUString value; 113cdf0e10cSrcweir OUStringBuffer result = SOAPID; 114cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 115cdf0e10cSrcweir m_ServiceFactory, 116cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_UPLOAD, CFG_SOAPIDADD, 117cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= value; 118cdf0e10cSrcweir result.append(value); 119cdf0e10cSrcweir return result.makeStringAndClear(); 120cdf0e10cSrcweir } 121cdf0e10cSrcweir getReporterEmail() const122cdf0e10cSrcweir OUString Config::getReporterEmail() const 123cdf0e10cSrcweir { 124cdf0e10cSrcweir OUString result; 125cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 126cdf0e10cSrcweir m_ServiceFactory, 127cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_UPLOAD, CFG_REPORTEREMAIL, 128cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= result; 129cdf0e10cSrcweir return result; 130cdf0e10cSrcweir } 131cdf0e10cSrcweir getLogPath() const132cdf0e10cSrcweir OUString Config::getLogPath() const 133cdf0e10cSrcweir { 134cdf0e10cSrcweir OUString result; 135cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 136cdf0e10cSrcweir m_ServiceFactory, 137cdf0e10cSrcweir CFG_LOGGING, CFG_OOOIMPROVEMENT, CFG_LOGPATH, 138cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= result; 139cdf0e10cSrcweir return result; 140cdf0e10cSrcweir } 141cdf0e10cSrcweir getEnablingAllowed() const142cdf0e10cSrcweir bool Config::getEnablingAllowed() const 143cdf0e10cSrcweir { 144cdf0e10cSrcweir bool result = false; 145cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 146cdf0e10cSrcweir m_ServiceFactory, 147cdf0e10cSrcweir CFG_LOGGING, CFG_OOOIMPROVEMENT, CFG_ENABLINGALLOWED, 148cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= result; 149cdf0e10cSrcweir return result; 150cdf0e10cSrcweir } 151cdf0e10cSrcweir getInvitationAccepted() const152cdf0e10cSrcweir bool Config::getInvitationAccepted() const 153cdf0e10cSrcweir { 154cdf0e10cSrcweir bool result = false; 155cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 156cdf0e10cSrcweir m_ServiceFactory, 157cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_PARTICIPATION, CFG_INVACCEPT, 158cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= result; 159cdf0e10cSrcweir return result; 160cdf0e10cSrcweir }; 161cdf0e10cSrcweir getShowedInvitation() const162cdf0e10cSrcweir bool Config::getShowedInvitation() const 163cdf0e10cSrcweir { 164cdf0e10cSrcweir bool result = false; 165cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 166cdf0e10cSrcweir m_ServiceFactory, 167cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_PARTICIPATION, CFG_SHOWEDINV, 168cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= result; 169cdf0e10cSrcweir return result; 170cdf0e10cSrcweir }; 171cdf0e10cSrcweir getCompleteProductname() const172cdf0e10cSrcweir OUString Config::getCompleteProductname() const 173cdf0e10cSrcweir { 174cdf0e10cSrcweir OUStringBuffer result; 175cdf0e10cSrcweir OUString value; 176cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 177cdf0e10cSrcweir m_ServiceFactory, 178cdf0e10cSrcweir CFG_SETUP, CFG_PRODUCT, CFG_NAME, 179cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= value; 180cdf0e10cSrcweir result.append(value); 181cdf0e10cSrcweir 182cdf0e10cSrcweir value = OUString::createFromAscii(""); 183cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 184cdf0e10cSrcweir m_ServiceFactory, 185cdf0e10cSrcweir CFG_SETUP, CFG_PRODUCT, CFG_VERSION, 186cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= value; 187cdf0e10cSrcweir if(value.getLength()) result.appendAscii(" ").append(value); 188cdf0e10cSrcweir 189cdf0e10cSrcweir value = OUString::createFromAscii(""); 190cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 191cdf0e10cSrcweir m_ServiceFactory, 192cdf0e10cSrcweir CFG_SETUP, CFG_PRODUCT, CFG_EXTENSION, 193cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= value; 194cdf0e10cSrcweir if(value.getLength()) result.appendAscii(" ").append(value); 195cdf0e10cSrcweir 196cdf0e10cSrcweir return result.makeStringAndClear(); 197cdf0e10cSrcweir } 198cdf0e10cSrcweir getSetupLocale() const199cdf0e10cSrcweir OUString Config::getSetupLocale() const 200cdf0e10cSrcweir { 201cdf0e10cSrcweir OUString result; 202cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 203cdf0e10cSrcweir m_ServiceFactory, 204cdf0e10cSrcweir CFG_SETUP, CFG_L10N, CFG_LOCALE, 205cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= result; 206cdf0e10cSrcweir return result; 207cdf0e10cSrcweir } 208cdf0e10cSrcweir getReportCount() const209cdf0e10cSrcweir sal_Int32 Config::getReportCount() const 210cdf0e10cSrcweir { 211cdf0e10cSrcweir sal_Int32 result = 0; 212cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 213cdf0e10cSrcweir m_ServiceFactory, 214cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_COUNTERS, CFG_REPORTCOUNT, 215cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= result; 216cdf0e10cSrcweir return result; 217cdf0e10cSrcweir } 218cdf0e10cSrcweir 219cdf0e10cSrcweir #ifdef FUTURE getFailedAttempts() const220cdf0e10cSrcweir sal_Int32 Config::getFailedAttempts() const 221cdf0e10cSrcweir { 222cdf0e10cSrcweir sal_Int32 result = 0; 223cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 224cdf0e10cSrcweir m_ServiceFactory, 225cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_COUNTERS, CFG_FAILEDATTEMPTS, 226cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= result; 227cdf0e10cSrcweir return result; 228cdf0e10cSrcweir } 229cdf0e10cSrcweir #endif 230cdf0e10cSrcweir getOfficeStartCounterdown() const231cdf0e10cSrcweir sal_Int32 Config::getOfficeStartCounterdown() const 232cdf0e10cSrcweir { 233cdf0e10cSrcweir sal_Int32 result = 0; 234cdf0e10cSrcweir MyConfigurationHelper::readDirectKey( 235cdf0e10cSrcweir m_ServiceFactory, 236cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_PARTICIPATION, CFG_OFFICESTARTCOUNTDOWN, 237cdf0e10cSrcweir MyConfigurationHelper::E_READONLY) >>= result; 238cdf0e10cSrcweir return result; 239cdf0e10cSrcweir } 240cdf0e10cSrcweir incrementReportCount(sal_Int32 by)241cdf0e10cSrcweir sal_Int32 Config::incrementReportCount(sal_Int32 by) 242cdf0e10cSrcweir { 243cdf0e10cSrcweir return incrementCfgValue( 244cdf0e10cSrcweir m_ServiceFactory, 245cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_COUNTERS, CFG_REPORTCOUNT, 246cdf0e10cSrcweir by); 247cdf0e10cSrcweir } 248cdf0e10cSrcweir incrementEventCount(sal_Int32 by)249cdf0e10cSrcweir sal_Int32 Config::incrementEventCount(sal_Int32 by) 250cdf0e10cSrcweir { 251cdf0e10cSrcweir return incrementCfgValue( 252cdf0e10cSrcweir m_ServiceFactory, 253cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_COUNTERS, CFG_EVENTSCOUNT, 254cdf0e10cSrcweir by); 255cdf0e10cSrcweir } 256cdf0e10cSrcweir incrementFailedAttempts(sal_Int32 by)257cdf0e10cSrcweir sal_Int32 Config::incrementFailedAttempts(sal_Int32 by) 258cdf0e10cSrcweir { 259cdf0e10cSrcweir return incrementCfgValue( 260cdf0e10cSrcweir m_ServiceFactory, 261cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_COUNTERS, CFG_FAILEDATTEMPTS, 262cdf0e10cSrcweir by); 263cdf0e10cSrcweir } 264cdf0e10cSrcweir decrementOfficeStartCounterdown(sal_Int32 by)265cdf0e10cSrcweir sal_Int32 Config::decrementOfficeStartCounterdown(sal_Int32 by) 266cdf0e10cSrcweir { 267cdf0e10cSrcweir return incrementCfgValue( 268cdf0e10cSrcweir m_ServiceFactory, 269cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_PARTICIPATION, CFG_OFFICESTARTCOUNTDOWN, 270cdf0e10cSrcweir -by); 271cdf0e10cSrcweir } 272cdf0e10cSrcweir resetFailedAttempts()273cdf0e10cSrcweir void Config::resetFailedAttempts() 274cdf0e10cSrcweir { 275cdf0e10cSrcweir sal_Int32 zero = 0; 276cdf0e10cSrcweir MyConfigurationHelper::writeDirectKey( 277cdf0e10cSrcweir m_ServiceFactory, 278cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_COUNTERS, CFG_FAILEDATTEMPTS, 279cdf0e10cSrcweir Any(zero), 280cdf0e10cSrcweir MyConfigurationHelper::E_STANDARD); 281cdf0e10cSrcweir } 282cdf0e10cSrcweir giveupUploading()283cdf0e10cSrcweir void Config::giveupUploading() 284cdf0e10cSrcweir { 285cdf0e10cSrcweir sal_Bool f = false; 286cdf0e10cSrcweir MyConfigurationHelper::writeDirectKey( 287cdf0e10cSrcweir m_ServiceFactory, 288cdf0e10cSrcweir CFG_OOOIMPROVEMENTPACK, CFG_PARTICIPATION, CFG_INVACCEPT, 289cdf0e10cSrcweir Any(f), 290cdf0e10cSrcweir MyConfigurationHelper::E_STANDARD); 291cdf0e10cSrcweir resetFailedAttempts(); 292cdf0e10cSrcweir } 293cdf0e10cSrcweir } 294