Allow multiple CALAMARES_RETRANSLATE blocks in the same widget.
This commit is contained in:
parent
945b59748a
commit
e5c3888be2
@ -24,13 +24,29 @@
|
||||
namespace CalamaresUtils {
|
||||
|
||||
|
||||
Retranslator::Retranslator( QObject* parent,
|
||||
std::function< void ( void ) > retranslateFunc )
|
||||
: QObject( parent )
|
||||
, m_retranslateFunc( retranslateFunc )
|
||||
void
|
||||
Retranslator::attachRetranslator( QObject* parent,
|
||||
std::function< void ( void ) > retranslateFunc )
|
||||
{
|
||||
m_retranslateFunc();
|
||||
Retranslator* r = nullptr;
|
||||
foreach ( QObject* child, parent->children() )
|
||||
{
|
||||
r = qobject_cast< Retranslator* >( child );
|
||||
if ( r )
|
||||
break;
|
||||
}
|
||||
|
||||
if ( !r )
|
||||
r = new Retranslator( parent );
|
||||
|
||||
r->m_retranslateFuncList.append( retranslateFunc );
|
||||
retranslateFunc();
|
||||
}
|
||||
|
||||
|
||||
Retranslator::Retranslator( QObject* parent )
|
||||
: QObject( parent )
|
||||
{
|
||||
parent->installEventFilter( this );
|
||||
}
|
||||
|
||||
@ -42,7 +58,8 @@ Retranslator::eventFilter( QObject* obj, QEvent* e )
|
||||
{
|
||||
if ( e->type() == QEvent::LanguageChange )
|
||||
{
|
||||
m_retranslateFunc();
|
||||
foreach ( std::function< void() > func, m_retranslateFuncList )
|
||||
func();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@
|
||||
#ifndef CALAMARESUTILS_RETRANSLATOR_H
|
||||
#define CALAMARESUTILS_RETRANSLATOR_H
|
||||
|
||||
#include <QList>
|
||||
#include <QObject>
|
||||
|
||||
#include <functional>
|
||||
@ -32,20 +33,24 @@ class Retranslator : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit Retranslator( QObject* parent,
|
||||
std::function< void( void ) > retranslateFunc );
|
||||
static void attachRetranslator( QObject* parent,
|
||||
std::function< void( void ) > retranslateFunc );
|
||||
|
||||
void addRetranslateFunc( std::function< void( void ) > retranslateFunc );
|
||||
|
||||
protected:
|
||||
bool eventFilter( QObject* obj, QEvent* e ) override;
|
||||
|
||||
private:
|
||||
std::function< void( void ) > m_retranslateFunc;
|
||||
explicit Retranslator( QObject* parent );
|
||||
|
||||
QList< std::function< void( void ) > > m_retranslateFuncList;
|
||||
};
|
||||
|
||||
|
||||
} // namespace CalamaresUtils
|
||||
|
||||
#define RETRANSLATE(a) \
|
||||
new CalamaresUtils::Retranslator( this, [this] { a } );
|
||||
#define CALAMARES_RETRANSLATE(a) \
|
||||
CalamaresUtils::Retranslator::attachRetranslator( this, [this] { a } );
|
||||
|
||||
#endif // CALAMARESUTILS_RETRANSLATOR_H
|
||||
|
@ -121,7 +121,7 @@ LocalePage::LocalePage( QWidget* parent )
|
||||
m_blockTzWidgetSet = false;
|
||||
});
|
||||
|
||||
RETRANSLATE(
|
||||
CALAMARES_RETRANSLATE(
|
||||
m_cityLabel->setText( tr( "Region:" ) );
|
||||
m_timezoneLabel->setText( tr( "Zone:" ) );
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user