Kaydet (Commit) 46f9949d authored tarafından Rachit Gupta's avatar Rachit Gupta Kaydeden (comit) Jan Holesovsky

Moved the application of persona process to SelectPersonaDialog.

The theme is downloaded now when the user clicks OK on
SelectPersonaDialog instead of SvxPersonalizationTabPage. The task
is done in a separate thread.

Change-Id: I93173cce2ae9030ee8e271bd53b40e713c560731
üst b8d74c4d
...@@ -43,6 +43,12 @@ SelectPersonaDialog::SelectPersonaDialog( Window *pParent ) ...@@ -43,6 +43,12 @@ SelectPersonaDialog::SelectPersonaDialog( Window *pParent )
get( m_pProgressLabel, "progress_label" ); get( m_pProgressLabel, "progress_label" );
get( m_pOkButton, "ok" );
m_pOkButton->SetClickHdl( LINK( this, SelectPersonaDialog, ActionOK ) );
get( m_pCancelButton, "cancel" );
m_pCancelButton->SetClickHdl( LINK( this, SelectPersonaDialog, ActionCancel ) );
get(m_vResultList[0], "result1"); get(m_vResultList[0], "result1");
m_vResultList[0]->SetClickHdl( LINK( this, SelectPersonaDialog, SelectPersona ) ); m_vResultList[0]->SetClickHdl( LINK( this, SelectPersonaDialog, SelectPersona ) );
...@@ -91,6 +97,30 @@ IMPL_LINK( SelectPersonaDialog, SearchPersonas, PushButton*, /*pButton*/ ) ...@@ -91,6 +97,30 @@ IMPL_LINK( SelectPersonaDialog, SearchPersonas, PushButton*, /*pButton*/ )
return 0; return 0;
} }
IMPL_LINK( SelectPersonaDialog, ActionOK, PushButton*, /* pButton */ )
{
OUString aSelectedPersona = GetSelectedPersona();
if( !aSelectedPersona.isEmpty() )
{
m_rSearchThread = new SearchAndParseThread( this, aSelectedPersona );
m_rSearchThread->launch();
}
else
EndDialog( RET_OK );
return 0;
}
IMPL_LINK( SelectPersonaDialog, ActionCancel, PushButton*, /* pButton */ )
{
if( m_rSearchThread.is() )
m_rSearchThread->terminate();
EndDialog( RET_CANCEL );
return 0;
}
IMPL_LINK( SelectPersonaDialog, SelectPersona, PushButton*, pButton ) IMPL_LINK( SelectPersonaDialog, SelectPersona, PushButton*, pButton )
{ {
if( pButton == m_vResultList[0] ) if( pButton == m_vResultList[0] )
...@@ -150,6 +180,16 @@ IMPL_LINK( SelectPersonaDialog, SelectPersona, PushButton*, pButton ) ...@@ -150,6 +180,16 @@ IMPL_LINK( SelectPersonaDialog, SelectPersona, PushButton*, pButton )
return 0; return 0;
} }
void SelectPersonaDialog::SetAppliedPersonaSetting( OUString& rPersonaSetting )
{
m_aAppliedPersona = rPersonaSetting;
}
OUString SelectPersonaDialog::GetAppliedPersonaSetting() const
{
return m_aAppliedPersona;
}
void SelectPersonaDialog::SetProgress( OUString& rProgress ) void SelectPersonaDialog::SetProgress( OUString& rProgress )
{ {
if(rProgress.isEmpty()) if(rProgress.isEmpty())
...@@ -269,10 +309,10 @@ IMPL_LINK( SvxPersonalizationTabPage, SelectPersona, PushButton*, /*pButton*/ ) ...@@ -269,10 +309,10 @@ IMPL_LINK( SvxPersonalizationTabPage, SelectPersona, PushButton*, /*pButton*/ )
while ( aDialog.Execute() == RET_OK ) while ( aDialog.Execute() == RET_OK )
{ {
OUString aURL( aDialog.GetSelectedPersona() ); OUString aPersonaSetting( aDialog.GetAppliedPersonaSetting() );
if ( !aURL.isEmpty() ) if ( !aPersonaSetting.isEmpty() )
{ {
CopyPersonaToGallery( aURL ); m_aPersonaSettings = aPersonaSetting;
break; break;
} }
} }
...@@ -345,12 +385,6 @@ static bool parsePersonaInfo( const OString &rBuffer, OUString *pHeaderURL, OUSt ...@@ -345,12 +385,6 @@ static bool parsePersonaInfo( const OString &rBuffer, OUString *pHeaderURL, OUSt
return true; return true;
} }
void SvxPersonalizationTabPage::CopyPersonaToGallery( const OUString &rURL )
{
m_rApplyThread = new SearchAndParseThread( this, rURL );
m_rApplyThread->launch();
}
void SvxPersonalizationTabPage::setPersonaSettings( const OUString aPersonaSettings ) void SvxPersonalizationTabPage::setPersonaSettings( const OUString aPersonaSettings )
{ {
m_aPersonaSettings = aPersonaSettings; m_aPersonaSettings = aPersonaSettings;
...@@ -361,16 +395,6 @@ SearchAndParseThread::SearchAndParseThread( SelectPersonaDialog* pDialog, ...@@ -361,16 +395,6 @@ SearchAndParseThread::SearchAndParseThread( SelectPersonaDialog* pDialog,
const OUString& rURL ) : const OUString& rURL ) :
Thread( "cuiPersonasSearchThread" ), Thread( "cuiPersonasSearchThread" ),
m_pPersonaDialog( pDialog ), m_pPersonaDialog( pDialog ),
m_pPersonalizationTabPage( NULL ),
m_aURL( rURL )
{
}
SearchAndParseThread::SearchAndParseThread( SvxPersonalizationTabPage* pDialog,
const OUString& rURL ) :
Thread( "cuiPersonasSearchThread" ),
m_pPersonaDialog( NULL ),
m_pPersonalizationTabPage( pDialog ),
m_aURL( rURL ) m_aURL( rURL )
{ {
} }
...@@ -381,7 +405,7 @@ SearchAndParseThread::~SearchAndParseThread() ...@@ -381,7 +405,7 @@ SearchAndParseThread::~SearchAndParseThread()
void SearchAndParseThread::execute() void SearchAndParseThread::execute()
{ {
if(m_pPersonaDialog) if( m_aURL.startsWith( "https://" ) )
{ {
m_pPersonaDialog->ClearSearchResults(); m_pPersonaDialog->ClearSearchResults();
OUString sProgress( "Searching.. Please Wait.." ); OUString sProgress( "Searching.. Please Wait.." );
...@@ -437,12 +461,15 @@ void SearchAndParseThread::execute() ...@@ -437,12 +461,15 @@ void SearchAndParseThread::execute()
else else
{ {
OUString sProgress( "Applying persona.." );
m_pPersonaDialog->SetProgress( sProgress );
uno::Reference< ucb::XSimpleFileAccess3 > xFileAccess( ucb::SimpleFileAccess::create( comphelper::getProcessComponentContext() ), uno::UNO_QUERY ); uno::Reference< ucb::XSimpleFileAccess3 > xFileAccess( ucb::SimpleFileAccess::create( comphelper::getProcessComponentContext() ), uno::UNO_QUERY );
if ( !xFileAccess.is() ) if ( !xFileAccess.is() )
return; return;
OUString aName, aHeaderURL, aFooterURL, aTextColor, aAccentColor; OUString aName, aHeaderURL, aFooterURL, aTextColor, aAccentColor;
OUString m_aPersonaSettings; OUString aPersonaSetting;
// get the required fields from m_aURL // get the required fields from m_aURL
sal_Int32 nOldIndex = 0; sal_Int32 nOldIndex = 0;
...@@ -486,8 +513,11 @@ void SearchAndParseThread::execute() ...@@ -486,8 +513,11 @@ void SearchAndParseThread::execute()
return; return;
} }
m_aPersonaSettings = aHeaderFile + ";" + aFooterFile + ";" + aTextColor + ";" + aAccentColor; SolarMutexGuard aGuard;
m_pPersonalizationTabPage->setPersonaSettings( m_aPersonaSettings );
aPersonaSetting = aHeaderFile + ";" + aFooterFile + ";" + aTextColor + ";" + aAccentColor;
m_pPersonaDialog->SetAppliedPersonaSetting( aPersonaSetting );
m_pPersonaDialog->EndDialog( RET_OK );
} }
} }
......
...@@ -52,9 +52,6 @@ private: ...@@ -52,9 +52,6 @@ private:
/// When 'own' is chosen, but the Persona is not chosen yet. /// When 'own' is chosen, but the Persona is not chosen yet.
DECL_LINK( ForceSelect, RadioButton* ); DECL_LINK( ForceSelect, RadioButton* );
/// Download the bitmaps + color settings, and copy them to user's profile.
void CopyPersonaToGallery( const OUString &rURL );
}; };
/** Dialog that will allow the user to choose a Persona to use. /** Dialog that will allow the user to choose a Persona to use.
...@@ -69,9 +66,12 @@ private: ...@@ -69,9 +66,12 @@ private:
PushButton *m_pSearchButton; ///< The search button PushButton *m_pSearchButton; ///< The search button
FixedText *m_pProgressLabel; ///< The label for showing progress of search FixedText *m_pProgressLabel; ///< The label for showing progress of search
PushButton *m_vResultList[9]; ///< List of buttons to show search results PushButton *m_vResultList[9]; ///< List of buttons to show search results
PushButton *m_pOkButton; ///< The OK button
PushButton *m_pCancelButton; ///< The Cancel button
std::vector<OUString> m_vPersonaSettings; std::vector<OUString> m_vPersonaSettings;
OUString m_aSelectedPersona; OUString m_aSelectedPersona;
OUString m_aAppliedPersona;
public: public:
SelectPersonaDialog( Window *pParent ); SelectPersonaDialog( Window *pParent );
...@@ -82,11 +82,15 @@ public: ...@@ -82,11 +82,15 @@ public:
void SetImages( std::vector<Image>&); void SetImages( std::vector<Image>&);
void AddPersonaSetting( OUString& ); void AddPersonaSetting( OUString& );
void ClearSearchResults(); void ClearSearchResults();
void SetAppliedPersonaSetting( OUString& );
OUString GetAppliedPersonaSetting() const;
private: private:
/// Handle the Search button /// Handle the Search button
DECL_LINK( SearchPersonas, PushButton* ); DECL_LINK( SearchPersonas, PushButton* );
DECL_LINK( SelectPersona, PushButton* ); DECL_LINK( SelectPersona, PushButton* );
DECL_LINK( ActionOK, PushButton* );
DECL_LINK( ActionCancel, PushButton* );
}; };
class SearchAndParseThread: public salhelper::Thread class SearchAndParseThread: public salhelper::Thread
...@@ -94,7 +98,6 @@ class SearchAndParseThread: public salhelper::Thread ...@@ -94,7 +98,6 @@ class SearchAndParseThread: public salhelper::Thread
private: private:
SelectPersonaDialog *m_pPersonaDialog; SelectPersonaDialog *m_pPersonaDialog;
SvxPersonalizationTabPage *m_pPersonalizationTabPage;
OUString m_aURL; OUString m_aURL;
virtual ~SearchAndParseThread(); virtual ~SearchAndParseThread();
...@@ -105,8 +108,6 @@ public: ...@@ -105,8 +108,6 @@ public:
SearchAndParseThread( SelectPersonaDialog* pDialog, SearchAndParseThread( SelectPersonaDialog* pDialog,
const OUString& rURL ); const OUString& rURL );
SearchAndParseThread( SvxPersonalizationTabPage *pTabPage,
const OUString& rURL );
}; };
#endif // INCLUDED_CUI_SOURCE_OPTIONS_PERSONALIZATION_HXX #endif // INCLUDED_CUI_SOURCE_OPTIONS_PERSONALIZATION_HXX
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment