src/gui/kernel/qcocoamenuloader_mac.mm
changeset 30 5dc02b23752f
parent 18 2f34d5167611
child 37 758a864f9613
--- a/src/gui/kernel/qcocoamenuloader_mac.mm	Wed Jun 23 19:07:03 2010 +0300
+++ b/src/gui/kernel/qcocoamenuloader_mac.mm	Tue Jul 06 15:10:48 2010 +0300
@@ -46,17 +46,29 @@
 #include <private/qcocoamenuloader_mac_p.h>
 #include <private/qapplication_p.h>
 #include <private/qt_mac_p.h>
+#include <private/qmenubar_p.h>
 #include <qmenubar.h>
+#include <private/qt_cocoa_helpers_mac_p.h>
 
 QT_FORWARD_DECLARE_CLASS(QCFString)
 QT_FORWARD_DECLARE_CLASS(QString)
 
+#ifndef QT_NO_TRANSLATION
+    QT_BEGIN_NAMESPACE
+    extern QString qt_mac_applicationmenu_string(int type);
+    QT_END_NAMESPACE
+#endif
+
 QT_USE_NAMESPACE
 
 @implementation QT_MANGLE_NAMESPACE(QCocoaMenuLoader)
 
 - (void)awakeFromNib
 {
+    servicesItem = [[appMenu itemWithTitle:@"Services"] retain];
+    hideAllOthersItem = [[appMenu itemWithTitle:@"Hide Others"] retain];
+    showAllItem = [[appMenu itemWithTitle:@"Show All"] retain];
+
     // Get the names in the nib to match the app name set by Qt.
     NSString *appName = reinterpret_cast<const NSString*>(QCFString::toCFStringRef(qAppName()));
     [quitItem setTitle:[[quitItem title] stringByReplacingOccurrencesOfString:@"NewApplication"
@@ -118,6 +130,10 @@
 
 - (void)dealloc
 {
+    [servicesItem release];
+    [hideAllOthersItem release];
+    [showAllItem release];
+
     [lastAppSpecificItem release];
     [theMenu release];
     [appMenu release];
@@ -208,6 +224,24 @@
     [NSApp hide:sender];
 }
 
+- (void)qtUpdateMenubar
+{
+    QMenuBarPrivate::macUpdateMenuBarImmediatly();
+}
+
+- (void)qtTranslateApplicationMenu
+{
+#ifndef QT_NO_TRANSLATION
+    [servicesItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(0))];
+    [hideItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(1).arg(qAppName()))];
+    [hideAllOthersItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(2))];
+    [showAllItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(3))];
+    [preferencesItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(4))];
+    [quitItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(5).arg(qAppName()))];
+    [aboutItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(6).arg(qAppName()))];
+#endif
+}
+
 - (IBAction)qtDispatcherToQAction:(id)sender
 {
     QScopedLoopLevelCounter loopLevelCounter(QApplicationPrivate::instance()->threadData);