dba34a: pulled DEV300.m88

This commit is contained in:
Frank Schoenheit [fs]
2010-09-22 14:35:32 +02:00
3 changed files with 59 additions and 8 deletions

View File

@@ -52,6 +52,7 @@
#include <comphelper/synchronousdispatch.hxx>
#include <comphelper/uieventslogger.hxx>
#include <tools/testtoolloader.hxx>
#include <osl/file.hxx>
#define C2S(s) ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s))
@@ -61,6 +62,18 @@ namespace uno = ::com::sun::star::uno;
namespace util = ::com::sun::star::util;
using namespace com::sun::star::system;
namespace
{
bool lcl_doesLogfileExist(const ::rtl::OUString& sLogPath)
{
::rtl::OUString sLogFile( sLogPath );
sLogFile += C2S("/Current.csv");
::osl::File aLogFile(sLogFile);
return aLogFile.open(osl_File_OpenFlag_Read) == ::osl::FileBase::E_None;
}
}
// class SvxImprovementOptionsPage ---------------------------------------
SvxImprovementOptionsPage::SvxImprovementOptionsPage( Window* pParent, const SfxItemSet& rSet ) :
@@ -143,7 +156,10 @@ IMPL_LINK( SvxImprovementOptionsPage, HandleShowData, PushButton*, EMPTYARG )
uno::Reference< lang::XComponent > xDoc = ::comphelper::SynchronousDispatch::dispatch(
xDesktop, sLogFile, C2S("_default"), 0, aArgs );
if ( xDoc.is() )
{
dynamic_cast<Dialog*>(GetParent())->EndDialog( RET_CANCEL );
return 1;
}
}
return 0;
@@ -244,11 +260,13 @@ void SvxImprovementOptionsPage::Reset( const SfxItemSet& /*rSet*/ )
if ( xSubst.is() )
sPath = xSubst->substituteVariables( sPath, sal_False );
m_sLogPath = sPath;
m_aShowDataPB.Enable(lcl_doesLogfileExist(m_sLogPath));
}
}
}
catch( uno::Exception& )
{
m_aShowDataPB.Enable(false);
}
}

View File

@@ -35,15 +35,21 @@
#include "soapsender.hxx"
#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
#include <com/sun/star/frame/XDesktop.hpp>
#include <com/sun/star/frame/XTerminateListener.hpp>
#include <osl/mutex.hxx>
#include <osl/thread.hxx>
#include <osl/time.h>
#include <cppuhelper/implbase1.hxx>
#include <memory>
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::task;
using namespace ::com::sun::star::uno;
using ::com::sun::star::frame::XTerminateListener;
using ::com::sun::star::frame::XDesktop;
using ::com::sun::star::ucb::XSimpleFileAccess;
using ::rtl::OUString;
using ::std::vector;
@@ -102,7 +108,8 @@ namespace
public:
OnLogRotateThread(Reference<XMultiServiceFactory> sf);
virtual void SAL_CALL run();
void disposing();
OnLogRotateThread* disposing();
private:
Reference<XMultiServiceFactory> m_ServiceFactory;
::osl::Mutex m_ServiceFactoryMutex;
@@ -135,11 +142,35 @@ namespace
}
}
void OnLogRotateThread::disposing()
OnLogRotateThread* OnLogRotateThread::disposing()
{
::osl::Guard< ::osl::Mutex> service_factory_guard(m_ServiceFactoryMutex);
m_ServiceFactory.clear();
return this;
}
class OnLogRotateThreadWatcher : public ::cppu::WeakImplHelper1<XTerminateListener>
{
public:
OnLogRotateThreadWatcher(Reference<XMultiServiceFactory> sf)
: m_Thread(new OnLogRotateThread(sf))
{
m_Thread->create();
}
virtual ~OnLogRotateThreadWatcher()
{ m_Thread->disposing()->terminate(); };
// XTerminateListener
virtual void SAL_CALL queryTermination(const EventObject&) throw(RuntimeException)
{ };
virtual void SAL_CALL notifyTermination(const EventObject&) throw(RuntimeException)
{ m_Thread->disposing()->terminate(); };
// XEventListener
virtual void SAL_CALL disposing(const EventObject&) throw(RuntimeException)
{ m_Thread->disposing()->terminate(); };
private:
::std::auto_ptr<OnLogRotateThread> m_Thread;
};
}
namespace oooimprovement
@@ -163,9 +194,11 @@ namespace oooimprovement
const Reference<XJobListener>& listener)
throw(RuntimeException)
{
OnLogRotateThread* thread = new OnLogRotateThread(m_ServiceFactory);
thread->create();
Reference<XDesktop> xDesktop(
m_ServiceFactory->createInstance(OUString::createFromAscii("com.sun.star.frame.Desktop")),
UNO_QUERY);
if(xDesktop.is())
xDesktop->addTerminateListener(Reference<XTerminateListener>(new OnLogRotateThreadWatcher(m_ServiceFactory)));
Any result;
listener->jobFinished(Reference<XAsyncJob>(this), result);
}

View File

@@ -384,7 +384,7 @@ void QueryPrintSignatureDetails( const SignatureInformations& SignatureInformati
{
char cShowDetails;
fprintf( stdout, "\nDisplay details (y/n) [y]?" );
fflush(stdin);
fflush( stdout );
fscanf( stdin, "%c", &cShowDetails);
if ( cShowDetails == 'y' )
{
@@ -409,7 +409,7 @@ int QuerySelectNumber( int nMin, int nMax )
do
{
fprintf( stdout, "\nSelect <%d-%d>:", nMin, nMax ) ;
fflush(stdin);
fflush( stdout );
fscanf( stdin, "%d", &sel ) ;
} while( ( sel < nMin ) || ( sel > nMax ) );
@@ -420,7 +420,7 @@ long QueryVerifySignature()
{
char answer;
fprintf( stdout, "\nFound a signature - verify this one (y/n) [y]?" );
fflush(stdin);
fflush( stdout );
fscanf( stdin, "%c", &answer);
return (answer == 'n')?0:1;
}