⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addtorrentdialog.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
字号:
/******************************************************************************** Copyright (C) 2004-2006 Trolltech ASA. All rights reserved.**** This file is part of the example classes of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "addtorrentdialog.h"#include "metainfo.h"#include <QFile>#include <QFileDialog>#include <QLineEdit>#include <QMetaObject>static QString stringNumber(qint64 number){    QString tmp;    if (number > (1024 * 1024 * 1024))        tmp.sprintf("%.2fGB", number / (1024.0 * 1024.0 * 1024.0));    else if (number > (1024 * 1024))        tmp.sprintf("%.2fMB", number / (1024.0 * 1024.0));    else if (number > (1024))        tmp.sprintf("%.2fKB", number / (1024.0));    else        tmp.sprintf("%d bytes", int(number));    return tmp;}AddTorrentDialog::AddTorrentDialog(QWidget *parent)  : QDialog(parent, Qt::Sheet){    ui.setupUi(this);    connect(ui.browseTorrents, SIGNAL(clicked()),            this, SLOT(selectTorrent()));    connect(ui.browseDestination, SIGNAL(clicked()),            this, SLOT(selectDestination()));    connect(ui.torrentFile, SIGNAL(textChanged(const QString &)),            this, SLOT(setTorrent(const QString &)));    ui.destinationFolder->setText(destinationDirectory = QDir::current().path());    ui.torrentFile->setFocus();}void AddTorrentDialog::selectTorrent(){    QString fileName = QFileDialog::getOpenFileName(this, tr("Choose a torrent file"),                                                    lastDirectory,                                                    tr("Torrents (*.torrent);; All files (*.*)"));    if (fileName.isEmpty())        return;    lastDirectory = QFileInfo(fileName).absolutePath();    setTorrent(fileName);}void AddTorrentDialog::selectDestination(){    QString dir = QFileDialog::getExistingDirectory(this, tr("Choose a destination directory"),                                                    lastDestinationDirectory);    if (dir.isEmpty())        return;    lastDestinationDirectory = destinationDirectory = dir;    ui.destinationFolder->setText(destinationDirectory);    enableOkButton();}void AddTorrentDialog::enableOkButton(){    ui.okButton->setEnabled(!ui.destinationFolder->text().isEmpty()                            && !ui.torrentFile->text().isEmpty());}void AddTorrentDialog::setTorrent(const QString &torrentFile){    if (torrentFile.isEmpty()) {        enableOkButton();        return;    }    ui.torrentFile->setText(torrentFile);    if (!torrentFile.isEmpty())        lastDirectory = QFileInfo(torrentFile).absolutePath();    if (lastDestinationDirectory.isEmpty())        lastDestinationDirectory = lastDirectory;        MetaInfo metaInfo;    QFile torrent(torrentFile);    if (!torrent.open(QFile::ReadOnly) || !metaInfo.parse(torrent.readAll())) {        enableOkButton();        return;    }        ui.torrentFile->setText(torrentFile);    ui.announceUrl->setText(metaInfo.announceUrl());    if (metaInfo.comment().isEmpty())        ui.commentLabel->setText("<unknown>");    else        ui.commentLabel->setText(metaInfo.comment());    if (metaInfo.createdBy().isEmpty())        ui.creatorLabel->setText("<unknown>");    else        ui.creatorLabel->setText(metaInfo.createdBy());    ui.sizeLabel->setText(stringNumber(metaInfo.totalSize()));    if (metaInfo.fileForm() == MetaInfo::SingleFileForm) {        ui.torrentContents->setHtml(metaInfo.singleFile().name);    } else {        QString html;        foreach (MetaInfoMultiFile file, metaInfo.multiFiles()) {            QString name = metaInfo.name();            if (!name.isEmpty()) {                html += name;                if (!name.endsWith('/'))                    html += '/';            }            html += file.path + "<br>";        }        ui.torrentContents->setHtml(html);    }    QFileInfo info(torrentFile);    ui.destinationFolder->setText(info.absolutePath());    enableOkButton();}QString AddTorrentDialog::torrentFileName() const{    return ui.torrentFile->text();}QString AddTorrentDialog::destinationFolder() const{    return ui.destinationFolder->text();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -