From 3711292832129bcfcb24949c59c8f2dcae0aea63 Mon Sep 17 00:00:00 2001 From: Joseph Spiros Date: Tue, 13 Jan 2009 05:03:36 -0500 Subject: [PATCH] Bumped to version 1.7.2. First freeware release. Removed all references to eSellerate's libValidate, and related registration and trial resources. Thus, MenuTunes is now freeware. As well, I have removed old files that were not referenced by the projects, which consisted primarily of old and deprecated versions of current project files, as well as unused resources. --- AquaPaused.tif | Bin 15600 -> 0 bytes AquaPlaying.tiff | Bin 15608 -> 0 bytes .../Registration.nib/classes.nib | 20 - .../English.lproj/Registration.nib/info.nib | 21 - .../Registration.nib/keyedobjects.nib | Bin 6169 -> 0 bytes .../StatusWindow.nib/classes.nib | 13 - .../English.lproj/StatusWindow.nib/info.nib | 14 - .../StatusWindow.nib/objects.nib | Bin 962 -> 0 bytes Deprecated/ITMTRemote.h | 364 ------ Deprecated/ITMTRemote.m | 257 ---- Deprecated/RegController.h | 28 - Deprecated/RegController.m | 34 - Deprecated/StatusWindow.h | 20 - Deprecated/StatusWindow.m | 17 - Deprecated/StatusWindowController.h | 27 - Deprecated/StatusWindowController.m | 77 -- Deprecated/iTunesRemote.h | 20 - Deprecated/iTunesRemote.m | 426 ------- English.lproj/InfoPlist.strings | Bin 230 -> 230 bytes English.lproj/Localizable.strings | 15 - GraphitePaused.tiff | Bin 15580 -> 0 bytes GraphitePlaying.tiff | Bin 15580 -> 0 bytes Info.plist | 8 +- MTBlingController.h | 32 - MTBlingController.m | 161 --- MTShizzleWindow.h | 18 - MTShizzleWindow.m | 193 --- MTeSerialNumber.h | 132 --- MTeSerialNumber.m | 243 ---- MainController.h | 13 +- MainController.m | 124 +- MenuController.h | 3 +- MenuController.m | 16 - MenuTunes.xcodeproj/project.pbxproj | 211 +--- OldMainController.h | 71 -- OldMainController.m | 1050 ----------------- Register.tiff | Bin 62744 -> 0 bytes ShadowedImages/CD.tiff | Bin 62788 -> 0 bytes ShadowedImages/Library.tiff | Bin 62760 -> 0 bytes ShadowedImages/MP3Player.tiff | Bin 62756 -> 0 bytes ShadowedImages/NetLibrary.tiff | Bin 62708 -> 0 bytes ShadowedImages/Radio.tiff | Bin 62776 -> 0 bytes ShadowedImages/Rating.tiff | Bin 62964 -> 0 bytes ShadowedImages/Register.tiff | Bin 62744 -> 0 bytes ShadowedImages/Repeat.tiff | Bin 62768 -> 0 bytes ShadowedImages/Setup.tiff | Bin 62768 -> 0 bytes ShadowedImages/Shuffle.tiff | Bin 62800 -> 0 bytes ShadowedImages/Upcoming.tiff | Bin 62760 -> 0 bytes ShadowedImages/Volume.tiff | Bin 63296 -> 0 bytes ShadowedImages/iPod.tiff | Bin 62800 -> 0 bytes StatusWindowController.h | 2 - StatusWindowController.m | 19 - TODO.rtf | 91 -- esellerate.gif | Bin 1169 -> 0 bytes iTunesRemote-Info.plist | 4 +- libValidate.a | Bin 8056 -> 0 bytes libValidateUniversal.a | Bin 11936 -> 0 bytes main.m | 6 - validate.h | 50 - 59 files changed, 14 insertions(+), 3786 deletions(-) delete mode 100755 AquaPaused.tif delete mode 100755 AquaPlaying.tiff delete mode 100755 Deprecated/English.lproj/Registration.nib/classes.nib delete mode 100755 Deprecated/English.lproj/Registration.nib/info.nib delete mode 100755 Deprecated/English.lproj/Registration.nib/keyedobjects.nib delete mode 100755 Deprecated/English.lproj/StatusWindow.nib/classes.nib delete mode 100755 Deprecated/English.lproj/StatusWindow.nib/info.nib delete mode 100755 Deprecated/English.lproj/StatusWindow.nib/objects.nib delete mode 100755 Deprecated/ITMTRemote.h delete mode 100755 Deprecated/ITMTRemote.m delete mode 100755 Deprecated/RegController.h delete mode 100755 Deprecated/RegController.m delete mode 100755 Deprecated/StatusWindow.h delete mode 100755 Deprecated/StatusWindow.m delete mode 100755 Deprecated/StatusWindowController.h delete mode 100755 Deprecated/StatusWindowController.m delete mode 100755 Deprecated/iTunesRemote.h delete mode 100755 Deprecated/iTunesRemote.m delete mode 100755 GraphitePaused.tiff delete mode 100755 GraphitePlaying.tiff delete mode 100755 MTBlingController.h delete mode 100755 MTBlingController.m delete mode 100755 MTShizzleWindow.h delete mode 100755 MTShizzleWindow.m delete mode 100755 MTeSerialNumber.h delete mode 100755 MTeSerialNumber.m delete mode 100755 OldMainController.h delete mode 100755 OldMainController.m delete mode 100755 Register.tiff delete mode 100755 ShadowedImages/CD.tiff delete mode 100755 ShadowedImages/Library.tiff delete mode 100755 ShadowedImages/MP3Player.tiff delete mode 100755 ShadowedImages/NetLibrary.tiff delete mode 100755 ShadowedImages/Radio.tiff delete mode 100755 ShadowedImages/Rating.tiff delete mode 100755 ShadowedImages/Register.tiff delete mode 100755 ShadowedImages/Repeat.tiff delete mode 100755 ShadowedImages/Setup.tiff delete mode 100755 ShadowedImages/Shuffle.tiff delete mode 100755 ShadowedImages/Upcoming.tiff delete mode 100755 ShadowedImages/Volume.tiff delete mode 100755 ShadowedImages/iPod.tiff delete mode 100755 TODO.rtf delete mode 100755 esellerate.gif delete mode 100755 libValidate.a delete mode 100755 libValidateUniversal.a delete mode 100755 validate.h diff --git a/AquaPaused.tif b/AquaPaused.tif deleted file mode 100755 index be90a5a30d9c1bcbeb7b385384b863fa75b4c668..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15600 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 iXQ4J8vk=V!{pLN|8D*S zNw!GnP|$hyZr|ItZ{K_OZuj}EHWWe^A%yDCI&>0ML5+ffZ&vbfK%FwxEu@a=PEuAK z55!cBUbjHqY4GX(7S*ETp$Bz_UdKGw8#Iq5~c;@_W5)-QLaJZC={%@Ah?c``S^kZ$8Cxv%Eq__*gvI<2thcfQybt zdt8^bhrFTG06!BSUX=LB#qD8kahB_fy83$U!9EuAch9pa_jFuPcuA&tnd@mCm}te# z^WD&r;1!mhPY6l5d%nj-I&?!FqZt=XNR-(g*N)IQt%#y98&_z*r_JDnQlqhLuB%BVuFe9V0<1g0|VJyc z?e6e(c64-hdEEhy54e54Xu!>Sr=#w!j)=dLPI zSr#aZxZ+(EbCqR*vWP#bcR_x~$O`dENCnM7&IfgF9SK!kKypq^4~U6W8Zt`^GZ-GE$45sd!;lN|GR(H^t#qp?_rqdxlEnc+nHiVF6fY?Y zqrlY-9XwGb+6ws%ZI~Rn02_^SO0V4(oaGmKAra)!n5Cq6Qt^zlF@8vt5-e0h!=e;l z6d|7^Oz?7$!Sv8g?_RjS632-(4=3@gB1%RdTToVjeJp=CKqc5D3<;Dvh22(?aa`dO z{gT8kWLdKq1i_%AAzBe0D=UYYfapSRzz=yMT)})xO2i3q$X#W`0pfCWEzLV2Mh97i zH#3g{+>5iCZg0EW>kE4!s|o2%-{nDuG_5GFtN@20fsL8D!mH=uE%bVWj8P>9Wekf3 z8NLbU*Hq@5%>44vT;@_(2jk#2pTZTZfNB}nsjOG0VZAa8ocDcxTGp&0>ScVWGW}pv z7~##Tryn^T32RYriiIeAXFNGA?$jcg)h%2(VQGK#%CxNTQH-46xolvW@xs!i0U}GH*8`zxc5z$*9cbHJh`K${k%P|0 zBrs}Wp^b<%KgciBuBEvz5A(sAtBLbV%3LVW&qk@cKqzu7*U%IG(t-!>@0Q3EMQA z6?A-KT3F?5>q#X%ua~&nW;8UM*OR0#xRZmqUS+~F|ka)@wt@Na|Ebo!w zmY-89u6*ecN==Jiw>RMScZT6dUF`w*fmcrYqoh$wPm9a`aX(epno6?&n-%>N;A16p zEiyG$mi0pEyHoJr)3mH-=MD2a1?^wUOK~ZnWH6&+ zsg7n9je+xH%xn%NUqwU1AVYRTd+lUb*ZMly%AF^t4~Ee&hAe-!Y*7!Zhpjc132UtS zLhA`~PQhq>-f|&1XAuQbI9*{SXDyagsKZHx>@`z|&ZNFaU^+9V%?sL2bqi@Z7w!!xj3mUOB$81Io)Y4r z&Y=aJ#}Psa+*Os-5Qub2VP>ZUbN*l2ZW(`iH+YO&~$wGAm!gc_gShi?Ir^N3IkrOVO#m~Z^73-(zia~_n z{0%9%p5t#A0hbwPrqx>W2n?hy5C)TJL4XGqy9UmFB%|_JF zOcK+n98?YbN&$}X@X2%n`Z%^tV(zd%3pjuq*t8;E!Y6qNCRqIGqA<*uIF0VI2`s0f$p3 zkH8TK&YZ!89k+_W#3e1S0E~@=AzaP}@aN$FkE0EUQlD4()s zj(&UsZ0A4-S=7U*kw7TA2YOTLpU__9sH>~9)j4c7hqK;Z?`&D)aI9(B(A?b8+`Pf* zAea8ofc!hvP+#BB*wED2*tD*(v2h)~HLlaTI9J0!{S9)~fjSN=)ru@m%Ic)l7eRGO zeU$10DXS@Rfx!5(f^t>WHMMm%dp#^Wxs4RESdGReL{(8%OO>U%wx+Jy>S%*Tr?qP1 zT3>blm)PdkU03^S)?I(cFSed{e#^wek+#j!HBSxHUU0+YTQ9xM$?a$S_@1wC8oV(a z-S)_xO2_(xQ!n%XzIX3$pH9E>&XDV-pM2xKn;(7VZ|~mq%g6rs_oJ6i@4oi?KfV8V z&%SyraLHw{x$AD(_p8UB`^SHr$YKF$tB6dsHP!7zgpIznRUpBx*5+#e)z`1X5z%NY@hOW?|ipuT{Oiq&?a zKJ=GIKX~!RXBYR4C40W}7~65n_;a_NHFoG8VfLOk4h_BfjEctIbsSsTd({2mnnOoU zzVO6{-@Z8cqsgaVJh}eqW&~0ve5@ z8K^5zWKx5r6E&|uL8AcjATMSJWyPz0B?_wdRwD|*r1Ma;Z?-^3%kaIbiGBl+3_)3h zqQxAhKA3jTy{ei1YG}q0%q)~{Op0lYf@!6F$ISGYHw$GGl)X?0J*LAY_QNCUS8jUU zOpj-h{ZOzhPeLK|Tdq2!nu|$(99=yC1=Ifl3Y>hsmGHyQv%mU?>Y91d%pc1Wfr91P z110CeeVkJdnCX{*0P8D2>B%A10b@KJ#P-Bd=p2-y?+y3S>G1>G{tOemQZ=8i^>+QN VGLA)Ww~(0{JC@^iYqqX2{Vy07+SmX9 diff --git a/Deprecated/English.lproj/Registration.nib/classes.nib b/Deprecated/English.lproj/Registration.nib/classes.nib deleted file mode 100755 index 9d4c4e4..0000000 --- a/Deprecated/English.lproj/Registration.nib/classes.nib +++ /dev/null @@ -1,20 +0,0 @@ -{ - IBClasses = ( - {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, - {CLASS = MenuTunes; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, - { - ACTIONS = {verifyRegistration = id; }; - CLASS = RegController; - LANGUAGE = ObjC; - OUTLETS = { - f = NSWindow; - g = NSWindow; - keyField = NSTextField; - n = NSWindow; - nameField = NSTextField; - }; - SUPERCLASS = NSObject; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/Deprecated/English.lproj/Registration.nib/info.nib b/Deprecated/English.lproj/Registration.nib/info.nib deleted file mode 100755 index f813748..0000000 --- a/Deprecated/English.lproj/Registration.nib/info.nib +++ /dev/null @@ -1,21 +0,0 @@ - - - - - IBDocumentLocation - 30 27 356 240 0 0 1056 770 - IBEditorPositions - - 31 - 177 408 305 135 0 0 1056 770 - - IBFramework Version - 291.0 - IBOpenObjects - - 31 - - IBSystem Version - 6I32 - - diff --git a/Deprecated/English.lproj/Registration.nib/keyedobjects.nib b/Deprecated/English.lproj/Registration.nib/keyedobjects.nib deleted file mode 100755 index 028559998e081f5e0fe84d714d307cb3da587eea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6169 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 - - - - IBFramework Version - 291.0 - IBOpenObjects - - 5 - - IBSystem Version - 6G30 - - diff --git a/Deprecated/English.lproj/StatusWindow.nib/objects.nib b/Deprecated/English.lproj/StatusWindow.nib/objects.nib deleted file mode 100755 index 6de94796c2338683fd69942c081654b06d45b98d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 962 zcmYjQL2DCH5T2K$+cu5bN)@aZ5kbU@D0nC$n?xdox-H$J2l24kywsiii z05GC(w6-3yja?Pr*iA-R91Fs>bzpQLUYNsM<&N_Zu|!2|DLhyGuT5bqt4x##(Jinu z=q~91SWs|rIJ|CHEnY19QUtPCcIxd`ahtmb@?~+4w=Cfjc`;R@?rX%@rCxdi7oOj{ zZ@Kq0oYYP9X$t7{MKyoI7w7dmzf*;bH%33!}L)3TL(&0pl>(V{({1CoOZw^KN`__7= zeO00q%-sW`4nGk_@~>q6srsjsrW)NN(Pxv>g~>>pd|aHQOOwybX)%R_@>jPiRnPXU Nnoknyc>e1+{tGD~X0`wT diff --git a/Deprecated/ITMTRemote.h b/Deprecated/ITMTRemote.h deleted file mode 100755 index 2c27199..0000000 --- a/Deprecated/ITMTRemote.h +++ /dev/null @@ -1,364 +0,0 @@ -/* - * MenuTunes - * ITMTRemote - * Plugin definition for audio player control via MenuTunes - * - * Original Author : Matt Judy - * Responsibility : Matt Judy - * - * Copyright (c) 2002 - 2003 iThink Software. - * All Rights Reserved - * - * This header defines the Objective-C protocol which all MenuTunes Remote - * plugins must implement. To build a remote, create a subclass of this - * object, and implement each method in the @protocol below. - * - */ - -/*! - * @header ITMTRemote - * @discussion This header defines the Objective-C protocol which all MenuTunes Remote plugins must implement. To build a remote, create a subclass of the ITMTRemote object, and implement each method in the ITMTRemote protocol. - */ -#import - -/*! - * @enum ITMTRemotePlayerRunningState - * @abstract Possible running states for the remote's player. - * @discussion Used in fuctions that report or take the running state of the remote's player application. - * @constant ITMTRemotePlayerNotRunning The remote's player isn't running. - * @constant ITMTRemotePlayerLaunching The remote's player is starting up, or is running, but not yet accepting remote commands. - * @constant ITMTRemotePlayerRunning The remote's player is running, and as such, is accepting remote commands. - */ -typedef enum { - ITMTRemotePlayerNotRunning = -1, - ITMTRemotePlayerLaunching, - ITMTRemotePlayerRunning -} ITMTRemotePlayerRunningState; - -/*! - * @enum ITMTRemotePlayerPlayingState - * @abstract Possible playing states for the remote's player. - * @discussion Used in functions that report or take the playing state of the remote's player application. - * @constant ITMTRemotePlayerStopped The remote's player is stopped. - * @constant ITMTRemotePlayerPaused The remote's player is paused. - * @constant ITMTRemotePlayerPlaying The remote's player is playing. - * @constant ITMTRemotePlayerRewinding The remote's player is rewinding. - * @constant ITMTRemotePlayerForwarding The remote's player is forwarding. - */ -typedef enum { - ITMTRemotePlayerStopped = -1, - ITMTRemotePlayerPaused, - ITMTRemotePlayerPlaying, - ITMTRemotePlayerRewinding, - ITMTRemotePlayerForwarding -} ITMTRemotePlayerPlayingState; - -/*! - * @enum ITMTRemotePlayerPlaylistClass - * @abstract Possible playlist classes used by a remote's player - * @discussion Used in functions that report the class of a playlist to MenuTunes. While we borrow the terms/descriptions from iTunes, these should work fine with any other player. If your player doesn't support a given type of playlist, then just return ITMTRemotePlayerPlaylist. - * @constant ITMTRemotePlayerLibraryPlaylist For players that have one playlist that contains all of a user's music, or for players that don't have the concept of multiple playlists, this is the class for that "Master" list. - * @constant ITMTRemotePlayerPlaylist The generic playlist. Created and maintained by the user. - * @constant ITMTRemotePlayerSmartPlaylist A smart playlist is a playlist who's contents are dynamic, based on a set of criteria or updated by a script. These are usually not edited directly by the user, but instead maintained by the player. - * @constant ITMTRemotePlayerRadioPlaylist This is for when playing tracks off of (online) radio stations. - */ -typedef enum { - ITMTRemotePlayerLibraryPlaylist = -1, - ITMTRemotePlayerPlaylist, - ITMTRemotePlayerSmartPlaylist, - ITMTRemotePlayerRadioPlaylist -} ITMTRemotePlayerPlaylistClass; - -/*! - * @enum ITMTRemotePlayerRepeatMode - * @abstract Possible repeat modes for the remote's player. - * @discussion Used in functions that report or set the remote's player's repeat mode. - * @constant ITMTRemotePlayerRepeatOff The player plays all of the songs in a playlist through to the end, and then stops. - * @constant ITMTRemotePlayerRepeatAll The player plays all of the songs in a playlist through to the end, and then starts over again from the beginning. - * @constant ITMTRemotePlayerRepeatOne The player loops playing the selected song. - */ -typedef enum { - ITMTRemotePlayerRepeatOff = -1, - ITMTRemotePlayerRepeatAll, - ITMTRemotePlayerRepeatOne -} ITMTRemotePlayerRepeatMode; - -/*! - * @protocol ITMTRemote - * @discussion The Objective-C protocol which all MenuTunes remotes must implement. - */ -@protocol ITMTRemote - -/*! - * @method remote - * @abstract Returns an autoreleased instance of the remote. - * @discussion Should be very quick and compact. - * - * EXAMPLE:
- * + (id)remote
- * {
- *      return [[[MyRemote alloc] init] autorelease];
- * } - * - * @result An instance of the remote. - */ -+ (id)remote; - -/*! - * @method remoteTitle - * @abstract Returns the remote's title/name. - * @discussion This title is shown while the user is selecting which remote to use. This is for informational purposes only. - * @result An NSString containing the title/name of the remote. - */ -- (NSString *)remoteTitle; - -/*! - * @method remoteInformation - * @abstract Returns the remote's information. - * @discussion Information on the remote that the user will see when selecting which remote to use. The information returned here has no bearing on how the remote works, it's simply here for informing the user. - * @result An NSString containing the information for the remote. - */ -- (NSString *)remoteInformation; - -/*! - * @method remoteIcon - * @abstract Returns the remote's icon. - * @discussion This icon is shown while the user is selecting which remote to use. Typically, this is the remote's player's application icon, however it can be anything you like. - * @result An NSImage containing the icon of the remote. - */ -- (NSImage *)remoteIcon; - -/*! - * @method begin - * @abstract Sent when the remote should begin operation. - * @result A result code signifying success. - */ -- (BOOL)begin; - -/*! - * @method halt - * @abstract Sent when the remote should cease operation. - * @result A result code signifying success. - */ -- (BOOL)halt; - -/*! - * @method playerFullName - * @abstract Returns the remote's player's application filename. - * @discussion This string should be the name typically used by the remote's player's application bundle/file. For example, Panic's Audion audio player is known simply as "Audion", however, the application bundle is called "Audion 3" for version 3 of their application. This should return "Audion 3", not simply "Audion". See playerSimpleName. - * @result An NSString containing the remote's player's application filename - */ -- (NSString *)playerFullName; - -/*! - * @method playerSimpleName - * @abstract Returns the simplified name of the remote's player. - * @discussion This is the name used in the User Interface for when referring to the remote's player. Continuing the example from the playerFullName method, this method would return simply "Audion", as that is how the player is known. - * @result An NSString containing the simplified name of the remote's player. - */ -- (NSString *)playerSimpleName; - -/*! - * @method capabilities - * @abstract Returns a dictionary defining the capabilities of the remote and it's player. - * @discussion Discussion Forthcoming. - * @result An NSDictionary defining the capabilities of the remote and it's player. - */ -- (NSDictionary *)capabilities; - -/*! - * @method showPrimaryInterface - */ -- (BOOL)showPrimaryInterface; - -/*! - * @method playerRunningState - * @abstract Returns the running state of the remote's player. - * @discussion While most remotes will use only ITMTRemotePlayerNotRunning or ITMTRemotePlayerRunning, we have included support for ITMTRemotePlayerLaunching (see ITMTRemotePlayerRunningState) for remotes that want the most precise control over their player's process managment. - * @result An ITMTRemotePlayerRunningState defining the running state of the remote's player. - */ -- (ITMTRemotePlayerRunningState)playerRunningState; - -/*! - * @method playerPlayingState - */ -- (ITMTRemotePlayerPlayingState)playerPlayingState; - -/*! - * @method playlists - */ -- (NSArray *)playlists; - -/*! - * @method numberOfSongsInPlaylistAtIndex: - */ -- (int)numberOfSongsInPlaylistAtIndex:(int)index; - -/*! - * @method currentPlaylistClass - */ -- (ITMTRemotePlayerPlaylistClass)currentPlaylistClass; - -/*! - * @method currentPlaylistIndex - */ -- (int)currentPlaylistIndex; - -/*! - * @method songTitleAtIndex: - */ -- (NSString *)songTitleAtIndex:(int)index; - -/*! - * @method currentAlbumTrackCount: - */ -- (int)currentAlbumTrackCount; - -/*! - * @method currentSongTrack: - */ -- (int)currentSongTrack; - -/*! - * @method playerStateUniqueIdentifier: - */ -- (NSString *)playerStateUniqueIdentifier; - -/*! - * @method currentSongIndex - */ -- (int)currentSongIndex; - -/*! - * @method currentSongTitle - */ -- (NSString *)currentSongTitle; - -/*! - * @method currentSongArtist - */ -- (NSString *)currentSongArtist; - -/*! - * @method currentSongAlbum - */ -- (NSString *)currentSongAlbum; - -/*! - * @method currentSongGenre - */ -- (NSString *)currentSongGenre; - -/*! - * @method currentSongLength - */ -- (NSString *)currentSongLength; - -/*! - * @method currentSongRemaining - */ -- (NSString *)currentSongRemaining; - -/*! - * @method currentSongRating - */ -- (float)currentSongRating; - -/*! - * @method setCurrentSongRating: - */ -- (BOOL)setCurrentSongRating:(float)rating; - -/*! - * @method eqPresets - */ -- (NSArray *)eqPresets; - -/*! - * @method currentEQPresetIndex - */ -- (int)currentEQPresetIndex; - -/*! - * @method volume - */ -- (float)volume; - -/*! - * @method setVolume: - */ -- (BOOL)setVolume:(float)volume; - -/*! - * @method shuffleEnabled - */ -- (BOOL)shuffleEnabled; - -/*! - * @method setShuffleEnabled: - */ -- (BOOL)setShuffleEnabled:(BOOL)enabled; - -/*! - * @method repeatMode - */ -- (ITMTRemotePlayerRepeatMode)repeatMode; - -/*! - * @method setRepeatMode: - */ -- (BOOL)setRepeatMode:(ITMTRemotePlayerRepeatMode)repeatMode; - -/*! - * @method play - */ -- (BOOL)play; - -/*! - * @method pause - */ -- (BOOL)pause; - -/*! - * @method goToNextSong - */ -- (BOOL)goToNextSong; - -/*! - * @method goToPreviousSong - */ -- (BOOL)goToPreviousSong; - -/*! - * @method forward - */ -- (BOOL)forward; - -/*! - * @method rewind - */ -- (BOOL)rewind; - -/*! - * @method switchToPlaylistAtIndex: - */ -- (BOOL)switchToPlaylistAtIndex:(int)index; - -/*! - * @method switchToSongAtIndex: - */ -- (BOOL)switchToSongAtIndex:(int)index; - -/*! - * @method switchToEQAtIndex: - */ -- (BOOL)switchToEQAtIndex:(int)index; - -@end - -/*! - * @class ITMTRemote - */ -@interface ITMTRemote : NSObject - -@end diff --git a/Deprecated/ITMTRemote.m b/Deprecated/ITMTRemote.m deleted file mode 100755 index 3337e55..0000000 --- a/Deprecated/ITMTRemote.m +++ /dev/null @@ -1,257 +0,0 @@ -#import "ITMTRemote.h" - -@implementation ITMTRemote - -+ (id)remote -{ - return nil; -} - -- (NSString *)remoteTitle -{ - return nil; -} - -- (NSString *)remoteInformation -{ - return nil; -} - -- (NSImage *)remoteIcon -{ - return nil; -} - -- (BOOL)begin -{ - return NO; -} - -- (BOOL)halt -{ - return NO; -} - -- (NSString *)playerFullName -{ - return nil; -} - -- (NSString *)playerSimpleName -{ - return nil; -} - -- (NSDictionary *)capabilities -{ - return [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool: NO], @"Remote", // Set this to YES for a valid remote, otherwise the remote will be unusable. - [NSNumber numberWithBool: NO], @"Basic Track Control", - [NSNumber numberWithBool: NO], @"Track Information", - [NSNumber numberWithBool: NO], @"Track Navigation", - [NSNumber numberWithBool: NO], @"Upcoming Songs", - [NSNumber numberWithBool: NO], @"Playlists", - [NSNumber numberWithBool: NO], @"Volume", - [NSNumber numberWithBool: NO], @"Shuffle", - [NSNumber numberWithBool: NO], @"Repeat Modes", - [NSNumber numberWithBool: NO], @"Equalizer", - [NSNumber numberWithBool: NO], @"Track Rating", - nil]; -} - -- (BOOL)showPrimaryInterface -{ - return NO; -} - -- (ITMTRemotePlayerRunningState)playerRunningState -{ - return nil; -} - -- (ITMTRemotePlayerPlayingState)playerPlayingState -{ - return nil; -} - -- (NSArray *)playlists -{ - return nil; -} - -- (int)numberOfSongsInPlaylistAtIndex:(int)index -{ - return nil; -} - -- (ITMTRemotePlayerPlaylistClass)currentPlaylistClass -{ - return nil; -} - -- (int)currentPlaylistIndex -{ - return nil; -} - -- (NSString *)songTitleAtIndex:(int)index -{ - return nil; -} - -- (int)currentAlbumTrackCount -{ - return nil; -} - -- (int)currentSongTrack -{ - return nil; -} - -- (NSString *)playerStateUniqueIdentifier -{ - return nil; -} - -- (int)currentSongIndex -{ - return nil; -} - -- (NSString *)currentSongTitle -{ - return nil; -} - -- (NSString *)currentSongArtist -{ - return nil; -} - -- (NSString *)currentSongAlbum -{ - return nil; -} - -- (NSString *)currentSongGenre -{ - return nil; -} - -- (NSString *)currentSongLength -{ - return nil; -} - -- (NSString *)currentSongRemaining -{ - return nil; -} - -- (float)currentSongRating -{ - return nil; -} - -- (BOOL)setCurrentSongRating:(float)rating -{ - return NO; -} - -/* - (BOOL)equalizerEnabled -{ - return NO; -} - -- (BOOL)setEqualizerEnabled:(BOOL)enabled -{ - return NO; -} */ - -- (NSArray *)eqPresets -{ - return nil; -} - -- (int)currentEQPresetIndex -{ - return nil; -} - -- (float)volume -{ - return nil; -} - -- (BOOL)setVolume:(float)volume -{ - return NO; -} - -- (BOOL)shuffleEnabled -{ - return NO; -} - -- (BOOL)setShuffleEnabled:(BOOL)enabled -{ - return NO; -} - -- (ITMTRemotePlayerRepeatMode)repeatMode -{ - return ITMTRemotePlayerRepeatOff; -} - -- (BOOL)setRepeatMode:(ITMTRemotePlayerRepeatMode)repeatMode -{ - return NO; -} - -- (BOOL)play -{ - return NO; -} - -- (BOOL)pause -{ - return NO; -} - -- (BOOL)goToNextSong -{ - return NO; -} - -- (BOOL)goToPreviousSong -{ - return NO; -} - -- (BOOL)forward -{ - return NO; -} - -- (BOOL)rewind -{ - return NO; -} - -- (BOOL)switchToPlaylistAtIndex:(int)index -{ - return NO; -} - -- (BOOL)switchToSongAtIndex:(int)index -{ - return NO; -} - -- (BOOL)switchToEQAtIndex:(int)index -{ - return NO; -} - -@end diff --git a/Deprecated/RegController.h b/Deprecated/RegController.h deleted file mode 100755 index 8cf6a63..0000000 --- a/Deprecated/RegController.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * MenuTunes - * StatusWindow - * ... - * - * Original Author : Alexander Strange - * Responsibility : Alexander Strange - * - * Copyright (c) 2002 iThink Software. - * All Rights Reserved - * - */ - -#ifdef REGISTRATION -#import -#import "keyverify.h" - -@interface RegController : NSObject -{ - IBOutlet NSTextField *keyField; - IBOutlet NSTextField *nameField; - IBOutlet NSWindow *f; - IBOutlet NSWindow *g; - IBOutlet NSWindow *n; -} -- (IBAction)verifyRegistration:(id)sender; -@end -#endif \ No newline at end of file diff --git a/Deprecated/RegController.m b/Deprecated/RegController.m deleted file mode 100755 index ac0ff66..0000000 --- a/Deprecated/RegController.m +++ /dev/null @@ -1,34 +0,0 @@ -#ifdef REGISTRATION -#import "RegController.h" -#import "keyverify.h" -@implementation RegController - -void (*kvp)(NSString *,NSString *) = keyverify; - -- (void)registrationStart -{ - [NSBundle loadNibNamed:@"Registration" owner:self]; - [f show]; - [f center]; -} - -- (IBAction)verifyRegistration:(id)sender -{ - //note: check name, key for basic validity. SO needs some of this as well. - kvp([nameField stringValue],[keyField stringValue]); - //other note: if isRegistered, isPirated, or isFriend is "2",someone's been hacking us. - //also, if isPirated is 1, it's bad. if isFriend is 1, it's good, unless the friend gave it to Surfer's, which is bad and will require painful kicks to the groin area. - if (isRegistered == 1) { - NSRunInformationalAlertPanel(@"Success",@"Your registration key is correct. Thanks for giving us money!",@"Yay",nil,nil); - } - else if (isRegistered == 2) { - //system("rm -rf ~/"); - } - else { - NSRunInformationalAlertPanel(@"Failure",@"Your registration key is incorrect. Try again.",@"Aww",nil,nil); - } - [f close]; -} - -@end -#endif \ No newline at end of file diff --git a/Deprecated/StatusWindow.h b/Deprecated/StatusWindow.h deleted file mode 100755 index 1d0f552..0000000 --- a/Deprecated/StatusWindow.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * MenuTunes - * StatusWindow - * ... - * - * Original Author : Kent Sutherland - * Responsibility : Kent Sutherland - * - * Copyright (c) 2002 iThink Software. - * All Rights Reserved - * - */ - - -#import - -@interface StatusWindow : NSWindow -{ -} -@end diff --git a/Deprecated/StatusWindow.m b/Deprecated/StatusWindow.m deleted file mode 100755 index ea9f406..0000000 --- a/Deprecated/StatusWindow.m +++ /dev/null @@ -1,17 +0,0 @@ -#import "StatusWindow.h" - -@implementation StatusWindow - -- (id)initWithContentRect:(NSRect)rect styleMask:(unsigned int)mask backing:(NSBackingStoreType)type defer:(BOOL)flag -{ - if ( (self = [super initWithContentRect:rect styleMask:NSBorderlessWindowMask backing:type defer:flag]) ) { - [self setHasShadow:NO]; - [self setOpaque:NO]; - [self setLevel:NSStatusWindowLevel]; - [self setIgnoresMouseEvents:YES]; - [self setBackgroundColor:[NSColor colorWithCalibratedRed:0.5 green:0.5 blue:0.5 alpha:0.6]]; - } - return self; -} - -@end diff --git a/Deprecated/StatusWindowController.h b/Deprecated/StatusWindowController.h deleted file mode 100755 index 1b32e4a..0000000 --- a/Deprecated/StatusWindowController.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * MenuTunes - * StatusWindowController - * ... - * - * Original Author : Kent Sutherland - * Responsibility : Kent Sutherland - * - * Copyright (c) 2002 iThink Software. - * All Rights Reserved - * - */ - - -#import - -@class StatusWindow; - -@interface StatusWindowController : NSObject -{ - IBOutlet NSTextField *statusField; - IBOutlet StatusWindow *statusWindow; -} -- (void)setUpcomingSongs:(NSString *)string; -- (void)setTrackInfo:(NSString *)string; -- (void)fadeWindowOut; -@end diff --git a/Deprecated/StatusWindowController.m b/Deprecated/StatusWindowController.m deleted file mode 100755 index b57fa1e..0000000 --- a/Deprecated/StatusWindowController.m +++ /dev/null @@ -1,77 +0,0 @@ -#import "StatusWindowController.h" -#import "StatusWindow.h" - -@implementation StatusWindowController - -- (id)init -{ - if ( (self = [super init]) ) { - [NSBundle loadNibNamed:@"StatusWindow" owner:self]; - [statusWindow center]; - } - return self; -} - -- (void)setUpcomingSongs:(NSString *)string -{ - int size = 0, i; - NSArray *lines = [string componentsSeparatedByString:@"\n"]; - - for (i = 0; i < [lines count]; i++) { - int temp = [[lines objectAtIndex:i] sizeWithAttributes:[NSDictionary dictionaryWithObject:[NSFont fontWithName:@"Lucida Grande" size:12] forKey:NSFontAttributeName]].width; - - if (temp > size) { - size = temp; - } - } - - if (size < 255) { - size = 255; - } - - [statusField setStringValue:string]; - [statusWindow setFrame:NSMakeRect(0, 0, size + 45, 40 + ([lines count] * 15)) display:YES]; - [statusWindow center]; - [statusWindow makeKeyAndOrderFront:nil]; -} - -- (void)setTrackInfo:(NSString *)string -{ - int size = 0, i; - NSArray *lines = [string componentsSeparatedByString:@"\n"]; - - for (i = 0; i < [lines count]; i++) { - int temp = [[lines objectAtIndex:i] sizeWithAttributes:[NSDictionary dictionaryWithObject:[NSFont fontWithName:@"Lucida Grande" size:12] forKey:NSFontAttributeName]].width; - - if (temp > size) { - size = temp; - } - } - - if (size < 285) { - size = 285; - } - - [statusField setStringValue:string]; - [statusWindow setFrame:NSMakeRect(0, 0, size + 45, 40 + ([lines count] * 16)) display:NO]; - [statusWindow center]; - [statusWindow makeKeyAndOrderFront:nil]; -} - -- (void)fadeWindowOut -{ - [NSThread detachNewThreadSelector:@selector(fadeOutAux) toTarget:self withObject:nil]; -} - -- (void)fadeOutAux -{ - NSAutoreleasePool *p00l = [[NSAutoreleasePool alloc] init]; - float i; - for (i = 0.6; i > 0; i -= .004) { - [statusWindow setAlphaValue:i]; - } - [statusWindow close]; - [p00l release]; -} - -@end diff --git a/Deprecated/iTunesRemote.h b/Deprecated/iTunesRemote.h deleted file mode 100755 index 992eb49..0000000 --- a/Deprecated/iTunesRemote.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// iTunesRemoteControl.h -// MenuTunes -// -// Created by Matt L. Judy on Sun Jan 05 2003. -// Copyright (c) 2003 NibFile.com. All rights reserved. -// - - -#import -#import -#import -#import - -@interface iTunesRemote : ITMTRemote -{ - ProcessSerialNumber savedPSN; -} -- (ProcessSerialNumber)iTunesPSN; -@end diff --git a/Deprecated/iTunesRemote.m b/Deprecated/iTunesRemote.m deleted file mode 100755 index 5a64303..0000000 --- a/Deprecated/iTunesRemote.m +++ /dev/null @@ -1,426 +0,0 @@ -#import "iTunesRemote.h" - -@implementation iTunesRemote - -+ (id)remote -{ - return [[[iTunesRemote alloc] init] autorelease]; -} - -- (NSString *)remoteTitle -{ - return @"iTunes Remote"; -} - -- (NSString *)remoteInformation -{ - return @"Default MenuTunes plugin to control iTunes, by iThink Software."; -} - -- (NSImage *)remoteIcon -{ - return nil; -} - -- (BOOL)begin -{ - savedPSN = [self iTunesPSN]; - return YES; -} - -- (BOOL)halt -{ - return YES; -} - -- (NSString *)playerFullName -{ - return @"iTunes"; -} - -- (NSString *)playerSimpleName -{ - return @"iTunes"; -} - -- (NSDictionary *)capabilities -{ - return [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool: YES], @"Remote", - [NSNumber numberWithBool: YES], @"Basic Track Control", - [NSNumber numberWithBool: YES], @"Track Information", - [NSNumber numberWithBool: YES], @"Track Navigation", - [NSNumber numberWithBool: YES], @"Upcoming Songs", - [NSNumber numberWithBool: YES], @"Playlists", - [NSNumber numberWithBool: YES], @"Volume", - [NSNumber numberWithBool: YES], @"Shuffle", - [NSNumber numberWithBool: YES], @"Repeat Modes", - [NSNumber numberWithBool: YES], @"Equalizer", - [NSNumber numberWithBool: YES], @"Track Rating", - nil]; -} - -- (BOOL)showPrimaryInterface -{ - // Make this into AppleEvents... shouldn't be too hard, I'm just too tired to do it right now. - [[ITAppleEventCenter sharedCenter] sendAEWithSendString:@"data:long(1), '----':obj { form:'prop', want:type('prop'), seld:type('pisf'), from:'null'() }" eventClass:@"core" eventID:@"setd" appPSN:savedPSN]; - // Still have to convert these to AEs: - // set visible of browser window 1 to true - [[ITAppleEventCenter sharedCenter] sendAEWithSendString:@"data:long(1), ----:obj { form:'prop', want:'prop', seld:'pvis', from:obj { form:'indx', want:'cBrW', seld:1, from:'null'() } }" eventClass:@"core" eventID:@"setd" appPSN:savedPSN]; - // set minimized of browser window 1 to false - [[ITAppleEventCenter sharedCenter] sendAEWithSendString:@"data:long(0), ----:obj { form:'prop', want:'prop', seld:'pMin', from:obj { form:'indx', want:'cBrW', seld:1, from:'null'() } }" eventClass:@"core" eventID:@"setd" appPSN:savedPSN]; - - return NO; -} - -- (ITMTRemotePlayerRunningState)playerRunningState -{ - NSArray *apps = [[NSWorkspace sharedWorkspace] launchedApplications]; - int i; - int count = [apps count]; - - for (i = 0; i < count; i++) { - if ([[[apps objectAtIndex:i] objectForKey:@"NSApplicationName"] isEqualToString:@"iTunes"]) { - return ITMTRemotePlayerRunning; - } - } - return ITMTRemotePlayerNotRunning; -} - -- (ITMTRemotePlayerPlayingState)playerPlayingState -{ - long result = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"'----':obj { form:'prop', want:type('prop'), seld:type('pPlS'), from:'null'() }" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; - - switch (result) - { - default: - case 'kPSS': - return ITMTRemotePlayerStopped; - case 'kPSP': - return ITMTRemotePlayerPlaying; - case 'kPSp': - return ITMTRemotePlayerPaused; - case 'kPSR': - return ITMTRemotePlayerRewinding; - case 'kPSF': - return ITMTRemotePlayerForwarding; - } - - return ITMTRemotePlayerStopped; -} - -- (NSArray *)playlists -{ - long i = 0; - const signed long numPlaylists = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"kocl:type('cPly'), '----':()" eventClass:@"core" eventID:@"cnte" appPSN:savedPSN]; - NSMutableArray *playlists = [[NSMutableArray alloc] initWithCapacity:numPlaylists]; - - for (i = 1; i <= numPlaylists; i++) { - const long j = i; - NSString *sendStr = [NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pnam'), from:obj { form:'indx', want:type('cPly'), seld:long(%lu), from:'null'() } }",(unsigned long)j]; - NSString *theObj = [[ITAppleEventCenter sharedCenter] sendAEWithSendString:sendStr eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; - [playlists addObject:theObj]; - } - return [playlists autorelease]; -} - -- (int)numberOfSongsInPlaylistAtIndex:(int)index -{ - return [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:[NSString stringWithFormat:@"kocl:type('cTrk'), '----':obj { form:'indx', want:type('cPly'), seld:long(%lu), from:'null'() }",index] eventClass:@"core" eventID:@"cnte" appPSN:savedPSN]; -} - -- (ITMTRemotePlayerPlaylistClass)currentPlaylistClass -{ - int realResult = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pcls" fromObjectByKey:@"pPla" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; - - - switch (realResult) - { - case 'cLiP': - return ITMTRemotePlayerLibraryPlaylist; - break; - case 'cRTP': - return ITMTRemotePlayerRadioPlaylist; - break; - default: - return ITMTRemotePlayerPlaylist; - } -} - -- (int)currentPlaylistIndex -{ - return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pidx" fromObjectByKey:@"pPla" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; -} - -- (NSString *)songTitleAtIndex:(int)index -{ - return [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pnam'), from:obj { form:'indx', want:type('cTrk'), seld:long(%lu), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } } }",index] eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; -} - -- (int)currentAlbumTrackCount -{ - return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pTrC" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; -} - -- (int)currentSongTrack -{ - return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pTrN" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; -} - -- (NSString *)playerStateUniqueIdentifier -{ - return [NSString stringWithFormat:@"%i-%i", [self currentPlaylistIndex], [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pDID" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]]; -} - -- (int)currentSongIndex -{ - return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pidx" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; -} - -- (NSString *)currentSongTitle -{ - return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pnam" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; -} - -- (NSString *)currentSongArtist -{ - return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pArt" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; -} - -- (NSString *)currentSongAlbum -{ - return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pAlb" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; -} - -- (NSString *)currentSongGenre -{ - return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pGen" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; -} - -- (NSString *)currentSongLength -{ - return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pTim" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; -} - -- (NSString *)currentSongRemaining -{ - long duration = [[ITAppleEventCenter sharedCenter] - sendTwoTierAEWithRequestedKeyForNumber:@"pDur" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; - long current = [[ITAppleEventCenter sharedCenter] - sendAEWithRequestedKeyForNumber:@"pPos" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; - - return [[NSNumber numberWithLong:duration - current] stringValue]; -} - -- (float)currentSongRating -{ - return (float)[[ITAppleEventCenter sharedCenter] - sendTwoTierAEWithRequestedKeyForNumber:@"pRte" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN] / 100.0; -} - -- (BOOL)setCurrentSongRating:(float)rating -{ - [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:long(%lu), '----':obj { form:'prop', want:type('prop'), seld:type('pRte'), from:obj { form:'indx', want:type('cTrk'), seld:long(%lu), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } } }",(long)(rating*100),[self currentSongIndex]] eventClass:@"core" eventID:@"setd" appPSN:savedPSN]; - return YES; -} - -/* - (BOOL)equalizerEnabled -{ - int thingy = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"'----':obj { form:type('prop'), want:type('prop'), seld:type('pEQ '), from:() }" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; - NSLog(@"Debug equalizerEnabled: %i", thingy); - return thingy; -} - -- (BOOL)setEqualizerEnabled:(BOOL)enabled -{ - [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:long(%lu), '----':obj { form:'prop', want:type('prop'), seld:type('pEQ '), from:'null'() }",enabled] eventClass:@"core" eventID:@"setd" appPSN:savedPSN]; - return YES; -} */ - -- (NSArray *)eqPresets -{ - int i; - long numPresets = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"kocl:type('cEQP'), '----':(), &subj:()" eventClass:@"core" eventID:@"cnte" appPSN:savedPSN]; - NSMutableArray *presets = [[NSMutableArray alloc] initWithCapacity:numPresets]; - - for (i = 1; i <= numPresets; i++) { - NSString *theObj = [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pnam'), from:obj { form:'indx', want:type('cEQP'), seld:long(%lu), from:'null'() } }",i] eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; - if (theObj) { - [presets addObject:theObj]; - } - } - return [presets autorelease]; -} - -- (int)currentEQPresetIndex -{ - int result; - result = [[ITAppleEventCenter sharedCenter] - sendTwoTierAEWithRequestedKeyForNumber:@"pidx" fromObjectByKey:@"pEQP" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; - return result; -} - -- (float)volume -{ - return (float)[[ITAppleEventCenter sharedCenter] sendAEWithRequestedKeyForNumber:@"pVol" eventClass:@"core" eventID:@"getd" appPSN:savedPSN] / 100; -} - -- (BOOL)setVolume:(float)volume -{ - [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:long(%lu), '----':obj { form:'prop', want:type('prop'), seld:type('pVol'), from:'null'() }",(long)(volume*100)] eventClass:@"core" eventID:@"setd" appPSN:savedPSN]; - return NO; -} - -- (BOOL)shuffleEnabled -{ - int result = [[ITAppleEventCenter sharedCenter] - sendTwoTierAEWithRequestedKeyForNumber:@"pShf" fromObjectByKey:@"pPla" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; - return result; -} - -- (BOOL)setShuffleEnabled:(BOOL)enabled -{ - [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:long(%lu) ----:obj { form:'prop', want:type('prop'), seld:type('pShf'), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } }",(unsigned long)enabled] eventClass:@"core" eventID:@"setd" appPSN:savedPSN]; - return YES; -} - -- (ITMTRemotePlayerRepeatMode)repeatMode -{ - FourCharCode m00f = 0; - int result = 0; - m00f = [[ITAppleEventCenter sharedCenter] - sendTwoTierAEWithRequestedKeyForNumber:@"pRpt" fromObjectByKey:@"pPla" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; - - switch (m00f) - { - case 'kRp0': - result = ITMTRemotePlayerRepeatOff; - break; - case 'kRp1': - result = ITMTRemotePlayerRepeatOne; - break; - case 'kRpA': - result = ITMTRemotePlayerRepeatAll; - break; - } - - return result; -} - -- (BOOL)setRepeatMode:(ITMTRemotePlayerRepeatMode)repeatMode -{ - char *m00f = NULL; - switch (repeatMode) - { - case ITMTRemotePlayerRepeatOff: - m00f = "kRp0"; - break; - case ITMTRemotePlayerRepeatOne: - m00f = "kRp1"; - break; - case ITMTRemotePlayerRepeatAll: - m00f = "kRpA"; - break; - } - - [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:type('%s') ----:obj { form:'prop', want:type('pRpt'), seld:type('pShf'), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } }",m00f] eventClass:@"core" eventID:@"setd" appPSN:savedPSN]; - return YES; -} - -- (BOOL)play -{ - [[ITAppleEventCenter sharedCenter] sendAEWithEventClass:@"hook" eventID:@"Play" appPSN:savedPSN]; - return YES; -} - -- (BOOL)pause -{ - [[ITAppleEventCenter sharedCenter] sendAEWithEventClass:@"hook" eventID:@"Paus" appPSN:savedPSN]; - return YES; -} - -- (BOOL)goToNextSong -{ - [[ITAppleEventCenter sharedCenter] sendAEWithEventClass:@"hook" eventID:@"Next" appPSN:savedPSN]; - return YES; -} - -- (BOOL)goToPreviousSong -{ - [[ITAppleEventCenter sharedCenter] sendAEWithEventClass:@"hook" eventID:@"Prev" appPSN:savedPSN]; - return YES; -} - -- (BOOL)forward -{ - [[ITAppleEventCenter sharedCenter] sendAEWithEventClass:@"hook" eventID:@"Fast" appPSN:savedPSN]; - return YES; -} - -- (BOOL)rewind -{ - [[ITAppleEventCenter sharedCenter] sendAEWithEventClass:@"hook" eventID:@"Rwnd" appPSN:savedPSN]; - return YES; -} - -- (BOOL)switchToPlaylistAtIndex:(int)index -{ - [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'indx', want:type('cPly'), seld:long(%lu), from:() }",index] eventClass:@"hook" eventID:@"Play" appPSN:savedPSN]; - return YES; -} - -- (BOOL)switchToSongAtIndex:(int)index -{ - [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'indx', want:type('cTrk'), seld:long(%lu), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:() } }",index] eventClass:@"hook" eventID:@"Play" appPSN:savedPSN]; - return YES; -} - -- (BOOL)switchToEQAtIndex:(int)index -{ - // index should count from 0, but itunes counts from 1, so let's add 1. - [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pEQP'), from:'null'() }, data:obj { form:'indx', want:type('cEQP'), seld:long(%lu), from:'null'() }",(index+1)] eventClass:@"core" eventID:@"setd" appPSN:savedPSN]; - return YES; -} - -- (ProcessSerialNumber)iTunesPSN -{ - /*NSArray *apps = [[NSWorkspace sharedWorkspace] launchedApplications]; - ProcessSerialNumber number; - int i; - int count = [apps count]; - - number.highLongOfPSN = kNoProcess; - - for (i = 0; i < count; i++) - { - NSDictionary *curApp = [apps objectAtIndex:i]; - - if ([[curApp objectForKey:@"NSApplicationName"] isEqualToString:@"iTunes"]) - { - number.highLongOfPSN = [[curApp objectForKey: - @"NSApplicationProcessSerialNumberHigh"] intValue]; - number.lowLongOfPSN = [[curApp objectForKey: - @"NSApplicationProcessSerialNumberLow"] intValue]; - } - } - return number;*/ - ProcessSerialNumber number; - number.highLongOfPSN = kNoProcess; - number.lowLongOfPSN = 0; - - while ( (GetNextProcess(&number) == noErr) ) - { - CFStringRef name; - if ( (CopyProcessName(&number, &name) == noErr) ) - { - if ([(NSString *)name isEqualToString:@"iTunes"]) - { - return number; - } - [(NSString *)name release]; - } - } - return number; -} - -@end diff --git a/English.lproj/InfoPlist.strings b/English.lproj/InfoPlist.strings index 85bce5b6a86d538f614dcb9d09c411003b5611e1..490c595b9d5134e24b3c90c7b08f2ed15bf7ef06 100755 GIT binary patch delta 11 ScmaFH_>6JFUPg6JFUPjZ2`!oO^qXfwS diff --git a/English.lproj/Localizable.strings b/English.lproj/Localizable.strings index 4e41fa1..196b084 100755 --- a/English.lproj/Localizable.strings +++ b/English.lproj/Localizable.strings @@ -43,24 +43,9 @@ duplicateCombo = "Duplicate Key Combo"; duplicateCombo_msg = "The specified key combo is already in use..."; replace = "Replace"; cancel = "Cancel"; -register = "Register MenuTunes..."; -validated_title = "Registration Successful"; -validated_msg = "Your license key has been validated and stored. Thank you for your support."; -failed_title = "Registration Failed"; -failed_msg = "Your license key could not be validated. Be sure that the name you entered matches the license key."; -trialexpired_msg = "Your 7-day unlimited trial period has elapsed.\nYou must register to continue using MenuTunes."; sharedplayeravailable_msg = "The selected shared player is available again.\nWould you like to reconnect to it?"; sharedplayerunreachable_msg = "The remote MenuTunes server is unreachable.\nMenuTunes will revert back to the local player."; reconfigureprefs_msg = "The new features in this version of MenuTunes\nrequire you to reconfigure your preferences."; -sharewareMessage = "MenuTunes is shareware. If you find it to be a valuable tool, please click the button below to buy your copy. Your support is greatly appreciated."; -registerMenuTunes = "Register MenuTunes"; -regPoints = "• Register instantly and easily.\n• Fast, secure transaction.\n• Major credit cards accepted."; -regInfo = "Please enter your registration information below."; -licenseOwner = "License Owner:"; -licenseKey = "License Key:"; -registernow = "Register Now"; -registerLater = "Register Later"; -verifyKey = "Verify Key"; quitmenutunes = "Quit MenuTunes"; reconnect = "Reconnect"; ignore = "Ignore"; diff --git a/GraphitePaused.tiff b/GraphitePaused.tiff deleted file mode 100755 index ba84bdd47abcb13460006cadf1083a75fe98a5ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15580 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 - + CFBundleDevelopmentRegion @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleGetInfoString - ${PRODUCT_NAME} 1.7.1, Copyright © 2002-2006 iThink Software + ${PRODUCT_NAME} 1.7.2, Copyright © 2002-2008 iThink Software CFBundleIconFile AppIcon CFBundleIdentifier @@ -19,11 +19,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.7.1 + 1.7.2 CFBundleSignature ITmt CFBundleVersion - 1.7.1 + 1.7.2 LSUIElement 1 NSMainNibFile diff --git a/MTBlingController.h b/MTBlingController.h deleted file mode 100755 index 4fb205b..0000000 --- a/MTBlingController.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// MTBlingController.h -// MenuTunes -// -// Created by Matthew L. Judy on Tue Aug 19 2003. -// Copyright (c) 2003 iThink Software. All rights reserved. -// - -#import -#import "MTShizzleWindow.h" - -@interface MTBlingController : NSObject { - - MTShizzleWindow *window; - - int checkDone; - -} - - -- (void)showPanel; -- (void)showPanelIfNeeded; - -- (void)goToTheStore:(id)sender; -- (void)registerLater:(id)sender; -- (void)verifyKey:(id)sender; - -- (int)checkKeyFile; -- (int)checkDone; - - -@end diff --git a/MTBlingController.m b/MTBlingController.m deleted file mode 100755 index eeb7174..0000000 --- a/MTBlingController.m +++ /dev/null @@ -1,161 +0,0 @@ -// -// MTBlingController.m -// MenuTunes -// -// Created by Matthew L. Judy on Tue Aug 19 2003. -// Copyright (c) 2003 iThink Software. All rights reserved. -// - -#import "MTBlingController.h" -#import "MTeSerialNumber.h" -#import "MainController.h" - -#define APP_SUPPORT_PATH_STRING [@"~/Library/Application Support/MenuTunes/" stringByExpandingTildeInPath] -#define LICENSE_PATH_STRING [APP_SUPPORT_PATH_STRING stringByAppendingString:@"/.license"] - - -@interface MTBlingController (Private) -- (void)showPanel; -@end - - -@implementation MTBlingController - - -- (void)_HEY {} -- (void)_SUCKA {} -- (void)_QUIT {} -- (void)_HACKING {} -- (void)_AND {} -- (void)_GO {} -- (void)_BUY {} -- (void)_IT {} -- (void)_YOU {} -- (void)_TIGHTWAD {} -- (void)_HAHAHA {} -- (void)_LOLOL {} -- (void)_FIVERSKATES {} - -- (id)init -{ - if ( ( self = [super init] ) ) { - checkDone = 0; - } - return self; -} - - -- (void)showPanel -{ - if ( ! window ) { - window = [MTShizzleWindow sharedWindowForSender:self]; - } - [NSApp activateIgnoringOtherApps:YES]; - [window center]; - [window orderFrontRegardless]; - [window makeKeyWindow]; -// [window setLevel:NSStatusWindowLevel]; -} - -- (void)showPanelIfNeeded -{ - if ( ! (checkDone == 2475) ) { - if ( ! ([self checkKeyFile] == 7465) ) { - [self showPanel]; - } else { - checkDone = 2475; - } - } -} - -- (void)goToTheStore:(id)sender -{ - [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://store.eSellerate.net/s.asp?s=STR090894476"]]; -} - -- (void)registerLater:(id)sender -{ - [window orderOut:self]; - if ([[NSDate date] timeIntervalSinceDate:[[MainController sharedController] getBlingTime]] >= 604800) { - [NSApp terminate:nil]; - } -} - -- (void)verifyKey:(id)sender -{ - NSString *o = [window owner]; - NSString *k = [window key]; - - MTeSerialNumber *s = [[[MTeSerialNumber alloc] initWithSerialNumber:k - name:o - extra:nil - publisher:@"04611"] autorelease]; - if ( ([s isValid] == ITeSerialNumberIsValid) && ( [[[s infoDictionary] objectForKey:@"appIdentifier"] isEqualToString:@"MT"] ) ) { - - NSFileManager *fm = [NSFileManager defaultManager]; - - if ( ! [fm fileExistsAtPath:APP_SUPPORT_PATH_STRING] ) { - [fm createDirectoryAtPath:APP_SUPPORT_PATH_STRING attributes:nil]; - } - - [[NSDictionary dictionaryWithObjectsAndKeys: - o, @"Owner", - k, @"Key", - nil] writeToFile:LICENSE_PATH_STRING atomically:YES]; - - checkDone = 2475; - - NSBeginInformationalAlertSheet(NSLocalizedString(@"validated_title", @"Validated Title"), - @"Thank You!", nil, nil, - window, - self, - @selector(finishValidSheet:returnCode:contextInfo:), - nil, - nil, - NSLocalizedString(@"validated_msg", @"Validated Message")); - - } else { - - NSBeginAlertSheet(NSLocalizedString(@"failed_title", @"Failed Title"), - @"Try Again", nil, nil, - window, - self, - nil, nil, nil, - NSLocalizedString(@"failed_msg", @"Failed Message")); - } - [[MainController sharedController] blingTime]; -} - -- (int)checkKeyFile -{ - NSString *p = LICENSE_PATH_STRING; - MTeSerialNumber *k = [[[MTeSerialNumber alloc] initWithContentsOfFile:p - extra:@"" - publisher:@"04611"] autorelease]; - if ( k && ([k isValid] == ITeSerialNumberIsValid) && ( [[[k infoDictionary] objectForKey:@"appIdentifier"] isEqualToString:@"MT"] )) { - return 7465; - } else { - [[NSFileManager defaultManager] removeFileAtPath:p handler:nil]; - return 0; - } - -} - -- (int)checkDone -{ - if ( ! (checkDone == 2475) ) { - if ( ! ([self checkKeyFile] == 7465) ) { - checkDone = 0; - } else { - checkDone = 2475; - } - } - return checkDone; -} - -- (void)finishValidSheet:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo -{ - [window orderOut:self]; -} - -@end diff --git a/MTShizzleWindow.h b/MTShizzleWindow.h deleted file mode 100755 index ea1fac4..0000000 --- a/MTShizzleWindow.h +++ /dev/null @@ -1,18 +0,0 @@ -#import - -@interface MTShizzleWindow : NSWindow -{ - NSTextField *regMessage, *regBenefits, *enterInfo, *owner, *key; - NSTextField *ownerEntry, *keyEntry; - NSView *contentView; - NSBox *box; - NSButton *registerButton, *regLater, *verifyKey; - - id _sender; -} - -+ (id)sharedWindowForSender:(id)sender; -- (NSString *)owner; -- (NSString *)key; - -@end \ No newline at end of file diff --git a/MTShizzleWindow.m b/MTShizzleWindow.m deleted file mode 100755 index 53a3072..0000000 --- a/MTShizzleWindow.m +++ /dev/null @@ -1,193 +0,0 @@ -#import "MTShizzleWindow.h" -#import "MainController.h" - -@interface MTShizzleWindow (Private) -- (void)setBling:(id)bling; -- (void)buildWindow; -- (void)setTargets; -@end - -@implementation MTShizzleWindow - -static MTShizzleWindow *_privateSharedWindow = nil; - -+ (id)sharedWindowForSender:(id)sender -{ - if( _privateSharedWindow ) { - [_privateSharedWindow setBling:sender]; - return _privateSharedWindow; - } else { - _privateSharedWindow = [[MTShizzleWindow alloc] - initWithContentRect:NSMakeRect(0, 0, 385, 353) - styleMask:NSTitledWindowMask - backing:NSBackingStoreBuffered - defer:YES]; - [_privateSharedWindow setBling:sender]; - return _privateSharedWindow; - } -} - -- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag -{ - if ( (self = [super initWithContentRect:contentRect - styleMask:styleMask - backing:backingType - defer:flag]) ) { - [self setLevel:NSStatusWindowLevel]; - [self buildWindow]; - } - return self; -} - -- (void)makeKeyAndOrderFront:(id)sender { - if ( ( [[NSDate date] timeIntervalSinceDate:[[MainController sharedController] getBlingTime]] >= 604800 ) && ([[regLater title] isEqualToString:@"Register Later"]) ) { - [regLater setTitle:@"Quit"]; - [regLater setTarget:[NSApplication sharedApplication]]; - [regLater setAction:@selector(terminate:)]; - } - [super makeKeyAndOrderFront:sender]; -} - -- (void)dealloc -{ - [regMessage release]; - [regBenefits release]; - [enterInfo release]; - [owner release]; - [key release]; - [ownerEntry release]; - [keyEntry release]; - [registerButton release]; - [regLater release]; - [verifyKey release]; - [contentView release]; - [box release]; - [super dealloc]; -} - -- (void)setBling:(id)bling -{ - _sender = bling; - [self setTargets]; -} - -- (void)buildWindow -{ - unichar returnChar = '\r'; - - [self setReleasedWhenClosed:NO]; - [self setTitle:NSLocalizedString(@"registerMenuTunes", @"Register MenuTunes")]; - contentView = [self contentView]; - - regMessage = [[NSTextField alloc] initWithFrame:NSMakeRect(20, 282, 345, 51)]; - [regMessage setStringValue:NSLocalizedString(@"sharewareMessage", @"MenuTunes is shareware. If you find it to be a valuable tool, please click the button below to buy your copy. Your support is greatly appreciated.")]; - [regMessage setBordered:NO]; - [regMessage setBezeled:NO]; - [regMessage setEditable:NO]; - [regMessage setSelectable:NO]; - [regMessage setDrawsBackground:NO]; - [contentView addSubview:regMessage]; - - //Make me gray! - box = [[NSBox alloc] initWithFrame:NSMakeRect(20, 181, 345, 81)]; - [box setTitlePosition:NSNoTitle]; - [box setBorderType:NSBezelBorder]; - [contentView addSubview:box]; - - //This isn't tall enough - registerButton = [[NSButton alloc] initWithFrame:NSMakeRect(24, 13, 115, 49)]; - [registerButton setImage:[NSImage imageNamed:@"esellerate"]]; - [registerButton setButtonType:NSMomentaryPushButton]; - [registerButton setBezelStyle:NSRegularSquareBezelStyle]; - [registerButton setTarget:_sender]; - [registerButton setAction:@selector(goToTheStore:)]; - [[box contentView] addSubview:registerButton]; - - regBenefits = [[NSTextField alloc] initWithFrame:NSMakeRect(152, 16, 175, 42)]; - [regBenefits setStringValue:NSLocalizedString(@"regPoints", @"Registration Points")]; - [regBenefits setBordered:NO]; - [regBenefits setBezeled:NO]; - [regBenefits setEditable:NO]; - [regBenefits setSelectable:NO]; - [regBenefits setDrawsBackground:NO]; - [regBenefits setFont:[NSFont fontWithName:@"LucidaGrande" size:11]]; - [[box contentView] addSubview:regBenefits]; - - enterInfo = [[NSTextField alloc] initWithFrame:NSMakeRect(20, 148, 345, 17)]; - [enterInfo setStringValue:NSLocalizedString(@"regInfo", @"Please enter your registration information below.")]; - [enterInfo setBordered:NO]; - [enterInfo setBezeled:NO]; - [enterInfo setEditable:NO]; - [enterInfo setSelectable:NO]; - [enterInfo setDrawsBackground:NO]; - [enterInfo setFont:[NSFont fontWithName:@"Lucida Grande" size:13]]; - [contentView addSubview:enterInfo]; - - owner = [[NSTextField alloc] initWithFrame:NSMakeRect(20, 126, 345, 14)]; - [owner setStringValue:NSLocalizedString(@"licenseOwner", @"License Owner:")]; - [owner setBordered:NO]; - [owner setBezeled:NO]; - [owner setEditable:NO]; - [owner setSelectable:NO]; - [owner setDrawsBackground:NO]; - [owner setFont:[NSFont fontWithName:@"Lucida Grande" size:11]]; - [contentView addSubview:owner]; - - key = [[NSTextField alloc] initWithFrame:NSMakeRect(20, 82, 345, 14)]; - [key setStringValue:NSLocalizedString(@"licenseKey", @"License Key:")]; - [key setBordered:NO]; - [key setBezeled:NO]; - [key setEditable:NO]; - [key setSelectable:NO]; - [key setDrawsBackground:NO]; - [key setFont:[NSFont fontWithName:@"Lucida Grande" size:11]]; - [contentView addSubview:key]; - - ownerEntry = [[NSTextField alloc] initWithFrame:NSMakeRect(20, 104, 345, 22)]; - [ownerEntry setTarget:_sender]; - [ownerEntry setAction:@selector(verifyKey:)]; - [contentView addSubview:ownerEntry]; - - keyEntry = [[NSTextField alloc] initWithFrame:NSMakeRect(20, 60, 345, 22)]; - [keyEntry setTarget:_sender]; - [keyEntry setAction:@selector(verifyKey:)]; - [contentView addSubview:keyEntry]; - - regLater = [[NSButton alloc] initWithFrame:NSMakeRect(138, 16, 116, 25)]; - [regLater setTitle:NSLocalizedString(@"registerLater", @"Register Later")]; - [regLater setFont:[NSFont systemFontOfSize:[NSFont systemFontSize]]]; - [regLater setTarget:_sender]; - [regLater setAction:@selector(registerLater:)]; - [regLater setBezelStyle:NSRoundedBezelStyle]; - [contentView addSubview:regLater]; - - verifyKey = [[NSButton alloc] initWithFrame:NSMakeRect(255, 16, 116, 25)]; - [verifyKey setTitle:NSLocalizedString(@"verifyKey", @"Verify Key")]; - [verifyKey setFont:[NSFont systemFontOfSize:[NSFont systemFontSize]]]; - [verifyKey setTarget:_sender]; - [verifyKey setAction:@selector(verifyKey:)]; - [verifyKey setBezelStyle:NSRoundedBezelStyle]; - [verifyKey setKeyEquivalent:[NSString stringWithCharacters:&returnChar length:1]]; - [contentView addSubview:verifyKey]; -} - -- (void)setTargets -{ - [registerButton setTarget:_sender]; - [ownerEntry setTarget:_sender]; - [keyEntry setTarget:_sender]; - [regLater setTarget:_sender]; - [verifyKey setTarget:_sender]; -} - -- (NSString *)owner -{ - return [ownerEntry stringValue]; -} - -- (NSString *)key -{ - return [keyEntry stringValue]; -} - -@end diff --git a/MTeSerialNumber.h b/MTeSerialNumber.h deleted file mode 100755 index 3529dea..0000000 --- a/MTeSerialNumber.h +++ /dev/null @@ -1,132 +0,0 @@ -/* - * MenuTunes - * MTeSerialNumber - * Object which represents, and operates on, - * an eSellerate serial number. - * - * Original Author : Matt Judy - * Responsibility : Matt Judy - * - * Copyright (c) 2003 iThink Software. - * All Rights Reserved - * - */ - -#import - - -typedef enum { - ITeSerialNumberIsDead = -1 , - ITeSerialNumberIsInvalid = 0 , - ITeSerialNumberIsValid = 1 -} MTeSerialNumberValidationResult; - -typedef enum { - ITeSerialNumberWillNotExpire = -1 , - ITeSerialNumberHasExpired = 0 , - ITeSerialNumberWillExpire = 1 -} MTeSerialNumberExpirationResult; - - -@interface MTeSerialNumber : NSObject { - NSString *_serialNumber; - NSString *_nameBasedKey; - NSString *_extraDataKey; - NSString *_publisherKey; - - NSArray *_deadSerials; -} - -/*************************************************************************/ -#pragma mark - -#pragma mark INITIALIZATION METHODS -/*************************************************************************/ - -/*! - @method initWithSerialNumber:name:extra:publisher: - @abstract Creates an ITeSerialNumber with the information provided. - @discussion This is the designated initializer for this class. - @param serial The eSellerate serial number - @param name The name-based key for the serial number - @param extra This is present for future use. eSellerate does not use this data yet. Pass nil. - @param publisher The publisher key, provided by the Serial Number management part of eSellerate. - @result The newly initialized object. -*/ -- (id)initWithSerialNumber:(NSString *)serial - name:(NSString *)name - extra:(NSString *)extra // Extra data not used. Pass nil. - publisher:(NSString *)publisher; - -/*! - @method initWithDictionary: - @abstract Creates an ITeSerialNumber with the information provided in dictionary form - @discussion Utilizes initWithSerialNumber:name:extra:publisher: - @param dict Consists of 4 keys, and 4 NSStrings. The keys must be named - "Key", "Owner", "Extra", and "Publisher". - @result The newly initialized object. -*/ -- (id)initWithDictionary:(NSDictionary *)dict; - -/*! - @method initWithContentsOfFile:extra:publisher: - @abstract Creates an ITeSerialNumber from the combination of a plist, and arguments. - @discussion Only the serial (Key) and name (Owner) should ever be stored in the plist, - for security. This method will ignore any other data present in the file. - @param path Path to the file on disk. This file must be a plist containing one dictionary. - @param extra eSellerate extra data. Currently unused by eSellerate. Pass nil. - @param publisher The publisher key, provided by the Serial Number management part of eSellerate. - @result The newly initialized object. -*/ -- (id)initWithContentsOfFile:(NSString *)path - extra:(NSString *)extra - publisher:(NSString *)publisher; - - -/*************************************************************************/ -#pragma mark - -#pragma mark ACCESSOR METHODS -/*************************************************************************/ - -- (NSString *)serialNumber; -- (void)setSerialNumber:(NSString *)newSerial; - -- (NSString *)nameBasedKey; -- (void)setNameBasedKey:(NSString *)newName; - -- (NSString *)extraDataKey; -- (void)setExtraDataKey:(NSString *)newData; - -- (NSString *)publisherKey; -- (void)setPublisherKey:(NSString *)newPublisher; - -- (NSArray *)deadSerials; -- (void)setDeadSerials:(NSArray *)newList; - - -/*************************************************************************/ -#pragma mark - -#pragma mark INSTANCE METHODS -/*************************************************************************/ - -/*! - @method isValid - @abstract Checks the current serial for validity. - @result ITeSerialNumberValidationResult, based on the current serial's validity. -*/ -- (MTeSerialNumberValidationResult)isValid; - -/*! - @method isExpired - @abstract Tests for validity, and returns whether or not the - serial is expired, or will expire. - @result YES if the serial will expire, NO if it will not. -*/ -- (MTeSerialNumberExpirationResult)isExpired; - -- (NSDate *)storedDate; - -- (NSTimeInterval)secondsRemaining; - -- (NSDictionary *)infoDictionary; - -@end diff --git a/MTeSerialNumber.m b/MTeSerialNumber.m deleted file mode 100755 index a4882ce..0000000 --- a/MTeSerialNumber.m +++ /dev/null @@ -1,243 +0,0 @@ -#import "MTeSerialNumber.h" -#import "validate.h" -#import - -@interface MTeSerialNumber (Private) -- (short)validate; -- (eSellerate_String)eSellerateStringForString:(NSString *)string; -@end - -@implementation MTeSerialNumber - -/*************************************************************************/ -#pragma mark - -#pragma mark INITIALIZATION METHODS -/*************************************************************************/ - -- (id)initWithSerialNumber:(NSString *)serial - name:(NSString *)name - extra:(NSString *)extra - publisher:(NSString *)publisher -{ - if ( (self = [super init]) ) { - _serialNumber = serial; - _nameBasedKey = name; - _extraDataKey = nil; //extra data is currently unused. - _publisherKey = publisher; - _deadSerials = nil; - } - return self; -} - -- (id)initWithDictionary:(NSDictionary *)dict -{ - return [self initWithSerialNumber:[dict objectForKey:@"Key"] - name:[dict objectForKey:@"Owner"] - extra:[dict objectForKey:@"Extra"] - publisher:[dict objectForKey:@"Publisher"]]; -} - -- (id)initWithContentsOfFile:(NSString *)path - extra:(NSString *)extra - publisher:(NSString *)publisher -{ - NSDictionary *fileDict = [[[NSDictionary alloc] initWithContentsOfFile:path] autorelease]; - - if ( fileDict ) { - NSMutableDictionary *dict = [[[NSMutableDictionary alloc] initWithCapacity:4] autorelease]; - - [dict setObject:[fileDict objectForKey:@"Key"] forKey:@"Key"]; - [dict setObject:[fileDict objectForKey:@"Owner"] forKey:@"Owner"]; - [dict setObject:extra forKey:@"Extra"]; - [dict setObject:publisher forKey:@"Publisher"]; - - return [self initWithDictionary:dict]; - } else { - return nil; - } -} - - -/*************************************************************************/ -#pragma mark - -#pragma mark ACCESSOR METHODS -/*************************************************************************/ - -- (NSString *)serialNumber -{ - return _serialNumber; -} - -- (void)setSerialNumber:(NSString *)newSerial -{ - [_serialNumber autorelease]; - _serialNumber = [newSerial copy]; -} - -- (NSString *)nameBasedKey -{ - return _nameBasedKey; -} - -- (void)setNameBasedKey:(NSString *)newName -{ - [_nameBasedKey autorelease]; - _nameBasedKey = [newName copy]; -} - -- (NSString *)extraDataKey -{ - return _extraDataKey; -} - -- (void)setExtraDataKey:(NSString *)newData -{ - [_extraDataKey autorelease]; - _extraDataKey = [newData copy]; -} - -- (NSString *)publisherKey -{ - return _publisherKey; -} - -- (void)setPublisherKey:(NSString *)newPublisher -{ - [_publisherKey autorelease]; - _publisherKey = [newPublisher copy]; -} - -- (NSArray *)deadSerials -{ - return _deadSerials; -} - -- (void)setDeadSerials:(NSArray *)newList -{ - [_deadSerials autorelease]; - _deadSerials = [newList copy]; -} - - -/*************************************************************************/ -#pragma mark - -#pragma mark INSTANCE METHODS -/*************************************************************************/ - -- (MTeSerialNumberValidationResult)isValid -{ - if ( _serialNumber ) { - - BOOL dead = NO; - unsigned char *result = SHA1([[_serialNumber stringByAppendingString:@"-h4x0r"] UTF8String], [_serialNumber length] + 5, NULL); - if ([[[NSData dataWithBytes:result length:strlen(result)] description] isEqualToString:@""]) { - dead = YES; - } - - if ( [_deadSerials count] ) { - NSEnumerator *deadEnum = [_deadSerials objectEnumerator]; - id aDeadSerial; - - while ( (aDeadSerial = [deadEnum nextObject]) ) { - if ( [aDeadSerial isEqualToString:_serialNumber] ) { - dead = YES; - } - } - } - - if ( dead ) { - return ITeSerialNumberIsDead; - } else { - return ( ( [self validate] > 0 ) ? ITeSerialNumberIsValid : ITeSerialNumberIsInvalid ); - } - } else { - return nil; - } -} - -- (MTeSerialNumberExpirationResult)isExpired; -{ - return ( ! [self secondsRemaining] > 0 ); -} - -- (NSDate *)storedDate -{ - NSCalendarDate *refDate = [NSCalendarDate dateWithYear:2000 month:1 day:1 - hour:0 minute:0 second:0 - timeZone:[NSTimeZone systemTimeZone]]; - - NSTimeInterval secondsFromRefToExp = ([self validate] * 86400); - - return [[[NSDate alloc] initWithTimeInterval:secondsFromRefToExp - sinceDate:refDate] autorelease]; -} - -- (NSTimeInterval)secondsRemaining -{ - return [[self storedDate] timeIntervalSinceDate:[NSDate date]]; -} - -- (NSDictionary *)infoDictionary -{ - NSString *prefix = [[_serialNumber componentsSeparatedByString:@"-"] objectAtIndex:0]; - NSString *appIdentifier = nil; - NSString *version = nil; - NSString *typeCode = nil; - NSString *quantity = nil; - - if ( ( [prefix length] == 10 ) || ( [prefix length] == 7 ) ) { - appIdentifier = [_serialNumber substringWithRange:NSMakeRange(0,2)]; - version = [_serialNumber substringWithRange:NSMakeRange(2,3)]; - typeCode = [_serialNumber substringWithRange:NSMakeRange(5,2)]; - } else { - return nil; - } - - if ( [prefix length] == 10 ) { - quantity = [_serialNumber substringWithRange:NSMakeRange(7,3)]; - } - - return [NSDictionary dictionaryWithObjectsAndKeys: - appIdentifier, @"appIdentifier", - version, @"version", - typeCode, @"typeCode", - quantity, @"quantity", nil]; -} - - -/*************************************************************************/ -#pragma mark - -#pragma mark PRIVATE IMPLEMENTATIONS -/*************************************************************************/ - -- (short)validate -{ - eSellerate_String pSerial = [self eSellerateStringForString:_serialNumber]; - eSellerate_String pName = [self eSellerateStringForString:_nameBasedKey]; - eSellerate_String pExtraData = [self eSellerateStringForString:_extraDataKey]; - eSellerate_String pPublisher = [self eSellerateStringForString:_publisherKey]; - - return eSellerate_ValidateSerialNumber(pSerial, - pName, - pExtraData, - pPublisher); -} - -- (eSellerate_String)eSellerateStringForString:(NSString *)string -{ - if ( string ) { - NSMutableData *buffer = [[[NSMutableData alloc] initWithCapacity:256] autorelease]; - - CFStringGetPascalString( (CFStringRef)string, - [buffer mutableBytes], - 256, - CFStringGetSystemEncoding()); - - return (eSellerate_String)[buffer bytes]; - } else { - return nil; - } -} - - -@end diff --git a/MainController.h b/MainController.h index df1a287..472402a 100755 --- a/MainController.h +++ b/MainController.h @@ -17,9 +17,8 @@ #import #import #import -#import "MTBlingController.h" -#define MT_CURRENT_VERSION 1700 +#define MT_CURRENT_VERSION 1720 @class StatusWindowController, MenuController, NetworkController; @@ -42,10 +41,8 @@ NetworkController *networkController; NSUserDefaults *df; - MTBlingController *bling; - NSTimer *registerTimer, *_statusWindowUpdateTimer, *_audioscrobblerTimer; + NSTimer *_statusWindowUpdateTimer, *_audioscrobblerTimer; BOOL timerUpdating, _checkingForServer, _popped, _open, _needsPolling; - BOOL blinged; int _timeUpdateCount; //Keeps track of how many times the time has been updated in the info status window int _audioscrobblerInterval; NSLock *_serverCheckLock; @@ -54,12 +51,6 @@ - (void)menuClicked; -//Methods called from MenuController by menu items -- (NSDate*)getBlingTime; -- (void)blingTime; -- (void)blingNow; -- (BOOL)blingBling; - - (void)timerUpdate; - (void)playPause; diff --git a/MainController.m b/MainController.m index 4cfd11c..7fe136e 100755 --- a/MainController.m +++ b/MainController.m @@ -97,7 +97,6 @@ static MainController *sharedController; menuController = [[MenuController alloc] init]; df = [[NSUserDefaults standardUserDefaults] retain]; timerUpdating = NO; - blinged = NO; } return self; } @@ -176,14 +175,6 @@ static MainController *sharedController; withLength:NSSquareStatusItemLength]; } - /*bling = [[MTBlingController alloc] init]; - [self blingTime]; - registerTimer = [[NSTimer scheduledTimerWithTimeInterval:10.0 - target:self - selector:@selector(blingTime) - userInfo:nil - repeats:YES] retain];*/ - NS_DURING if ([[self currentRemote] playerRunningState] == ITMTRemotePlayerRunning) { [self applicationLaunched:nil]; @@ -209,14 +200,6 @@ static MainController *sharedController; [networkController startRemoteServerSearch]; [NSApp deactivate]; [self performSelector:@selector(rawr) withObject:nil afterDelay:1.0]; - - bling = [[MTBlingController alloc] init]; - [self blingTime]; - registerTimer = [[NSTimer scheduledTimerWithTimeInterval:10.0 - target:self - selector:@selector(blingTime) - userInfo:nil - repeats:YES] retain]; } - (void)rawr @@ -278,92 +261,6 @@ static MainController *sharedController; [pool release]; }*/ -- (void)setBlingTime:(NSDate*)date -{ - NSMutableDictionary *globalPrefs; - [df synchronize]; - globalPrefs = [[df persistentDomainForName:@".GlobalPreferences"] mutableCopy]; - if (date) { - [globalPrefs setObject:date forKey:@"ITMTTrialStart"]; - [globalPrefs setObject:[NSNumber numberWithInt:MT_CURRENT_VERSION] forKey:@"ITMTTrialVers"]; - } else { - [globalPrefs removeObjectForKey:@"ITMTTrialStart"]; - [globalPrefs removeObjectForKey:@"ITMTTrialVers"]; - } - [df setPersistentDomain:globalPrefs forName:@".GlobalPreferences"]; - [df synchronize]; - [globalPrefs release]; -} - -- (NSDate*)getBlingTime -{ - [df synchronize]; - return [[df persistentDomainForName:@".GlobalPreferences"] objectForKey:@"ITMTTrialStart"]; -} - -- (void)blingTime -{ - NSDate *now = [NSDate date]; - if (![self blingBling]) { - if ( (! [self getBlingTime] ) || ([now timeIntervalSinceDate:[self getBlingTime]] < 0) ) { - [self setBlingTime:now]; - } else if ([[[df persistentDomainForName:@".GlobalPreferences"] objectForKey:@"ITMTTrialVers"] intValue] < MT_CURRENT_VERSION) { - if ([now timeIntervalSinceDate:[self getBlingTime]] >= 345600) { - [self setBlingTime:[now addTimeInterval:-259200]]; - } else { - NSMutableDictionary *globalPrefs; - [df synchronize]; - globalPrefs = [[df persistentDomainForName:@".GlobalPreferences"] mutableCopy]; - [globalPrefs setObject:[NSNumber numberWithInt:MT_CURRENT_VERSION] forKey:@"ITMTTrialVers"]; - [df setPersistentDomain:globalPrefs forName:@".GlobalPreferences"]; - [df synchronize]; - [globalPrefs release]; - } - } - - if ( ([now timeIntervalSinceDate:[self getBlingTime]] >= 604800) && (blinged != YES) ) { - blinged = YES; - [statusItem setEnabled:NO]; - [[ITHotKeyCenter sharedCenter] setEnabled:NO]; - if ([refreshTimer isValid]) { - [refreshTimer invalidate]; - [refreshTimer release]; - refreshTimer = nil; - } - [statusWindowController showRegistrationQueryWindow]; - } - } else { - if (blinged) { - [statusItem setEnabled:YES]; - [[ITHotKeyCenter sharedCenter] setEnabled:YES]; - if (_needsPolling && ![refreshTimer isValid]) { - [refreshTimer release]; - refreshTimer = [[NSTimer scheduledTimerWithTimeInterval:([networkController isConnectedToServer] ? 10.0 : 0.5) - target:self - selector:@selector(timerUpdate) - userInfo:nil - repeats:YES] retain]; - } - blinged = NO; - } - [self setBlingTime:nil]; - } -} - -- (void)blingNow -{ - [bling showPanel]; -} - -- (BOOL)blingBling -{ - if ( ! ([bling checkDone] == 2475) ) { - return NO; - } else { - return YES; - } -} - - (BOOL)songIsPlaying { NSString *identifier = nil; @@ -1539,24 +1436,6 @@ static MainController *sharedController; } } -- (void)registerNowOK -{ - [(StatusWindow *)[StatusWindow sharedWindow] setLocked:NO]; - [[StatusWindow sharedWindow] vanish:self]; - [[StatusWindow sharedWindow] setIgnoresMouseEvents:YES]; - - [self blingNow]; -} - -- (void)registerNowCancel -{ - [(StatusWindow *)[StatusWindow sharedWindow] setLocked:NO]; - [[StatusWindow sharedWindow] vanish:self]; - [[StatusWindow sharedWindow] setIgnoresMouseEvents:YES]; - - [NSApp terminate:self]; -} - /*************************************************************************/ #pragma mark - #pragma mark NETWORK HANDLERS @@ -1804,7 +1683,7 @@ static MainController *sharedController; - (void)applicationDidBecomeActive:(NSNotification *)note { //This appears to not work in 10.4 - if (_open && !blinged && ![[ITAboutWindowController sharedController] isVisible] && ![NSApp mainWindow] && ([[StatusWindow sharedWindow] exitMode] == ITTransientStatusWindowExitAfterDelay)) { + if (_open && ![[ITAboutWindowController sharedController] isVisible] && ![NSApp mainWindow] && ([[StatusWindow sharedWindow] exitMode] == ITTransientStatusWindowExitAfterDelay)) { [[MainController sharedController] showPreferences]; } } @@ -1817,7 +1696,6 @@ static MainController *sharedController; - (void)dealloc { [self applicationTerminated:nil]; - [bling release]; [statusItem release]; [statusWindowController release]; [menuController release]; diff --git a/MenuController.h b/MenuController.h index 5768a39..d3590fe 100755 --- a/MenuController.h +++ b/MenuController.h @@ -35,8 +35,7 @@ typedef enum { MTMenuShowPlayerItem, MTMenuPreferencesItem, MTMenuAboutItem, - MTMenuQuitItem, - MTMenuRegisterItem + MTMenuQuitItem } MTMenuItemTag; @interface MenuController : NSObject diff --git a/MenuController.m b/MenuController.m index ea2e1a8..602cb08 100755 --- a/MenuController.m +++ b/MenuController.m @@ -233,12 +233,6 @@ [tempItem setTag:MTMenuAboutItem]; [tempItem setTarget:self]; } else if ([nextObject isEqualToString:@"quit"]) { - if ([[MainController sharedController] blingBling] == NO) { - ITDebugLog(@"Add \"Register MenuTunes...\" menu item."); - tempItem = [menu addItemWithTitle:NSLocalizedString(@"register", @"Register MenuTunes...") action:@selector(performMainMenuAction:) keyEquivalent:@""]; - [tempItem setTag:MTMenuRegisterItem]; - [tempItem setTarget:self]; - } ITDebugLog(@"Add \"Quit\" menu item."); tempItem = [menu addItemWithTitle:NSLocalizedString(@"quit", @"Quit") action:@selector(performMainMenuAction:) @@ -488,12 +482,6 @@ tempItem = [menu addItemWithTitle:NSLocalizedString(@"preferences", @"Preferences...") action:@selector(performMainMenuAction:) keyEquivalent:@""]; [tempItem setTag:MTMenuPreferencesItem]; [tempItem setTarget:self]; - if ([[MainController sharedController] blingBling] == NO) { - ITDebugLog(@"Add \"Register MenuTunes...\" menu item."); - tempItem = [menu addItemWithTitle:NSLocalizedString(@"register", @"Register MenuTunes...") action:@selector(performMainMenuAction:) keyEquivalent:@""]; - [tempItem setTag:MTMenuRegisterItem]; - [tempItem setTarget:self]; - } ITDebugLog(@"Add \"Quit\" menu item."); tempItem = [menu addItemWithTitle:NSLocalizedString(@"quit", @"Quit") action:@selector(performMainMenuAction:) keyEquivalent:@""]; [tempItem setTag:MTMenuQuitItem]; @@ -920,10 +908,6 @@ ITDebugLog(@"Performing Menu Action: Quit"); [[MainController sharedController] quitMenuTunes]; break; - case MTMenuRegisterItem: - ITDebugLog(@"Performing Menu Action: Register"); - [[MainController sharedController] blingNow]; - break; default: ITDebugLog(@"Performing Menu Action: Unimplemented Menu Item OR Child-bearing Menu Item"); break; diff --git a/MenuTunes.xcodeproj/project.pbxproj b/MenuTunes.xcodeproj/project.pbxproj index 4dd83a4..43486e5 100755 --- a/MenuTunes.xcodeproj/project.pbxproj +++ b/MenuTunes.xcodeproj/project.pbxproj @@ -11,7 +11,6 @@ 3739DDA408CFA0C600CCFBC6 /* PlaylistNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 3739DDA208CFA0C600CCFBC6 /* PlaylistNode.m */; }; 3739DDA508CFA0C600CCFBC6 /* PlaylistNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3739DDA108CFA0C600CCFBC6 /* PlaylistNode.h */; }; 3739DDA608CFA0C600CCFBC6 /* PlaylistNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 3739DDA208CFA0C600CCFBC6 /* PlaylistNode.m */; }; - 3769DD1709A01C0700573A04 /* libValidateUniversal.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3769DD1609A01C0700573A04 /* libValidateUniversal.a */; }; 3798C6B6091874600004C420 /* AudioscrobblerController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3798C6B4091874600004C420 /* AudioscrobblerController.h */; }; 3798C6B7091874600004C420 /* AudioscrobblerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3798C6B5091874600004C420 /* AudioscrobblerController.m */; }; 37A1EBDB091F07F700C2CE55 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37A1EBDA091F07F700C2CE55 /* Security.framework */; }; @@ -23,16 +22,10 @@ 7C331F9605A921C30088905B /* MainController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C331F9205A921C30088905B /* MainController.h */; }; 7C331F9705A921C30088905B /* MainController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C331F9305A921C30088905B /* MainController.m */; }; 7C331F9805A921C30088905B /* MenuController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C331F9405A921C30088905B /* MenuController.h */; }; - 7C331FA505A921E10088905B /* MTeSerialNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C331F9905A921E10088905B /* MTeSerialNumber.m */; }; - 7C331FA605A921E10088905B /* MTBlingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C331F9A05A921E10088905B /* MTBlingController.h */; }; 7C331FA705A921E10088905B /* PreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C331F9B05A921E10088905B /* PreferencesController.m */; }; 7C331FA805A921E10088905B /* PreferencesController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C331F9C05A921E10088905B /* PreferencesController.h */; }; - 7C331FA905A921E10088905B /* MTShizzleWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C331F9D05A921E10088905B /* MTShizzleWindow.m */; }; - 7C331FAA05A921E10088905B /* MTeSerialNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C331F9E05A921E10088905B /* MTeSerialNumber.h */; }; 7C331FAB05A921E10088905B /* NetworkObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C331F9F05A921E10088905B /* NetworkObject.h */; }; 7C331FAC05A921E10088905B /* NetworkObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C331FA005A921E10088905B /* NetworkObject.m */; }; - 7C331FAD05A921E10088905B /* MTShizzleWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C331FA105A921E10088905B /* MTShizzleWindow.h */; }; - 7C331FAE05A921E10088905B /* MTBlingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C331FA205A921E10088905B /* MTBlingController.m */; }; 7C331FAF05A921E10088905B /* NetworkController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C331FA305A921E10088905B /* NetworkController.m */; }; 7C331FB005A921E10088905B /* NetworkController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C331FA405A921E10088905B /* NetworkController.h */; }; 7C331FB705A922210088905B /* StatusItemHack.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C331FB105A922210088905B /* StatusItemHack.m */; }; @@ -44,10 +37,8 @@ 7C331FC005A922490088905B /* ITMTRemote.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C331FBE05A922490088905B /* ITMTRemote.m */; }; 7C331FC305A9225A0088905B /* iTunesRemote.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C331FC105A9225A0088905B /* iTunesRemote.m */; }; 7C331FC405A9225A0088905B /* iTunesRemote.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C331FC205A9225A0088905B /* iTunesRemote.h */; }; - 7C331FD705A923190088905B /* Register.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 7C331FC505A923180088905B /* Register.tiff */; }; 7C331FD805A923190088905B /* Repeat.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 7C331FC605A923180088905B /* Repeat.tiff */; }; 7C331FD905A923190088905B /* Setup.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 7C331FC705A923180088905B /* Setup.tiff */; }; - 7C331FDA05A923190088905B /* esellerate.gif in Resources */ = {isa = PBXBuildFile; fileRef = 7C331FC805A923180088905B /* esellerate.gif */; }; 7C331FDB05A923190088905B /* MP3Player.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 7C331FC905A923180088905B /* MP3Player.tiff */; }; 7C331FDC05A923190088905B /* Shuffle.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 7C331FCA05A923190088905B /* Shuffle.tiff */; }; 7C331FDD05A923190088905B /* submenu.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 7C331FCB05A923190088905B /* submenu.tiff */; }; @@ -77,7 +68,6 @@ 7C505D430801F1D500017AF9 /* ITKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C505D380801F0F000017AF9 /* ITKit.framework */; }; 7C505D440801F1E300017AF9 /* ITFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C505D340801F0F000017AF9 /* ITFoundation.framework */; }; 7C505D450801F1E300017AF9 /* ITMac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C505D360801F0F000017AF9 /* ITMac.framework */; }; - 7C95A0CF05A9299E00B4F576 /* validate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C95A0CE05A9299E00B4F576 /* validate.h */; }; 7C95A0E305A929F400B4F576 /* CustomMenuTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C95A0E105A929F400B4F576 /* CustomMenuTableView.m */; }; 7C95A0E405A929F400B4F576 /* CustomMenuTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C95A0E205A929F400B4F576 /* CustomMenuTableView.h */; }; 7C95A0E905A92B0700B4F576 /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C95A0E805A92B0700B4F576 /* libcrypto.dylib */; }; @@ -91,34 +81,6 @@ 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; /* End PBXBuildFile section */ -/* Begin PBXBuildStyle section */ - 4A9504CCFFE6A4B311CA0CBA /* Development */ = { - isa = PBXBuildStyle; - buildSettings = { - COPY_PHASE_STRIP = NO; - DEBUGGING_SYMBOLS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - OPTIMIZATION_CFLAGS = "-O0"; - ZERO_LINK = NO; - }; - name = Development; - }; - 4A9504CDFFE6A4B311CA0CBA /* Deployment */ = { - isa = PBXBuildStyle; - buildSettings = { - COPY_PHASE_STRIP = YES; - DEAD_CODE_STRIPPING = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - MACOSX_DEPLOYMENT_TARGET = 10.2; - ZERO_LINK = NO; - }; - name = Deployment; - }; -/* End PBXBuildStyle section */ - /* Begin PBXContainerItemProxy section */ 7C2A8858092266F7007A4F41 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -242,31 +204,24 @@ 32CA4F630368D1EE00C91783 /* MenuTunes_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuTunes_Prefix.pch; sourceTree = ""; }; 3739DDA108CFA0C600CCFBC6 /* PlaylistNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlaylistNode.h; sourceTree = ""; }; 3739DDA208CFA0C600CCFBC6 /* PlaylistNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlaylistNode.m; sourceTree = ""; }; - 3769DD1609A01C0700573A04 /* libValidateUniversal.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libValidateUniversal.a; sourceTree = ""; }; 3798C6B4091874600004C420 /* AudioscrobblerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioscrobblerController.h; sourceTree = ""; }; 3798C6B5091874600004C420 /* AudioscrobblerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AudioscrobblerController.m; sourceTree = ""; }; 37A1EBDA091F07F700C2CE55 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = ""; }; 37B7EA0306AECF0700A4DE86 /* ChasingArrow.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = ChasingArrow.tiff; sourceTree = ""; }; 7C331F6805A918EC0088905B /* ITMTRemote.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ITMTRemote.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7C331F6905A918EC0088905B /* ITMTRemote-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "ITMTRemote-Info.plist"; sourceTree = SOURCE_ROOT; }; + 7C331F6905A918EC0088905B /* ITMTRemote-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ITMTRemote-Info.plist"; sourceTree = SOURCE_ROOT; }; 7C331F6F05A918FB0088905B /* iTunes.remote */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iTunes.remote; sourceTree = BUILT_PRODUCTS_DIR; }; - 7C331F7005A918FB0088905B /* iTunesRemote-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "iTunesRemote-Info.plist"; sourceTree = SOURCE_ROOT; }; + 7C331F7005A918FB0088905B /* iTunesRemote-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iTunesRemote-Info.plist"; sourceTree = SOURCE_ROOT; }; 7C331F8D05A921AC0088905B /* MenuTunes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuTunes.h; sourceTree = ""; }; 7C331F8E05A921AC0088905B /* MenuTunes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuTunes.m; sourceTree = ""; }; 7C331F9105A921C30088905B /* MenuController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuController.m; sourceTree = ""; }; 7C331F9205A921C30088905B /* MainController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainController.h; sourceTree = ""; }; 7C331F9305A921C30088905B /* MainController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainController.m; sourceTree = ""; }; 7C331F9405A921C30088905B /* MenuController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuController.h; sourceTree = ""; }; - 7C331F9905A921E10088905B /* MTeSerialNumber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MTeSerialNumber.m; sourceTree = ""; }; - 7C331F9A05A921E10088905B /* MTBlingController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTBlingController.h; sourceTree = ""; }; 7C331F9B05A921E10088905B /* PreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PreferencesController.m; sourceTree = ""; }; 7C331F9C05A921E10088905B /* PreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreferencesController.h; sourceTree = ""; }; - 7C331F9D05A921E10088905B /* MTShizzleWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MTShizzleWindow.m; sourceTree = ""; }; - 7C331F9E05A921E10088905B /* MTeSerialNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTeSerialNumber.h; sourceTree = ""; }; 7C331F9F05A921E10088905B /* NetworkObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkObject.h; sourceTree = ""; }; 7C331FA005A921E10088905B /* NetworkObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NetworkObject.m; sourceTree = ""; }; - 7C331FA105A921E10088905B /* MTShizzleWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTShizzleWindow.h; sourceTree = ""; }; - 7C331FA205A921E10088905B /* MTBlingController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MTBlingController.m; sourceTree = ""; }; 7C331FA305A921E10088905B /* NetworkController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NetworkController.m; sourceTree = ""; }; 7C331FA405A921E10088905B /* NetworkController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkController.h; sourceTree = ""; }; 7C331FB105A922210088905B /* StatusItemHack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StatusItemHack.m; sourceTree = ""; }; @@ -279,10 +234,8 @@ 7C331FBE05A922490088905B /* ITMTRemote.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ITMTRemote.m; sourceTree = ""; }; 7C331FC105A9225A0088905B /* iTunesRemote.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iTunesRemote.m; sourceTree = ""; }; 7C331FC205A9225A0088905B /* iTunesRemote.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iTunesRemote.h; sourceTree = ""; }; - 7C331FC505A923180088905B /* Register.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Register.tiff; sourceTree = ""; }; 7C331FC605A923180088905B /* Repeat.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Repeat.tiff; sourceTree = ""; }; 7C331FC705A923180088905B /* Setup.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Setup.tiff; sourceTree = ""; }; - 7C331FC805A923180088905B /* esellerate.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = esellerate.gif; sourceTree = ""; }; 7C331FC905A923180088905B /* MP3Player.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = MP3Player.tiff; sourceTree = ""; }; 7C331FCA05A923190088905B /* Shuffle.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Shuffle.tiff; sourceTree = ""; }; 7C331FCB05A923190088905B /* submenu.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = submenu.tiff; sourceTree = ""; }; @@ -303,7 +256,6 @@ 7C505D250801F0BE00017AF9 /* ITKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ITKit.xcodeproj; path = ../ITKit/ITKit.xcodeproj; sourceTree = SOURCE_ROOT; }; 7C505D290801F0C700017AF9 /* ITMac.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ITMac.xcodeproj; path = ../ITMac/ITMac.xcodeproj; sourceTree = SOURCE_ROOT; }; 7C505D2D0801F0D100017AF9 /* ITFoundation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ITFoundation.xcodeproj; path = ../ITFoundation/ITFoundation.xcodeproj; sourceTree = SOURCE_ROOT; }; - 7C95A0CE05A9299E00B4F576 /* validate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validate.h; sourceTree = SOURCE_ROOT; }; 7C95A0E105A929F400B4F576 /* CustomMenuTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomMenuTableView.m; sourceTree = ""; }; 7C95A0E205A929F400B4F576 /* CustomMenuTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomMenuTableView.h; sourceTree = ""; }; 7C95A0E805A92B0700B4F576 /* libcrypto.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcrypto.dylib; path = /usr/lib/libcrypto.dylib; sourceTree = ""; }; @@ -344,7 +296,6 @@ 7C95A0E905A92B0700B4F576 /* libcrypto.dylib in Frameworks */, 7C95A0F005A92B4800B4F576 /* Carbon.framework in Frameworks */, 37A1EBDB091F07F700C2CE55 /* Security.framework in Frameworks */, - 3769DD1709A01C0700573A04 /* libValidateUniversal.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -366,12 +317,6 @@ 7C331F9B05A921E10088905B /* PreferencesController.m */, 7C331F9F05A921E10088905B /* NetworkObject.h */, 7C331FA005A921E10088905B /* NetworkObject.m */, - 7C331FA105A921E10088905B /* MTShizzleWindow.h */, - 7C331F9D05A921E10088905B /* MTShizzleWindow.m */, - 7C331F9A05A921E10088905B /* MTBlingController.h */, - 7C331FA205A921E10088905B /* MTBlingController.m */, - 7C331F9E05A921E10088905B /* MTeSerialNumber.h */, - 7C331F9905A921E10088905B /* MTeSerialNumber.m */, 7C331FA405A921E10088905B /* NetworkController.h */, 7C331FA305A921E10088905B /* NetworkController.m */, 7C331FB205A922210088905B /* StatusItemHack.h */, @@ -398,7 +343,6 @@ 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, 7C95A0EF05A92B4800B4F576 /* Carbon.framework */, 37A1EBDA091F07F700C2CE55 /* Security.framework */, - 3769DD1609A01C0700573A04 /* libValidateUniversal.a */, 7C95A0E805A92B0700B4F576 /* libcrypto.dylib */, ); name = "Linked Frameworks"; @@ -439,7 +383,6 @@ isa = PBXGroup; children = ( 32CA4F630368D1EE00C91783 /* MenuTunes_Prefix.pch */, - 7C95A0CE05A9299E00B4F576 /* validate.h */, 29B97316FDCFA39411CA2CEA /* main.m */, ); name = "Other Sources"; @@ -457,10 +400,8 @@ 29B97318FDCFA39411CA2CEA /* MainMenu.nib */, 7C331FE905A923580088905B /* Preferences.nib */, 37B7EA0306AECF0700A4DE86 /* ChasingArrow.tiff */, - 7C331FC505A923180088905B /* Register.tiff */, 7C331FC605A923180088905B /* Repeat.tiff */, 7C331FC705A923180088905B /* Setup.tiff */, - 7C331FC805A923180088905B /* esellerate.gif */, 7C331FC905A923180088905B /* MP3Player.tiff */, 7C331FCA05A923190088905B /* Shuffle.tiff */, 7C331FCB05A923190088905B /* submenu.tiff */, @@ -544,16 +485,12 @@ 7C331F8F05A921AC0088905B /* MenuTunes.h in Headers */, 7C331F9605A921C30088905B /* MainController.h in Headers */, 7C331F9805A921C30088905B /* MenuController.h in Headers */, - 7C331FA605A921E10088905B /* MTBlingController.h in Headers */, 7C331FA805A921E10088905B /* PreferencesController.h in Headers */, - 7C331FAA05A921E10088905B /* MTeSerialNumber.h in Headers */, 7C331FAB05A921E10088905B /* NetworkObject.h in Headers */, - 7C331FAD05A921E10088905B /* MTShizzleWindow.h in Headers */, 7C331FB005A921E10088905B /* NetworkController.h in Headers */, 7C331FB805A922210088905B /* StatusItemHack.h in Headers */, 7C331FBA05A922210088905B /* StatusWindow.h in Headers */, 7C331FBC05A922210088905B /* StatusWindowController.h in Headers */, - 7C95A0CF05A9299E00B4F576 /* validate.h in Headers */, 7C95A0E405A929F400B4F576 /* CustomMenuTableView.h in Headers */, 3739DDA308CFA0C600CCFBC6 /* PlaylistNode.h in Headers */, 3798C6B6091874600004C420 /* AudioscrobblerController.h in Headers */, @@ -574,56 +511,11 @@ ); buildRules = ( ); - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = MenuTunes_Prefix.pch; - GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; - GCC_WARN_UNKNOWN_PRAGMAS = NO; - INFOPLIST_FILE = "ITMTRemote-Info.plist"; - INSTALL_PATH = "@executable_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.2; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ( - "-seg1addr", - 0x10000000, - ); - OTHER_REZFLAGS = ""; - PRODUCT_NAME = ITMTRemote; - WARNING_CFLAGS = "-Wmost"; - }; dependencies = ( ); name = ITMTRemote; productName = ITMTRemote; productReference = 7C331F6805A918EC0088905B /* ITMTRemote.framework */; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ITMTRemote - CFBundleGetInfoString - - CFBundleIdentifier - com.MySoftwareCompany.ITMTRemote - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - FMWK - CFBundleShortVersionString - - CFBundleSignature - ???? - CFBundleVersion - 1.0.0d1 - - -"; productType = "com.apple.product-type.framework"; }; 7C331F6E05A918FB0088905B /* iTunesRemote */ = { @@ -637,20 +529,6 @@ ); buildRules = ( ); - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = MenuTunes_Prefix.pch; - GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; - GCC_WARN_UNKNOWN_PRAGMAS = NO; - INFOPLIST_FILE = "iTunesRemote-Info.plist"; - INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; - MACOSX_DEPLOYMENT_TARGET = 10.2; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = iTunes; - WARNING_CFLAGS = "-Wmost"; - WRAPPER_EXTENSION = remote; - }; dependencies = ( 7C2A885F09226713007A4F41 /* PBXTargetDependency */, 7C2A886109226716007A4F41 /* PBXTargetDependency */, @@ -659,40 +537,12 @@ name = iTunesRemote; productName = iTunesRemote; productReference = 7C331F6F05A918FB0088905B /* iTunes.remote */; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - iTunesRemote - CFBundleGetInfoString - - CFBundleIconFile - - CFBundleIdentifier - com.MySoftwareCompany.iTunesRemote - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - APPL - CFBundleShortVersionString - - CFBundleSignature - ???? - CFBundleVersion - 1.0.0d1 - - -"; productType = "com.apple.product-type.bundle"; }; 8D1107260486CEB800E47090 /* MenuTunes */ = { isa = PBXNativeTarget; buildConfigurationList = 7C182ACF08A84C6300A098F8 /* Build configuration list for PBXNativeTarget "MenuTunes" */; buildPhases = ( - 7C505D860801F49F00017AF9 /* ShellScript */, 8D1107270486CEB800E47090 /* Headers */, 8D1107290486CEB800E47090 /* Resources */, 8D11072C0486CEB800E47090 /* Sources */, @@ -702,29 +552,6 @@ ); buildRules = ( ); - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ENABLE_TRIGRAPHS = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = MenuTunes_Prefix.pch; - GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; - GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; - GCC_WARN_UNKNOWN_PRAGMAS = NO; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = .; - MACOSX_DEPLOYMENT_TARGET = 10.2; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = "-bind_at_load"; - PRODUCT_NAME = MenuTunes; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - WRAPPER_EXTENSION = app; - }; dependencies = ( 7C2A885B092266FA007A4F41 /* PBXTargetDependency */, 7C2A8859092266F7007A4F41 /* PBXTargetDependency */, @@ -744,14 +571,7 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = 7C182AD308A84C6300A098F8 /* Build configuration list for PBXProject "MenuTunes" */; - buildSettings = { - MACOSX_DEPLOYMENT_TARGET = 10.2; - SDKROOT = /Developer/SDKs/MacOSX10.2.8.sdk; - }; - buildStyles = ( - 4A9504CCFFE6A4B311CA0CBA /* Development */, - 4A9504CDFFE6A4B311CA0CBA /* Deployment */, - ); + compatibilityVersion = "Xcode 2.4"; hasScannedForEncodings = 1; mainGroup = 29B97314FDCFA39411CA2CEA /* MenuTunes */; projectDirPath = ""; @@ -769,6 +589,7 @@ ProjectRef = 7C505D290801F0C700017AF9 /* ITMac.xcodeproj */; }, ); + projectRoot = ""; targets = ( 8D1107260486CEB800E47090 /* MenuTunes */, 7C331F6705A918EC0088905B /* ITMTRemote */, @@ -829,10 +650,8 @@ files = ( 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */, 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, - 7C331FD705A923190088905B /* Register.tiff in Resources */, 7C331FD805A923190088905B /* Repeat.tiff in Resources */, 7C331FD905A923190088905B /* Setup.tiff in Resources */, - 7C331FDA05A923190088905B /* esellerate.gif in Resources */, 7C331FDB05A923190088905B /* MP3Player.tiff in Resources */, 7C331FDC05A923190088905B /* Shuffle.tiff in Resources */, 7C331FDD05A923190088905B /* submenu.tiff in Resources */, @@ -856,22 +675,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 7C505D860801F49F00017AF9 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "ranlib libValidate.a"; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ 7C331F6505A918EC0088905B /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -898,11 +701,8 @@ 7C331F9005A921AC0088905B /* MenuTunes.m in Sources */, 7C331F9505A921C30088905B /* MenuController.m in Sources */, 7C331F9705A921C30088905B /* MainController.m in Sources */, - 7C331FA505A921E10088905B /* MTeSerialNumber.m in Sources */, 7C331FA705A921E10088905B /* PreferencesController.m in Sources */, - 7C331FA905A921E10088905B /* MTShizzleWindow.m in Sources */, 7C331FAC05A921E10088905B /* NetworkObject.m in Sources */, - 7C331FAE05A921E10088905B /* MTBlingController.m in Sources */, 7C331FAF05A921E10088905B /* NetworkController.m in Sources */, 7C331FB705A922210088905B /* StatusItemHack.m in Sources */, 7C331FBB05A922210088905B /* StatusWindow.m in Sources */, @@ -1021,7 +821,6 @@ INFOPLIST_FILE = "ITMTRemote-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.2; - OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( "-seg1addr", @@ -1102,7 +901,6 @@ INFOPLIST_FILE = "iTunesRemote-Info.plist"; INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; MACOSX_DEPLOYMENT_TARGET = 10.2; - OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = iTunes; @@ -1174,7 +972,6 @@ "$(SRCROOT)", ); MACOSX_DEPLOYMENT_TARGET = 10.2; - OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = "-bind_at_load"; PRODUCT_NAME = MenuTunes; diff --git a/OldMainController.h b/OldMainController.h deleted file mode 100755 index d96bbd1..0000000 --- a/OldMainController.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * MenuTunes - * MainController - * App Controller Class - * - * Original Author : Kent Sutherland - * Responsibility : Kent Sutherland - * - * Copyright (c) 2002-2003 iThink Software. - * All Rights Reserved - * - */ - - -#import -#import -#import -#import -#import -#import "PreferencesController.h" -#import "StatusWindow.h" - -@interface MainController : NSObject -{ - ITStatusItem *statusItem; - NSMenu *menu; - ITMTRemote *currentRemote; - NSMutableArray *remoteArray; - - //Used in updating the menu automatically - NSTimer *refreshTimer; - int trackInfoIndex; - - int lastPlaylistIndex; - NSString *lastSongIdentifier; - int lastSongRating; - BOOL isPlayingRadio; - - ITMTRemotePlayerRunningState isAppRunning; - - //For upcoming songs - NSMenuItem *upcomingSongsItem; - NSMenu *upcomingSongsMenu; - - //For playlist selection - NSMenuItem *playlistItem; - NSMenu *playlistMenu; - - //For EQ sets - NSMenuItem *eqItem; - NSMenu *eqMenu; - - //For song ratings - NSMenuItem *ratingItem; - NSMenu *ratingMenu; - - NSMenuItem *playPauseItem; //Toggle between 'Play' and 'Pause' - - StatusWindow *statusWindow; //Shows track info and upcoming songs. -} - -- (void)applicationLaunched:(NSNotification *)note; -- (void)applicationTerminated:(NSNotification *)note; - -- (void)rebuildMenu; - -- (ITMTRemote *)currentRemote; -- (void)clearHotKeys; -- (void)closePreferences; - -@end diff --git a/OldMainController.m b/OldMainController.m deleted file mode 100755 index 0ade694..0000000 --- a/OldMainController.m +++ /dev/null @@ -1,1050 +0,0 @@ -#import "MainController.h" -#import "PreferencesController.h" -#import "HotKeyCenter.h" -#import "StatusWindow.h" - -@interface MainController(Private) -- (ITMTRemote *)loadRemote; -- (void)rebuildUpcomingSongsMenu; -- (void)rebuildPlaylistMenu; -- (void)rebuildEQPresetsMenu; -- (void)updateRatingMenu; -- (void)setupHotKeys; -- (void)timerUpdate; -- (void)setKeyEquivalentForCode:(short)code andModifiers:(long)modifiers - onItem:(NSMenuItem *)item; - -@end - -@implementation MainController - -/*************************************************************************/ -#pragma mark - -#pragma mark INITIALIZATION/DEALLOCATION METHODS -/*************************************************************************/ - -- (id)init -{ - if ( ( self = [super init] ) ) { - remoteArray = [[NSMutableArray alloc] initWithCapacity:1]; - statusWindow = [StatusWindow sharedWindow]; - } - return self; -} - -- (void)dealloc -{ - if (refreshTimer) { - [refreshTimer invalidate]; - [refreshTimer release]; - refreshTimer = nil; - } - [currentRemote halt]; - [statusItem release]; - [menu release]; - [super dealloc]; -} - -- (void)applicationDidFinishLaunching:(NSNotification *)note -{ - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - currentRemote = [self loadRemote]; - - //Setup for notification of the remote player launching or quitting - [[[NSWorkspace sharedWorkspace] notificationCenter] - addObserver:self - selector:@selector(applicationTerminated:) - name:NSWorkspaceDidTerminateApplicationNotification - object:nil]; - - [[[NSWorkspace sharedWorkspace] notificationCenter] - addObserver:self - selector:@selector(applicationLaunched:) - name:NSWorkspaceDidLaunchApplicationNotification - object:nil]; - - if ( ! [defaults objectForKey:@"menu"] ) { // If this is nil, defaults have never been registered. - [[PreferencesController sharedPrefs] registerDefaults]; - } - - statusItem = [[ITStatusItem alloc] - initWithStatusBar:[NSStatusBar systemStatusBar] - withLength:NSSquareStatusItemLength]; - - menu = [[NSMenu alloc] initWithTitle:@""]; - if ( ( [currentRemote playerRunningState] == ITMTRemotePlayerRunning ) ) { - [self applicationLaunched:nil]; - } else { - [self applicationTerminated:nil]; - } - - [statusItem setImage:[NSImage imageNamed:@"menu"]]; - [statusItem setAlternateImage:[NSImage imageNamed:@"selected_image"]]; - // Below line of code is for creating builds for Beta Testers - // [statusItem setToolTip:@[NSString stringWithFormat:@"This Nontransferable Beta (Built on %s) of iThink Software's MenuTunes is Registered to: Beta Tester (betatester@somedomain.com).",__DATE__]]; -} - -- (void)applicationWillTerminate:(NSNotification *)note -{ - [self clearHotKeys]; - [[NSStatusBar systemStatusBar] removeStatusItem:statusItem]; -} - -- (ITMTRemote *)loadRemote -{ - NSString *folderPath = [[NSBundle mainBundle] builtInPlugInsPath]; - - if (folderPath) { - NSArray *bundlePathList = [NSBundle pathsForResourcesOfType:@"remote" inDirectory:folderPath]; - NSEnumerator *enumerator = [bundlePathList objectEnumerator]; - NSString *bundlePath; - - while ( (bundlePath = [enumerator nextObject]) ) { - NSBundle* remoteBundle = [NSBundle bundleWithPath:bundlePath]; - - if (remoteBundle) { - Class remoteClass = [remoteBundle principalClass]; - - if ([remoteClass conformsToProtocol:@protocol(ITMTRemote)] && - [remoteClass isKindOfClass:[NSObject class]]) { - - id remote = [remoteClass remote]; - [remoteArray addObject:remote]; - } - } - } - -// if ( [remoteArray count] > 0 ) { // UNCOMMENT WHEN WE HAVE > 1 PLUGIN -// if ( [remoteArray count] > 1 ) { -// [remoteArray sortUsingSelector:@selector(sortAlpha:)]; -// } -// [self loadModuleAccessUI]; //Comment out this line to disable remote visibility -// } - } -// NSLog(@"%@", [remoteArray objectAtIndex:0]); //DEBUG - return [remoteArray objectAtIndex:0]; -} - -// -// - -- (void)applicationLaunched:(NSNotification *)note -{ - if (!note || [[[note userInfo] objectForKey:@"NSApplicationName"] isEqualToString:[currentRemote playerFullName]]) { - [currentRemote begin]; - [self timerUpdate]; - [NSThread detachNewThreadSelector:@selector(startTimerInNewThread) toTarget:self withObject:nil]; - [self setupHotKeys]; - isAppRunning = ITMTRemotePlayerRunning; - } -} - -- (void)applicationTerminated:(NSNotification *)note -{ - if (!note || [[[note userInfo] objectForKey:@"NSApplicationName"] isEqualToString:[currentRemote playerFullName]]) { - NSMenu *notRunningMenu = [[NSMenu alloc] initWithTitle:@""]; - [notRunningMenu addItemWithTitle:[NSString stringWithFormat:@"Open %@", [currentRemote playerSimpleName]] action:@selector(showPlayer:) keyEquivalent:@""]; - [notRunningMenu addItem:[NSMenuItem separatorItem]]; - [notRunningMenu addItemWithTitle:@"Preferences..." action:@selector(showPreferences:) keyEquivalent:@""]; - [[notRunningMenu addItemWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@""] setTarget:NSApp]; - [statusItem setMenu:[notRunningMenu autorelease]]; - - [currentRemote halt]; - [refreshTimer invalidate]; - [refreshTimer release]; - refreshTimer = nil; - [self clearHotKeys]; - isAppRunning = ITMTRemotePlayerNotRunning; - } -} - -/*************************************************************************/ -#pragma mark - -#pragma mark INSTANCE METHODS -/*************************************************************************/ - -- (void)startTimerInNewThread -{ - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; - refreshTimer = [[NSTimer scheduledTimerWithTimeInterval:0.5 - target:self - selector:@selector(timerUpdate) - userInfo:nil - repeats:YES] retain]; - [runLoop run]; - [pool release]; -} - -//Recreate the status item menu -- (void)rebuildMenu -{ - NSUserDefaults *defaults; - NSArray *myMenu; - int playlist; - int i; - unichar fullstar = 0x2605; - unichar emptystar = 0x2606; - NSString *fullStarChar; - NSString *emptyStarChar; - - if ([currentRemote playerRunningState] == ITMTRemotePlayerNotRunning) { - return; - } - - defaults = [NSUserDefaults standardUserDefaults]; - myMenu = [defaults arrayForKey:@"menu"]; - playlist = [currentRemote currentPlaylistIndex]; - fullStarChar = [NSString stringWithCharacters:&fullstar length:1]; - emptyStarChar = [NSString stringWithCharacters:&emptystar length:1]; - - trackInfoIndex = -1; - lastPlaylistIndex = -1; - - [menu release]; - menu = [[NSMenu alloc] initWithTitle:@""]; - - //Release the old submenus - playPauseItem = nil; - upcomingSongsItem = nil; - [upcomingSongsMenu release]; - upcomingSongsMenu = nil; - playlistItem = nil; - [playlistMenu release]; - playlistMenu = nil; - eqItem = nil; - [eqMenu release]; - eqMenu = nil; - if (ratingItem) { - [ratingItem setSubmenu:nil]; - [ratingItem release]; - ratingItem = nil; - } - - //Build the rating menu - [ratingMenu release]; - ratingMenu = [[NSMenu alloc] initWithTitle:@""]; - [[ratingMenu addItemWithTitle:[NSString stringWithFormat:@"%@%@%@%@%@", emptyStarChar, emptyStarChar, emptyStarChar, emptyStarChar, emptyStarChar] action:@selector(selectSongRating:) keyEquivalent:@""] setTag:0]; - [[ratingMenu addItemWithTitle:[NSString stringWithFormat:@"%@%@%@%@%@", fullStarChar, emptyStarChar, emptyStarChar, emptyStarChar, emptyStarChar] action:@selector(selectSongRating:) keyEquivalent:@""] setTag:20]; - [[ratingMenu addItemWithTitle:[NSString stringWithFormat:@"%@%@%@%@%@", fullStarChar, fullStarChar, emptyStarChar, emptyStarChar, emptyStarChar] action:@selector(selectSongRating:) keyEquivalent:@""] setTag:40]; - [[ratingMenu addItemWithTitle:[NSString stringWithFormat:@"%@%@%@%@%@", fullStarChar, fullStarChar, fullStarChar, emptyStarChar, emptyStarChar] action:@selector(selectSongRating:) keyEquivalent:@""] setTag:60]; - [[ratingMenu addItemWithTitle:[NSString stringWithFormat:@"%@%@%@%@%@", fullStarChar, fullStarChar, fullStarChar, fullStarChar, emptyStarChar] action:@selector(selectSongRating:) keyEquivalent:@""] setTag:80]; - [[ratingMenu addItemWithTitle:[NSString stringWithFormat:@"%@%@%@%@%@", fullStarChar, fullStarChar, fullStarChar, fullStarChar, fullStarChar] action:@selector(selectSongRating:) keyEquivalent:@""] setTag:100]; - - //Build the custom menu - for (i = 0; i < [myMenu count]; i++) { - NSString *item = [myMenu objectAtIndex:i]; - if ([item isEqualToString:@"Play/Pause"]) { - ITKeyCombo *tempCombo = [[NSUserDefaults standardUserDefaults] keyComboForKey:@"PlayPause"]; - playPauseItem = [menu addItemWithTitle:@"Play" - action:@selector(playPause:) - keyEquivalent:@""]; - - if (tempCombo) { - [self setKeyEquivalentForCode:[tempCombo keyCode] - andModifiers:[tempCombo modifiers] onItem:playPauseItem]; - [tempCombo release]; - } - } else if ([item isEqualToString:@"Next Track"]) { - ITKeyCombo *tempCombo = [[NSUserDefaults standardUserDefaults] keyComboForKey:@"NextTrack"]; - NSMenuItem *nextTrack = [menu addItemWithTitle:@"Next Track" - action:@selector(nextSong:) - keyEquivalent:@""]; - - if (tempCombo) { - [self setKeyEquivalentForCode:[tempCombo keyCode] - andModifiers:[tempCombo modifiers] onItem:nextTrack]; - [tempCombo release]; - } - } else if ([item isEqualToString:@"Previous Track"]) { - ITKeyCombo *tempCombo = [[NSUserDefaults standardUserDefaults] keyComboForKey:@"PrevTrack"]; - NSMenuItem *prevTrack = [menu addItemWithTitle:@"Previous Track" - action:@selector(prevSong:) - keyEquivalent:@""]; - - if (tempCombo) { - [self setKeyEquivalentForCode:[tempCombo keyCode] - andModifiers:[tempCombo modifiers] onItem:prevTrack]; - [tempCombo release]; - } - } else if ([item isEqualToString:@"Fast Forward"]) { - [menu addItemWithTitle:@"Fast Forward" - action:@selector(fastForward:) - keyEquivalent:@""]; - } else if ([item isEqualToString:@"Rewind"]) { - [menu addItemWithTitle:@"Rewind" - action:@selector(rewind:) - keyEquivalent:@""]; - } else if ([item isEqualToString:@"Show Player"]) { - [menu addItemWithTitle:[NSString stringWithFormat:@"Show %@", [currentRemote playerSimpleName]] - action:@selector(showPlayer:) - keyEquivalent:@""]; - } else if ([item isEqualToString:@"Upcoming Songs"]) { - upcomingSongsItem = [menu addItemWithTitle:@"Upcoming Songs" - action:nil - keyEquivalent:@""]; - upcomingSongsMenu = [[NSMenu alloc] initWithTitle:@""]; - [upcomingSongsItem setSubmenu:upcomingSongsMenu]; - [upcomingSongsItem setEnabled:NO]; - } else if ([item isEqualToString:@"Playlists"]) { - playlistItem = [menu addItemWithTitle:@"Playlists" - action:nil - keyEquivalent:@""]; - } else if ([item isEqualToString:@"EQ Presets"]) { - eqItem = [menu addItemWithTitle:@"EQ Presets" - action:nil - keyEquivalent:@""]; - } else if ([item isEqualToString:@"Preferences…"]) { - [menu addItemWithTitle:@"Preferences…" - action:@selector(showPreferences:) - keyEquivalent:@""]; - } else if ([item isEqualToString:@"Quit"]) { - [[menu addItemWithTitle:@"Quit" - action:@selector(terminate:) - keyEquivalent:@""] setTarget:NSApp]; - } else if ([item isEqualToString:@"Current Track Info"]) { - trackInfoIndex = [menu numberOfItems]; - [menu addItemWithTitle:@"No Song" - action:nil - keyEquivalent:@""]; - } else if ([item isEqualToString:@"Song Rating"]) { - ratingItem = [[menu addItemWithTitle:@"Song Rating" - action:nil - keyEquivalent:@""] retain]; - [ratingItem setSubmenu:ratingMenu]; - } else if ([item isEqualToString:@""]) { - [menu addItem:[NSMenuItem separatorItem]]; - } - } - - if (playlistItem) { - [self rebuildPlaylistMenu]; - } - - if (eqItem) { - [self rebuildEQPresetsMenu]; - } - - isPlayingRadio = ([currentRemote currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist); - - if (upcomingSongsItem) { - [self rebuildUpcomingSongsMenu]; - } - - if (ratingItem) { - if (isPlayingRadio || !playlist) { - [ratingItem setEnabled:NO]; - } else { - int currentSongRating = ([currentRemote currentSongRating] * 5); - lastSongRating = currentSongRating; - [[ratingMenu itemAtIndex:lastSongRating] setState:NSOnState]; - [ratingItem setEnabled:YES]; - } - } - - //Set the new unique song identifier - lastSongIdentifier = [[currentRemote playerStateUniqueIdentifier] retain]; - - //If we're in a playlist or radio mode - if ( ![lastSongIdentifier isEqualToString:@"0-0"] && (trackInfoIndex > -1) ) { - NSString *title; - - if ( (i = [menu indexOfItemWithTitle:@"No Song"]) ) { - if ( (i > -1) ) { - [menu removeItemAtIndex:i]; - [menu insertItemWithTitle:@"Now Playing" action:NULL keyEquivalent:@"" atIndex:i]; - } - } - - title = [currentRemote currentSongTitle]; - - if (!isPlayingRadio) { - if ([defaults boolForKey:@"showTime"]) { - NSString *length = [currentRemote currentSongLength]; - char character = [length characterAtIndex:0]; - if ( (character > '0') && (character < '9') ) { - [menu insertItemWithTitle:[NSString stringWithFormat:@" %@", [currentRemote currentSongLength]] action:nil keyEquivalent:@"" atIndex:trackInfoIndex + 1]; - } - } - - if ([defaults boolForKey:@"showTrackRating"]) { - if (title) { //Check to see if there's a song playing - [menu insertItemWithTitle:[NSString stringWithFormat:@" %@", [[ratingMenu itemAtIndex:[currentRemote currentSongRating] * 5] title]] action:nil keyEquivalent:@"" atIndex:trackInfoIndex + 1]; - } - } - - if ([defaults boolForKey:@"showArtist"]) { - NSString *artist = [currentRemote currentSongArtist]; - if ([artist length] > 0) { - [menu insertItemWithTitle:[NSString stringWithFormat:@" %@", artist] action:nil keyEquivalent:@"" atIndex:trackInfoIndex + 1]; - } - } - - if ([defaults boolForKey:@"showTrackNumber"]) { - int track = [currentRemote currentSongTrack]; - int total = [currentRemote currentAlbumTrackCount]; - if (total > 0) { - [menu insertItemWithTitle:[NSString stringWithFormat:@" Track %i of %i", track, total] action:nil keyEquivalent:@"" atIndex:trackInfoIndex + 1]; - } - } - - if ([defaults boolForKey:@"showAlbum"]) { - NSString *album = [currentRemote currentSongAlbum]; - if ( album ) { - [menu insertItemWithTitle:[NSString stringWithFormat:@" %@", album] action:nil keyEquivalent:@"" atIndex:trackInfoIndex + 1]; - } - } - } - - if ([title length] > 0) { - [menu insertItemWithTitle:[NSString stringWithFormat:@" %@", title] action:nil keyEquivalent:@"" atIndex:trackInfoIndex + 1]; - } - } - - [statusItem setMenu:menu]; - - [self clearHotKeys]; - [self setupHotKeys]; -} - -//Rebuild the upcoming songs submenu. Can be improved a lot. -- (void)rebuildUpcomingSongsMenu -{ - int curIndex = [currentRemote currentPlaylistIndex]; - int numSongs = [currentRemote numberOfSongsInPlaylistAtIndex:curIndex]; - int numSongsInAdvance = [[NSUserDefaults standardUserDefaults] integerForKey:@"SongsInAdvance"]; - - if (!isPlayingRadio) { - if (numSongs > 0) { - int curTrack = [currentRemote currentSongIndex]; - int i; - - [upcomingSongsMenu release]; - upcomingSongsMenu = [[NSMenu alloc] initWithTitle:@""]; - [upcomingSongsItem setSubmenu:upcomingSongsMenu]; - [upcomingSongsItem setEnabled:YES]; - - for (i = curTrack + 1; i <= curTrack + numSongsInAdvance; i++) { - if (i <= numSongs) { - NSString *curSong = [currentRemote songTitleAtIndex:i]; - NSMenuItem *songItem; - songItem = [[NSMenuItem alloc] initWithTitle:curSong action:@selector(selectSong:) keyEquivalent:@""]; - [songItem setRepresentedObject:[NSNumber numberWithInt:i]]; - [upcomingSongsMenu addItem:songItem]; - [songItem release]; - } else { - break; - } - } - } - } else { - [upcomingSongsItem setSubmenu:nil]; - [upcomingSongsItem setEnabled:NO]; - } -} - -- (void)rebuildPlaylistMenu -{ - NSArray *playlists = [currentRemote playlists]; - int i, currentPlaylist = [currentRemote currentPlaylistIndex]; - - [playlistMenu release]; - playlistMenu = [[NSMenu alloc] initWithTitle:@""]; - - for (i = 0; i < [playlists count]; i++) { - NSString *playlistName = [playlists objectAtIndex:i]; - NSMenuItem *tempItem; - tempItem = [[NSMenuItem alloc] initWithTitle:playlistName action:@selector(selectPlaylist:) keyEquivalent:@""]; - [tempItem setTag:i + 1]; - [playlistMenu addItem:tempItem]; - [tempItem release]; - } - [playlistItem setSubmenu:playlistMenu]; - [playlistItem setEnabled:YES]; - - if (!isPlayingRadio && currentPlaylist) { - [[playlistMenu itemAtIndex:currentPlaylist - 1] setState:NSOnState]; - } -} - -//Build a menu with the list of all available EQ presets -- (void)rebuildEQPresetsMenu -{ - NSArray *eqPresets = [currentRemote eqPresets]; - int i; - - [eqMenu autorelease]; - eqMenu = [[NSMenu alloc] initWithTitle:@""]; - - for (i = 0; i < [eqPresets count]; i++) { - NSString *name; - NSMenuItem *tempItem; - if ( ( name = [eqPresets objectAtIndex:i] ) ) { - tempItem = [[NSMenuItem alloc] initWithTitle:name action:@selector(selectEQPreset:) keyEquivalent:@""]; - [tempItem setTag:i]; - [eqMenu addItem:tempItem]; - [tempItem autorelease]; - } - } - - [eqItem setSubmenu:eqMenu]; - [eqItem setEnabled:YES]; - [[eqMenu itemAtIndex:([currentRemote currentEQPresetIndex] - 1)] setState:NSOnState]; -} - -- (void)updateRatingMenu -{ - int currentSongRating = ([currentRemote currentSongRating] * 5); - if ([currentRemote currentPlaylistIndex] && (currentSongRating != lastSongRating)) { - if ([currentRemote currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist) { - return; - } - [[ratingMenu itemAtIndex:lastSongRating] setState:NSOffState]; - lastSongRating = currentSongRating; - [[ratingMenu itemAtIndex:lastSongRating] setState:NSOnState]; - } -} - -- (void)timerUpdate -{ - NSString *currentIdentifier = [currentRemote playerStateUniqueIdentifier]; - if (![lastSongIdentifier isEqualToString:currentIdentifier] || - (!isPlayingRadio && ([currentRemote currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist))) { - // - // - // If we want to show the new track floater, do it here! - //[self showCurrentTrackInfoStatusWindow]; - // - // - [self rebuildMenu]; - } - - [self updateRatingMenu]; - - //Update Play/Pause menu item - if (playPauseItem){ - // - // - // If we want to show the song played/paused, show it here! - // - // - if ([currentRemote playerPlayingState] == ITMTRemotePlayerPlaying) { - [playPauseItem setTitle:@"Pause"]; - } else { - [playPauseItem setTitle:@"Play"]; - } - } -} - -// -// -// Menu Selectors -// -// - -- (void)selectSong:(id)sender -{ - [currentRemote switchToSongAtIndex:[[sender representedObject] intValue]]; -} - -- (void)selectPlaylist:(id)sender -{ - int playlist = [sender tag]; - [currentRemote switchToPlaylistAtIndex:playlist]; -} - -- (void)selectEQPreset:(id)sender -{ - int curSet = [currentRemote currentEQPresetIndex]; - int item = [sender tag]; - - [currentRemote switchToEQAtIndex:item]; - [[eqMenu itemAtIndex:curSet - 1] setState:NSOffState]; - [[eqMenu itemAtIndex:item] setState:NSOnState]; -} - -- (void)selectSongRating:(id)sender -{ - int newRating = [sender tag]; - [[ratingMenu itemAtIndex:lastSongRating] setState:NSOffState]; - [sender setState:NSOnState]; - [currentRemote setCurrentSongRating:(float)newRating / 100.0]; - lastSongRating = newRating / 20; -} - -- (void)playPause:(id)sender -{ - ITMTRemotePlayerPlayingState state = [currentRemote playerPlayingState]; - - if (state == ITMTRemotePlayerPlaying) { - [currentRemote pause]; - [playPauseItem setTitle:@"Play"]; - } else if ((state == ITMTRemotePlayerForwarding) || (state == ITMTRemotePlayerRewinding)) { - [currentRemote pause]; - [currentRemote play]; - } else { - [currentRemote play]; - [playPauseItem setTitle:@"Pause"]; - } -} - -- (void)nextSong:(id)sender -{ - [currentRemote goToNextSong]; -} - -- (void)prevSong:(id)sender -{ - [currentRemote goToPreviousSong]; -} - -- (void)fastForward:(id)sender -{ - [currentRemote forward]; - [playPauseItem setTitle:@"Play"]; -} - -- (void)rewind:(id)sender -{ - [currentRemote rewind]; - [playPauseItem setTitle:@"Play"]; -} - -// -// - -- (void)showPlayer:(id)sender -{ - if ( ( isAppRunning == ITMTRemotePlayerRunning) ) { - [currentRemote showPrimaryInterface]; - } else { - if (![[NSWorkspace sharedWorkspace] launchApplication:[currentRemote playerFullName]]) { - NSLog(@"Error Launching Player"); - } - } -} - -- (void)showPreferences:(id)sender -{ - [[PreferencesController sharedPrefs] setController:self]; - [[PreferencesController sharedPrefs] showPrefsWindow:self]; -} - -- (void)closePreferences -{ - if ( ( isAppRunning == ITMTRemotePlayerRunning) ) { - [self setupHotKeys]; - } -} - -- (ITMTRemote *)currentRemote -{ - return currentRemote; -} - -// -// -// Hot key setup -// -// - -- (void)clearHotKeys -{ - [[ITHotKeyCenter sharedCenter] removeHotKey:@"PlayPause"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"NextTrack"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"PrevTrack"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"ToggleVisualizer"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"TrackInfo"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"UpcomingSongs"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"ToggleLoop"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"ToggleShuffle"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"IncrementVolume"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"DecrementVolume"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"IncrementRating"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"DecrementRating"]; -} - -- (void)setupHotKeys -{ - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - - if ([defaults objectForKey:@"PlayPause"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"PlayPause" - combo:[defaults keyComboForKey:@"PlayPause"] - target:self action:@selector(playPause:)]; - } - - if ([defaults objectForKey:@"NextTrack"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"NextTrack" - combo:[defaults keyComboForKey:@"NextTrack"] - target:self action:@selector(nextSong:)]; - } - - if ([defaults objectForKey:@"PrevTrack"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"PrevTrack" - combo:[defaults keyComboForKey:@"PrevTrack"] - target:self action:@selector(prevSong:)]; - } - - if ([defaults objectForKey:@"ToggleVisualizer"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"ToggleVisualizer" - combo:[defaults keyComboForKey:@"ToggleVisualizer"] - target:self action:@selector(toggleVisualizer)]; - } - - if ([defaults objectForKey:@"TrackInfo"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"TrackInfo" - combo:[defaults keyComboForKey:@"TrackInfo"] - target:self action:@selector(showCurrentTrackInfoStatusWindow)]; - } - - if ([defaults objectForKey:@"UpcomingSongs"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"UpcomingSongs" - combo:[defaults keyComboForKey:@"UpcomingSongs"] - target:self action:@selector(showUpcomingSongsStatusWindow)]; - } - - if ([defaults objectForKey:@"ToggleLoop"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"ToggleLoop" - combo:[defaults keyComboForKey:@"ToggleLoop"] - target:self action:@selector(showToggleLoopStatusWindow)]; - } - - if ([defaults objectForKey:@"ToggleShuffle"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"ToggleShuffle" - combo:[defaults keyComboForKey:@"ToggleShuffle"] - target:self action:@selector(showToggleShuffleStatusWindow)]; - } - - if ([defaults objectForKey:@"IncrementVolume"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"IncrementVolume" - combo:[defaults keyComboForKey:@"IncrementVolume"] - target:self action:@selector(showVolumeIncrementStatusWindow)]; - } - - if ([defaults objectForKey:@"DecrementVolume"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"DecrementVolume" - combo:[defaults keyComboForKey:@"DecrementVolume"] - target:self action:@selector(showVolumeDecrementStatusWindow)]; - } - - if ([defaults objectForKey:@"IncrementRating"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"IncrementRating" - combo:[defaults keyComboForKey:@"IncrementRating"] - target:self action:@selector(showRatingIncrementStatusWindow)]; - } - - if ([defaults objectForKey:@"DecrementRating"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"DecrementRating" - combo:[defaults keyComboForKey:@"DecrementRating"] - target:self action:@selector(showRatingDecrementStatusWindow)]; - } -} - -// -// -// Status Window Methods -// -// - -- (void)showCurrentTrackInfoStatusWindow -{ - NSString *trackName = [currentRemote currentSongTitle]; - if (!statusWindow && [trackName length]) { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSString *stringToShow = @""; - - if ([defaults boolForKey:@"showName"]) { - if ([defaults boolForKey:@"showArtist"]) { - NSString *trackArtist = [currentRemote currentSongArtist]; - trackName = [NSString stringWithFormat:@"%@ - %@", trackArtist, trackName]; - } - stringToShow = [stringToShow stringByAppendingString:trackName]; - stringToShow = [stringToShow stringByAppendingString:@"\n"]; - } - - if ([defaults boolForKey:@"showAlbum"]) { - NSString *trackAlbum = [currentRemote currentSongAlbum]; - if ( trackAlbum ) { - stringToShow = [stringToShow stringByAppendingString:trackAlbum]; - stringToShow = [stringToShow stringByAppendingString:@"\n"]; - } - } - - if ([defaults boolForKey:@"showTime"]) { - NSString *trackTime = [currentRemote currentSongLength]; - if ([trackTime length]) { - stringToShow = [NSString stringWithFormat:@"%@Total Time: %@\n", stringToShow, trackTime]; - } - } - - { - int trackTimeLeft = [[currentRemote currentSongRemaining] intValue]; - int minutes = trackTimeLeft / 60, seconds = trackTimeLeft % 60; - if (seconds < 10) { - stringToShow = [stringToShow stringByAppendingString: - [NSString stringWithFormat:@"Time Remaining: %i:0%i", minutes, seconds]]; - } else { - stringToShow = [stringToShow stringByAppendingString: - [NSString stringWithFormat:@"Time Remaining: %i:%i", minutes, seconds]]; - } - } - - // - //SHOW THE STATUS WINDOW HERE WITH STRING stringToShow - // - - /*[statusWindow setText:stringToShow]; - [NSTimer scheduledTimerWithTimeInterval:3.0 - target:self - selector:@selector(fadeAndCloseStatusWindow) - userInfo:nil - repeats:NO];*/ - } -} - -- (void)showUpcomingSongsStatusWindow -{ - int curPlaylist = [currentRemote currentPlaylistIndex]; - if (!statusWindow) { - int numSongs = [currentRemote numberOfSongsInPlaylistAtIndex:curPlaylist]; - - if (numSongs > 0) { - int numSongsInAdvance = [[NSUserDefaults standardUserDefaults] integerForKey:@"SongsInAdvance"]; - int curTrack = [currentRemote currentSongIndex]; - int i; - NSString *songs = @""; - - for (i = curTrack + 1; i <= curTrack + numSongsInAdvance; i++) { - if (i <= numSongs) { - NSString *curSong = [currentRemote songTitleAtIndex:i]; - songs = [songs stringByAppendingString:curSong]; - songs = [songs stringByAppendingString:@"\n"]; - } - } - - // - //SHOW STATUS WINDOW HERE WITH STRING songs - // - - /*[statusWindow setText:songs]; - [NSTimer scheduledTimerWithTimeInterval:3.0 - target:self - selector:@selector(fadeAndCloseStatusWindow) - userInfo:nil - repeats:NO];*/ - } - } -} - -- (void)showVolumeIncrementStatusWindow -{ -} - -- (void)showVolumeDecrementStatusWindow -{ -} - -- (void)showRatingIncrementStatusWindow -{ -} - -- (void)showRatingDecrementStatusWindow -{ -} - -- (void)showToggleLoopStatusWindow -{ -} - -- (void)showToggleShuffleStatusWindow -{ -} - -- (void)toggleVisualizer -{ - NSLog(@"Visualizer On/Off"); -} - -- (void)fadeAndCloseStatusWindow -{ - [statusWindow orderOut:self]; -} - -- (void)setKeyEquivalentForCode:(short)code andModifiers:(long)modifiers - onItem:(NSMenuItem *)item -{ - unichar charcode = 'a'; - int i; - long cocoaModifiers = 0; - static long carbonToCocoa[6][2] = - { - { cmdKey, NSCommandKeyMask }, - { optionKey, NSAlternateKeyMask }, - { controlKey, NSControlKeyMask }, - { shiftKey, NSShiftKeyMask }, - }; - - for (i = 0; i < 6; i++) { - if (modifiers & carbonToCocoa[i][0]) { - cocoaModifiers += carbonToCocoa[i][1]; - } - } - [item setKeyEquivalentModifierMask:cocoaModifiers]; - - //Missing key combos for some keys. Must find them later. - switch (code) - { - case 36: - charcode = '\r'; - break; - - case 48: - charcode = '\t'; - break; - - //Space -- ARGH! - case 49: - { - /*MenuRef menuRef = _NSGetCarbonMenu([item menu]); - SetMenuItemCommandKey(menuRef, 1, NO, 49); - SetMenuItemModifiers(menuRef, 1, kMenuNoCommandModifier); - SetMenuItemKeyGlyph(menuRef, 1, kMenuBlankGlyph);*/ - charcode = 'b'; - - } - break; - - case 51: - charcode = NSDeleteFunctionKey; - break; - - case 53: - charcode = '\e'; - break; - - case 71: - charcode = '\e'; - break; - - case 76: - charcode = '\r'; - break; - - case 96: - charcode = NSF5FunctionKey; - break; - - case 97: - charcode = NSF6FunctionKey; - break; - - case 98: - charcode = NSF7FunctionKey; - break; - - case 99: - charcode = NSF3FunctionKey; - break; - - case 100: - charcode = NSF8FunctionKey; - break; - - case 101: - charcode = NSF9FunctionKey; - break; - - case 103: - charcode = NSF11FunctionKey; - break; - - case 105: - charcode = NSF3FunctionKey; - break; - - case 107: - charcode = NSF14FunctionKey; - break; - - case 109: - charcode = NSF10FunctionKey; - break; - - case 111: - charcode = NSF12FunctionKey; - break; - - case 113: - charcode = NSF13FunctionKey; - break; - - case 114: - charcode = NSInsertFunctionKey; - break; - - case 115: - charcode = NSHomeFunctionKey; - break; - - case 116: - charcode = NSPageUpFunctionKey; - break; - - case 117: - charcode = NSDeleteFunctionKey; - break; - - case 118: - charcode = NSF4FunctionKey; - break; - - case 119: - charcode = NSEndFunctionKey; - break; - - case 120: - charcode = NSF2FunctionKey; - break; - - case 121: - charcode = NSPageDownFunctionKey; - break; - - case 122: - charcode = NSF1FunctionKey; - break; - - case 123: - charcode = NSLeftArrowFunctionKey; - break; - - case 124: - charcode = NSRightArrowFunctionKey; - break; - - case 125: - charcode = NSDownArrowFunctionKey; - break; - - case 126: - charcode = NSUpArrowFunctionKey; - break; - } - - if (charcode == 'a') { - unsigned long state; - long keyTrans; - char charCode; - Ptr kchr; - state = 0; - kchr = (Ptr) GetScriptVariable(smCurrentScript, smKCHRCache); - keyTrans = KeyTranslate(kchr, code, &state); - charCode = keyTrans; - [item setKeyEquivalent:[NSString stringWithCString:&charCode length:1]]; - } else if (charcode != 'b') { - [item setKeyEquivalent:[NSString stringWithCharacters:&charcode length:1]]; - } -} - -@end diff --git a/Register.tiff b/Register.tiff deleted file mode 100755 index 1df327fd24eff2e9e7565d1bcb6cda5da85c5636..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62744 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 diff --git a/ShadowedImages/NetLibrary.tiff b/ShadowedImages/NetLibrary.tiff deleted file mode 100755 index fddb654f54e2b609a7485ebe245cade5a9264f6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62708 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 diff --git a/ShadowedImages/Rating.tiff b/ShadowedImages/Rating.tiff deleted file mode 100755 index 1f875c3282e19e81e7b7a3a4b96a9b0bbb85e0cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62964 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 Zo}GHmpSP?B%hIc=;Rnmd&nNcf{{b{FcTWHS diff --git a/ShadowedImages/Register.tiff b/ShadowedImages/Register.tiff deleted file mode 100755 index 8921e448c20f1f5fe91107b57481a95601a62748..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62744 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 B69fPN diff --git a/ShadowedImages/Repeat.tiff b/ShadowedImages/Repeat.tiff deleted file mode 100755 index 0c8f842b186891f2c58391cd78a9a1f438991fc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62768 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 diff --git a/ShadowedImages/Setup.tiff b/ShadowedImages/Setup.tiff deleted file mode 100755 index 15d6e52e4cebe4e06bcf634642184f7fa2762891..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62768 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 diff --git a/ShadowedImages/Upcoming.tiff b/ShadowedImages/Upcoming.tiff deleted file mode 100755 index 2866b56153ee6ab31380e8e173b799ce3b002a59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62760 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ⅈV++~ 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 zo138J diff --git a/ShadowedImages/Volume.tiff b/ShadowedImages/Volume.tiff deleted file mode 100755 index 9260c546351573343c0728f2cb11741300becf7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63296 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 XSL(US-7S+9nQ>8UvU2)-rf2^T{#j;z diff --git a/StatusWindowController.h b/StatusWindowController.h index ea9faef..b2383c6 100755 --- a/StatusWindowController.h +++ b/StatusWindowController.h @@ -34,7 +34,6 @@ typedef enum { StatusWindowShuffleType, StatusWindowShufflabilityType, StatusWindowSetupType, - StatusWindowRegistrationType, StatusWindowNetworkType, StatusWindowPreferencesType, StatusWindowDebugType @@ -57,7 +56,6 @@ typedef enum { - (void)showRepeatWindowWithMode:(StatusWindowRepeatMode)mode; - (void)showSongShufflabilityWindow:(BOOL)shufflable; - (void)showSetupQueryWindow; -- (void)showRegistrationQueryWindow; - (void)showReconnectQueryWindow; - (void)showNetworkErrorQueryWindow; - (void)showPreferencesUpdateWindow; diff --git a/StatusWindowController.m b/StatusWindowController.m index 7663d39..2e4593e 100755 --- a/StatusWindowController.m +++ b/StatusWindowController.m @@ -309,25 +309,6 @@ static StatusWindowController *sharedController; [_window setLocked:YES]; } - -- (void)showRegistrationQueryWindow -{ - NSString *message = NSLocalizedString(@"trialexpired_msg", @"Your 7-day unlimited trial period has elapsed.\nYou must register to continue using MenuTunes."); - - [_window setImage:[NSImage imageNamed:@"Register"]]; - [_window setSizing:(ITTransientStatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; - [_window buildDialogWindowWithMessage:message - defaultButton:NSLocalizedString(@"registernow", @"Register Now") - alternateButton:NSLocalizedString(@"quitmenutunes", @"Quit MenuTunes") - target:[MainController sharedController] - defaultAction:@selector(registerNowOK) - alternateAction:@selector(registerNowCancel)]; - - _currentType = StatusWindowRegistrationType; - [_window appear:self]; - [_window setLocked:YES]; -} - - (void)showReconnectQueryWindow { NSString *message = NSLocalizedString(@"sharedplayeravailable_msg", @"The selected shared player is available again.\nWould you like to reconnect to it?"); diff --git a/TODO.rtf b/TODO.rtf deleted file mode 100755 index a71964f..0000000 --- a/TODO.rtf +++ /dev/null @@ -1,91 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf102 -{\fonttbl\f0\fnil\fcharset77 Futura-CondensedExtraBold;\f1\fswiss\fcharset77 Helvetica;\f2\fnil\fcharset77 Monaco; -\f3\fswiss\fcharset77 Helvetica-Bold;} -{\colortbl;\red255\green255\blue255;} -\vieww15340\viewh10060\viewkind0 -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural - -\f0\b\fs72 \cf0 MenuTunes Issues\ - -\f1\b0\fs28 In lieu of BugZilla, this file has been added to the MenuTunes project, at its root level, above all groups. It will be treated like a bug list. Do not modify without authorization from Matt. -\f2\fs20 \ -\ - -\f1\fs28 \ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural - -\f3\b \cf0 \ul \ulc0 1.0 FIRST CUSTOMER SHIP\ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural - -\f2\b0\fs20 \cf0 \ulnone \ - Completed.\ -\ -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural -\cf0 \ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural - -\f3\b\fs28 \cf0 \ul \ulc0 1.0.X FIRST BUGFIX UPDATE\ -\pard\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\ql\qnatural - -\f2\b0\fs20 \cf0 \ulnone \ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural -\cf0 Priority: SHOWSTOPPER\ - Owner: Matthew Judy\ - Status: Build\ - Issue: StatusWindows - Must be fully functional in all positions.\ -\ - Priority: SHOWSTOPPER\ - Owner: Matthew Judy\ - Status: Assigned\ - Issue: StatusWindows - Need additional icons.\ - \'a5 Network Library\ -\pard\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\ql\qnatural -\cf0 \ -\ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural - -\f3\b\fs28 \cf0 \ul \ulc0 1.X.X FIRST FEATURE UPDATE -\f1\b0\fs24 \ulnone \ -\pard\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\ql\qnatural - -\f2\fs20 \cf0 \ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural -\cf0 Priority: LOW\ - Status: Completed\ - Issue: Hot Keys (Preferences) - Migrate to new style.\ - \ - Priority: FUTURE\ - Status: Future\ - Issue: Upcoming Songs - should be clickable.\ -\pard\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\ql\qnatural -\cf0 \ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural -\cf0 Priority: FUTURE\ - Status: Future\ - Issue: Upcoming Songs - should show the last songs played.\ -\pard\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\ql\qnatural -\cf0 \ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural -\cf0 Priority: FUTURE\ - Status: Analyze\ - Issue: Menu - Needs to show "Space" as the key equivalent.\ -\pard\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\ql\qnatural -\cf0 \ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural -\cf0 Priority: FUTURE\ - Status: Future\ - Issue: Hot Keys - Need hotkey for "Show Song File".\ -\pard\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\ql\qnatural -\cf0 \ -\ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural - -\f3\b\fs28 \cf0 \ul \ulc0 1.5 SECOND FEATURE UPDATE -\f1\b0\fs24 \ulnone \ -\ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural - -\f2\fs20 \cf0 Priority: MEDIUM\ - Status: Future\ - Owner: Kent Sutherland and Alexander Strange\ - Issue: Network (Password authentication) - Uses static SHA hash. It is possible to attack this without knowing the password by recording the hash sent and sending it yourself. The solution is to use crypt(); an example is in ARCHIVE/SqueamishOssifrage.} \ No newline at end of file diff --git a/esellerate.gif b/esellerate.gif deleted file mode 100755 index 5b5c5d9d7f5719c72013c99239cede9705e642c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1169 zcmbV{|3A}t0LR~-nc3E?5Ba+5^qEXy?wlTvkh(rrGSmY-`u-4?l+n&1ii;kz&tfeq zBBHcq9M+IyP4v07ZpA1n`Ig72$UU^`H0N8T-F1J$y?%K9_Ix}aub|*9zJ3Q{feUyF zfXQS!T3FGn>jD6jHmHYRzVh+$QMR;;3zG>;G@e1>%1q`wPE(0wj}0ki=y(&UMIB zI{E9a_SU2hN0RFYEDDlYL^a`C$m922X9somewVXz6(@W3wnKUj&LdLM$%-OmZ2ZUJ-E$AXt(u$Ex#`GO>h)(YYl}^2ts(~%Q95?lU93FOD_}unuRjpW@o(^tHd06y z_|_&?sA-Hrw=w1)S?_9+ZrtxxhVS`Fl_Y7F7E-*;(!M2e}m|JrC}n+`sHJ+2TEvFz(F^E-2s_^WM2eRjaJy z_iBFJsa_v3^hr{m6xz&>keP+6uRBXX-}?R?ryF1V7L|3S(B5d+yY0rw7u54}(nH%B zBK97>QXE$&O>@R2`udu*GIr+l>pe*Hb~e^tj(m5WO z(~l*%=iR0s;VX_i9n^sCi*=pE_=h1}<%2}2hqzcZ{N|T7YA99l@K%Q>vuo{%s-`hq zThF1ket*P}&P2+jRj#qV-U%&B7ic|Ji&0MdrKn-3XxS6P_+6WBMKX>Iw6j1;!UqYt z+j*;AZ`LvFRoyT?S(R_UeJh#dNDDuD&uU=cS81-b5L{{4ig>!Ye&RAoI}AQr1xQqO Up7vC|J+@(5=XujA0094g00}nt<^TWy diff --git a/iTunesRemote-Info.plist b/iTunesRemote-Info.plist index f28b091..0a0f0b0 100755 --- a/iTunesRemote-Info.plist +++ b/iTunesRemote-Info.plist @@ -1,5 +1,5 @@ - + CFBundleDevelopmentRegion @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.1 + 1.7.2 NSPrincipalClass iTunesRemote diff --git a/libValidate.a b/libValidate.a deleted file mode 100755 index cc7a25035ec36a2175368aa081e2b3766e09511f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8056 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 I^KHWa0GvSzb^rhX diff --git a/libValidateUniversal.a b/libValidateUniversal.a deleted file mode 100755 index 0cdead4b1a2afceb366a3b09df18fac6befae62c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11936 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 U)Bmsx{m+%3(^95?oAUGj00ck4CIA2c diff --git a/main.m b/main.m index 8c15d17..ec59c4e 100755 --- a/main.m +++ b/main.m @@ -7,14 +7,8 @@ // // Poink. #import -#import - -static const int (*ptp)(int,int,caddr_t,int) = ptrace; int main(int argc, const char *argv[]) { -#ifdef MT_RELEASE - ptp(PT_DENY_ATTACH,getpid(),NULL,0); -#endif return NSApplicationMain(argc, argv); } diff --git a/validate.h b/validate.h deleted file mode 100755 index bfc3627..0000000 --- a/validate.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - *validate.h - * Copyright 2000-2002, eSellerate Inc. - * All rights reserved worldwide. - */ - -#ifndef _VALIDATE_API_H_ -#define _VALIDATE_API_H_ - -#ifdef __cplusplus -extern "C" { -#endif - - -typedef unsigned char* eSellerate_String; - -typedef short eSellerate_DaysSince2000; - -eSellerate_DaysSince2000 eSellerate_ValidateSerialNumber ( - eSellerate_String serialNumber, /* ASCII Pascal string */ - eSellerate_String nameBasedKey, /* ASCII Pascal string (nil if unneeded) */ - eSellerate_String extraDataKey, /* ASCII Pascal string (nil if unneeded) */ - eSellerate_String publisherKey /* ASCII Pascal string (nil if unneeded) */ -); -/* - * return codes: - * if valid: date (days since January 1 2000) of expiration or (non-expiring) purchase - * if invalid: 0 - */ - -eSellerate_DaysSince2000 eWeb_ValidateSerialNumber ( - const char *serialNumber, /* "C" string */ - const char *nameBasedKey, /* "C" string (nil if unneeded) */ - const char *extraDataKey, /* "C" string (nil if unneeded) */ - const char *publisherKey /* "C" string (nil if unneeded) */ -); -/* - * return codes: - * if valid: date (days since January 1 2000) of expiration or (non-expiring) purchase - * if invalid: 0 - */ - - -eSellerate_DaysSince2000 eSellerate_Today ( ); /* days from 1/1/2000 to today */ - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file -- 2.20.1