skin transition code moved to support

This commit is contained in:
Uwe Rathmann 2023-05-16 11:12:11 +02:00
parent 1f899ebdbf
commit 1c78044984
3 changed files with 18 additions and 22 deletions

View File

@ -159,28 +159,11 @@ namespace
void changeSkin( int index ) void changeSkin( int index )
{ {
const auto names = qskSkinManager->skinNames(); const auto names = qskSkinManager->skinNames();
if ( index < 0 || index >= names.size() )
return;
if ( index == names.indexOf( qskSetup->skinName() ) ) if ( ( index >= 0 ) && ( index < names.size() )
return; && ( index != names.indexOf( qskSetup->skinName() ) ) )
auto oldSkin = qskSetup->skin();
if ( oldSkin->parent() == qskSetup )
oldSkin->setParent( nullptr ); // otherwise setSkin deletes it
if ( auto newSkin = qskSetup->setSkin( names[ index ] ) )
{ {
QskSkinTransition transition; Skinny::setSkin( index, 500 );
transition.setSourceSkin( oldSkin );
transition.setTargetSkin( newSkin );
transition.setAnimation( 500 );
transition.process();
if ( oldSkin->parent() == nullptr )
delete oldSkin;
} }
} }
}; };

View File

@ -135,13 +135,25 @@ static bool pluginPath = initPluginPath();
Q_COREAPP_STARTUP_FUNCTION( initFonts ) Q_COREAPP_STARTUP_FUNCTION( initFonts )
void Skinny::changeSkin( QskAnimationHint hint ) void Skinny::changeSkin( QskAnimationHint hint )
{
const auto names = qskSkinManager->skinNames();
if ( names.size() > 1 )
{
auto index = names.indexOf( qskSetup->skinName() );
index = ( index + 1 ) % names.size();
setSkin( index, hint );
}
}
void Skinny::setSkin( int index, QskAnimationHint hint )
{ {
const auto names = qskSkinManager->skinNames(); const auto names = qskSkinManager->skinNames();
if ( names.size() <= 1 ) if ( names.size() <= 1 )
return; return;
int index = names.indexOf( qskSetup->skinName() ); if ( index == names.indexOf( qskSetup->skinName() ) )
index = ( index + 1 ) % names.size(); return;
auto oldSkin = qskSetup->skin(); auto oldSkin = qskSetup->skin();
if ( oldSkin->parent() == qskSetup ) if ( oldSkin->parent() == qskSetup )

View File

@ -11,6 +11,7 @@
namespace Skinny namespace Skinny
{ {
SKINNY_EXPORT void changeSkin( QskAnimationHint hint = 500 ); SKINNY_EXPORT void changeSkin( QskAnimationHint hint = 500 );
SKINNY_EXPORT void setSkin( int index, QskAnimationHint hint = 500 );
SKINNY_EXPORT void changeFonts( int increment ); SKINNY_EXPORT void changeFonts( int increment );
SKINNY_EXPORT void init(); SKINNY_EXPORT void init();
} }