class TwitterNotifier < NSObject def initWithConnection(connection) @connection=connection self end def actionDone(notification) action=notification.object print "sending transition did #{action.name}\n" @connection.sendUpdate("did #{action.name}") end end class TwitterPreferences < NSObject attr_accessor :identifier,:mainView,:label,:icon,:category,:appDelegate def initWithController_appDelegate(controller,appDelegate) @label="Twitter" @category="Frictionless" @identifier="Twitter" @icon= NSImage.imageNamed("twitter") @appDelegate=appDelegate controller.addPane_withIdentifier(self, @identifier) self end def mainView NSBundle.loadNibNamed_owner("TwitterPreferences",self) unless @mainView @mainView end def TwitterPreferences.username defaults=NSUserDefaultsController.sharedUserDefaultsController.values defaults.valueForKey("twitterUsername") end def username return TwitterPreferences.username end def TwitterPreferences.hasUsername? username && username.length > 0 end def hasUsername? username && username.length > 0 end def password=(newpassword) setPassword(newpassword) end def setPassword(newpassword) defaults=NSUserDefaultsController.sharedUserDefaultsController.values FrictionlessKeyChainBridge.addServerName_account_password("www.twitter.com",defaults.valueForKey("twitterUsername"),newpassword) if hasUsername? end def password return TwitterPreferences.password end def TwitterPreferences.password defaults=NSUserDefaultsController.sharedUserDefaultsController.values print "Reading defaults #{defaults}\n" password=FrictionlessKeyChainBridge.findPasswordForServer_account("www.twitter.com",defaults.valueForKey("twitterUsername")) if hasUsername? end def TwitterPreferences.connectToTwitter defaults=NSUserDefaultsController.sharedUserDefaultsController.values if (defaults.valueForKey("doTwitter") && defaults.valueForKey("doTwitter").intValue != 0) username=defaults.valueForKey("twitterUsername"); appDelegate=NSApplication.sharedApplication.delegate @@twitterConnection=MGTwitterEngine.alloc().initWithDelegate(appDelegate) @@twitterConnection.setUsername_password(username,TwitterPreferences.password) @@twitterConnection.getFollowedTimelineFor_since_startingAtPage(nil,nil,0) @@notifier = TwitterNotifier.alloc.initWithConnection(@@twitterConnection) NSNotificationCenter.defaultCenter.addObserver_selector_name_object(@@notifier,'actionDone:',"markedDoneTransition",nil) end end TwitterPreferences.connectToTwitter end