📄 mainwindow.cpp
字号:
totalSize->setText(QString::number(total_size)+" bytes"); } totalProgress->setRange(0, nzblist.totalParts());}void MainWindow::loadFile(const QString &fileName){ QFile f(fileName); nzblist.importNzb(&f); if (config->value("list/autosort").toBool()) { sortList(); } else { populateList(); } if (nzblist.getList()->count()) { startAct->setEnabled(true); streamAct->setEnabled(true); } statusBar()->showMessage( tr("Loaded nzb document %1").arg(fileName), 2000 );}void MainWindow::sortList(){ l->clear(); l->setRowCount(0); l->setHorizontalHeaderLabels((QStringList)"Subject" << "Progress" << "Parts" << "Size"); nzblist.sortList(); populateList();}void MainWindow::start(){ startAct->setEnabled(false); stopAct->setEnabled(true); streamAct->setEnabled(false); for (int i=0; i<downloaders.size(); i++) { downloaders[i]->start(QThread::LowPriority); } decoders[0]->start(); output->setStream(false); output->start(QThread::TimeCriticalPriority);}void MainWindow::stop(){ startAct->setEnabled(true); stopAct->setEnabled(false); streamAct->setEnabled(true); qDebug("Stopping"); emit fullStop(); for (int i=0; i<downloaders.size(); i++) { downloaders[i]->wait(); } decoders[0]->wait(); //output->wait(); clearData();}void MainWindow::clearData(){ l->clear(); l->setRowCount(0); l->setHorizontalHeaderLabels((QStringList)"Subject" << "Progress" << "Parts" << "Size"); nzblist.clearList(); totalSize->setText("0 MB"); totalProgress->setRange(0,1); totalProgress->setValue(0); startAct->setEnabled(false); streamAct->setEnabled(false);}void MainWindow::stream(){ startAct->setEnabled(false); stopAct->setEnabled(true); streamAct->setEnabled(false); for (int i=0; i<downloaders.size(); i++) { downloaders[i]->start(QThread::LowPriority); } decoders[0]->start(); output->setStream(true); output->start(QThread::TimeCriticalPriority);}void MainWindow::options(){ OptionsDlg *dl = new OptionsDlg(this); dl->show();}void MainWindow::downloadEvent(QString message, int row, int type){ if (type == 0) { d->model()->setData(d->model()->index(row, 1), message); } else if (type == 2) { l->model()->setData(l->model()->index(row, 1), (l->item(row, 1)->text()).toInt()+1); totalProgress->setValue(totalProgress->value() + 1); if (l->item(row, 1)->text() == "1") { if (config->value("list/hidecompleted").toBool()) { l->scrollToItem(l->item(row, 1)); } } emit processDecoder(); } else if (type == 3) { d->model()->setData(d->model()->index(row, 1), message); } else if (type == 4) { d->model()->setData(d->model()->index(row, 2), message+" kB/s"); int total_speed = 0; for (int i=0; i<downloaders.size(); i++) { QString cur_speed = d->item(i, 2)->text(); total_speed += cur_speed.mid(0, cur_speed.length() - 5).toInt(); } totalSpeed->setText(QString::number(total_speed)+" kB/s"); }}void MainWindow::decodeEvent(QString message, int row, int type){ d->model()->setData(d->model()->index(row, 1), message); if (type == 1) { emit processOutput(); } else if (type == 2) { QTimer::singleShot(1000, decoders[0], SLOT(processFiles())); } else if (type == 3) { QTimer::singleShot(0, output, SLOT(process())); }}void MainWindow::outputEvent(QString message, int type){ if (type == 1) { QTimer::singleShot(200, this, SLOT(stop())); } else if (type == 2) { QTimer::singleShot(200, this, SLOT(stop())); QMessageBox *msgbox = new QMessageBox("nzb Error", message, QMessageBox::Critical, QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); msgbox->show(); }}OptionsDlg::OptionsDlg(QWidget *parent) : QDialog(parent){ ui.setupUi(this); this->parent = parent; connect(ui.okButton, SIGNAL(clicked()), this, SLOT(accept())); connect(ui.cancelButton, SIGNAL(clicked()), this, SLOT(reject())); connect(ui.saveBrowse, SIGNAL(clicked()), this, SLOT(browseSave())); connect(ui.mediaBrowse, SIGNAL(clicked()), this, SLOT(browseMedia())); connect(ui.subfolders, SIGNAL(stateChanged(int)), this, SLOT(enableGuess(int))); connect(ui.ssl, SIGNAL(stateChanged(int)), this, SLOT(sslChange(int))); connect(ui.use_file, SIGNAL(clicked()), this, SLOT(useFile())); QSettings *config = ((MainWindow*)parent)->getConfig(); if (QFile::exists("nzb.ini")) { ui.use_file->setEnabled(false); } #ifndef Q_WS_WIN ui.use_file->setEnabled(false); #endif ui.host->setText(config->value("server/host").toString()); ui.port->setText(config->value("server/port").toString()); ui.username->setText(config->value("server/username").toString()); ui.password->setText(config->value("server/password").toString()); ui.connections->setValue(config->value("server/connections").toInt()); if (config->value("server/auth").toBool()) { ui.auth->setCheckState(Qt::Checked); } else { ui.auth->setCheckState(Qt::Unchecked); } if (config->value("server/ssl").toBool()) { ui.ssl->setCheckState(Qt::Checked); } else { ui.ssl->setCheckState(Qt::Unchecked); } if (config->value("list/autosort").toBool()) { ui.autosort->setCheckState(Qt::Checked); } else { ui.autosort->setCheckState(Qt::Unchecked); } if (config->value("list/hidecompleted").toBool()) { ui.hidecompleted->setCheckState(Qt::Checked); } else { ui.hidecompleted->setCheckState(Qt::Unchecked); } if (config->value("list/par_uncheck").toBool()) { ui.par_uncheck->setCheckState(Qt::Checked); } else { ui.par_uncheck->setCheckState(Qt::Unchecked); } ui.savepath->setText(config->value("output/savepath").toString()); if (config->value("output/subfolders").toBool()) { ui.subfolders->setCheckState(Qt::Checked); ui.guessalbum->setEnabled(true); } else { ui.subfolders->setCheckState(Qt::Unchecked); ui.guessalbum->setEnabled(false); } if (config->value("output/guessalbum").toBool()) { ui.guessalbum->setCheckState(Qt::Checked); } else { ui.guessalbum->setCheckState(Qt::Unchecked); } ui.mediaplayer->setText(config->value("output/mediaplayer").toString()); if (config->value("output/stream").toBool()) { ui.stream->setCheckState(Qt::Checked); } else { ui.stream->setCheckState(Qt::Unchecked); }}void OptionsDlg::accept(){ QSettings *config = ((MainWindow*)parent)->getConfig(); config->setValue("server/host", ui.host->text()); config->setValue("server/port", ui.port->text().toInt()); config->setValue("server/username", ui.username->text()); config->setValue("server/password", ui.password->text()); config->setValue("server/connections", ui.connections->value()); config->setValue("server/auth", ((ui.auth->checkState() == Qt::Checked) ? true : false)); config->setValue("server/ssl", ((ui.ssl->checkState() == Qt::Checked) ? true : false)); config->setValue("list/autosort", ((ui.autosort->checkState() == Qt::Checked) ? true : false)); config->setValue("list/hidecompleted", ((ui.hidecompleted->checkState() == Qt::Checked) ? true : false)); config->setValue("list/par_uncheck", ((ui.par_uncheck->checkState() == Qt::Checked) ? true : false)); config->setValue("output/savepath", ui.savepath->text()); config->setValue("output/subfolders", ((ui.subfolders->checkState() == Qt::Checked) ? true : false)); config->setValue("output/guessalbum", ((ui.guessalbum->checkState() == Qt::Checked) ? true : false)); config->setValue("output/mediaplayer", ui.mediaplayer->text()); config->setValue("output/stream", ((ui.stream->checkState() == Qt::Checked) ? true : false)); config->sync(); close();}void OptionsDlg::reject(){ close();}void OptionsDlg::browseSave(){ QString dir = QFileDialog::getExistingDirectory(this, "Choose a save directory", "", QFileDialog::DontResolveSymlinks); if (dir != "") { ui.savepath->setText(dir); }}void OptionsDlg::browseMedia(){ #ifdef WIN32 QString dir = QFileDialog::getOpenFileName(this, "Choose media player", "", "Executables (*.exe);;All Files (*)"); #else QString dir = QFileDialog::getOpenFileName(this, "Choose media player", "", "All Files (*)"); #endif if (dir != "") { ui.mediaplayer->setText("\""+dir+"\""); }}void OptionsDlg::enableGuess(int state){ if (state == Qt::Checked) { ui.guessalbum->setEnabled(true); } else { ui.guessalbum->setEnabled(false); } }void OptionsDlg::sslChange(int state){ if (state == Qt::Checked) { ui.port->setText("563"); } else { ui.port->setText("119"); } }void OptionsDlg::useFile(){ QSettings *config = new QSettings("nzb.ini", QSettings::IniFormat); ((MainWindow*)parent)->setConfig(config); config->sync(); ui.use_file->setEnabled(false);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -