viewgit/index.php:465 Only variables should be passed by reference [2048]

viewgit/index.php:466 Non-static method GeSHi::get_language_name_from_extension() should not be called statically [2048]

  1. #include "rssparser.h"
  2. #include "feednode.h"
  3. #include <QDebug>
  4. #include <QtXml>
  5. #include <QtSql>
  6. #include <QtNetwork>
  7. #include <QtGui>
  8. #include <QtCore>
  9.  
  10. using namespace Larss;
  11.  
  12. Larss::RssParser::RssParser(QSqlDatabase db, FeedModel *model, QObject *parent) :
  13. QSqlTableModel (parent, db)
  14. {
  15. // Create the database if it does not exists.
  16. if (!db.tables().contains ("news"))
  17. {
  18. qDebug () << "Creating table news that is not in database...";
  19. QSqlQuery query(db);
  20. query.prepare("CREATE TABLE news (id INTEGER PRIMARY KEY, feed INTEGER, title TEXT, link TEXT, description TEXT, content TEXT, time INTEGER, read INTEGER);");
  21. if (!query.exec())
  22. qDebug () << "Error occurred while creating the database:" << query.lastError();
  23. }
  24.  
  25. // Set init parameters for the QSqlDataTable
  26. setTable("news");
  27.  
  28. // Select manual submit so user cannot modify content directly
  29. setEditStrategy(QSqlTableModel::OnManualSubmit);
  30. this->model = model;
  31.  
  32. // Make this sorted in different time
  33. this->sort(6, Qt::DescendingOrder);
  34. select();
  35. }
  36.  
  37. QVariant
  38. Larss::RssParser::headerData(int section, Qt::Orientation orientation, int role) const
  39. {
  40. if (role == Qt::DisplayRole)
  41. {
  42. if (orientation == Qt::Horizontal)
  43. {
  44. switch (section)
  45. {
  46. case 0:
  47. return tr("ID");
  48. break;
  49. case 1:
  50. return tr("Feed");
  51. break;
  52. case 2:
  53. return tr("Title");
  54. break;
  55. case 3:
  56. return tr("Link");
  57. break;
  58. case 4:
  59. return tr("Description");
  60. break;
  61. case 5:
  62. return tr("Content");
  63. break;
  64. case 6:
  65. return tr("Date");
  66. break;
  67. case 7:
  68. return tr("Read");
  69. }
  70. }
  71. }
  72.  
  73. return QVariant (QVariant::Invalid);
  74. }
  75.  
  76. Larss::RssParser::~RssParser()
  77. {
  78. }
  79.  
  80. QVariant
  81. Larss::RssParser::data(const QModelIndex &idx, int role) const
  82. {
  83. if (role == Qt::FontRole)
  84. {
  85. // Get default font
  86. QFont default_font = QSqlTableModel::data(idx, role).toString();
  87.  
  88. // Check if this news is read or not
  89. QSqlRecord record = this->record(idx.row());
  90. if (record.value("read") == 0)
  91. default_font.setBold(true);
  92. return default_font;
  93. }
  94.  
  95. // Manage a nice rendering of Time
  96. if (role == Qt::DisplayRole && idx.column() == 6)
  97. {
  98. return (QDateTime::fromTime_t(QSqlTableModel::data(idx, role).toInt()).toString("dd/MM/yyyy hh:mm"));
  99. }
  100.  
  101. // Call the default implementaton in almost every case
  102. return QSqlTableModel::data(idx, role);
  103. }
  104.  
  105. QString
  106. Larss::RssParser::getLink(const QModelIndex &index)
  107. {
  108. QSqlRecord record = this->record(index.row());
  109. return record.value("link").toString();
  110. }
  111.  
  112. void
  113. Larss::RssParser::setReadStatus(const QModelIndex& index, bool read)
  114. {
  115. QModelIndex read_index = createIndex(index.row(), 7, index.internalPointer());
  116. setData(read_index, read ? 1 : 0);
  117. if (!submitAll())
  118. qDebug() << "Error while setting the read flag";
  119. model->triggerDataChanged();
  120. }
  121.  
  122. quint64
  123. Larss::RssParser::getFeed(const QModelIndex &index)
  124. {
  125. FeedNode *node = model->itemFromIndex (index);
  126. if (node->type() == FeedNode::Category)
  127. return 0;
  128. else
  129. return node->id();
  130. }
  131.  
  132. QString
  133. Larss::RssParser::getContent(const QModelIndex &index)
  134. {
  135. QModelIndex description_index = createIndex(index.row(), 5, index.internalPointer());
  136. return data(description_index, Qt::DisplayRole).toString();
  137. }
  138.  
  139. QString
  140. Larss::RssParser::getTitle(const QModelIndex &index)
  141. {
  142. QModelIndex title_index = createIndex(index.row(), 2, index.internalPointer());
  143. return data(title_index, Qt::DisplayRole).toString();
  144. }
  145.  
  146. quint32
  147. Larss::RssParser::getUnreadCount(const QModelIndex &index)
  148. {
  149. quint64 feedId = getFeed(index);
  150. QSqlQuery query(db);
  151. query.prepare ("SELECT id from news WHERE read=0 AND feed=:feed;");
  152. query.bindValue("feed", feedId);
  153. if (query.exec())
  154. {
  155. quint32 count = 1;
  156. if (!query.first())
  157. return 0;
  158. while (query.next())
  159. count++;
  160. return count;
  161. }
  162. return 0;
  163. }
  164.  
  165. void
  166. Larss::RssParser::selectActiveFeed(quint64 feed_id)
  167. {
  168. // Show only the news from the given feed
  169. setFilter(QString("feed='%1'").arg(feed_id));
  170. }
  171.  
  172. int
  173. Larss::RssParser::getNextUnread(const QModelIndex& starting)
  174. {
  175. int row = starting.row();
  176. while (row < rowCount(starting.parent()))
  177. {
  178. QSqlRecord record = this->record(row);
  179. if (record.value("read").toInt() == 0)
  180. return row;
  181. row++;
  182. }
  183.  
  184. return -1;
  185. }
  186.  
  187. void
  188. Larss::RssParser::removeNewsForFeed(const QModelIndex& index)
  189. {
  190. if (!index.isValid())
  191. return;
  192. FeedNode *node = model->itemFromIndex(index);
  193.  
  194. if (node->type() == FeedNode::Feed)
  195. {
  196. int id = node->id();
  197. QSqlQuery query(db);
  198. query.prepare("DELETE FROM news WHERE feed=:feed");
  199. query.bindValue("feed", id);
  200.  
  201. if (!query.exec())
  202. qDebug() << "Error deleting news from feed " << node->name();
  203. }
  204. }