mirror of
https://github.com/parchlinux/calamares.git
synced 2025-06-30 02:45:37 -04:00
Allow multiple CALAMARES_RETRANSLATE blocks in the same widget.
This commit is contained in:
parent
945b59748a
commit
e5c3888be2
3 changed files with 34 additions and 12 deletions
|
@ -24,13 +24,29 @@
|
|||
namespace CalamaresUtils {
|
||||
|
||||
|
||||
Retranslator::Retranslator( QObject* parent,
|
||||
void
|
||||
Retranslator::attachRetranslator( QObject* parent,
|
||||
std::function< void ( void ) > retranslateFunc )
|
||||
: QObject( parent )
|
||||
, m_retranslateFunc( 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,
|
||||
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…
Add table
Add a link
Reference in a new issue