Mercurial > hg > sonic-visualiser
changeset 367:726e1c1382f3 macness
Beginnings of AppleScript querying of iTunes
author | Dan Stowell <dan.stowell@eecs.qmul.ac.uk> |
---|---|
date | Tue, 12 Oct 2010 13:04:50 +0100 |
parents | d0c5831d6528 |
children | d0c6a13ae6d2 |
files | main/main.cpp osx/svitunes.h osx/svitunes.mm sonic-visualiser.pro |
diffstat | 4 files changed, 97 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/main/main.cpp Mon Oct 11 16:55:24 2010 +0100 +++ b/main/main.cpp Tue Oct 12 13:04:50 2010 +0100 @@ -39,6 +39,7 @@ #include <QFileOpenEvent> #include <QMenu> #ifdef Q_WS_MAC + #include "osx/svitunes.h" void qt_mac_set_dock_menu(QMenu *menu); // must declare it ourselves, weirdly enough #endif @@ -219,7 +220,11 @@ void setupDockMenu() { std::cerr << "SV adding mac dock menu" << std::endl; QMenu *dockMenu = new QMenu(); - dockMenu->addAction("a SV DOCK action"); + QString theText = iTunesNowPlayingPath(); + if (theText == ""){ + theText = "[[No current track in iTunes]]"; + } + dockMenu->addAction(theText); qt_mac_set_dock_menu(dockMenu); } #endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/osx/svitunes.h Tue Oct 12 13:04:50 2010 +0100 @@ -0,0 +1,23 @@ +/* + iTunes connection for + Sonic Visualiser + An audio file viewer and annotation editor. + Centre for Digital Music, Queen Mary, University of London. + This file copyright 2010 Dan Stowell and QMUL. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. See the file + COPYING included with this distribution for more information. +*/ + +#include <QString> +#include <QStringList> + +//LATER: bool iTunesRunning(); + +QString iTunesNowPlayingPath(); + +//LATER: QStringList iTunesSelectedPaths(); +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/osx/svitunes.mm Tue Oct 12 13:04:50 2010 +0100 @@ -0,0 +1,62 @@ +/* + iTunes connection for + Sonic Visualiser + An audio file viewer and annotation editor. + Centre for Digital Music, Queen Mary, University of London. + This file copyright 2010 Dan Stowell and QMUL. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. See the file + COPYING included with this distribution for more information. +*/ + +#include "svitunes.h" + +#include <Foundation/NSAppleScript.h> + +#import <Foundation/Foundation.h> + +QString qt_mac_NSStringToQString(const NSString *nsstr) +{ + NSRange range; + range.location = 0; + range.length = [nsstr length]; + + unichar *chars = new unichar[range.length + 1]; + chars[range.length] = 0; + [nsstr getCharacters:chars range:range]; + QString result = QString::fromUtf16(chars, range.length); + delete chars; + return result; +} + +QString iTunesNowPlayingPath(){ + NSDictionary *errorDict; + NSAppleScript *scriptObject = [[NSAppleScript alloc] initWithSource:@" \ +tell application \"System Events\" to set iTunesIsRunning to (name of processes) contains \"iTunes\" \n\ +if iTunesIsRunning is false then return \"\" \n\ +return \"twelve-bar blues track\"" + ]; + + NSLog([scriptObject source]); + + [scriptObject compileAndReturnError: &errorDict]; + + if(![scriptObject isCompiled]){ + NSLog(@"SV ERROR: applescript object not compiled"); + NSLog([errorDict description]); + } + + NSAppleEventDescriptor *eventDesc = [scriptObject executeAndReturnError: &errorDict]; + NSString *nsResultString = [eventDesc stringValue]; + + NSLog(@"iTunesNowPlayingPath: "); + NSLog(nsResultString); + + QString resultString = qt_mac_NSStringToQString(nsResultString); + + [scriptObject release]; + return resultString; +}
--- a/sonic-visualiser.pro Mon Oct 11 16:55:24 2010 +0100 +++ b/sonic-visualiser.pro Tue Oct 12 13:04:50 2010 +0100 @@ -40,6 +40,10 @@ main/PreferencesDialog.cpp \ main/Surveyer.cpp -# for mac integration -QMAKE_INFO_PLIST = osx/Info.plist +mac { + QMAKE_INFO_PLIST = osx/Info.plist + + OBJECTIVE_SOURCES += osx/svitunes.mm + LIBS += -framework Foundation +}