1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-19 20:34:22 +02:00

Tomahawk::setupToolBarMac() provides a native NSToolBar on OSX.

This commit is contained in:
Christian Muehlhaeuser
2015-10-28 05:41:54 +01:00
parent a64d038dba
commit c3fae06012
2 changed files with 84 additions and 0 deletions

View File

@@ -24,6 +24,7 @@
class QString;
class QObject;
class TomahawkWindow;
namespace Tomahawk {
@@ -49,6 +50,8 @@ void checkForUpdates();
void toggleFullscreen();
void enableFullscreen( QObject* notifier );
void setupToolBarMac( TomahawkWindow* parent );
};
#endif

View File

@@ -23,6 +23,8 @@
#include "config.h"
#include "TomahawkWindow.h"
#include "audio/AudioEngine.h"
#include "ViewManager.h"
#include "utils/ImageRegistry.h"
#include "utils/Logger.h"
#import <Cocoa/Cocoa.h>
@@ -34,6 +36,7 @@
#include <QDebug>
#include <QApplication>
#include <QObject>
#include <QMacToolBar>
#include <QMetaObject>
@interface MacApplication :NSApplication {
@@ -311,3 +314,81 @@ void Tomahawk::enableFullscreen( QObject* receiver )
}
}
}
@interface MacSearchField : NSSearchField
{
@public
TomahawkWindow* parent;
NSString* itemIdentifier;
}
@end
@implementation MacSearchField
- (void)dealloc
{
[super dealloc];
}
- (NSString *)itemIdentifier
{
return self->itemIdentifier;
}
- (void)textDidChange:(NSNotification *)obj
{
/* NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSString* nsText = [self stringValue];
QString result = QString::fromNSString( nsText );
[pool release];
[super textDidChange: obj];*/
}
- (void)textDidEndEditing:(NSNotification *)obj
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSString* nsText = [self stringValue];
QString result = QString::fromNSString( nsText );
emit parent->searchEdited( result );
[self setStringValue:@""];
[pool release];
[super textDidEndEditing: obj];
}
@end
void
Tomahawk::setupToolBarMac( TomahawkWindow* parent )
{
QMacToolBar* toolbar = new QMacToolBar( parent );
[toolbar->nativeToolbar() setDisplayMode: NSToolbarDisplayModeIconOnly];
[toolbar->nativeToolbar() setSizeMode: NSToolbarSizeModeSmall];
QMacToolBarItem* backItem = toolbar->addItem( ImageRegistry::instance()->pixmap( RESPATH "images/back.svg", QSize( 32, 32 ) ), QString( "Back" ) );
QMacToolBarItem* forwardItem = toolbar->addItem( ImageRegistry::instance()->pixmap( RESPATH "images/forward.svg", QSize( 32, 32 ) ), QString( "Forward" ) );
QObject::connect( backItem, SIGNAL( activated() ), ViewManager::instance(), SLOT( historyBack() ) );
QObject::connect( forwardItem, SIGNAL( activated() ), ViewManager::instance(), SLOT( historyForward() ) );
QMacToolBarItem* spacerItem = toolbar->addItem( QIcon(), QString() );
spacerItem->setStandardItem( QMacToolBarItem::FlexibleSpace );
QMacToolBarItem* searchItem = toolbar->addItem( QIcon(), QString() );
MacSearchField* searchField = [[MacSearchField alloc] init];
searchField->itemIdentifier = [searchItem->nativeToolBarItem() itemIdentifier];
searchField->parent = parent;
[searchItem->nativeToolBarItem() setView: searchField];
QMacToolBarItem* spacerRightItem = toolbar->addItem( QIcon(), QString() );
spacerRightItem->setStandardItem( QMacToolBarItem::FlexibleSpace );
parent->window()->winId(); // create window->windowhandle()
toolbar->attachToWindow( parent->window()->windowHandle() );
NSView *nsview = (NSView *)parent->window()->winId();
NSWindow *nswindow = [nsview window];
if ([nswindow respondsToSelector:@selector(setTitleVisibility:)])
nswindow.titleVisibility = NSWindowTitleHidden;
}