diff options
author | Jake Petroules <jake.petroules@petroules.com> | 2013-01-07 15:21:08 -0500 |
---|---|---|
committer | Morten Johan Sørvig <morten.sorvig@digia.com> | 2013-04-08 12:27:23 +0200 |
commit | 166731f0f122d7f40a8f3ba4f51cac00bde23359 (patch) | |
tree | 694acc2857d382b718c6bde8850542c8c5df0b3e /src | |
parent | f347c5fae8d53821b415b21e3246e84c50693d24 (diff) |
Move conversion functions out into qtmacfunctions.
Also, toMacNSImage won't crash on Leopard, unlike the code it replaced.
Change-Id: Id8409805d5c6fa590bc1625242f3f95241cfb463
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/macextras/qtmacfunctions.h | 22 | ||||
-rw-r--r-- | src/macextras/qtmacfunctions.mm | 35 | ||||
-rw-r--r-- | src/macextras/qtmactoolbardelegate.mm | 33 | ||||
-rw-r--r-- | src/macextras/qtmacunifiedtoolbar.mm | 10 |
4 files changed, 62 insertions, 38 deletions
diff --git a/src/macextras/qtmacfunctions.h b/src/macextras/qtmacfunctions.h index 8914ff3..c6b2702 100644 --- a/src/macextras/qtmacfunctions.h +++ b/src/macextras/qtmacfunctions.h @@ -48,8 +48,10 @@ #include "qmacextrasglobal.h" -#include <ApplicationServices/ApplicationServices.h> -#include <QtGui/QPixmap> +typedef struct CGImage *CGImageRef; + +@class NSImage; +@class NSString; #ifdef __OBJC__ @class NSMenu; @@ -57,15 +59,25 @@ typedef struct objc_object NSMenu; #endif +QT_BEGIN_NAMESPACE + class QMenu; +class QPixmap; +class QString; Q_MACEXTRAS_EXPORT void qt_mac_set_dock_menu(QMenu *menu); -Q_MACEXTRAS_EXPORT NSMenu *toNSMenu(QMenu *menu); +namespace Qt +{ +Q_MACEXTRAS_EXPORT NSMenu* toNSMenu(QMenu *menu); +Q_MACEXTRAS_EXPORT NSString* toNSString(const QString &string); +Q_MACEXTRAS_EXPORT QString fromNSString(const NSString *string); + Q_MACEXTRAS_EXPORT CGImageRef toMacCGImageRef(const QPixmap &pixmap); +Q_MACEXTRAS_EXPORT NSImage* toMacNSImage(const QPixmap &pixmap); Q_MACEXTRAS_EXPORT QPixmap fromMacCGImageRef(CGImageRef image); +} +QT_END_NAMESPACE #endif //QTMACFUNCTIONS - - diff --git a/src/macextras/qtmacfunctions.mm b/src/macextras/qtmacfunctions.mm index 7db6789..4c348ec 100644 --- a/src/macextras/qtmacfunctions.mm +++ b/src/macextras/qtmacfunctions.mm @@ -39,9 +39,10 @@ ** ****************************************************************************/ +#include "qtmacfunctions.h" #import <Cocoa/Cocoa.h> -#include "qtmacfunctions.h" +QT_BEGIN_NAMESPACE #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) #include <QtCore/qDebug.h> @@ -90,6 +91,26 @@ NSMenu *toNSMenu(QMenu *menu) #endif +namespace Qt +{ + +NSString *toNSString(const QString &string) +{ + return [NSString stringWithCharacters:reinterpret_cast<const UniChar*>(string.unicode()) length:string.length()]; +} + +QString fromNSString(const NSString *string) +{ + if (!string) + return QString(); + + QString qstring; + qstring.resize([string length]); + [string getCharacters:reinterpret_cast<unichar*>(qstring.data()) range:NSMakeRange(0, [string length])]; + + return qstring; +} + /*! Creates a \c CGImageRef equivalent to the QPixmap. Returns the \c CGImageRef handle. @@ -115,6 +136,15 @@ CGImageRef toMacCGImageRef(const QPixmap &pixmap) #endif } +NSImage* toMacNSImage(const QPixmap &pixmap) +{ + NSBitmapImageRep *bitmapRep = [[NSBitmapImageRep alloc] initWithCGImage:toMacCGImageRef(pixmap)]; + NSImage *image = [[NSImage alloc] init]; + [image addRepresentation:bitmapRep]; + [bitmapRep release]; + return image; +} + /*! Returns a QPixmap that is equivalent to the given \a image. @@ -137,3 +167,6 @@ QPixmap fromMacCGImageRef(CGImageRef image) #endif } +} // namespace Qt + +QT_END_NAMESPACE diff --git a/src/macextras/qtmactoolbardelegate.mm b/src/macextras/qtmactoolbardelegate.mm index ec2f063..78ff9c2 100644 --- a/src/macextras/qtmactoolbardelegate.mm +++ b/src/macextras/qtmactoolbardelegate.mm @@ -45,30 +45,11 @@ #include <QImage> #include <QPixmap> -NSString *toNSString(const QString &string) -{ - return [NSString - stringWithCharacters : reinterpret_cast<const UniChar *>(string.unicode()) - length : string.length()]; -} - -QString toQString(NSString *string) -{ - if (!string) - return QString(); - - QString qstring; - qstring.resize([string length]); - [string getCharacters: reinterpret_cast<unichar*>(qstring.data()) range : NSMakeRange(0, [string length])]; - - return qstring; -} - NSArray *toNSArray(const QList<QString> &stringList) { NSMutableArray *array = [[NSMutableArray alloc] init]; foreach (const QString &string, stringList) { - [array addObject : toNSString(string)]; + [array addObject : Qt::toNSString(string)]; } return array; } @@ -82,7 +63,7 @@ NSMutableArray *itemIdentifiers(const QList<QtMacToolButton *> &items, bool cull if (cullUnselectable && item->selectable() == false) continue; if (item->standardItem() == QtMacToolButton::NoItem) { - [array addObject : toNSString(QString::number(qulonglong(item)))]; + [array addObject : Qt::toNSString(QString::number(qulonglong(item)))]; } else { [array addObject : toNSStandardItem(item->standardItem())]; } @@ -131,7 +112,7 @@ QString qt_strippedText(QString s) - (IBAction)itemClicked:(id)sender { NSToolbarItem *item = reinterpret_cast<NSToolbarItem *>(sender); - QString identifier = toQString([item itemIdentifier]); + QString identifier = Qt::fromNSString([item itemIdentifier]); QtMacToolButton *toolButton = reinterpret_cast<QtMacToolButton *>(identifier.toULongLong()); if (toolButton->m_action) { toolButton->m_action->trigger(); @@ -143,17 +124,17 @@ QString qt_strippedText(QString s) { Q_UNUSED(toolbar); Q_UNUSED(willBeInserted); - const QString identifier = toQString(itemIdentifier); + const QString identifier = Qt::fromNSString(itemIdentifier); QtMacToolButton *toolButton = reinterpret_cast<QtMacToolButton *>(identifier.toULongLong()); // string -> unisgned long long -> pointer NSToolbarItem *toolbarItem= [[[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier] autorelease]; - [toolbarItem setLabel: toNSString(qt_strippedText(toolButton->m_action->iconText()))]; + [toolbarItem setLabel: Qt::toNSString(qt_strippedText(toolButton->m_action->iconText()))]; [toolbarItem setPaletteLabel:[toolbarItem label]]; - [toolbarItem setToolTip: toNSString(toolButton->m_action->toolTip())]; + [toolbarItem setToolTip: Qt::toNSString(toolButton->m_action->toolTip())]; QPixmap icon = toolButton->m_action->icon().pixmap(64, 64); if (icon.isNull() == false) { - [toolbarItem setImage : [[NSImage alloc] initWithCGImage:toMacCGImageRef(icon) size:NSZeroSize]]; + [toolbarItem setImage : Qt::toMacNSImage(icon)]; } [toolbarItem setTarget : self]; diff --git a/src/macextras/qtmacunifiedtoolbar.mm b/src/macextras/qtmacunifiedtoolbar.mm index 8f4056f..3763e0e 100644 --- a/src/macextras/qtmacunifiedtoolbar.mm +++ b/src/macextras/qtmacunifiedtoolbar.mm @@ -39,6 +39,7 @@ ** ****************************************************************************/ +#include "qtmacfunctions.h" #include "qtmacunifiedtoolbar.h" #include "qtmactoolbardelegate.h" #include "qtnstoolbar.h" @@ -64,9 +65,6 @@ #define kNSToolbarIconSizeRegular 32 #define kNSToolbarIconSizeDefault kNSToolbarIconSizeRegular -NSString* toNSString(const QString &str); -QString toQString(NSString *string); - NSString *toNSStandardItem(QtMacToolButton::StandardItem standardItem) { if (standardItem == QtMacToolButton::ShowColors) @@ -134,7 +132,7 @@ public: QtMacUnifiedToolBarPrivate(QtMacUnifiedToolBar *parent, const QString &identifier = QString()) { qtToolbar = parent; - toolbar = [[QtNSToolbar alloc] initWithIdentifier:toNSString(identifier.isEmpty() ? QUuid::createUuid().toString() : identifier)]; + toolbar = [[QtNSToolbar alloc] initWithIdentifier:Qt::toNSString(identifier.isEmpty() ? QUuid::createUuid().toString() : identifier)]; [toolbar setAutosavesConfiguration:NO]; delegate = [[QtMacToolbarDelegate alloc] init]; @@ -281,7 +279,7 @@ QtMacUnifiedToolBar *QtMacUnifiedToolBar::fromQToolBar(const QToolBar *toolBar, QString QtMacUnifiedToolBar::identifier() const { - return toQString([d->toolbar identifier]); + return Qt::fromNSString([d->toolbar identifier]); } bool QtMacUnifiedToolBar::isVisible() const @@ -489,7 +487,7 @@ QAction *QtMacUnifiedToolBar::setSelectedItem(QAction *action) { if (toolButton->m_action && toolButton->m_action->isChecked()) { - [d->toolbar setSelectedItemIdentifier:toNSString(QString::number(qulonglong(toolButton)))]; + [d->toolbar setSelectedItemIdentifier:Qt::toNSString(QString::number(qulonglong(toolButton)))]; break; } else |