Changeset 97351 in vbox
- Timestamp:
- Oct 31, 2022 4:58:43 PM (2 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/globals
- Files:
-
- 3 edited
-
QIWithRetranslateUI.h (modified) (5 diffs)
-
UITranslator.cpp (modified) (7 diffs)
-
UITranslator.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/globals/QIWithRetranslateUI.h
r96407 r97351 42 42 /* GUI includes: */ 43 43 #include "UILibraryDefs.h" 44 #include "UITranslator.h" 44 45 45 46 … … 61 62 virtual bool eventFilter(QObject *pObject, QEvent *pEvent) 62 63 { 63 /* Handle LanguageChange events for qApp or this object: */ 64 if (pObject == qApp || pObject == this) 65 { 66 switch (pEvent->type()) 67 { 68 case QEvent::LanguageChange: retranslateUi(); break; 69 default: break; 70 } 71 } 64 /* If translation is NOT currently in progress handle 65 * LanguageChange events for qApp or this object: */ 66 if ( !UITranslator::isTranslationInProgress() 67 && pEvent->type() == QEvent::LanguageChange 68 && (pObject == qApp || pObject == this)) 69 retranslateUi(); 70 72 71 /* Call to base-class: */ 73 72 return Base::eventFilter(pObject, pEvent); … … 106 105 virtual bool eventFilter(QObject *pObject, QEvent *pEvent) 107 106 { 108 /* Handle LanguageChange events for qApp or this object: */ 109 if (pObject == qApp || pObject == this) 110 { 111 switch (pEvent->type()) 112 { 113 case QEvent::LanguageChange: retranslateUi(); break; 114 default: break; 115 } 116 } 107 /* If translation is NOT currently in progress handle 108 * LanguageChange events for qApp or this object: */ 109 if ( !UITranslator::isTranslationInProgress() 110 && pEvent->type() == QEvent::LanguageChange 111 && (pObject == qApp || pObject == this)) 112 retranslateUi(); 113 117 114 /* Call to base-class: */ 118 115 return Base::eventFilter(pObject, pEvent); … … 142 139 virtual bool eventFilter(QObject *pObject, QEvent *pEvent) 143 140 { 144 /* Handle LanguageChange events for qApp or this object: */ 145 if (pObject == qApp || pObject == this) 146 { 147 switch (pEvent->type()) 148 { 149 case QEvent::LanguageChange: retranslateUi(); break; 150 default: break; 151 } 152 } 141 /* If translation is NOT currently in progress handle 142 * LanguageChange events for qApp or this object: */ 143 if ( !UITranslator::isTranslationInProgress() 144 && pEvent->type() == QEvent::LanguageChange 145 && (pObject == qApp || pObject == this)) 146 retranslateUi(); 147 153 148 /* Call to base-class: */ 154 149 return Base::eventFilter(pObject, pEvent); … … 187 182 virtual bool eventFilter(QObject *pObject, QEvent *pEvent) 188 183 { 189 /* Handle LanguageChange events for qApp or this object: */ 190 if (pObject == qApp || pObject == this) 191 { 192 /* Handle LanguageChange events: */ 193 switch (pEvent->type()) 194 { 195 case QEvent::LanguageChange: retranslateUi(); break; 196 default: break; 197 } 198 } 184 /* If translation is NOT currently in progress handle 185 * LanguageChange events for qApp or this object: */ 186 if ( !UITranslator::isTranslationInProgress() 187 && pEvent->type() == QEvent::LanguageChange 188 && (pObject == qApp || pObject == this)) 189 retranslateUi(); 190 199 191 /* Call to base-class: */ 200 192 return Base::eventFilter(pObject, pEvent); -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UITranslator.cpp
r97068 r97351 77 77 /* static */ 78 78 UITranslator *UITranslator::s_pTranslator = 0; 79 bool UITranslator::s_fTranslationInProgress = false; 79 80 QString UITranslator::s_strLoadedLanguageId = UITranslator::vboxBuiltInLanguageName(); 80 81 … … 143 144 } 144 145 146 /* Lock listener: */ 147 s_fTranslationInProgress = true; 148 /* A list of translators to install: */ 149 QList<QTranslator*> translators; 150 145 151 /* Delete the old translator if there is one: */ 146 152 if (s_pTranslator) … … 165 171 /* We install the translator in any case: on failure, this will 166 172 * activate an empty translator that will give us English (built-in): */ 167 qApp->installTranslator(s_pTranslator);173 translators << s_pTranslator; 168 174 } 169 175 else … … 189 195 Assert(pQtSysTr); 190 196 if (pQtSysTr && pQtSysTr->load(strLanguageFileName)) 191 qApp->installTranslator(pQtSysTr);197 translators << pQtSysTr; 192 198 // Note that the Qt translation supplied by Oracle is always loaded 193 199 // afterwards to make sure it will take precedence over the system … … 205 211 Assert(pQtTr); 206 212 if (pQtTr && (fLoadOk = pQtTr->load(strLanguageFileName))) 207 qApp->installTranslator(pQtTr);213 translators << pQtTr; 208 214 /* The below message doesn't fit 100% (because it's an additional 209 215 * language and the main one won't be reset to built-in on failure) … … 220 226 ::darwinRetranslateAppMenu(); 221 227 #endif 228 229 /* Iterate through all the translators: */ 230 for (int i = 0; i < translators.size(); ++i) 231 { 232 /* Unlock listener before the last one translator: */ 233 if (i == translators.size() - 1) 234 { 235 QCoreApplication::sendPostedEvents(0, QEvent::LanguageChange); 236 s_fTranslationInProgress = false; 237 } 238 239 /* Install current one: */ 240 qApp->installTranslator(translators.at(i)); 241 } 242 243 /* Unlock listener in case if it's still locked: */ 244 s_fTranslationInProgress = false; 222 245 } 223 246 … … 762 785 } 763 786 787 /* static */ 788 bool UITranslator::isTranslationInProgress() 789 { 790 return s_fTranslationInProgress; 791 } 792 764 793 UITranslator::UITranslator(QObject *pParent /* = 0 */) 765 794 : QTranslator(pParent) -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UITranslator.h
r97068 r97351 127 127 static QString insertKeyToActionText(const QString &strText, const QString &strKey); 128 128 129 /** Returns whether we are performing translation currently. */ 130 static bool isTranslationInProgress(); 131 129 132 private: 130 133 … … 152 155 static UITranslator *s_pTranslator; 153 156 157 /** Holds whether we are performing translation currently. */ 158 static bool s_fTranslationInProgress; 159 154 160 /** Holds the currently loaded language ID. */ 155 161 static QString s_strLoadedLanguageId;
Note:
See TracChangeset
for help on using the changeset viewer.

