diff --git a/YACReader/notifications_label_widget.cpp b/YACReader/notifications_label_widget.cpp index 5c8ada5b..ffd82c32 100644 --- a/YACReader/notifications_label_widget.cpp +++ b/YACReader/notifications_label_widget.cpp @@ -42,10 +42,10 @@ NotificationsLabelWidget::NotificationsLabelWidget(QWidget * parent) textLabel->setAttribute(Qt::WA_LayoutUsesWidgetRect,true); textLabel->setGeometry(imgLabel->geometry()); - +#ifndef Q_WS_MAC imgLabel->setGraphicsEffect(effect); textLabel->setGraphicsEffect(effect2); - +#endif resize(p.size()); updatePosition(); diff --git a/YACReaderLibrary/YACReaderLibrary.pro b/YACReaderLibrary/YACReaderLibrary.pro index d7d643e9..ad0040f5 100644 --- a/YACReaderLibrary/YACReaderLibrary.pro +++ b/YACReaderLibrary/YACReaderLibrary.pro @@ -73,7 +73,8 @@ HEADERS += comic_flow.h \ ../common/yacreader_flow_gl.h \ ../common/yacreader_global.h \ ../common/onstart_flow_selection_dialog.h \ - no_libraries_widget.h + no_libraries_widget.h \ + import_widget.h SOURCES += comic_flow.cpp \ create_library_dialog.cpp \ @@ -108,7 +109,8 @@ SOURCES += comic_flow.cpp \ ../common/qnaturalsorting.cpp \ ../common/yacreader_flow_gl.cpp \ ../common/onstart_flow_selection_dialog.cpp \ - no_libraries_widget.cpp + no_libraries_widget.cpp \ + import_widget.cpp include(./server/server.pri) diff --git a/YACReaderLibrary/create_library_dialog.cpp b/YACReaderLibrary/create_library_dialog.cpp index 596258b8..a2d1cfb4 100644 --- a/YACReaderLibrary/create_library_dialog.cpp +++ b/YACReaderLibrary/create_library_dialog.cpp @@ -105,6 +105,7 @@ void CreateLibraryDialog::create() this->adjustSize(); accept->setEnabled(false); emit(createLibrary(QDir::cleanPath(path->text()),QDir::cleanPath(path->text())+"/.yacreaderlibrary",nameEdit->text())); + close(); } else QMessageBox::critical(NULL,tr("Path not found"),tr("The selected path does not exist or is not a valid path. Be sure that you have write access to this folder")); diff --git a/YACReaderLibrary/images.qrc b/YACReaderLibrary/images.qrc index f01ea5aa..e032e785 100644 --- a/YACReaderLibrary/images.qrc +++ b/YACReaderLibrary/images.qrc @@ -57,8 +57,12 @@ ../images/comicRar.png ../images/comicTar.png ../images/comic7z.png - ../images/serverConfigBackground.png + ../images/serverConfigBackground.png ../images/noLibrariesIcon.png ../images/noLibrariesLine.png + ../images/importingIcon.png + ../images/importTopCoversDecoration.png + ../images/importBottomCoversDecoration.png + ../images/glowLine.png \ No newline at end of file diff --git a/YACReaderLibrary/import_widget.cpp b/YACReaderLibrary/import_widget.cpp new file mode 100644 index 00000000..b9f175bf --- /dev/null +++ b/YACReaderLibrary/import_widget.cpp @@ -0,0 +1,338 @@ +#include "import_widget.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +class YACReaderActivityIndicatorWidget : public QWidget +{ +public: + YACReaderActivityIndicatorWidget(QWidget * parent = 0); +public slots: + +private: + QLabel * normal; + QLabel * glow; +}; + +YACReaderActivityIndicatorWidget::YACReaderActivityIndicatorWidget(QWidget * parent) + :QWidget(parent) +{ + QPixmap line(":/images/noLibrariesLine.png"); + QPixmap glowLine(":/images/glowLine.png"); + normal = new QLabel(this); + glow = new QLabel(this); + + normal->setPixmap(line); + glow->setPixmap(glowLine); + + + + QHBoxLayout * layout = new QHBoxLayout(); + + layout->addWidget(normal,0,Qt::AlignVCenter); + + setLayout(layout); + + layout->setMargin(4); + layout->setSpacing(0); + + //setFixedHeight(3); + //resize(579,3); + glow->setGeometry(4,4,glowLine.width(),glowLine.height()); + //normal->setGeometry(0,1,579,1); + + QGraphicsOpacityEffect * effect = new QGraphicsOpacityEffect(); + //effect->setOpacity(1.0); + + + QPropertyAnimation * animation = new QPropertyAnimation(effect,"opacity"); + + animation->setDuration(1000); + animation->setStartValue(1); + animation->setEndValue(0); + //animation->setEasingCurve(QEasingCurve::InQuint); + + QPropertyAnimation * animation2 = new QPropertyAnimation(effect,"opacity"); + + animation2->setDuration(1000); + animation2->setStartValue(0); + animation2->setEndValue(1); + //animation2->setEasingCurve(QEasingCurve::InQuint); + +#ifndef Q_WS_MAC + glow->setGraphicsEffect(effect); +#endif + + connect(animation,SIGNAL(finished()),animation2,SLOT(start())); + connect(animation2,SIGNAL(finished()),animation,SLOT(start())); + + animation->start(); +} + + + + +ImportWidget::ImportWidget(QWidget *parent) : + QWidget(parent) +{ + setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); + + QPalette p(palette()); + p.setColor(QPalette::Background, QColor(250,250,250)); + setAutoFillBackground(true); + setPalette(p); + + QPixmap icon(":/images/importingIcon.png"); + QLabel * iconLabel = new QLabel(); + iconLabel->setPixmap(icon); + + /*QPixmap line(":/images/noLibrariesLine.png"); + QLabel * lineLabel = new QLabel(); + lineLabel->setPixmap(line);*/ + + YACReaderActivityIndicatorWidget * activityIndicator = new YACReaderActivityIndicatorWidget(); + + QLabel * text = new QLabel(""+tr("Importing comics")+""); + text->setStyleSheet("QLabel {font-size:25px;font-weight:bold;}"); + QLabel * textDescription = new QLabel(""+tr("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.")+""); + textDescription->setWordWrap(true); + textDescription->setMaximumWidth(330); + currentComicLabel = new QLabel("..."); + + QVBoxLayout * coversViewLayout = new QVBoxLayout; + coversView = new QGraphicsView(); + //coversView->setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers))); + coversView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + coversView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + coversView->setMaximumHeight(300); + coversView->setStyleSheet("QGraphicsView {background-color: #E6E6E6;border:none;}"); + + coversScene = new QGraphicsScene(); + coversScene->setSceneRect(0,0,coversView->width(),coversView->height()); + coversView->setAlignment(Qt::AlignLeft); + coversView->setScene(coversScene); + + + QLabel * topDecorator = new QLabel(); + QLabel * bottomDecorator = new QLabel(); + QPixmap top(":/images/importTopCoversDecoration.png"); + QPixmap bottom(":/images/importBottomCoversDecoration.png"); + topDecorator->setPixmap(top); + bottomDecorator->setPixmap(bottom); + topDecorator->setScaledContents(true); + bottomDecorator->setScaledContents(true); + topDecorator->setFixedHeight(top.height()); + bottomDecorator->setFixedHeight(bottom.height()); + + coversViewLayout->addWidget(topDecorator,0); + coversViewLayout->addWidget(coversView,1); + coversViewLayout->addWidget(bottomDecorator,0); + coversViewLayout->setMargin(0); + coversViewLayout->setSpacing(0); + + QPushButton * stop = new QPushButton(tr("stop")); + stop->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred); + stop->setMaximumWidth(100); + + QVBoxLayout * layout = new QVBoxLayout(this); + QHBoxLayout * buttonLayout = new QHBoxLayout(); + QHBoxLayout * topLayout = new QHBoxLayout(); + QVBoxLayout * textLayout = new QVBoxLayout(); + + QWidget * topWidget = new QWidget(); + topWidget->setFixedSize(650,180); + textLayout->addSpacing(12); + textLayout->addWidget(text); + textLayout->addSpacing(12); + textLayout->addWidget(textDescription); + textLayout->addStretch(); + + topLayout->addStretch(); + topLayout->addWidget(iconLabel,0,Qt::AlignVCenter); + topLayout->addSpacing(30); + topLayout->addLayout(textLayout,1); + topLayout->addStretch(); + topLayout->setMargin(0); + + topWidget->setLayout(topLayout); + + layout->setAlignment(Qt::AlignHCenter); + + buttonLayout->addSpacing(250); + buttonLayout->addWidget(stop); + buttonLayout->addSpacing(250); + + layout->addSpacing(50); + layout->addWidget(topWidget,0,Qt::AlignHCenter); + layout->addSpacing(20); + layout->addWidget(activityIndicator,0,Qt::AlignHCenter); + layout->addSpacing(10); + layout->addLayout(buttonLayout,0); + layout->addSpacing(10); + layout->addStretch(); + portadasLabel = new QLabel(""+tr("Some of the comics being added...")+""); + layout->addWidget(portadasLabel,0,Qt::AlignHCenter); + layout->addLayout(coversViewLayout); + //layout->addStretch(); + layout->addWidget(currentComicLabel,0,Qt::AlignHCenter); + layout->setContentsMargins(0,layout->contentsMargins().top(),0,layout->contentsMargins().bottom()); + + connect(stop,SIGNAL(clicked()),this,SIGNAL(stop())); + //connect(stop,SIGNAL(clicked()),this,SLOT(addCoverTest())); + + previousWidth = 10; + updatingCovers = false; + elapsedTimer = new QElapsedTimer(); +} + +void ImportWidget::newComic(const QString & path, const QString & coverPath) +{ + currentComicLabel->setText(""+path+""); + + if(((elapsedTimer->elapsed()>=1000) || ((previousWidth < coversView->width()) && (elapsedTimer->elapsed()>=500))) && !updatingCovers)//todo elapsed time + { + + QPixmap p(coverPath); + p = p.scaledToHeight(300,Qt::SmoothTransformation); + QGraphicsPixmapItem * item = new QGraphicsPixmapItem(p); + item->setPos(previousWidth,0); + item->setZValue(i/10000.0); + previousWidth += 10 + p.width(); + coversScene->addItem(item); + + elapsedTimer->start(); + if(previousWidth >= coversView->width()+200 && !updatingCovers) + { + updatingCovers = true; + QGraphicsItem * last = coversScene->items().last(); + int width = p.width(); + if(previousWidth > 3000) + { + coversScene->removeItem(last); + delete last; + } + + foreach(QGraphicsItem * itemToMove, coversScene->items()) + { + QTimeLine *timer = new QTimeLine(400); + timer->setFrameRange(0, 24); + timer->setUpdateInterval(17); + + QGraphicsItemAnimation *animation = new QGraphicsItemAnimation; + animation->setItem(itemToMove); + animation->setTimeLine(timer); + + QPointF point = itemToMove->scenePos(); + float step = (width+10)/24.0; + for (int i = 0; i < 24; ++i) + animation->setPosAt(i / 24.0, QPointF(point.x()-((i+1)*step), point.y())); + + timer->start(); + connect(timer,SIGNAL(finished()),timer,SLOT(deleteLater())); + connect(timer,SIGNAL(finished()),animation,SLOT(deleteLater())); + } + + QTimer::singleShot(400,this,SLOT(finishedUpdatingCover())); + + previousWidth -= 10+width; + } + + } +} + +void ImportWidget::finishedUpdatingCover() +{ + updatingCovers = false; +} + +void ImportWidget::newCover(const QPixmap & image) +{ + +} +static int i = 1; +static int previousWidth = 10; +static int j = 0; +void ImportWidget::addCoverTest() +{ + QPixmap p(QString("c:/temp/%1.jpg").arg(i)); + p = p.scaledToHeight(300,Qt::SmoothTransformation); + QGraphicsPixmapItem * item = new QGraphicsPixmapItem(p); + item->setPos(previousWidth,0); + item->setZValue(i/10000.0); + previousWidth += 10 + p.width(); + coversScene->addItem(item); + if(previousWidth >= coversView->width()) + { + QGraphicsItem * last = coversScene->items().last(); + int width = p.width(); + if(j>=1) + { + coversScene->removeItem(last); + delete last; + } + else + j++; + + foreach(QGraphicsItem * itemToMove, coversScene->items()) + { + + QTimeLine *timer = new QTimeLine(/*350*/1000); + timer->setFrameRange(0, 60); + + QGraphicsItemAnimation *animation = new QGraphicsItemAnimation; + animation->setItem(itemToMove); + animation->setTimeLine(timer); + + QPointF point = itemToMove->scenePos(); + float step = (width+10)/60.0; + for (int i = 0; i < 60; ++i) + animation->setPosAt(i / 60.0, QPointF(point.x()-((i+1)*step), point.y())); + + timer->start(); + } + previousWidth -= 10+width; + } + + i++; +} + +void ImportWidget::clear() +{ + previousWidth = 10; + + //nos aseguramos de que las animaciones han finalizado antes de borrar + QList all = coversScene->items(); + for (int i = 0; i < all.size(); i++) + { + QGraphicsItem *gi = all[i]; + if(gi->parentItem()==NULL) + delete gi; + } + coversScene->clear(); + + updatingCovers = false; + + currentComicLabel->setText("..."); + + i = 0; +} + +void ImportWidget::clearScene() +{ + + +} \ No newline at end of file diff --git a/YACReaderLibrary/import_widget.h b/YACReaderLibrary/import_widget.h new file mode 100644 index 00000000..c8927fd0 --- /dev/null +++ b/YACReaderLibrary/import_widget.h @@ -0,0 +1,38 @@ +#ifndef IMPORT_WIDGET_H +#define IMPORT_WIDGET_H + +#include + +class QLabel; +class QGraphicsView; +class QGraphicsScene; +class QElapsedTimer; + +class ImportWidget : public QWidget +{ + Q_OBJECT +public: + explicit ImportWidget(QWidget *parent = 0); + +signals: + void stop(); +public slots: + void newComic(const QString & path, const QString & coverPath); + void newCover(const QPixmap & image); + void clear(); + void addCoverTest(); + void finishedUpdatingCover(); + void clearScene(); +private: + QLabel * currentComicLabel; + QLabel * portadasLabel; + QGraphicsView * coversView; + QGraphicsScene * coversScene; + int previousWidth; + bool updatingCovers; + QElapsedTimer * elapsedTimer; + quint64 i; + +}; + +#endif // IMPORT_WIDGET_H diff --git a/YACReaderLibrary/library_creator.cpp b/YACReaderLibrary/library_creator.cpp index 60817f31..57068bd8 100644 --- a/YACReaderLibrary/library_creator.cpp +++ b/YACReaderLibrary/library_creator.cpp @@ -233,6 +233,8 @@ void LibraryCreator::insertComic(const QString & relativePath,const QFileInfo & //ThumbnailCreator tc(QDir::cleanPath(fileInfo.absoluteFilePath()),_target+"/covers/"+fileInfo.fileName()+".jpg"); tc.create(); numPages = tc.getNumPages(); + + emit(comicAdded(relativePath,_target+"/covers/"+hash+".jpg")); } comic.info.setNumPages(numPages); comic.insert(_database); diff --git a/YACReaderLibrary/library_creator.h b/YACReaderLibrary/library_creator.h index c2518d27..925792a8 100644 --- a/YACReaderLibrary/library_creator.h +++ b/YACReaderLibrary/library_creator.h @@ -52,6 +52,7 @@ void finished(); void coverExtracted(QString); void folderUpdated(QString); + void comicAdded(QString,QString); void updated(); void created(); }; diff --git a/YACReaderLibrary/library_window.cpp b/YACReaderLibrary/library_window.cpp index 3e2fc5e7..08c7dc45 100644 --- a/YACReaderLibrary/library_window.cpp +++ b/YACReaderLibrary/library_window.cpp @@ -22,6 +22,7 @@ #include "yacreader_global.h" #include "onstart_flow_selection_dialog.h" #include "no_libraries_widget.h" +#include "import_widget.h" // @@ -37,7 +38,7 @@ LibraryWindow::LibraryWindow() } else { - hideNoLibrariesWidget(); + showRootWidget(); } } @@ -228,6 +229,9 @@ void LibraryWindow::doLayout() noLibrariesWidget = new NoLibrariesWidget(); mainWidget->addWidget(noLibrariesWidget); + importWidget = new ImportWidget(); + mainWidget->addWidget(importWidget); + connect(noLibrariesWidget,SIGNAL(createNewLibrary()),this,SLOT(createLibrary())); connect(noLibrariesWidget,SIGNAL(addExistingLibrary()),this,SLOT(showAddLibrary())); } @@ -595,12 +599,19 @@ void LibraryWindow::createConnections() //libraryCreator connections connect(createLibraryDialog,SIGNAL(createLibrary(QString,QString,QString)),this,SLOT(create(QString,QString,QString))); connect(importComicsInfoDialog,SIGNAL(finished(int)),this,SLOT(reloadCurrentLibrary())); + connect(libraryCreator,SIGNAL(coverExtracted(QString)),createLibraryDialog,SLOT(showCurrentFile(QString))); connect(libraryCreator,SIGNAL(finished()),createLibraryDialog,SLOT(close())); connect(libraryCreator,SIGNAL(coverExtracted(QString)),updateLibraryDialog,SLOT(showCurrentFile(QString))); connect(libraryCreator,SIGNAL(finished()),updateLibraryDialog,SLOT(close())); + connect(libraryCreator,SIGNAL(finished()),this,SLOT(showRootWidget())); connect(libraryCreator,SIGNAL(updated()),this,SLOT(reloadCurrentLibrary())); connect(libraryCreator,SIGNAL(created()),this,SLOT(openLastCreated())); + //new import widget + connect(libraryCreator,SIGNAL(comicAdded(QString,QString)),importWidget,SLOT(newComic(QString,QString))); + //connect(libraryCreator,SIGNAL(finished()),importWidget,SLOT(clear())); + //connect(importWidget,SIGNAL(stop()),this,SLOT(cancelCreating())); + connect(importWidget,SIGNAL(stop()),this,SLOT(stopLibraryCreator())); //packageManager connections connect(exportLibraryDialog,SIGNAL(exportPath(QString)),this,SLOT(exportLibrary(QString))); @@ -694,7 +705,7 @@ void LibraryWindow::loadLibrary(const QString & name) { if(libraries.size()>0) //si hay bibliotecas... { - hideNoLibrariesWidget(); + showRootWidget(); QString path=libraries.value(name)+"/.yacreaderlibrary"; QDir d; //TODO change this by static methods (utils class?? with delTree for example) QString dbVersion; @@ -1008,6 +1019,8 @@ void LibraryWindow::create(QString source, QString dest, QString name) _lastAdded = name; _sourceLastAdded = source; + showImportingWidget(); + } void LibraryWindow::reloadCurrentLibrary() @@ -1101,7 +1114,9 @@ void LibraryWindow::saveLibraries() void LibraryWindow::updateLibrary() { - updateLibraryDialog->show(); + //updateLibraryDialog->show(); + showImportingWidget(); + QString currentLibrary = selectedLibrary->currentText(); QString path = libraries.value(currentLibrary); _lastAdded = currentLibrary; @@ -1539,7 +1554,16 @@ void LibraryWindow::showNoLibrariesWidget() { mainWidget->setCurrentIndex(1); } -void LibraryWindow::hideNoLibrariesWidget() + +void LibraryWindow::showRootWidget() { + libraryToolBar->setDisabled(false); mainWidget->setCurrentIndex(0); +} + +void LibraryWindow::showImportingWidget() +{ + importWidget->clear(); + libraryToolBar->setDisabled(true); + mainWidget->setCurrentIndex(2); } \ No newline at end of file diff --git a/YACReaderLibrary/library_window.h b/YACReaderLibrary/library_window.h index 2d8005eb..513d8fb8 100644 --- a/YACReaderLibrary/library_window.h +++ b/YACReaderLibrary/library_window.h @@ -13,6 +13,7 @@ #include #include +//TODO cambiar por class XXXXX #include "create_library_dialog.h" #include "add_library_dialog.h" #include "library_creator.h" @@ -32,6 +33,7 @@ #include "treeitem.h" #include "server_config_dialog.h" #include "no_libraries_widget.h" +#include "import_widget.h" class LibraryWindow : public QMainWindow { @@ -83,6 +85,7 @@ private: QStackedWidget * mainWidget; NoLibrariesWidget * noLibrariesWidget; + ImportWidget * importWidget; bool fetching; @@ -217,7 +220,8 @@ public: void showImportComicsInfo(); void asignNumbers(); void showNoLibrariesWidget(); - void hideNoLibrariesWidget(); + void showRootWidget(); + void showImportingWidget(); //server interface QMap getLibraries(){return libraries;}; diff --git a/YACReaderLibrary/no_libraries_widget.cpp b/YACReaderLibrary/no_libraries_widget.cpp index f9c88451..093523af 100644 --- a/YACReaderLibrary/no_libraries_widget.cpp +++ b/YACReaderLibrary/no_libraries_widget.cpp @@ -1,6 +1,6 @@ #include "no_libraries_widget.h" -#include +#include #include #include #include @@ -23,8 +23,11 @@ NoLibrariesWidget::NoLibrariesWidget(QWidget *parent) : QLabel * lineLabel = new QLabel(); lineLabel->setPixmap(line); - QLabel * text = new QLabel(tr("You don't have any librarires yet")); + QLabel * text = new QLabel(""+tr("You don't have any librarires yet")+""); text->setStyleSheet("QLabel {font-size:25px;font-weight:bold;}"); + QLabel * textDescription = new QLabel(""+tr("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.")+""); + textDescription->setWordWrap(true); + textDescription->setMaximumWidth(330); QPushButton * createButton = new QPushButton(tr("create your first library")); createButton->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred); @@ -33,22 +36,37 @@ NoLibrariesWidget::NoLibrariesWidget(QWidget *parent) : QVBoxLayout * layout = new QVBoxLayout(this); QHBoxLayout * buttonLayout = new QHBoxLayout(); - //QHBoxLayout * topLayout = new QHBoxLayout(); - //QVBoxLayout * textLayout = new QVBoxLayout(); + QHBoxLayout * topLayout = new QHBoxLayout(); + QVBoxLayout * textLayout = new QVBoxLayout(); + + QWidget * topWidget = new QWidget(); + topWidget->setFixedSize(650,160); + textLayout->addSpacing(12); + textLayout->addWidget(text); + textLayout->addSpacing(12); + textLayout->addWidget(textDescription); + textLayout->addStretch(); + + topLayout->addStretch(); + topLayout->addWidget(iconLabel,0,Qt::AlignVCenter); + topLayout->addSpacing(30); + topLayout->addLayout(textLayout,1); + topLayout->addStretch(); + topLayout->setMargin(0); + + topWidget->setLayout(topLayout); layout->setAlignment(Qt::AlignHCenter); - buttonLayout->addSpacing(100); + buttonLayout->addSpacing(125); buttonLayout->addWidget(createButton); layout->addSpacing(25); buttonLayout->addWidget(addButton); - buttonLayout->addSpacing(100); + buttonLayout->addSpacing(125); layout->addStretch(); - layout->addWidget(iconLabel,0,Qt::AlignHCenter); - layout->addSpacing(10); - layout->addWidget(text,0,Qt::AlignHCenter); - layout->addSpacing(10); + layout->addWidget(topWidget); + layout->addSpacing(20); layout->addWidget(lineLabel,0,Qt::AlignHCenter); layout->addSpacing(10); layout->addLayout(buttonLayout,0); diff --git a/images/glowLine.png b/images/glowLine.png new file mode 100644 index 00000000..13ee7b3b Binary files /dev/null and b/images/glowLine.png differ diff --git a/images/importBottomCoversDecoration.png b/images/importBottomCoversDecoration.png new file mode 100644 index 00000000..3e0b2906 Binary files /dev/null and b/images/importBottomCoversDecoration.png differ diff --git a/images/importTopCoversDecoration.png b/images/importTopCoversDecoration.png new file mode 100644 index 00000000..0343fdb4 Binary files /dev/null and b/images/importTopCoversDecoration.png differ diff --git a/images/importingIcon.png b/images/importingIcon.png new file mode 100644 index 00000000..bb4f6afb Binary files /dev/null and b/images/importingIcon.png differ diff --git a/images/noLibrariesIcon.png b/images/noLibrariesIcon.png index 874377a1..b8129ae4 100644 Binary files a/images/noLibrariesIcon.png and b/images/noLibrariesIcon.png differ