#ifdef APP_EXTRA
#include "extra.h"
#endif
+#include "datautils.h"
+#include "iconutils.h"
static DownloadManager *downloadManagerInstance = 0;
int DownloadManager::activeItems() {
int num = 0;
- foreach (DownloadItem *item, items) {
+ for (DownloadItem *item : items) {
if (item->status() == Downloading || item->status() == Starting) num++;
}
return num;
}
DownloadItem* DownloadManager::itemForVideo(Video* video) {
- foreach (DownloadItem *item, items) {
- if (item->getVideo()->id() == video->id()) return item;
+ for (DownloadItem *item : items) {
+ if (item->getVideo()->getId() == video->getId()) return item;
}
return 0;
}
void DownloadManager::addItem(Video *video) {
// qDebug() << __FUNCTION__ << video->title();
-#ifdef APP_ACTIVATION
- if (!Activation::instance().isActivated()) {
- if (video->duration() >= 60*4) {
- QMessageBox msgBox(MainWindow::instance());
- msgBox.setIconPixmap(QPixmap(":/images/app.png").scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation));
- msgBox.setText(tr("This is just the demo version of %1.").arg(Constants::NAME));
- msgBox.setInformativeText(
- tr("It can only download videos shorter than %1 minutes so you can test the download functionality.")
- .arg(4));
- msgBox.setModal(true);
- // make it a "sheet" on the Mac
- msgBox.setWindowModality(Qt::WindowModal);
-
- msgBox.addButton(tr("Continue"), QMessageBox::RejectRole);
- QPushButton *buyButton = msgBox.addButton(tr("Get the full version"), QMessageBox::ActionRole);
-
- msgBox.exec();
-
- if (msgBox.clickedButton() == buyButton) {
- MainWindow::instance()->showActivationView();
- }
-
- return;
- }
- }
-#endif
-
DownloadItem *item = itemForVideo(video);
if (item != 0) {
if (item->status() == Failed || item->status() == Idle) {
- qDebug() << "Restarting download" << video->title();
+ qDebug() << "Restarting download" << video->getTitle();
item->tryAgain();
} else {
- qDebug() << "Already downloading video" << video->title();
+ qDebug() << "Already downloading video" << video->getTitle();
}
return;
}
video->disconnect(this);
- QString basename = video->title();
- basename.replace('(', '[');
- basename.replace(')', ']');
- basename.replace('/', ' ');
- basename.replace('\\', ' ');
- basename.replace('<', ' ');
- basename.replace('>', ' ');
- basename.replace(':', ' ');
- basename.replace('"', ' ');
- basename.replace('|', ' ');
- basename.replace('?', ' ');
- basename.replace('*', ' ');
- basename = basename.simplified();
-
- if (!basename.isEmpty() && basename.at(0) == '.')
- basename = basename.mid(1).trimmed();
-
- if (basename.isEmpty()) basename = video->id();
+ QString basename = DataUtils::stringToFilename(video->getTitle());
+ if (basename.isEmpty()) basename = video->getId();
QString filename = currentDownloadFolder() + "/" + basename + ".mp4";
void DownloadManager::itemFinished() {
if (activeItems() == 0) emit finished();
#ifdef APP_EXTRA
- DownloadItem *item = static_cast<DownloadItem*>(sender());
- if (!item) {
- qDebug() << "Cannot get item in" << __FUNCTION__;
- return;
- }
- Video *video = item->getVideo();
- if (!video) return;
- QString stats = tr("%1 downloaded in %2").arg(
- DownloadItem::formattedFilesize(item->bytesTotal()),
- DownloadItem::formattedTime(item->totalTime(), false));
- Extra::notify(tr("Download finished"), video->title(), stats);
+ DownloadItem *item = static_cast<DownloadItem*>(sender());
+ if (!item) {
+ qDebug() << "Cannot get item in" << __FUNCTION__;
+ return;
+ }
+ Video *video = item->getVideo();
+ if (!video) return;
+ QString stats = tr("%1 downloaded in %2").arg(
+ DownloadItem::formattedFilesize(item->bytesTotal()),
+ DownloadItem::formattedTime(item->totalTime(), false));
+ Extra::notify(tr("Download finished"), video->getTitle(), stats);
#endif
}
QString DownloadManager::defaultDownloadFolder() {
// download in the Movies system folder
- QString path = QDesktopServices::storageLocation(QDesktopServices::MoviesLocation);
- QDir moviesDir(path);
+ QString path = QStandardPaths::writableLocation(QStandardPaths::MoviesLocation);
+
+ const QDir moviesDir(path);
if (!moviesDir.exists()) {
// fallback to Desktop
- path = QDesktopServices::storageLocation(QDesktopServices::DesktopLocation);
+ path = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
- QDir desktopDir(path);
+ const QDir desktopDir(path);
if (!desktopDir.exists()) {
// fallback to Home
- path = QDesktopServices::storageLocation(QDesktopServices::HomeLocation);
+ path = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
}
}
return path;