

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("www.twitter.com",account: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(username,password:TwitterPreferences.password)
			@@twitterConnection.getFollowedTimelineFor(nil,since:nil,startingAtPage:0)
			@@notifier = TwitterNotifier.alloc.initWithConnection(@@twitterConnection)
			NSNotificationCenter.defaultCenter.addObserver(@@notifier,selector:'actionDone:',name:"markedDoneTransition",object:nil)
		end
	end
	TwitterPreferences.connectToTwitter
	
	
end
	