diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index c92dabfd1..85a4c4e48 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -24,6 +24,7 @@ set( libSources utils/CalamaresUtils.cpp utils/CalamaresUtilsSystem.cpp utils/Logger.cpp + utils/Retranslator.cpp ) include_directories( diff --git a/src/libcalamares/utils/Retranslator.cpp b/src/libcalamares/utils/Retranslator.cpp new file mode 100644 index 000000000..3b26d3db6 --- /dev/null +++ b/src/libcalamares/utils/Retranslator.cpp @@ -0,0 +1,54 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "Retranslator.h" + +#include + + +namespace CalamaresUtils { + + +Retranslator::Retranslator( QObject* parent, + std::function< void ( void ) > retranslateFunc ) + : QObject( parent ) + , m_retranslateFunc( retranslateFunc ) +{ + m_retranslateFunc(); + + parent->installEventFilter( this ); +} + + +bool +Retranslator::eventFilter( QObject* obj, QEvent* e ) +{ + if ( obj == parent() ) + { + if ( e->type() == QEvent::LanguageChange ) + { + m_retranslateFunc(); + return true; + } + } + // pass the event on to the base + return QObject::eventFilter( obj, e ); +} + + +} // namespace CalamaresUtils diff --git a/src/libcalamares/utils/Retranslator.h b/src/libcalamares/utils/Retranslator.h new file mode 100644 index 000000000..eab174a53 --- /dev/null +++ b/src/libcalamares/utils/Retranslator.h @@ -0,0 +1,47 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef CALAMARESUTILS_RETRANSLATOR_H +#define CALAMARESUTILS_RETRANSLATOR_H + +#include + +#include + +class QEvent; + +namespace CalamaresUtils +{ + +class Retranslator : public QObject +{ + Q_OBJECT +public: + explicit Retranslator( QObject* parent, + std::function< void( void ) > retranslateFunc ); + +protected: + bool eventFilter( QObject* obj, QEvent* e ) override; + +private: + std::function< void( void ) > m_retranslateFunc; +}; + +} // namespace CalamaresUtils + +#endif // CALAMARESUTILS_RETRANSLATOR_H