forked from lubuwest/Friendiqa
OAuth and bugfixes
This commit is contained in:
parent
e58a1f69dc
commit
d43c18bb76
65 changed files with 1681 additions and 1494 deletions
|
@ -68,7 +68,7 @@ Rectangle {
|
|||
eventdays=dayArray;
|
||||
calBusy.running=false
|
||||
var currentevents=events;
|
||||
var currentevents=events.filter(event=>(currentTime<=event.end));
|
||||
currentevents=events.filter(event=>(currentTime<=event.end));
|
||||
for (var i=0; i<Math.min(5,currentevents.length);i++){
|
||||
var liststate="";
|
||||
eventModel.append({"event":currentevents[i],"eventstatus":liststate});
|
||||
|
@ -155,10 +155,8 @@ Rectangle {
|
|||
standardButtons: Dialog.Ok | Dialog.Cancel
|
||||
modal: true
|
||||
onAccepted: {
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/friendica/event_delete");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("id",eventid);
|
||||
xhr.post();
|
||||
}
|
||||
|
|
|
@ -350,10 +350,8 @@ Flickable{
|
|||
let startdatetext=textStartDate.getText(0,textStartDate.length);
|
||||
let startdate=new Date(startdatetext.substring(6,10)+"-"+startdatetext.substring(3,5)+"-"+startdatetext.substring(0,2)+"T"+textStartTime.text)
|
||||
eventCreateBusy.running=true;
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/friendica/event_create");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("name", titleField.text);
|
||||
xhr.setParam("start_time",startdate.toISOString())
|
||||
if(!checkNoEndTime.checked){
|
||||
|
|
|
@ -74,10 +74,8 @@ Rectangle{
|
|||
standardButtons: Dialog.Ok | Dialog.Cancel
|
||||
modal: true
|
||||
onAccepted: {
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/friendica/event_delete");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("id",eventid);
|
||||
xhr.post();
|
||||
}
|
||||
|
|
|
@ -43,10 +43,11 @@ Dialog {
|
|||
standardButtons: Dialog.Yes | Dialog.No
|
||||
modal: true
|
||||
onAccepted: {
|
||||
username.visible=true;
|
||||
password.visible=true;
|
||||
// username.visible=true;
|
||||
// password.visible=true;
|
||||
ruleButton.visible=false;
|
||||
confirmation.visible=true
|
||||
// confirmation.visible=true
|
||||
accountPage.state="oauth"
|
||||
}
|
||||
onRejected: {close()}
|
||||
ScrollView{
|
||||
|
|
|
@ -35,7 +35,6 @@ import QtQuick.Controls 2.12
|
|||
import QtQuick.Layouts 1.12
|
||||
import QtQml.Models 2.15
|
||||
import "qrc:/js/service.js" as Service
|
||||
import "qrc:/js/layout.js" as Layoutjs
|
||||
import "qrc:/js/helper.js" as Helperjs
|
||||
import "qrc:/qml/configqml"
|
||||
import "qrc:/qml/genericqml"
|
||||
|
@ -47,18 +46,56 @@ Page{
|
|||
property var users:[]
|
||||
property var userdata: ({})
|
||||
property string imagestoredir: ""
|
||||
|
||||
property var appdata: ({})
|
||||
|
||||
function setServericon(server){
|
||||
if ((server!=null) && (server!="")){
|
||||
try {Helperjs.friendicaWebRequest(server+"/api/statusnet/config",accountPage, function (obj){
|
||||
var serverdata = JSON.parse(obj);
|
||||
servericon.visible=true;
|
||||
servericon.source=serverdata.site.logo})
|
||||
} catch(e){print(e)}
|
||||
xhr.setUrl(server);
|
||||
xhr.setApi("/api/statusnet/config");
|
||||
xhr.clearParams();
|
||||
xhr.get();
|
||||
}
|
||||
}
|
||||
|
||||
function verify(userconfig){
|
||||
Helperjs.friendicaRequest(userconfig,"/api/v1/accounts/verify_credentials",root,function(obj){
|
||||
accountBusy.running=false;
|
||||
try{var credentials=JSON.parse(obj);
|
||||
if (credentials.hasOwnProperty('error')){
|
||||
Helperjs.showMessage(qsTr("Error"),qsTr("Wrong password or 2FA enabled!"),root)
|
||||
}
|
||||
else{
|
||||
if (users.length==0){Service.setDefaultOptions(db);}
|
||||
if (userconfig.APIVersion!=""){userconfig.password=""}
|
||||
if (imagestoredir==""){imagestoredir=filesystem.homePath+"/"+credentials.username+"/";
|
||||
userconfig.imagestore=imagestoredir}
|
||||
if(userconfig.imagestore == filesystem.homePath+"/"+username.text+"/")
|
||||
{filesystem.makePath(filesystem.homePath+"/"+username.text);}
|
||||
filesystem.Directory=imagestoredir;
|
||||
filesystem.makeDir("contacts");
|
||||
filesystem.makeDir("albums");
|
||||
userconfig.accountId=credentials.id;
|
||||
userconfig.username=credentials.username;
|
||||
Service.storeConfig(db,userconfig);
|
||||
Service.readConfig(db,function(userconfig){
|
||||
Helperjs.readData(db,"config","",function(storedUsers){
|
||||
storedUsers.sort(function(obj1, obj2) {
|
||||
return obj1.isActive - obj2.isActive;
|
||||
});
|
||||
accountPage.users=storedUsers});
|
||||
//reset values
|
||||
login=userconfig;
|
||||
news=[];
|
||||
contactlist=[];
|
||||
rootstack.currentIndex=0;
|
||||
newstypeSignal("refresh");
|
||||
},"isActive",0);
|
||||
Helperjs.showMessage(qsTr("Success"),qsTr("Name")+": "+credentials.display_name+"\nScreen Name: "+credentials.username,root)
|
||||
rootstackView.pop()
|
||||
}
|
||||
}catch(e){Helperjs.showMessage(qsTr("Error"),qsTr("Wrong password or 2FA enabled!"),root)};
|
||||
})}
|
||||
|
||||
MButton{
|
||||
id:userButton
|
||||
text:qsTr("User")
|
||||
|
@ -82,6 +119,8 @@ Page{
|
|||
imagestore.text=obj.imagestore;
|
||||
imagestoredir=obj.imagestore;
|
||||
if( obj.isActive==0){userButton.font.bold='true'} else {userButton.font.bold='false'}
|
||||
if(obj.password!=''){accountPage.state='password'}
|
||||
else if (obj.token!=''){accountPage.state='oauth'}
|
||||
},'username','"+ accountPage.users[i].username+"')}}"
|
||||
}
|
||||
var menuString="import QtQuick.Controls 2.12;import 'qrc:/js/service.js' as Service;"+
|
||||
|
@ -96,11 +135,18 @@ Page{
|
|||
width:2.5*root.fontFactor*osSettings.bigFontSize; height: 2.5*root.fontFactor*osSettings.bigFontSize
|
||||
visible: false
|
||||
source:""
|
||||
property var serverconfig:({})
|
||||
MouseArea{
|
||||
anchors.fill:parent
|
||||
onClicked:{
|
||||
Service.showServerConfig(servername.text, accountPage, function(configString){
|
||||
var serverconfigObject=Qt.createQmlObject(configString,accountPage,"serverconfigOutput");})
|
||||
let serverConfigString="import QtQuick 2.0; import QtQuick.Dialogs 1.2; MessageDialog{ visible: true; title:'Server';standardButtons: StandardButton.Ok;text: 'Name: "+
|
||||
servericon.serverconfig.site.name+"\nLanguage: "+servericon.serverconfig.site.language+
|
||||
"\nEmail: "+servericon.serverconfig.site.email+"\nTimezone: "+servericon.serverconfig.site.timezone+"\nClosed: "+servericon.serverconfig.site.closed+
|
||||
"\nText limit: "+servericon.serverconfig.site.textlimit+"\nShort Url length: "+servericon.serverconfig.site.shorturllength+
|
||||
"\nFriendica version: "+servericon.serverconfig.site.friendica.FRIENDICA_VERSION+
|
||||
"\nDB Update version: "+servericon.serverconfig.site.friendica.DB_UPDATE_VERSION+"'}";
|
||||
|
||||
var serverconfigObject=Qt.createQmlObject(serverConfigString,accountPage,"serverconfigOutput");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -180,22 +226,23 @@ Page{
|
|||
}
|
||||
|
||||
ListModel{id:serverModel
|
||||
ListElement{text:"https://anonsys.net"}
|
||||
ListElement{text:"https://asaps-sm.lafayettegroup.com"}
|
||||
ListElement{text:"https://f.freinetz.ch"}
|
||||
ListElement{text:"https://friendica.chilemasto.casa"}
|
||||
ListElement{text:"https://friendica.eskimo.com"}
|
||||
ListElement{text:"https://friendica.me"}
|
||||
ListElement{text:"https://friendica.opensocial.space"}
|
||||
ListElement{text:"https://friendica.utzer.de"}
|
||||
ListElement{text:"https://friendica.vrije-mens.org"}
|
||||
ListElement{text:"https://friendicarg.nsupdate.info.de"}
|
||||
ListElement{text:"https://friends.nogafam.es"}
|
||||
ListElement{text:"https://libranet.de"}
|
||||
ListElement{text:"https://loma.ml"}
|
||||
ListElement{text:"https://social.trom.tf"}
|
||||
ListElement{text:"https://motley.club"}
|
||||
ListElement{text:"https://nerdica.net"}
|
||||
ListElement{text:"https://noovi.org"}
|
||||
ListElement{text:"https://nsfw.wnymathguy.com"}
|
||||
ListElement{text:"https://opensocial.at"}
|
||||
ListElement{text:"https://poliverso.org"}
|
||||
ListElement{text:"https://social.isurf.ca"}
|
||||
ListElement{text:"https://social.trom.tf"}
|
||||
ListElement{text:"https://squeet.me"}
|
||||
ListElement{text:"https://venera.social"}
|
||||
}
|
||||
|
@ -208,16 +255,10 @@ Page{
|
|||
text: qsTr("Instance rules")
|
||||
font.pointSize: osSettings.bigFontSize
|
||||
onClicked:{
|
||||
Helperjs.friendicaWebRequest(servername.text+"/api/v1/instance/rules",root,function(rules){
|
||||
let rulestext="";
|
||||
let rulesarray=JSON.parse(rules)
|
||||
for (let rule in rulesarray){
|
||||
rulestext=rulestext+rulesarray[rule].text+"\n"
|
||||
}
|
||||
var component = Qt.createComponent("qrc:/qml/configqml/AcceptRules.qml");
|
||||
var rulesdialog = component.createObject(root,{"rules": rulestext});
|
||||
rulesdialog.open()
|
||||
})
|
||||
xhr.setUrl(servername.text);
|
||||
xhr.setApi("/api/v1/instance/rules");
|
||||
xhr.clearParams();
|
||||
xhr.get();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -237,7 +278,6 @@ Page{
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
TextField {
|
||||
id: password
|
||||
x: root.fontFactor*osSettings.bigFontSize; y: 9*root.fontFactor*osSettings.bigFontSize; width: root.width-9*mm; //height: 5*mm;
|
||||
|
@ -298,62 +338,119 @@ Page{
|
|||
running: false
|
||||
}
|
||||
|
||||
MButton {
|
||||
id:confirmationOAuth
|
||||
x: root.fontFactor*osSettings.bigFontSize; y: 16*root.fontFactor*osSettings.bigFontSize
|
||||
text: qsTr("Connect")
|
||||
font.pointSize: osSettings.bigFontSize
|
||||
visible: (osSettings.osType=="Android")?userButton.text!= qsTr("User"):true
|
||||
onClicked:{
|
||||
if (servername.text==""){Helperjs.showMessage(qsTr("Error"), qsTr("No server given!"),root)}
|
||||
else{
|
||||
xhr.setUrl(servername.text);
|
||||
xhr.setApi("/api/v1/apps");
|
||||
xhr.clearParams();
|
||||
if (osSettings.osType=="Android"){
|
||||
xhr.setParam("client_name","Friendiqa-Android");
|
||||
} else {
|
||||
xhr.setParam("client_name","Friendiqa-"+filesystem.hostname);
|
||||
}
|
||||
xhr.setParam("redirect_uris","http://127.0.0.1:1337/");
|
||||
xhr.setParam("scopes","read write follow push");
|
||||
xhr.setParam("website","https://friendiqa.ma-nic.de");
|
||||
xhr.post();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Connections{
|
||||
target: xhr
|
||||
function onSuccess(text,api){
|
||||
if(api=="/api/v1/instance/rules"){
|
||||
let rulestext="";
|
||||
let rulesarray=JSON.parse(text)
|
||||
for (let rule in rulesarray){
|
||||
rulestext=rulestext+rulesarray[rule].text+"\n"
|
||||
}
|
||||
var component = Qt.createComponent("qrc:/qml/configqml/AcceptRules.qml");
|
||||
var rulesdialog = component.createObject(root,{"rules": rulestext});
|
||||
rulesdialog.open();
|
||||
}
|
||||
else if(api=="/api/statusnet/config"){
|
||||
try{let serverdata = JSON.parse(text);
|
||||
servericon.visible=true;
|
||||
servericon.source=serverdata.site.logo;
|
||||
servericon.serverconfig=serverdata;
|
||||
}
|
||||
catch(e){print(e)}
|
||||
}
|
||||
|
||||
else if (api=="/api/v1/apps"){
|
||||
let app=JSON.parse(text);
|
||||
accountPage.appdata=app;
|
||||
oauth2.setClientId(app.client_id);
|
||||
oauth2.setClientSecret(app.client_secret);
|
||||
oauth2.setServer(servername.text);
|
||||
oauth2.grant();
|
||||
}
|
||||
}
|
||||
function onError(text,api){
|
||||
print(api + " Error "+ text)
|
||||
}
|
||||
}
|
||||
|
||||
Connections{
|
||||
target: oauth2
|
||||
function onSuccess(text){
|
||||
var userconfig={server: servername.displayText, username:"", password:"", imagestore: imagestoredir,interval:"",token: text,client:Qt.btoa(JSON.stringify(appdata))}
|
||||
verify(userconfig)
|
||||
}
|
||||
function onError(text){
|
||||
Helperjs.showMessage(qsTr("Error"), qsTr("Couldn't connect to server"),root)
|
||||
print ("oauth2 onerror "+text)
|
||||
}
|
||||
}
|
||||
|
||||
MButton {
|
||||
id:confirmation
|
||||
x: root.fontFactor*osSettings.bigFontSize; y: 16*root.fontFactor*osSettings.bigFontSize
|
||||
text: qsTr("Confirm")
|
||||
font.pointSize: osSettings.bigFontSize
|
||||
visible: (osSettings.osType=="Android")?userButton.text!= qsTr("User"):true
|
||||
visible: false// (osSettings.osType=="Android")?userButton.text!= qsTr("User"):true
|
||||
onClicked:{
|
||||
accountBusy.running=true;//servername.displayText
|
||||
var userconfig={server: servername.displayText, username: username.text, password:Qt.btoa(password.text), imagestore:imagestoredir,interval: ""};
|
||||
accountBusy.running=true;
|
||||
var userconfig={server: servername.displayText, username: username.text, password:Qt.btoa(password.text), imagestore:imagestoredir,interval:""};
|
||||
var errormessage="";
|
||||
if (servername.text==""){errormessage=qsTr("No server given! ")}
|
||||
else if (username.text==""){errormessage+=qsTr("No nickname given! ")}
|
||||
else if (password.text=="") {errormessage+=qsTr("No password given! ")}
|
||||
else if (imagestoredir=="") {errormessage+=qsTr("No image directory given!")}
|
||||
|
||||
else {errormessage=""}
|
||||
if (errormessage=="") {
|
||||
Helperjs.friendicaRequest(userconfig,"/api/account/verify_credentials.json?skip_status=true",root,function(obj){
|
||||
accountBusy.running=false;
|
||||
try{var credentials=JSON.parse(obj);
|
||||
if (credentials.hasOwnProperty('error')){
|
||||
Helperjs.showMessage(qsTr("Error"),qsTr("Wrong password or 2FA enabled!"),root)
|
||||
}
|
||||
else{
|
||||
if (users.length==0){Service.setDefaultOptions(db);}
|
||||
if(userconfig.imagestore == filesystem.homePath+"/"+username.text+"/")
|
||||
{
|
||||
filesystem.makePath(filesystem.homePath+"/"+username.text);
|
||||
}
|
||||
filesystem.Directory=imagestoredir
|
||||
filesystem.makeDir("contacts");
|
||||
filesystem.makeDir("albums");
|
||||
userconfig.accountId=credentials.id
|
||||
Service.storeConfig(db,userconfig);
|
||||
Service.readConfig(db,function(userconfig){
|
||||
Helperjs.readData(db,"config","",function(storedUsers){
|
||||
storedUsers.sort(function(obj1, obj2) {
|
||||
return obj1.isActive - obj2.isActive;
|
||||
});
|
||||
accountPage.users=storedUsers});
|
||||
//reset values
|
||||
login=userconfig;
|
||||
news=[];
|
||||
contactlist=[];
|
||||
rootstack.currentIndex=0;
|
||||
newstypeSignal("refresh");
|
||||
},"isActive",0);
|
||||
Helperjs.showMessage(qsTr("Success"),qsTr("Name")+": "+credentials.name+"\nScreen Name: "+credentials.screen_name,root)
|
||||
rootstackView.pop()
|
||||
}
|
||||
}catch(e){Helperjs.showMessage(qsTr("Error"),qsTr("Wrong password or 2FA enabled!"),root)};
|
||||
|
||||
})}
|
||||
else {Helperjs.showMessage(qsTr("Error"), errormessage,root)}
|
||||
if (errormessage=="") {verify(userconfig)}
|
||||
else {Helperjs.showMessage(qsTr("Error"), errormessage,root)}
|
||||
}}
|
||||
|
||||
MButton {
|
||||
id: setDefault
|
||||
x: 10*root.fontFactor*osSettings.bigFontSize; y: 16*root.fontFactor*osSettings.bigFontSize
|
||||
text: qsTr("Set as default")
|
||||
font.pointSize: osSettings.bigFontSize
|
||||
visible: false
|
||||
onClicked:{
|
||||
accountBusy.running=true;
|
||||
let users=updatenews.getAccounts("username",username.text)
|
||||
Service.storeConfig(db,users[0]);
|
||||
Service.readConfig(db,function(userconfig){
|
||||
//reset values
|
||||
login=userconfig;
|
||||
news=[];
|
||||
contactlist=[];
|
||||
rootstack.currentIndex=0;
|
||||
newstypeSignal("refresh");
|
||||
},"isActive",0);
|
||||
Helperjs.showMessage(qsTr("Success"),"Screen Name: "+users[0].username,root)
|
||||
rootstackView.pop()
|
||||
}}
|
||||
|
||||
Row{
|
||||
spacing:0.5*mm
|
||||
|
@ -368,6 +465,19 @@ Page{
|
|||
font.pointSize: osSettings.bigFontSize
|
||||
onClicked:{
|
||||
var userconfig={server: servername.text, username: username.text, password: Qt.btoa(password.text)};
|
||||
|
||||
Service.readConfig(db,function(user){
|
||||
if(userdata.token!=""){xhr.setUrl(servername.text);
|
||||
xhr.setApi("/oauth/revoke");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("client_id",user.client.client_id);
|
||||
xhr.setParam("client_secret",user.client.client_secret);
|
||||
xhr.setParam("token",user.token);
|
||||
xhr.post();
|
||||
}
|
||||
},"username",username.text);
|
||||
|
||||
|
||||
Service.deleteConfig(db,userconfig,function(){
|
||||
filesystem.Directory=imagestore.text+"contacts";
|
||||
filesystem.rmDir();
|
||||
|
@ -379,15 +489,13 @@ Page{
|
|||
username.text="";
|
||||
password.text="";
|
||||
imagestore.text="";
|
||||
//maxNews.value=0;
|
||||
//newsTypeField.text="Conversations";
|
||||
//messageIntervalSlider.value=30;
|
||||
userButton.text=qsTr("User");
|
||||
Helperjs.readData(db,"config","",function(storedUsers){
|
||||
storedUsers.sort(function(obj1, obj2) {
|
||||
return obj1.isActive - obj2.isActive;
|
||||
})
|
||||
accountPage.users=storedUsers;})
|
||||
accountPage.state="new_oauth"
|
||||
})
|
||||
}}
|
||||
|
||||
|
@ -404,6 +512,7 @@ Page{
|
|||
password.text=""
|
||||
imagestore.text=""
|
||||
userButton.text=qsTr("User")
|
||||
accountPage.state="new_oauth"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -425,7 +534,31 @@ Page{
|
|||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
states: [
|
||||
State {
|
||||
name: "new_oauth"
|
||||
PropertyChanges { target: username; visible: false }
|
||||
PropertyChanges { target: password; visible: false}
|
||||
PropertyChanges { target: ruleButton; visible: true}
|
||||
},
|
||||
State {
|
||||
name:"oauth"
|
||||
PropertyChanges {target: username; visible: true}
|
||||
PropertyChanges { target: password; visible: false}
|
||||
PropertyChanges {target: confirmationOAuth; visible: true}
|
||||
PropertyChanges {target: setDefault; visible: true}
|
||||
PropertyChanges { target: confirmation; visible: false}
|
||||
},
|
||||
State{
|
||||
name:"password"
|
||||
PropertyChanges { target: username; visible: true }
|
||||
PropertyChanges { target: password; visible: true}
|
||||
PropertyChanges { target: confirmation; visible: true}
|
||||
PropertyChanges {target: confirmationOAuth; visible: false}
|
||||
}
|
||||
]
|
||||
|
||||
Component.onCompleted: { //print("filesystem.osType " +filesystem.osType)
|
||||
try{Helperjs.readData(db,"config","",function(storedUsers){
|
||||
storedUsers.sort(function(obj1, obj2) {
|
||||
return obj1.isActive - obj2.isActive;
|
||||
|
@ -441,6 +574,9 @@ Page{
|
|||
imagestore.text=obj.imagestore;
|
||||
imagestoredir=obj.imagestore;
|
||||
if( obj.isActive==0){userButton.font.bold='true'} else {userButton.font.bold='false'}
|
||||
if(obj.password!=""){accountPage.state="password"}
|
||||
else if (obj.token!=""){accountPage.state="oauth"}
|
||||
else {accountPage.state="new_oauth"}
|
||||
},"isActive",0)
|
||||
})}
|
||||
catch (e){//print("onCompleted" +users.count +e)
|
||||
|
|
|
@ -43,14 +43,13 @@ Page{
|
|||
font.pointSize: osSettings.systemFontSize
|
||||
color:Material.primaryTextColor
|
||||
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
|
||||
text: "<b>Friendiqa v0.6.7 </b><br>Licensed under GPL 3 with the exception of OpenSSL <br> "+
|
||||
text: "<b>Friendiqa v0.6.8 </b><br>Licensed under GPL 3 with the exception of OpenSSL <br> "+
|
||||
"Website <a href='https://friendiqa.ma-nic.de'>https://friendiqa.ma-nic.de</a><br>"+
|
||||
"Sourcecode: <a href='https://git.friendi.ca/LubuWest/Friendiqa'>https://git.friendi.ca/LubuWest/Friendiqa</a><br>"+
|
||||
"Privacy Policy: <a href='https://git.friendi.ca/lubuwest/Friendiqa/src/branch/master/PrivacyPolicy.md'>http://git.friendi.ca/lubuwest/Friendiqa/src/branch/master/PrivacyPolicy.md</a><br>"+
|
||||
"Code by <a href='https://freunde.ma-nic.de/profile/pankraz'>Marco</a><br>"+
|
||||
"Qt Framework <a href='https://www.qt.io'>www.qt.io</a><br>"+
|
||||
"Icons by <a href='http://fontawesome.io'>FontAwesome</a><br>"+
|
||||
"Folder Icon by <a href='https://github.com/KDE/breeze-icons'>KDE Breeze Icons</a><br>"+
|
||||
"AndroidNative by <a href='https://github.com/benlau/androidnative.pri'>Ben Lau</a><br>"+
|
||||
"This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (<a href='http://www.openssl.org/'>http://www.openssl.org/</a>)"
|
||||
onLinkActivated:{
|
||||
|
|
|
@ -47,9 +47,7 @@ Page{
|
|||
function search(term){
|
||||
contactSearchBusy.running=true;
|
||||
try {contactsSearchModel.clear()} catch(e){};
|
||||
xhr.clearParams();
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/v1/accounts/search");
|
||||
xhr.setParam("q",term);
|
||||
xhr.setParam("limit",99)
|
||||
|
|
|
@ -53,10 +53,8 @@ Item{
|
|||
// update groups
|
||||
var api="";
|
||||
if (group.new){api="/api/friendica/group_create.json?name="+group.name}else{api="/api/friendica/group_update.json?gid="+group.id}
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi(api);
|
||||
xhr.clearParams();
|
||||
xhr.setParam("gid",group.id);
|
||||
xhr.setParam("name",group.name);
|
||||
xhr.setParam("user", group.user);
|
||||
|
|
|
@ -45,10 +45,8 @@ Rectangle {
|
|||
property var createdAtDate: new Date(profile.friendica_owner.created_at)
|
||||
|
||||
function updateProfileImage(){
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/account/update_profile_image.json");
|
||||
xhr.clearParams();
|
||||
xhr.setImageFileParam("image", photoImage.source );
|
||||
xhr.post();
|
||||
}
|
||||
|
|
|
@ -82,8 +82,8 @@ ApplicationWindow{
|
|||
function onLoginChanged(login){
|
||||
if(login==""){rootstackView.push("qrc:/qml/configqml/AccountPage.qml")}
|
||||
else{
|
||||
if (login.newsViewType!="" || login.newsViewType!=null){
|
||||
newstab.newstabstatus=login.newsViewType;}
|
||||
// if (login.newsViewType!="" || login.newsViewType!=null){
|
||||
// newstab.newstabstatus=login.newsViewType;}
|
||||
Newsjs.getCurrentContacts(login,db,function(contacts){
|
||||
contactlist=contacts})
|
||||
}
|
||||
|
@ -214,6 +214,8 @@ ApplicationWindow{
|
|||
anchors.fill: parent
|
||||
color: Material.backgroundDimColor
|
||||
}
|
||||
ToolTip.visible: pressed || hovered
|
||||
ToolTip.text: qsTr("Posts")
|
||||
onDoubleClicked: {newstypeSignal("refresh")}
|
||||
}
|
||||
TabButton {
|
||||
|
@ -222,6 +224,8 @@ ApplicationWindow{
|
|||
anchors.fill: parent
|
||||
color: Material.backgroundDimColor
|
||||
}
|
||||
ToolTip.visible: pressed || hovered
|
||||
ToolTip.text: qsTr("Contacts")
|
||||
}
|
||||
TabButton {
|
||||
text: "\uf03e"
|
||||
|
@ -229,6 +233,8 @@ ApplicationWindow{
|
|||
anchors.fill: parent
|
||||
color: Material.backgroundDimColor
|
||||
}
|
||||
ToolTip.visible: pressed || hovered
|
||||
ToolTip.text: qsTr("Photos")
|
||||
}
|
||||
TabButton {
|
||||
text: "\uf073"
|
||||
|
@ -236,6 +242,8 @@ ApplicationWindow{
|
|||
anchors.fill: parent
|
||||
color: Material.backgroundDimColor
|
||||
}
|
||||
ToolTip.visible: pressed || hovered
|
||||
ToolTip.text: qsTr("Calendar")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -65,6 +65,7 @@ Item {
|
|||
login=account;
|
||||
if(!wideScreen){leftDrawerAndroid.close()}
|
||||
friendsTabView.currentIndex=0;
|
||||
friendsbar.currentIndex=0;
|
||||
profileLoader.source="";
|
||||
profileLoader.source="qrc:/qml/contactqml/ProfileTab.qml"
|
||||
}
|
||||
|
@ -82,7 +83,8 @@ Item {
|
|||
onClicked:{
|
||||
login=account;
|
||||
if(!wideScreen){leftDrawerAndroid.close()}
|
||||
friendsTabView.currentIndex=1
|
||||
friendsTabView.currentIndex=1;
|
||||
friendsbar.currentIndex=1;
|
||||
friendsListLoader.source="";
|
||||
friendsListLoader.source="qrc:/qml/contactqml/FriendsListTab.qml"
|
||||
}
|
||||
|
@ -93,14 +95,15 @@ Item {
|
|||
y:5*root.fontFactor*osSettings.bigFontSize
|
||||
width:parent.width
|
||||
font.pointSize: osSettings.systemFontSize
|
||||
font.bold: account.username==login.username && friendsTabView.currentIndex==3
|
||||
font.bold: account.username==login.username && friendsTabView.currentIndex==2
|
||||
text: " "+qsTr("Groups")
|
||||
MouseArea{
|
||||
anchors.fill:parent
|
||||
onClicked:{
|
||||
login=account;
|
||||
if(!wideScreen){leftDrawerAndroid.close()}
|
||||
friendsTabView.currentIndex=2
|
||||
friendsTabView.currentIndex=2;
|
||||
friendsbar.currentIndex=2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -206,21 +206,21 @@ Rectangle{
|
|||
}
|
||||
}
|
||||
|
||||
Component.onCompleted:{
|
||||
Helperjs.readData(db,"contacts",login.username,function(contacts){
|
||||
for (var name in contacts){
|
||||
var contactstatus="neutral";
|
||||
if (contact_allow.indexOf(contacts[name].cid)>-1){contactstatus="positive"}
|
||||
else if (contact_deny.indexOf(contacts[name].cid)>-1){contactstatus="negative"}
|
||||
contactModel.append({"contact":contacts[name],"contactstatus":contactstatus})
|
||||
}},"isFriend",1,"name");
|
||||
// Component.onCompleted:{
|
||||
// Helperjs.readData(db,"contacts",login.username,function(contacts){
|
||||
// for (var name in contacts){
|
||||
// var contactstatus="neutral";
|
||||
// if (contact_allow.indexOf(contacts[name].cid)>-1){contactstatus="positive"}
|
||||
// else if (contact_deny.indexOf(contacts[name].cid)>-1){contactstatus="negative"}
|
||||
// contactModel.append({"contact":contacts[name],"contactstatus":contactstatus})
|
||||
// }},"isFriend",1,"name");
|
||||
|
||||
Helperjs.readData(db,"groups",login.username,function(owngroups){
|
||||
for (var number in owngroups){
|
||||
var groupstatus= "neutral";
|
||||
if (group_allow.indexOf(owngroups[number].gid)>-1){groupstatus="positive"}
|
||||
else if (group_deny.indexOf(owngroups[number].gid)>-1){groupstatus="negative"}
|
||||
groupModel.append({"group":owngroups[number],"groupstatus":groupstatus})
|
||||
}});
|
||||
}
|
||||
// Helperjs.readData(db,"groups",login.username,function(owngroups){
|
||||
// for (var number in owngroups){
|
||||
// var groupstatus= "neutral";
|
||||
// if (group_allow.indexOf(owngroups[number].gid)>-1){groupstatus="positive"}
|
||||
// else if (group_deny.indexOf(owngroups[number].gid)>-1){groupstatus="negative"}
|
||||
// groupModel.append({"group":owngroups[number],"groupstatus":groupstatus})
|
||||
// }});
|
||||
// }
|
||||
}
|
||||
|
|
|
@ -44,10 +44,8 @@ Dialog {
|
|||
modal: true
|
||||
onAccepted: {
|
||||
Helperjs.updateData(root.db,"contacts",login.username,"statusnet_blocking", true,function(){},"id",newsitem.user.id)
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/v1/accounts/" + newsitem.user.id + "/block");
|
||||
xhr.clearParams();
|
||||
xhr.post();
|
||||
}
|
||||
onRejected: {close()}
|
||||
|
|
|
@ -89,18 +89,13 @@ Page {
|
|||
}
|
||||
|
||||
function showConversation(conversationIndex,newsitemobject){
|
||||
xhr.setAccount(login);
|
||||
if(newsitemobject.messagetype==0 || newsitemobject.messagetype==3){
|
||||
xhr.clearParams();
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/conversation/show");
|
||||
xhr.setParam("id",newsitemobject.id)
|
||||
xhr.get();
|
||||
}
|
||||
else{
|
||||
xhr.clearParams();
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/direct_messages/conversation");
|
||||
xhr.setParam("uri",newsitemobject.statusnet_conversation_id)
|
||||
xhr.get();
|
||||
|
@ -218,11 +213,10 @@ Page {
|
|||
height: 6*mm
|
||||
text:qsTr("Approve")
|
||||
onClicked:{
|
||||
Helperjs.friendicaPostRequest(login,"/api/v1/follow_requests/" + contact.id + "/authorize",'',"POST",root,function(returnvalue){
|
||||
|
||||
})
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/v1/follow_requests/" + contact.id + "/authorize");
|
||||
xhr.post();
|
||||
Helperjs.deleteData(root.db,"friendshiprequests",root.login.username,function(){},"id", contact.id)
|
||||
//if (rootstack.currentIndex==1){root.friendsSignal(login.username)}
|
||||
try{root.contactRefreshSignal();}catch(e){print("root.refreshSignal"+e)}
|
||||
rootstackView.pop()
|
||||
}
|
||||
|
@ -233,11 +227,10 @@ Page {
|
|||
height: 6*mm
|
||||
text:qsTr("Reject")
|
||||
onClicked:{
|
||||
Helperjs.friendicaPostRequest(login,"/api/v1/follow_requests/" + contact.id + "/reject",'',"POST",root,function(returnvalue){
|
||||
|
||||
})
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/v1/follow_requests/" + contact.id + "/authorize");
|
||||
xhr.post();
|
||||
Helperjs.deleteData(root.db,"friendshiprequests",root.login.username,function(){},"id", contact.id)
|
||||
//if (rootstack.currentIndex==1){root.friendsSignal(login.username)}
|
||||
try{root.contactRefreshSignal();}catch(e){print("root.refreshSignal"+e)}
|
||||
rootstackView.pop()
|
||||
}
|
||||
|
@ -248,11 +241,10 @@ Page {
|
|||
height: 6*mm
|
||||
text:qsTr("Ignore")
|
||||
onClicked:{
|
||||
Helperjs.friendicaPostRequest(login,"/api/v1/follow_requests/" + contact.id + "/ignore",'',"POST",root,function(returnvalue){
|
||||
|
||||
});
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/v1/follow_requests/" + contact.id + "/ignore");
|
||||
xhr.post();
|
||||
Helperjs.deleteData(root.db,"friendshiprequests",root.login.username,function(){},"id", contact.id)
|
||||
//if (rootstack.currentIndex==1){root.friendsSignal(login.username)}
|
||||
try{root.contactRefreshSignal();}catch(e){print("root.refreshSignal"+e)}
|
||||
rootstackView.pop()
|
||||
}
|
||||
|
@ -264,12 +256,11 @@ Page {
|
|||
text:qsTr("Follow")
|
||||
onClicked:{
|
||||
contactBusy.running=true;
|
||||
Helperjs.friendicaPostRequest(login,"/api/v1/accounts/" + contact.id + "/follow",'',"POST",root,function(returnvalue){
|
||||
|
||||
});
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/v1/accounts/" + contact.id + "/follow");
|
||||
xhr.post();
|
||||
Helperjs.updateData(root.db,"contacts",root.login.username,"isFriend",1,function(){},"id",contact.id)
|
||||
try{root.contactRefreshSignal();}catch(e){print("root.refreshSignal"+e)}
|
||||
//if (rootstack.currentIndex==1){root.friendsSignal(login.username)}
|
||||
rootstackView.pop()
|
||||
}
|
||||
}
|
||||
|
@ -281,11 +272,9 @@ Page {
|
|||
text:qsTr("Unfollow")
|
||||
onClicked:{
|
||||
contactBusy.running=true;
|
||||
Helperjs.friendicaPostRequest(login,"/api/v1/accounts/" + contact.id + "/unfollow",'',"POST",root,function(returnvalue){
|
||||
|
||||
});
|
||||
xhr.setApi("/api/v1/accounts/" + contact.id + "/unfollow");
|
||||
xhr.post();
|
||||
Helperjs.updateData(root.db,"contacts",root.login.username,"isFriend",0,function(){},"id",contact.id)
|
||||
//if (rootstack.currentIndex==1){root.friendsSignal(login.username)}
|
||||
try{root.contactRefreshSignal();}catch(e){print("root.refreshSignal"+e)}
|
||||
rootstackView.pop()
|
||||
}
|
||||
|
@ -299,8 +288,9 @@ Page {
|
|||
onClicked:{
|
||||
contactBusy.running=true;
|
||||
Helperjs.updateData(root.db,"contacts",root.login.username,"statusnet_blocking",true,function(){},"id",contact.id)
|
||||
Helperjs.friendicaPostRequest(login,"/api/v1/accounts/" + contact.id + "/block",'',"POST",root,function(returnvalue){
|
||||
});
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/v1/accounts/" + contact.id + "/block");
|
||||
xhr.post();
|
||||
try{root.contactRefreshSignal();}catch(e){print("root.refreshSignal"+e)}
|
||||
rootstackView.pop()
|
||||
}
|
||||
|
@ -314,8 +304,9 @@ Page {
|
|||
onClicked:{
|
||||
contactBusy.running=true;
|
||||
Helperjs.updateData(root.db,"contacts",root.login.username,"statusnet_blocking",false,function(){},"id",contact.id)
|
||||
Helperjs.friendicaPostRequest(login,"/api/v1/accounts/" + contact.id + "/unblock",'',"POST",root,function(returnvalue){
|
||||
});
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/v1/accounts/" + contact.id + "/unblock");
|
||||
xhr.post();
|
||||
try{root.contactRefreshSignal();}catch(e){print("root.refreshSignal"+e)}
|
||||
rootstackView.pop()
|
||||
}
|
||||
|
@ -368,6 +359,10 @@ Page {
|
|||
if (api=="/api/statuses/user_timeline"){
|
||||
Service.processNews(api,data)
|
||||
}
|
||||
else if (api=="/api/statuses/user_timeline"){
|
||||
Service.processNews(api,data)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -402,9 +397,7 @@ Page {
|
|||
}
|
||||
}
|
||||
Component.onCompleted: {
|
||||
xhr.clearParams();
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/statuses/user_timeline")
|
||||
xhr.setParam("user_id",contact.id)
|
||||
xhr.get();
|
||||
|
|
|
@ -38,12 +38,12 @@ import "qrc:/qml/genericqml"
|
|||
Page{
|
||||
id:imageDialog
|
||||
property var attachImageURLs: []
|
||||
// property var contacts: []
|
||||
// property var groups: []
|
||||
// property var contact_allow:login.permissions[0]
|
||||
// property var contact_deny:login.permissions[1]
|
||||
// property var group_allow:login.permissions[2]
|
||||
// property var group_deny:login.permissions[3]
|
||||
// property var contacts: []
|
||||
// property var groups: []
|
||||
// property var contact_allow:login.permissions[0]
|
||||
// property var contact_deny:login.permissions[1]
|
||||
// property var group_allow:login.permissions[2]
|
||||
// property var group_deny:login.permissions[3]
|
||||
property int imageNo: 0
|
||||
|
||||
function uploadImage(imageid){
|
||||
|
@ -53,10 +53,8 @@ Page{
|
|||
uploadImage(imageNo);
|
||||
}
|
||||
} else{
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/media/upload");
|
||||
xhr.clearParams();
|
||||
//if (group_allow.length>0) {xhr.setParam("group_allow", Helperjs.cleanArray(group_allow))};
|
||||
//if (group_deny.length>0) {xhr.setParam("group_deny", Helperjs.cleanArray(group_deny))};
|
||||
//if (contact_allow.length>0) {xhr.setParam("contact_allow", Helperjs.cleanArray(contact_allow))};
|
||||
|
@ -67,12 +65,9 @@ Page{
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
function updateAltText(imageid, media){print("media "+media + " alt_text "+imageUploadModel.get(imageid).description)
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
function updateAltText(imageid, media){
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/media/metadata/create");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("JSON",JSON.stringify({media_id:media,alt_text:{text:imageUploadModel.get(imageid).description}}));
|
||||
xhr.postJSON();
|
||||
}
|
||||
|
@ -80,9 +75,9 @@ Page{
|
|||
function attach(){
|
||||
imagePicking=true;
|
||||
var imagePicker = Qt.createQmlObject('import QtQuick 2.0; import "qrc:/qml/genericqml";'+
|
||||
osSettings.imagePickQml+'{multiple : false;onReady: {'+
|
||||
'attachImage(imageUrl)}}',imageDialog,"imagePicker");
|
||||
imagePicker.pickImage()
|
||||
osSettings.imagePickQml+'{multiple : false;onReady: {'+
|
||||
'attachImage(imageUrl)}}',imageDialog,"imagePicker");
|
||||
imagePicker.pickImage()
|
||||
}
|
||||
|
||||
function attachImage(url){
|
||||
|
@ -111,7 +106,7 @@ Page{
|
|||
print("error "+data);
|
||||
}
|
||||
function onSuccess(data,api){
|
||||
if (api=="/api/media/upload" ){print("data "+data);
|
||||
if (api=="/api/media/upload" ){
|
||||
let obj=JSON.parse(data);
|
||||
messageSend.media_ids.push(obj.media_id);
|
||||
if(imageUploadModel.get(imageNo).description!==""){
|
||||
|
@ -164,13 +159,13 @@ Page{
|
|||
}
|
||||
|
||||
BusyIndicator{
|
||||
id: uploadBusy
|
||||
running: false
|
||||
anchors.horizontalCenter: imageUploadView.horizontalCenter
|
||||
anchors.top:imageUploadView.top
|
||||
anchors.topMargin: root.fontFactor*osSettings.bigFontSize
|
||||
width: 2.5*root.fontFactor*osSettings.bigFontSize
|
||||
height: 2.5*root.fontFactor*osSettings.bigFontSize
|
||||
id: uploadBusy
|
||||
running: false
|
||||
anchors.horizontalCenter: imageUploadView.horizontalCenter
|
||||
anchors.top:imageUploadView.top
|
||||
anchors.topMargin: root.fontFactor*osSettings.bigFontSize
|
||||
width: 2.5*root.fontFactor*osSettings.bigFontSize
|
||||
height: 2.5*root.fontFactor*osSettings.bigFontSize
|
||||
}
|
||||
|
||||
ListModel{
|
||||
|
@ -268,6 +263,7 @@ Page{
|
|||
width: 5*root.fontFactor*osSettings.bigFontSize
|
||||
height:imageUploadView.height-3*root.fontFactor*osSettings.bigFontSize
|
||||
color: Material.backgroundColor
|
||||
border.color: "transparent"
|
||||
text:"\u002b"
|
||||
fontSize: 3*osSettings.bigFontSize
|
||||
onClicked:{attach()}
|
||||
|
@ -287,7 +283,7 @@ Page{
|
|||
{newimageProgress.visible=true;
|
||||
if (imageUploadModel.count>0){
|
||||
uploadImage(imageNo)
|
||||
}}
|
||||
}}
|
||||
}
|
||||
}
|
||||
ProgressBar{
|
||||
|
|
|
@ -90,31 +90,28 @@ Rectangle{
|
|||
function statusUpdate(title,status,in_reply_to_status_id) {
|
||||
//xhr.url= login.server + "/api/statuses/update.json";
|
||||
try{newsBusy.running=true;conversationBusy.running=true}catch(e){}
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/statuses/update");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("source", "Friendiqa");
|
||||
xhr.setParam("htmlstatus", status);
|
||||
if (parentId!="") {xhr.setParam("in_reply_to_status_id", parentId)};
|
||||
if (title!=="") {xhr.setParam("title", title)};
|
||||
if (group_allow.length>0) {xhr.setParam("group_allow", Helperjs.cleanArray(group_allow))};
|
||||
if (group_deny.length>0) {xhr.setParam("group_deny", Helperjs.cleanArray(group_deny))};
|
||||
if (contact_allow.length>0) {xhr.setParam("contact_allow", Helperjs.cleanArray(contact_allow))};
|
||||
if (contact_deny.length>0) {xhr.setParam("contact_deny", Helperjs.cleanArray(contact_deny))};
|
||||
// if (group_allow.length>0) {xhr.setParam("group_allow", Helperjs.cleanArray(group_allow))};
|
||||
// if (group_deny.length>0) {xhr.setParam("group_deny", Helperjs.cleanArray(group_deny))};
|
||||
// if (contact_allow.length>0) {xhr.setParam("contact_allow", Helperjs.cleanArray(contact_allow))};
|
||||
// if (contact_deny.length>0) {xhr.setParam("contact_deny", Helperjs.cleanArray(contact_deny))};
|
||||
if (media_ids.length>0) {
|
||||
xhr.setParam("media_ids", media_ids.join());
|
||||
}
|
||||
xhr.post();
|
||||
Newsjs.storeHashtags(login,db,status,root)
|
||||
Newsjs.storeHashtags(login,db,status,root);
|
||||
media_ids=[]
|
||||
}
|
||||
|
||||
function dmUpdate(title,text,replyto,screen_name) {
|
||||
newsBusy.running=true;
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/direct_messages/new");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("text", text);
|
||||
xhr.setParam("screen_name", screen_name);
|
||||
if (parentId!="") {xhr.setParam("replyto", replyto)};
|
||||
|
@ -127,7 +124,7 @@ Rectangle{
|
|||
messageSend.reply_to_user=newsitemobject.user.screen_name;
|
||||
messageSend.parentId=newsitemobject.id
|
||||
} else {
|
||||
messageSend.state=null;
|
||||
messageSend.state="";
|
||||
messageSend.reply_to_user="";
|
||||
messageSend.parentId="";
|
||||
bodyField.text="";
|
||||
|
@ -206,7 +203,7 @@ Rectangle{
|
|||
height:stackTypeDescription.height
|
||||
anchors.right: stackTypeDescription.right
|
||||
anchors.rightMargin: 2*root.fontFactor*osSettings.bigFontSize
|
||||
visible: newsSwipeview.currentIndex!=newsSwipeview.length-1
|
||||
visible: newsSwipeview.currentIndex!=newsSwipeview.count-1
|
||||
text:"\uf054"
|
||||
fontColor: Material.hintTextColor
|
||||
border.color: "transparent"
|
||||
|
|
|
@ -50,6 +50,7 @@ Page{
|
|||
anchors.fill: parent
|
||||
orientation: Qt.Horizontal
|
||||
highlightRangeMode: ListView.StrictlyEnforceRange; snapMode: ListView.SnapOneItem
|
||||
spacing: root.fontFactor*osSettings.systemFontSize
|
||||
model:photolistModel
|
||||
delegate: photoWrapper
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ Rectangle{
|
|||
|
||||
function newstypeHandling(newstype){
|
||||
try{newsBusy.running=true}catch(e){print(e)};
|
||||
replySignal("");
|
||||
root.replySignal("");
|
||||
switch(newstype){
|
||||
case "timeline":
|
||||
newstab.newstabstatus="Timeline";
|
||||
|
@ -158,10 +158,8 @@ Rectangle{
|
|||
newstabstatus="Search";
|
||||
newsBusy.running=true;
|
||||
newsStack.updateMethodNews="refresh";
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/search");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("q",term)
|
||||
xhr.get();}
|
||||
newsView.anchors.topMargin=mm
|
||||
|
@ -242,7 +240,7 @@ Rectangle{
|
|||
];
|
||||
if(newsApiArray.includes(api)){
|
||||
Service.processNews(api,data)
|
||||
replySignal("")
|
||||
root.replySignal("")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -267,7 +265,7 @@ Rectangle{
|
|||
else if (newsSwipeview.stacktype=="Replies"){
|
||||
Service.updateView("Replies")
|
||||
}
|
||||
replySignal("")
|
||||
root.replySignal("")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -365,7 +363,6 @@ Rectangle{
|
|||
|
||||
if (newsSwipeview.stacktype=="Home"){
|
||||
Newsjs.getLastNews(root.login,root.db,function(currentlastnews){
|
||||
//print("currentlastnews "+currentlastnews+ " lastnewsid "+lastnewsid)
|
||||
if (currentlastnews>lastnewsid){
|
||||
if(currentnewstabstatus=="Timeline"){
|
||||
try{ Newsjs.newsfromdb(root.db,root.login,0, function(dbnews,lastid){
|
||||
|
@ -379,7 +376,7 @@ Rectangle{
|
|||
showNews(news)});
|
||||
}
|
||||
} else {
|
||||
Service.updateView(currentnewstabstatus)
|
||||
Service.updateView(currentnewstabstatus,currentlastnews)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -52,18 +52,14 @@ Rectangle{
|
|||
|
||||
function showConversation(conversationIndex,newsitemobject){
|
||||
if(newsitemobject.messagetype==0 || newsitemobject.messagetype==3){
|
||||
xhr.clearParams();
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/conversation/show");
|
||||
xhr.setParam("id",newsitemobject.id)
|
||||
xhr.setParam("count","200")
|
||||
xhr.get();
|
||||
}
|
||||
else{
|
||||
xhr.clearParams();
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/direct_messages/conversation");
|
||||
xhr.setParam("uri",newsitemobject.statusnet_conversation_id)
|
||||
xhr.get();
|
||||
|
|
|
@ -53,7 +53,8 @@ Page{
|
|||
visible: video.playbackState!=MediaPlayer.PlayingState
|
||||
}
|
||||
|
||||
Video {id:video;
|
||||
Video {
|
||||
id:video;
|
||||
anchors.fill:parent
|
||||
property string mimetype:""
|
||||
onErrorChanged:{noticeText.font.pointSize=osSettings.bigFontSize;noticeText.text=errorString;}
|
||||
|
@ -61,12 +62,6 @@ Page{
|
|||
autoLoad: true
|
||||
autoPlay: true
|
||||
audioRole: MediaPlayer.VideoRole
|
||||
// MouseArea {
|
||||
// anchors.fill:parent;
|
||||
// onClicked:{
|
||||
// rootstackView.pop()
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
ProgressBar{
|
||||
|
@ -110,12 +105,13 @@ Page{
|
|||
}
|
||||
|
||||
|
||||
// Slider{ id: videoSlider
|
||||
// width: parent.width
|
||||
// height: 3*mm
|
||||
// anchors.top: video.bottom
|
||||
// visible:video.playbackState!=MediaPlayer.StoppedState && video.seekable
|
||||
// value: video.position/video.duration
|
||||
// onPressed:video.seek(value*video.duration)
|
||||
// }
|
||||
Slider{
|
||||
id: videoSlider
|
||||
width: parent.width
|
||||
height: 3*mm
|
||||
anchors.top: video.bottom
|
||||
visible:video.playbackState!=MediaPlayer.StoppedState && video.seekable
|
||||
value: video.position/video.duration
|
||||
onMoved: video.seek(value*video.duration)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,8 +38,8 @@ import "qrc:/qml/genericqml"
|
|||
|
||||
Item {
|
||||
id: newsitem
|
||||
width: newsitemobject.hasOwnProperty("indent")&&newsitemobject.indent>0?parent.width:newsitem.ListView.view.width//parent.width//newsView.width //
|
||||
height:toprow.height+friendicaActivities.height+controlrow.height+conversationColumn.height+1//Math.max((itemMessage.height+topFlow.height+friendicaActivities.height+4*mm),profileImage.height+user_name.height+mm)
|
||||
width: newsitemobject.hasOwnProperty("indent")&&newsitemobject.indent>0?parent.width:newsitem.ListView.view.width
|
||||
height:toprow.height+friendicaActivities.height+controlrow.height+conversationColumn.height+1
|
||||
property int itemindex: index
|
||||
property var newsitemobject:model.newsitemobject
|
||||
property string attending: ""
|
||||
|
@ -129,7 +129,6 @@ Item {
|
|||
font.pointSize: 0.6*osSettings.systemFontSize
|
||||
font.family: "Noto Sans"
|
||||
horizontalAlignment: Label.AlignRight
|
||||
//text: (newsitemobject.in_reply_to_status_id!="null"&&newsitemobject.in_reply_to_status_id!=null)?" \u00B7 "+qsTr("In reply to ")+newsitemobject.reply_user.screen_name:" "
|
||||
text: (newsitemobject.reply_user!=false&&typeof(newsitemobject.reply_user)!="undefined")?" \u00B7 "+qsTr("In reply to ")+newsitemobject.reply_user.screen_name:" "
|
||||
}
|
||||
}
|
||||
|
@ -438,11 +437,6 @@ Item {
|
|||
var component = Qt.createComponent("qrc:/qml/newsqml/BlockUser.qml");
|
||||
var userblockdialog = component.createObject(root,{"newsitem": newsitemobject});
|
||||
userblockdialog.open()
|
||||
// try{
|
||||
// var msg = {'deleteId': index, 'model': newsitem.ListView.view.model};
|
||||
// conversationWorker.sendMessage(msg);
|
||||
// }catch(e){print("block "+e)
|
||||
// }
|
||||
}
|
||||
}
|
||||
Action {
|
||||
|
|
|
@ -44,10 +44,8 @@ Dialog {
|
|||
modal: true
|
||||
onAccepted: {
|
||||
let statusArray=[];statusArray.push(newsitem.id.toString());
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/v1/reports");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("account_id",newsitem.user.id);
|
||||
//xhr.setParam("status_ids",JSON.stringify(statusArray));
|
||||
xhr.setParam("comment",comment.text);
|
||||
|
|
|
@ -207,7 +207,7 @@ Rectangle{
|
|||
width:4.5*mm
|
||||
height: 4.5*mm
|
||||
textFormat:Text.RichText
|
||||
font.pointSize: osSettings.osType=="Linux"?1.7*osSettings.systemFontSize:1.2*osSettings.systemFontSize
|
||||
font.pointSize: osSettings.osType=="Linux"?1.7*osSettings.systemFontSize:1.4*osSettings.systemFontSize
|
||||
text: emoji
|
||||
|
||||
MouseArea{
|
||||
|
|
|
@ -50,10 +50,8 @@ Page{
|
|||
property int imageNo: 0
|
||||
|
||||
function uploadSelectedImage(inumber){
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/friendica/photo/create.json");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("desc",imageUploadModel.get(inumber).description);
|
||||
if(album.editText!=""){xhr.setParam("album", album.editText)}else{xhr.setParam("album", album.currentText)};
|
||||
//if (group_allow.length>0) {xhr.setParam("group_allow", Helperjs.cleanArray(group_allow))};
|
||||
|
@ -66,10 +64,8 @@ Page{
|
|||
|
||||
|
||||
function updateImage(){
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/friendica/photo/update.json");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("desc",imageUploadModel.get(0).description);
|
||||
xhr.setParam("album", currentAlbum);
|
||||
xhr.setParam("album_new", album.currentText);
|
||||
|
|
|
@ -62,7 +62,8 @@ StackView{
|
|||
}
|
||||
//Imagejs.dataRequest(login,fotorectangle.newimages[0],db,xhr,fotorectangle);
|
||||
})
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
if(login.password!=""){xhr.setLogin(login.username+":"+Qt.atob(login.password));}
|
||||
else{xhr.setToken(login.token)}
|
||||
xhr.setImagedir(login.imagestore);
|
||||
xhr.setFilelist(ownimagelist);
|
||||
xhr.setDownloadtype("picturelist");
|
||||
|
@ -104,6 +105,13 @@ StackView{
|
|||
}else{
|
||||
fotorectangle.currentimageno=fotorectangle.currentimageno+1}
|
||||
}
|
||||
function onSuccess(text,api){
|
||||
if (api=="/api/friendica/photoalbums"){
|
||||
let albums=JSON.parse(text);
|
||||
var msg = { 'model': photogroupModel,'albums':albums,'firstalbum':0,'foreignPicture': false};
|
||||
photoWorker.sendMessage(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Connections{
|
||||
// target:filesystem
|
||||
|
@ -124,21 +132,24 @@ StackView{
|
|||
else{
|
||||
try {photogroupModel.clear()}catch (e){print(e)}
|
||||
if (friend){
|
||||
Imagejs.newRequestFriendsAlbumPictures(login,friend,fotorectangle,function(albums,remoteAuthBool){
|
||||
remoteContact=remoteAuthBool;
|
||||
var msg = {'model': photogroupModel,'albums':albums,'firstalbum':0,'foreignPicture':true,'friend':friend}
|
||||
photoWorker.sendMessage(msg);
|
||||
})
|
||||
phototabstatusButton.text=friend.screen_name+qsTr("\'s images")
|
||||
// Imagejs.newRequestFriendsAlbumPictures(login,friend,fotorectangle,function(albums,remoteAuthBool){
|
||||
// remoteContact=remoteAuthBool;
|
||||
// var msg = {'model': photogroupModel,'albums':albums,'firstalbum':0,'foreignPicture':true,'friend':friend}
|
||||
// photoWorker.sendMessage(msg);
|
||||
// })
|
||||
// phototabstatusButton.text=friend.screen_name+qsTr("\'s images")
|
||||
|
||||
}
|
||||
else {
|
||||
Helperjs.readField("album", db, "imageData",login.username,function(albums){
|
||||
if (albums[0]) {
|
||||
var msg = { 'model': photogroupModel,'albums':albums,'firstalbum':0,'foreignPicture': false};
|
||||
photoWorker.sendMessage(msg);
|
||||
}
|
||||
})
|
||||
xhr.setAccount(login);
|
||||
xhr.setApi("/api/friendica/photoalbums");
|
||||
xhr.get();
|
||||
// Helperjs.readField("album", db, "imageData",login.username,function(albums){
|
||||
// if (albums[0]) {
|
||||
// var msg = { 'model': photogroupModel,'albums':albums,'firstalbum':0,'foreignPicture': false};
|
||||
// photoWorker.sendMessage(msg);
|
||||
// }
|
||||
// })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -291,11 +302,11 @@ StackView{
|
|||
onClicked:{
|
||||
var lastalbum_id=photogroupModel.count-1;
|
||||
if(photogroupModel.get(photogroupModel.count-1).foreignPicture==true){
|
||||
Imagejs.newRequestFriendsAlbumPictures(login,photogroupModel.get(0).friend,fotorectangle,function(albums,remoteAuthBool){
|
||||
remoteContact=remoteAuthBool;
|
||||
var msg = {'model': photogroupModel,'albums':albums,'firstalbum':lastalbum_id+1,'foreignPicture':true,'friend':photogroupModel.get(0).friend}
|
||||
photoWorker.sendMessage(msg)
|
||||
})
|
||||
// Imagejs.newRequestFriendsAlbumPictures(login,photogroupModel.get(0).friend,fotorectangle,function(albums,remoteAuthBool){
|
||||
// remoteContact=remoteAuthBool;
|
||||
// var msg = {'model': photogroupModel,'albums':albums,'firstalbum':lastalbum_id+1,'foreignPicture':true,'friend':photogroupModel.get(0).friend}
|
||||
// photoWorker.sendMessage(msg)
|
||||
// })
|
||||
}
|
||||
else{Helperjs.readField("album",root.db, "imageData",root.login.username,function(albums){
|
||||
var msg = { 'model': photogroupModel,'albums':albums,'foreignPicture': false,'firstalbum':lastalbum_id+1};
|
||||
|
|
|
@ -112,14 +112,24 @@ Package {
|
|||
}
|
||||
})}
|
||||
else{
|
||||
Helperjs.readData(db,"imageData",root.login.username,function(obj){
|
||||
if (obj) {
|
||||
for (var k=0;k<obj.length;k++){
|
||||
if(typeof(obj[k].desc)=="string" && obj[k].desc!=""){var name=obj[k].desc}else{var name=obj[k].filename}
|
||||
photoModel.append({"imageLocation": obj[k].location+obj[k].filename,"photoDescription":name,"photoLink":obj[k].location+obj[k].filename,"imageId":obj[k].id})
|
||||
Helperjs.friendicaRequest(login,"/api/friendica/photoalbum?album="+albumname,parent,function(obj){
|
||||
if(obj){ let albumphotos=JSON.parse(obj);
|
||||
for (var k=0;k<albumphotos.length;k++){
|
||||
if(typeof(albumphotos[k].desc)=="string" && albumphotos[k].desc!=""){var name=albumphotos[k].desc}else{var name=albumphotos[k].filename}
|
||||
photoModel.append({"imageLocation": albumphotos[k].thumb,"photoDescription":name,"photoLink":albumphotos[k].thumb,"imageId":albumphotos[k].id})
|
||||
}
|
||||
|
||||
}
|
||||
},"album",albumname)}
|
||||
}
|
||||
// Helperjs.readData(db,"imageData",root.login.username,function(obj){
|
||||
// if (obj) {
|
||||
// for (var k=0;k<obj.length;k++){
|
||||
// if(typeof(obj[k].desc)=="string" && obj[k].desc!=""){var name=obj[k].desc}else{var name=obj[k].filename}
|
||||
// photoModel.append({"imageLocation": obj[k].location+obj[k].filename,"photoDescription":name,"photoLink":obj[k].location+obj[k].filename,"imageId":obj[k].id})
|
||||
// }
|
||||
// }
|
||||
// },"album",albumname)
|
||||
)}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue