summaryrefslogtreecommitdiff
path: root/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mainwindow.cpp')
-rw-r--r--mainwindow.cpp125
1 files changed, 125 insertions, 0 deletions
diff --git a/mainwindow.cpp b/mainwindow.cpp
new file mode 100644
index 0000000..15e22f3
--- /dev/null
+++ b/mainwindow.cpp
@@ -0,0 +1,125 @@
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+
+MainWindow::MainWindow(QWidget *parent) :
+ QMainWindow(parent),
+ ui(new Ui::MainWindow)
+{
+ ui->setupUi(this);
+ //ui->table_view->horizontalHeader()->
+ //setSectionResizeMode(QHeaderView::Stretch); // enable column resizing
+ QPalette palette; // palette for table
+ palette.setColor(QPalette::Highlight,
+ ui->table_view->
+ palette().color(QPalette::Base));
+ palette.setColor(QPalette::HighlightedText,
+ ui->table_view->palette().color(
+ QPalette::Text));
+ ui->table_view->setPalette(palette); // set table color palette
+ QString rssfile = "rss.txt"; // rss file to read and store to
+ if (getfile("http://horriblesubs.info/rss.php?res=720"
+ ,rssfile)) // download rss file
+ ui->status_bar->showMessage(
+ "RSS feed downloaded"); // download complete
+ else
+ ui->status_bar->
+ showMessage("Cannot download RSS feed");// download fail
+ parserss(rssfile); // fail or complete, try and parse file
+}
+
+MainWindow::~MainWindow()
+{
+ delete ui;
+}
+
+bool MainWindow::getfile(QString url, QString dest)
+{
+ bool success; // return bool
+ if (QFile::exists(dest))
+ QFile::remove(dest); // remove rss file if already exists
+ QNetworkReply *reply = http.get(QNetworkRequest(
+ url)); // network reply
+ QObject::connect(reply, SIGNAL(finished()),
+ &loop, SLOT(quit())); // connect finish signal to quit
+ loop.exec(); // exec loop
+ QFile file(dest);
+ file.open(QIODevice::WriteOnly); // open file for writing
+ file.write(reply->readAll()); // write reply data to file
+ delete reply; // delete replt object
+ if (QFile::exists(dest) && file.size() > 0) // this is a terrible way to do this
+ success = true; // file downloaded successfully
+ else
+ success = false; // download failed
+ return success;
+}
+
+bool MainWindow::parserss(QString rssfile)
+{
+ QDomDocument doc; // xml parser
+ QFile file(rssfile); // rss file
+ if (!file.open(QIODevice::ReadOnly) ||
+ !doc.setContent(&file))
+ return false; // file not opened
+ QDomNodeList title =
+ doc.elementsByTagName("item"); // item tag
+ qDebug() << title.size();
+ for (int i = 0; i < title.size(); i++) // iterate over every item
+ {
+ QDomNode n = title.item(i); // current title
+ QDomElement title =
+ n.firstChildElement("title"); // get title
+ QDomElement link =
+ n.firstChildElement("link"); // get link to current item
+ QDomElement date =
+ n.firstChildElement("pubDate"); // get pub date
+ addtolist(title.text(),
+ date.text(), link.text()); // add current item to list
+ }
+ return true;
+}
+
+void MainWindow::addtolist(QString title, QString date, QString link)
+{
+ int i = ui->table_view->rowCount(); // get row count
+ ui->table_view->insertRow(i); // insert new row for item
+ ui->table_view->setItem
+ (i, 1, new QTableWidgetItem("title")); // add title item
+ ui->table_view->setItem
+ (i, 2, new QTableWidgetItem("date")); // add date item
+ ui->table_view->setItem
+ (i, 3, new QTableWidgetItem("link")); // add link item
+ ui->table_view->setItem
+ (i, 0, new QTableWidgetItem("grab")); // add grab item
+
+ ui->table_view->item(i,1)->setText(title); // add title text
+ ui->table_view->item(i,2)->setText(date); // add date test
+ ui->table_view->item(i,3)->setText(link); // add link text
+ QTableWidgetItem *checkbox =
+ new QTableWidgetItem(); // create checkbox item
+ checkbox->setCheckState(Qt::Unchecked); // set checkbox state
+ ui->table_view->setItem(i, 0, checkbox); // place checkbox inside row
+}
+
+void MainWindow::on_get_button_clicked()
+{
+ int x = ui->table_view->rowCount(); // get row count
+ for (int i = 0; i < x; i++) // iterate over each item in the table
+ {
+ if (ui->table_view->item(i, 0)-> // check if checkbox.. checked
+ checkState() == 2) // checked is Qt::CheckState(Checked) (2)
+ {
+ openclient(
+ ui->table_view->item(i, 3)
+ ->text()); // call open client with the magnet url
+ }
+ }
+}
+
+void MainWindow::openclient(QString magnet)
+{
+ QProcess *process = new QProcess(); // create process
+ QString program = "/usr/bin/transmission-qt"; // this is built for transmission
+ QStringList arg; // argument list
+ arg.append(magnet); // append magnet to arg
+ process->start(program, arg); // start process
+}