fixed posting

This commit is contained in:
Jeena Paradies 2012-12-26 19:28:25 +01:00
parent a861de4eb4
commit a332acad4f
3 changed files with 123 additions and 19 deletions

View file

@ -18,8 +18,11 @@ class WebPage(QtWebKit.QWebPage):
class WebViewCreator(QtWebKit.QWebView): class WebViewCreator(QtWebKit.QWebView):
def __init__(self, app, local=True): def __init__(self, app, local=True, parent=None):
QtGui.QWidget.__init__(self) if parent != None:
QtGui.QWidget.__init__(self)
else:
QtGui.QWidget.__init__(self)
self.app = app self.app = app
self.is_local = local self.is_local = local
@ -68,4 +71,12 @@ class NetworkAccessManager(QNetworkAccessManager):
self.tentia_callback(request.url()) self.tentia_callback(request.url())
return QNetworkAccessManager.createRequest(self, QNetworkAccessManager.GetOperation, QNetworkRequest(QtCore.QUrl())) return QNetworkAccessManager.createRequest(self, QNetworkAccessManager.GetOperation, QNetworkRequest(QtCore.QUrl()))
class PostModel:
def __init__(self):
self.text = None
self.inReplyTostatusId = None
self.inReplyToEntity = None
self.location = None
self.imageFilePath = None
self.isPrivate = False

View file

@ -89,7 +89,7 @@ class Controller(QtCore.QObject):
def unreadMentions(self, count): def unreadMentions(self, count):
i = int(count) i = int(count)
if i > 0: if i > 0:
self.app.timeline.set_window_title("Tentia (^" + count + ")") self.app.timeline.set_window_title("Tentia (^" + str(i) + ")")
else: else:
self.app.timeline.set_window_title("Tentia") self.app.timeline.set_window_title("Tentia")
@ -97,19 +97,57 @@ class Controller(QtCore.QObject):
def notificateUserAboutMention(self, text, name, post_id, entity): def notificateUserAboutMention(self, text, name, post_id, entity):
print "notificateUserAboutMention is not implemented yet" print "notificateUserAboutMention is not implemented yet"
@QtCore.pyqtSlot(str, str, str) @QtCore.pyqtSlot(str)
def openNewMessageWidow(self, string): def openNewMessageWidow(self, string):
print "openNewMessageWidow is not implemented yet" new_message_window = Windows.NewPost(self.app)
new_message_window.show()
new_message_window.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.app.new_message_windows.append(new_message_window)
@QtCore.pyqtSlot(str, str, str, bool) @QtCore.pyqtSlot(str, str, str, bool)
def openNewMessageWindowInReplyTostatusIdwithStringIsPrivate(self, entity, status_id, string, is_private): def openNewMessageWindowInReplyTostatusIdwithStringIsPrivate(self, entity, status_id, string, is_private):
new_message_window = Windows.NewPost() new_message_window = Windows.NewPost(self.app)
new_message_window.inReplyToStatusIdWithString(entity, status_id, string) new_message_window.inReplyToStatusIdWithString(entity, status_id, string)
new_message_window.setIsPrivate(is_private) new_message_window.setIsPrivate(is_private)
new_message_window.show() new_message_window.show()
new_message_window.setAttribute(QtCore.Qt.WA_DeleteOnClose) new_message_window.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.app.new_message_windows.append(new_message_window) self.app.new_message_windows.append(new_message_window)
def sendMessage(self, message):
text = str.replace(str(message.text), "\\", "\\\\")
text = str.replace(text, "\"", "\\\"")
text = str.replace(text, "\n", "\\n")
in_reply_to_status_id = ""
if message.inReplyTostatusId is not None:
in_reply_to_status_id = message.inReplyTostatusId
in_reply_to_entity = ""
if message.inReplyToEntity is not None:
in_reply_to_entity = message.inReplyToEntity
locationObject = "null"
#if (post.location) {
# locationObject = [NSString stringWithFormat:@"[%f, %f]", post.location.coordinate.latitude, post.location.coordinate.longitude];
#}
imageFilePath = "null"
#if (post.imageFilePath) {
# NSError *error;
# NSString *mimeType = [MimeType mimeTypeForFileAtPath:post.imageFilePath error:&error];
# NSData *data = [[NSData alloc] initWithContentsOfFile:post.imageFilePath];
# NSString *base64 = [data base64Encoding_xcd];
# [data release];
# imageFilePath = [NSString stringWithFormat:@"\"data:%@;base64,%@\"", mimeType, base64];
#}
isPrivate = "false";
if message.isPrivate:
isPrivate = "true"
func = "tentia_instance.sendNewMessage(\"{}\", \"{}\", \"{}\", {}, {}, {});".format(text, in_reply_to_status_id, in_reply_to_entity, locationObject, imageFilePath, isPrivate)
self.app.timeline.webView.page().mainFrame().evaluateJavaScript(func)
@QtCore.pyqtSlot(str, str) @QtCore.pyqtSlot(str, str)
def showConversation(self, id, entity): def showConversation(self, id, entity):
print "showConversation is not implemented yet" print "showConversation is not implemented yet"

