aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@petroules.com>2013-01-07 15:21:08 -0500
committerMorten Johan Sørvig <morten.sorvig@digia.com>2013-04-08 12:27:23 +0200
commit166731f0f122d7f40a8f3ba4f51cac00bde23359 (patch)
tree694acc2857d382b718c6bde8850542c8c5df0b3e /src
parentf347c5fae8d53821b415b21e3246e84c50693d24 (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.h22
-rw-r--r--src/macextras/qtmacfunctions.mm35
-rw-r--r--src/macextras/qtmactoolbardelegate.mm33
-rw-r--r--src/macextras/qtmacunifiedtoolbar.mm10
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