diff --git a/go/gothings/gcd.go b/go/gothings/gcd.go index 9a965b2..66486e5 100644 --- a/go/gothings/gcd.go +++ b/go/gothings/gcd.go @@ -151,7 +151,8 @@ func (this *GrandCentralDispatcher) loadMessagesPane(handle string) { return } // ELSE LOAD CONTACT - nick, _ := the.Peer.GetProfile().GetAttribute(handle + "_name") + contact, _ := the.Peer.GetProfile().GetContact(handle) + nick,_ := contact.GetAttribute("name") if nick == "" { this.SetToolbarTitle(handle) } else { diff --git a/qml/main.qml b/qml/main.qml index 6812c88..fa962ed 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -18,6 +18,10 @@ Item { readonly property real ratio: height / width + readonly property string cwtch_background_color: '#EEEEFF' + readonly property string cwtch_color: '#B09CBC' + readonly property string cwtch_dark_color: '#4B3557' + FontAwesome { // PRETTY BUTTON ICONS id: awesome resource: "qrc:/qml/fonts/fontawesome.ttf" diff --git a/qml/overlays/BulletinOverlay.qml b/qml/overlays/BulletinOverlay.qml index 23cce16..75bfcff 100644 --- a/qml/overlays/BulletinOverlay.qml +++ b/qml/overlays/BulletinOverlay.qml @@ -5,15 +5,41 @@ import QtQuick.Controls.Material 2.0 import QtQuick.Controls 1.4 import QtQuick.Layouts 1.3 + import "../widgets" import "../widgets/controls" as Awesome import "../fonts/Twemoji.js" as T import "../utils.js" as Utils +import "../styles" ColumnLayout { Layout.fillWidth: true width:parent.width + Text { + Layout.fillWidth: true + text: parent.toolbar.text + " Bulletin Board" + } + + TextField { + id: filter + + placeholderText: "Search.." + + style: CwtchTextFieldStyle{} + + anchors.left: parent.left + anchors.right: parent.right + + anchors.margins: 10 + + onTextChanged: { + bulletinView.filter = text + if (bulletinView.model.get(bulletinView.currentIndex).title.indexOf(text) == -1) { + bulletinView.currentIndex = -1 + } + } + } Flickable { // THE MESSAGE LIST ITSELF id: sv @@ -44,17 +70,16 @@ ColumnLayout { } if (msg.o != 2) return - - /** messagesModel.append({ - "_handle": handle, - "_from": from, - "_displayName": displayName, - "_message": parse(message, 12), - "_image": image, - "_mid": mid, - "_fromMe": fromMe, - "_ts": ts, - })*/ + if (msg.t != undefined) { + jsonModel4.insert(0,{ + "title":msg.t, + "body": msg.b, + "selected":false, + "from": from, + "displayName": displayName, + "timestamp": ts + }) + } if (sv.contentY + sv.height >= sv.contentHeight - colMessages.height && sv.contentHeight > sv.height) { sv.contentY = sv.contentHeight - sv.height @@ -62,147 +87,156 @@ ColumnLayout { } } - - - ScrollBar.vertical: ScrollBar{ policy: ScrollBar.AlwaysOn } + ListView { + id: bulletinView + anchors.left: parent.left + anchors.leftMargin: 10 + anchors.topMargin: 10 + width: parent.width - 50 + height: parent.height - 20 + orientation: Qt.Vertical + spacing: 10 + model: jsonModel4 + property string filter: "" + delegate: - - - -ListView { - id: bulletinView - anchors.left: parent.left - - width: parent.width - height: parent.height - orientation: Qt.Vertical - spacing: 10 - model: jsonModel4 - property string filter: "" - delegate: - - Item { - width: parent.width - height: title.indexOf(bulletinView.filter) >= 0 ? (bulletinView.currentIndex == index ? texttitle.height + textbody.height + replybtn.height + 8 : texttitle.height * 2) : 0 - visible: title.indexOf(bulletinView.filter) >= 0 - Column { + Item { width: parent.width - Text { id: texttitle - text: '' + Utils.htmlEscaped(title) + '' - MouseArea { - anchors.fill: parent - onClicked: bulletinView.currentIndex = index - } - } - Text { - id: textbody - visible: bulletinView.currentIndex == index - text: Utils.htmlEscaped(body) - wrapMode: TextEdit.Wrap - width: parent.width - 10 - } - SimpleButton { - id: replybtn - visible: bulletinView.currentIndex == index - text: "Reply" - anchors.right: parent.right - onClicked: { - console.log("REPLYING!!!") - gcd.broadcast("ResetMessagePane") - theStack.pane = theStack.messagePane - gcd.loadMessagesPane("e6c6dyzqojonomkxzm36lbme4cox4jhtiga5yln6cltusb5ujkcjb4yd") - overlayStack.overlay = overlayStack.chatOverlay - } - } - } + height: title.indexOf(bulletinView.filter) >= 0 ? (selected ? texttitle.height + textbody.height + replybtn.height + 8 : texttitle.height * 2) : 0 + visible: title.indexOf(bulletinView.filter) >= 0 - } + Column { + width: parent.width - highlight: Rectangle { - visible: title.indexOf(bulletinView.filter) >= 0 - color: '#B09CBC' - } - focus: true - onCurrentItemChanged: console.log(model.get(bulletinView.currentIndex).title + ' selected') + RowLayout { + Button { + text: selected ? "-" : "+" + style: CwtchExpandingButton{} + } + Text { + id: texttitle + text: '' + Utils.htmlEscaped(title) + ' by ' + from + "
" + timestamp + leftPadding: 10 + topPadding: 5 + bottomPadding:5 + color: windowItem.cwtch_dark_color + } + MouseArea { + anchors.fill: parent + onClicked: { + selected = !selected + bulletinView.currentIndex = index + } + } + } + Rectangle { + height: 1 + color: windowItem.cwtch_color + anchors { + left: parent.left + right: parent.right + } + } - ListModel { - id: jsonModel4 + Text { + id: textbody + visible: selected + text: Utils.htmlEscaped(body) + wrapMode: TextEdit.Wrap + leftPadding: 10 + topPadding: 10 + width: parent.width - 50 + } - } - - Component.onCompleted: { - jsonModel4.append({"title":"w4w for friends and other stuff","body":"Hi I'm a really
cool person who has just moved to Vancouver and I would really like to find some nice people to be friends with", "done":true}) - jsonModel4.append({"title":"m4mw everyone is great","body":"I would just like to say that everyone is great I would just like to say that everyone is great I would just like to say that everyone is greatI would just like to say that everyone is greatI would just like to say that everyone is great I would just like to say that everyone is great I would just like to say that everyone is great I would just like to say that everyone is great I would just like to say that everyone is great", "done":true,}) - jsonModel4.append({"title":"w4w for friends and other stuff","body":"Hi I'm a really
cool person who has just moved to Vancouver and I would really like to find some nice people to be friends with", "done":true}) - jsonModel4.append({"title":"w4w for friends and other stuff","body":"Hi I'm a really
cool person who has just moved to Vancouver and I would really like to find some nice people to be friends with", "done":true}) - jsonModel4.append({"title":"w4w for friends and other stuff","body":"Hi I'm a really
cool person who has just moved to Vancouver and I would really like to find some nice people to be friends with", "done":true}) - jsonModel4.append({"title":"w4w for friends and other stuff","body":"Hi I'm a really
cool person who has just moved to Vancouver and I would really like to find some nice people to be friends with", "done":true}) - - } - - -} - - - - - - - - } - - TextField { - id: filter - - placeholderText: "Filter.." - - - anchors.left: parent.left - anchors.right: parent.right - - anchors.margins: 10 - - onTextChanged: { - bulletinView.filter = text - if (bulletinView.model.get(bulletinView.currentIndex).title.indexOf(text) == -1) { - bulletinView.currentIndex = -1 - } - } - } - - ColumnLayout { - Layout.fillWidth: true - - - - SimpleButton { // SEND MESSAGE BUTTON - id: btnSend - icon: "regular/paper-plane" - text: "send" - anchors.right: parent.right - anchors.rightMargin: 2 - - property int nextMessageID: 1 - - - onClicked: { - if (txtMessage.text != "") { - txtHidden.text = restoreEmoji(txtMessage.text) - var msg = JSON.stringify({"o":2, "d":txtHidden.getText(0, txtHidden.text.length)}) - gcd.sendMessage(msg, nextMessageID++) + SimpleButton { + id: replybtn + visible: selected + text: "reply" + anchors.right: parent.right + anchors.rightMargin:10 + onClicked: { + console.log("REPLYING!!!") + gcd.broadcast("ResetMessagePane") + theStack.pane = theStack.messagePane + gcd.loadMessagesPane(from) + overlayStack.overlay = overlayStack.chatOverlay + } + } + } + + } + + focus: true + onCurrentItemChanged: console.log(model.get(bulletinView.currentIndex).title + ' selected') + + + + ListModel { + id: jsonModel4 + } + } + } + + GroupBox { + title: qsTr("New Bulletin") + Layout.fillWidth: true + + RowLayout { + Layout.fillWidth: true + width: parent.width + ColumnLayout { + Layout.fillWidth: true + + + Text { + text: "Post a new Bulletin Post" + } + + TextField { + id: newposttitle + placeholderText: "Title.." + Layout.fillWidth: true + style: CwtchTextFieldStyle{} + } + + TextArea { + id: newpostbody + Layout.fillWidth: true + style: CwtchTextAreaStyle{} + } + + + SimpleButton { // SEND MESSAGE BUTTON + id: btnSend + icon: "regular/paper-plane" + text: "post" + anchors.right: parent.right + anchors.rightMargin: 2 + + property int nextMessageID: 1 + + onClicked: { + if (newposttitle.text != "" && newpostbody.text != "") { + var msg = JSON.stringify({"o":2, "t":newposttitle.text, "b":newpostbody.text}) + gcd.sendMessage(msg, nextMessageID++) + } + newposttitle.text = "" + newpostbody.text = "" } - txtMessage.text = "" } } + } + + } + - } diff --git a/qml/styles/CwtchExpandingButton.qml b/qml/styles/CwtchExpandingButton.qml new file mode 100644 index 0000000..af6dd66 --- /dev/null +++ b/qml/styles/CwtchExpandingButton.qml @@ -0,0 +1,20 @@ +import QtQuick.Controls.Styles 1.4 +import QtQuick 2.7 + +ButtonStyle { + background: Rectangle { + width:25 + height:25 + color: windowItem.cwtch_dark_color + border.color: windowItem.cwtch_color + } + label: Text { + renderType: Text.NativeRendering + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + font.family: "Monospace" + font.pointSize: 8 + color: windowItem.cwtch_background_color + text: control.text + } +} \ No newline at end of file diff --git a/qml/styles/CwtchTextAreaStyle.qml b/qml/styles/CwtchTextAreaStyle.qml new file mode 100644 index 0000000..b65d6f4 --- /dev/null +++ b/qml/styles/CwtchTextAreaStyle.qml @@ -0,0 +1,8 @@ +import QtQuick.Controls.Styles 1.4 +import QtQuick 2.7 + + +TextAreaStyle { + textColor: "black" + backgroundColor: windowItem.cwtch_background_color +} \ No newline at end of file diff --git a/qml/styles/CwtchTextFieldStyle.qml b/qml/styles/CwtchTextFieldStyle.qml new file mode 100644 index 0000000..e2e61a0 --- /dev/null +++ b/qml/styles/CwtchTextFieldStyle.qml @@ -0,0 +1,14 @@ +import QtQuick.Controls.Styles 1.4 +import QtQuick 2.7 + + +TextFieldStyle { + textColor: "black" + background: Rectangle { + radius: 2 + implicitWidth: 100 + implicitHeight: 24 + color: windowItem.cwtch_background_color + border.color: windowItem.cwtch_color + } +} \ No newline at end of file diff --git a/qml/widgets/ContactRow.qml b/qml/widgets/ContactRow.qml index eb7f432..ccd7d06 100644 --- a/qml/widgets/ContactRow.qml +++ b/qml/widgets/ContactRow.qml @@ -87,7 +87,6 @@ RowLayout { // LOTS OF NESTING TO DEAL WITH QT WEIRDNESS, SORRY isActive = true theStack.pane = theStack.messagePane gcd.loadMessagesPane(handle) - theStack.overlaypane.toolbar.lbl.text = handle } onEntered: {