View file

@ -72,7 +72,6 @@ class Preferences:
else: else:
self.activity_indicator.hide() self.activity_indicator.hide()
class Timeline: class Timeline:
def __init__(self, app, action="timeline", title="Tentia"): def __init__(self, app, action="timeline", title="Tentia"):
@ -80,13 +79,30 @@ class Timeline:
self.action = action self.action = action
self.title = title self.title = title
self.window = Helper.WebViewCreator(self.app) self.window = QtGui.QMainWindow()
self.window.setWindowTitle(title) self.window.setWindowTitle(title)
self.window.load_local(self.load_finished)
self.window.resize(380, 600) self.window.resize(380, 600)
self.window.setMinimumSize(200, 200) self.window.setMinimumSize(200, 200)
self.webView = Helper.WebViewCreator(self.app, True, self.window)
self.webView.load_local(self.load_finished)
self.window.setCentralWidget(self.webView)
# self.window.addWidget(self.webView)
self.initUI()
def initUI(self):
newPostAction = QtGui.QAction("&New Post", self.window)
newPostAction.setShortcut("Ctrl+N")
newPostAction.setStatusTip("Open new post window")
newPostAction.triggered.connect(self.app.controller.openNewMessageWidow)
menubar = self.window.menuBar()
fileMenu = menubar.addMenu("&File")
fileMenu.addAction(newPostAction)
def show(self): def show(self):
self.window.show() self.window.show()
@ -95,7 +111,7 @@ class Timeline:
def load_finished(self, widget): def load_finished(self, widget):
script = "function HostAppGo() { start('" + self.action + "'); }" script = "function HostAppGo() { start('" + self.action + "'); }"
self.window.page().mainFrame().evaluateJavaScript(script) self.webView.page().mainFrame().evaluateJavaScript(script)
def set_window_title(self, title): def set_window_title(self, title):
self.window.setWindowTitle(title) self.window.setWindowTitle(title)
@ -174,17 +190,41 @@ class Login(QtGui.QDialog):
#self.buttonLogin.clicked.connect(callback) #self.buttonLogin.clicked.connect(callback)
#self.label.setText("The server " + url.host() + " requires a username and password.") #self.label.setText("The server " + url.host() + " requires a username and password.")
class NewPost(QtGui.QPlainTextEdit): class NewPost(QtGui.QMainWindow):
def __init__(self): def __init__(self, app):
self.app = app
QtGui.QPlainTextEdit.__init__(self) QtGui.QPlainTextEdit.__init__(self)
self.textInput = QtGui.QPlainTextEdit(self)
self.setCentralWidget(self.textInput)
self.textInput.textChanged.connect(self.onChanged)
self.setWindowTitle("New Post") self.setWindowTitle("New Post")
self.resize(300, 150) self.resize(300, 150)
self.setMinimumSize(100, 100) self.setMinimumSize(100, 100)
self.initUI()
self.statusBar = QtGui.QStatusBar(self)
self.statusBar.showMessage("256")
self.isPrivate = False self.isPrivate = False
self.status_id = None
self.reply_to_entity = None
def initUI(self):
newPostAction = QtGui.QAction("&New Post", self)
newPostAction.setShortcut("Ctrl+N")
newPostAction.setStatusTip("Open new post window")
newPostAction.triggered.connect(self.app.controller.openNewMessageWidow)
sendPostAction = QtGui.QAction("&Send Post", self)
sendPostAction.setShortcut("Ctrl+Return")
sendPostAction.setStatusTip("Send post")
sendPostAction.triggered.connect(self.sendMessage)
self.statusBar().showMessage('256')
menubar = self.menuBar()
fileMenu = menubar.addMenu("&File")
fileMenu.addAction(newPostAction)
fileMenu.addAction(sendPostAction)
def setIsPrivate(self, is_private): def setIsPrivate(self, is_private):
self.isPrivate = is_private self.isPrivate = is_private
@ -195,8 +235,23 @@ class NewPost(QtGui.QPlainTextEdit):
def inReplyToStatusIdWithString(self, reply_to, status_id, string): def inReplyToStatusIdWithString(self, reply_to, status_id, string):
self.reply_to_entity = reply_to self.reply_to_entity = reply_to
self.status_id = status_id self.status_id = status_id
self.setPlainText(string) self.textInput.setPlainText(string)
cursor = self.textCursor() cursor = self.textInput.textCursor()
cursor.movePosition(QtGui.QTextCursor.End, QtGui.QTextCursor.MoveAnchor) cursor.movePosition(QtGui.QTextCursor.End, QtGui.QTextCursor.MoveAnchor)
self.setTextCursor(cursor) self.textInput.setTextCursor(cursor)
def onChanged(self):
count = 256 - len(self.textInput.toPlainText())
self.statusBar().showMessage(str(count))
def sendMessage(self):
message = Helper.PostModel()
message.text = self.textInput.toPlainText()
message.inReplyTostatusId = self.status_id
message.inReplyToEntity = self.reply_to_entity
message.location = None
message.imageFilePath = None
message.isPrivate = self.isPrivate
self.app.controller.sendMessage(message)
self.close()