File indexing completed on 2024-05-05 05:40:34
0001 /************************************************************************* 0002 * Copyright (C) 2011 by Renaud Guezennec * 0003 * Copyright (C) 2011 by Joseph Boudou * 0004 * * 0005 * https://rolisteam.org/ * 0006 * * 0007 * Rolisteam is free software; you can redistribute it and/or modify * 0008 * it under the terms of the GNU General Public License as published * 0009 * by the Free Software Foundation; either version 2 of the License, * 0010 * or (at your option) any later version. * 0011 * * 0012 * This program is distributed in the hope that it will be useful, * 0013 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0015 * GNU General Public License for more details. * 0016 * * 0017 * You should have received a copy of the GNU General Public License * 0018 * along with this program; if not, write to the * 0019 * Free Software Foundation, Inc., * 0020 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 0021 *************************************************************************/ 0022 0023 #include "services/tipchecker.h" 0024 0025 #include <QDebug> 0026 #include <QJsonDocument> 0027 #include <QJsonObject> 0028 #include <QNetworkReply> 0029 #include <QNetworkRequest> 0030 #include <QStringList> 0031 #include <QUrl> 0032 /***************** 0033 * UpdateChecker * 0034 *****************/ 0035 0036 TipChecker::TipChecker(QObject* obj) : QObject(obj) 0037 { 0038 m_noErrror= true; 0039 } 0040 0041 bool TipChecker::hasArticle() 0042 { 0043 return m_state; 0044 } 0045 0046 void TipChecker::startChecking() 0047 { 0048 #ifdef HAVE_QT_NETWORK 0049 m_manager= new QNetworkAccessManager(this); 0050 connect(m_manager, &QNetworkAccessManager::finished, this, &TipChecker::readJSon); 0051 m_manager->get(QNetworkRequest(QUrl("https://rolisteam.org/tips.json"))); 0052 #endif 0053 } 0054 0055 QString TipChecker::getArticleContent() 0056 { 0057 return m_msg; 0058 } 0059 0060 QString TipChecker::getUrl() 0061 { 0062 return m_url; 0063 } 0064 0065 QString TipChecker::getArticleTitle() 0066 { 0067 return m_title; 0068 } 0069 void TipChecker::readJSon(QNetworkReply* p) 0070 { 0071 if(p->error() != QNetworkReply::NoError) 0072 { 0073 m_noErrror= false; 0074 emit checkFinished(); 0075 return; 0076 } 0077 0078 QByteArray a= p->readAll(); 0079 QJsonParseError error; 0080 QJsonDocument doc(QJsonDocument::fromJson(a, &error)); 0081 if(error.error != QJsonParseError::NoError) 0082 { 0083 m_noErrror= false; 0084 emit checkFinished(); 0085 return; 0086 } 0087 0088 QJsonObject obj= doc.object(); 0089 QString locale= QLocale::system().name(); 0090 int pos= locale.indexOf('_'); 0091 if(pos >= 0) 0092 { 0093 locale= locale.remove(0, pos); 0094 } 0095 0096 if(!obj.contains(locale)) 0097 { 0098 locale= "en"; 0099 } 0100 if(obj.contains(locale)) 0101 { 0102 QJsonObject lang= obj[locale].toObject(); 0103 m_title= lang["title"].toString(); 0104 m_msg= lang["msg"].toString(); 0105 m_url= lang["url"].toString(); 0106 m_id= lang["id"].toInt(); 0107 if(!m_msg.isEmpty() && !m_title.isEmpty()) 0108 { 0109 m_state= true; 0110 } 0111 } 0112 emit checkFinished(); 0113 } 0114 0115 int TipChecker::getId() const 0116 { 0117 return m_id; 0118 } 0119 0120 void TipChecker::setId(int value) 0121 { 0122 m_id= value; 0123 }