class StatusNetLogin(): def __init__(self): self.app = QtGui.QApplication(sys.argv) self.app.setApplicationName("StatusNet") signal.signal(signal.SIGINT, signal.SIG_DFL) self.client = gconf.client_get_default() self.view = QtDeclarative.QDeclarativeView() self.view.setSource("/opt/statusnet-meego/qml/Configuration.qml") self.rootObject = self.view.rootObject() self.rootObject.setApiPath(self.client.get_string("/apps/ControlPanel/Statusnet/api_path")) self.rootObject.setUsername(self.client.get_string("/apps/ControlPanel/Statusnet/username")) self.rootObject.setPassword(self.client.get_string("/apps/ControlPanel/Statusnet/password")) self.rootObject.openFile("ConfigPage.qml") self.rootObject.login.connect(self.login) self.rootObject.register.connect(self.register) self.rootObject.oauthLogin.connect(self.oauthLogin) self.rootObject.oauthDone.connect(self.oauthDone) self.view.showFullScreen() sys.exit(self.app.exec_()) def login(self, api_path, username, password): if api_path[:4] != 'http': api_path = 'http://' + api_path self.api_path = api_path self.client.set_string("/apps/ControlPanel/Statusnet/api_path", api_path) try: self.statusNet = StatusNet(api_path, username, password) self.client.set_string("/apps/ControlPanel/Statusnet/username", username) self.client.set_string("/apps/ControlPanel/Statusnet/password", password) self.success() except Exception as e: self.rootObject.showMessage("Login failed", e.message) def oauthLogin(self, api_path): self.api_path = api_path self.client.set_string("/apps/ControlPanel/Statusnet/api_path", self.api_path) self.key = oauth_consumer_keys[self.api_path] self.secret = oauth_consumer_secrets[self.api_path] self.statusNet = StatusNet(self.api_path, use_auth=False, auth_type="oauth", consumer_key=self.key, consumer_secret=self.secret) self.statusNet.consumer = oauth.OAuthConsumer(str(self.key), str(self.secret)) request_tokens_raw = self.statusNet.oauth_request_token() self.request_tokens = {} for item in request_tokens_raw.split("&"): key, value = item.split("=") self.request_tokens[key] = value request_token = self.request_tokens["oauth_token"] oauth_url = "%s/oauth/authorize?oauth_token=%s" % (self.api_path, request_token) QtGui.QDesktopServices.openUrl(oauth_url) self.rootObject.openFile("OAuthPage.qml") def oauthDone(self, verifier): access_tokens_raw = self.statusNet.oauth_access_token(self.request_tokens["oauth_token"], self.request_tokens["oauth_token_secret"], verifier) access_tokens = {} for item in access_tokens_raw.split("&"): key, value = item.split("=") access_tokens[key] = value self.statusNet.oauth_token = access_tokens['oauth_token'] self.statusNet.oauth_token_secret = access_tokens['oauth_token_secret'] try: self.statusNet.token = oauth.OAuthToken(str(self.statusNet.oauth_token), str(self.statusNet.oauth_token_secret)) self.client.set_string("/apps/ControlPanel/Statusnet/oauth_token", self.statusNet.oauth_token) self.client.set_string("/apps/ControlPanel/Statusnet/oauth_token_secret", self.statusNet.oauth_token_secret) self.success() except: self.rootObject.showMessage("Login failed", e.message) self.rootObject.openFile("ConfigPage.qml") def register(self): QtGui.QDesktopServices.openUrl("https://identi.ca/main/register") def success(self): self.rootObject.showMessage("Log in successful!", "If you've only just installed StatusNet for MeeGo you'll need to restart your phone before messages will start appearing in your events feed.") self.rootObject.messageAccepted.connect(self.confirmed) def confirmed(self): self.app.exit(2)