diff --git a/ckodilibrary.cpp b/ckodilibrary.cpp index 2b3424a..0ce9e7d 100644 --- a/ckodilibrary.cpp +++ b/ckodilibrary.cpp @@ -6,9 +6,22 @@ #include #include +#include + cKodiLibrary::cKodiLibrary(QStatusBar* lpMainWindowStatusBar, const QString& szPath) : m_lpMainWindowStatusBar(lpMainWindowStatusBar), + m_lpSplashScreen(0), + m_lpKodiVideoLibrary(0), + m_lpKodiTexturesLibrary(0), + m_lpImageList(0), + m_szPath(szPath) +{ +} + +cKodiLibrary::cKodiLibrary(QSplashScreen* lpSplashScreen, const QString& szPath) : + m_lpMainWindowStatusBar(0), + m_lpSplashScreen(lpSplashScreen), m_lpKodiVideoLibrary(0), m_lpKodiTexturesLibrary(0), m_lpImageList(0), @@ -55,7 +68,11 @@ bool cKodiLibrary::init() { qint32 iVideoCount; - m_lpMainWindowStatusBar->showMessage("Initializing ..."); + if(m_lpMainWindowStatusBar) + m_lpMainWindowStatusBar->showMessage("Initializing ..."); + else if(m_lpSplashScreen) + m_lpSplashScreen->showMessage("Initializing ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); m_szAddons = findFile(m_szPath, "Addons"); m_szADSP = findFile(m_szPath, "ADSP"); @@ -66,13 +83,21 @@ bool cKodiLibrary::init() m_szTV = findFile(m_szPath, "TV"); m_szViewModes = findFile(m_szPath, "ViewModes"); - m_lpMainWindowStatusBar->showMessage("Initializing Videos ..."); + if(m_lpMainWindowStatusBar) + m_lpMainWindowStatusBar->showMessage("Initializing Videos ..."); + else if(m_lpSplashScreen) + m_lpSplashScreen->showMessage("Initializing Videos ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); m_lpKodiVideoLibrary = new cKodiVideoLibrary(m_szMyVideos); if(m_lpKodiVideoLibrary->init() != -1) - iVideoCount = m_lpKodiVideoLibrary->load(m_lpMainWindowStatusBar); + iVideoCount = m_lpKodiVideoLibrary->load(m_lpMainWindowStatusBar, m_lpSplashScreen); - m_lpMainWindowStatusBar->showMessage("Initializing Textures ..."); + if(m_lpMainWindowStatusBar) + m_lpMainWindowStatusBar->showMessage("Initializing Textures ..."); + else if(m_lpSplashScreen) + m_lpSplashScreen->showMessage("Initializing Textures ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); m_lpKodiTexturesLibrary = new cKodiTexturesLibrary(m_szTextures); if(m_lpKodiTexturesLibrary->init() != -1) @@ -82,7 +107,11 @@ bool cKodiLibrary::init() m_lpImageList = new cImageList(m_lpKodiVideoLibrary, m_lpKodiTexturesLibrary, m_szPath); - m_lpMainWindowStatusBar->showMessage("Done.", 3000); + if(m_lpMainWindowStatusBar) + m_lpMainWindowStatusBar->showMessage("Done.", 3000); + else if(m_lpSplashScreen) + m_lpSplashScreen->showMessage("Done.", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); return(iVideoCount != 0); } diff --git a/ckodilibrary.h b/ckodilibrary.h index 2c04222..8d4143f 100644 --- a/ckodilibrary.h +++ b/ckodilibrary.h @@ -10,6 +10,8 @@ #include #include +#include + class cImage; class cImageList; @@ -18,6 +20,7 @@ class cKodiLibrary { public: cKodiLibrary(QStatusBar* lpMainWindowStatusBar, const QString& szPath); + cKodiLibrary(QSplashScreen* lpSplashScreen, const QString& szPath); ~cKodiLibrary(); bool init(); @@ -27,6 +30,7 @@ public: cImageList* imageList(); private: QStatusBar* m_lpMainWindowStatusBar; + QSplashScreen* m_lpSplashScreen; cKodiVideoLibrary* m_lpKodiVideoLibrary; cKodiTexturesLibrary* m_lpKodiTexturesLibrary; cImageList* m_lpImageList; diff --git a/ckodivideolibrary.cpp b/ckodivideolibrary.cpp index fba47fb..6ff75d9 100644 --- a/ckodivideolibrary.cpp +++ b/ckodivideolibrary.cpp @@ -12,6 +12,8 @@ #include #include +#include + cKodiVideoLibrary::cKodiVideoLibrary(const QString& szFileName) : m_szFileName(szFileName), @@ -62,25 +64,62 @@ qint16 cKodiVideoLibrary::version() return(m_iVersion); } -qint32 cKodiVideoLibrary::load(QStatusBar *lpStatusBar) +qint32 cKodiVideoLibrary::load(QStatusBar *lpStatusBar, QSplashScreen *lpSplashScreen) { - lpStatusBar->showMessage("Loading actors ..."); + if(lpStatusBar) + lpStatusBar->showMessage("Loading actors ..."); + else if(lpSplashScreen) + lpSplashScreen->showMessage("Loading actors ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); loadActors(); - lpStatusBar->showMessage("Loading countries ..."); + + if(lpStatusBar) + lpStatusBar->showMessage("Loading countries ..."); + else if(lpSplashScreen) + lpSplashScreen->showMessage("Loading countries ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); loadCountries(); - lpStatusBar->showMessage("Loading genres ..."); + + if(lpStatusBar) + lpStatusBar->showMessage("Loading genres ..."); + else if(lpSplashScreen) + lpSplashScreen->showMessage("Loading genres ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); loadGenres(); - lpStatusBar->showMessage("Loading studios ..."); + + if(lpStatusBar) + lpStatusBar->showMessage("Loading studios ..."); + else if(lpSplashScreen) + lpSplashScreen->showMessage("Loading studios ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); loadStudios(); - lpStatusBar->showMessage("Loading sets ..."); + + if(lpStatusBar) + lpStatusBar->showMessage("Loading sets ..."); + else if(lpSplashScreen) + lpSplashScreen->showMessage("Loading sets ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); loadSets(); - lpStatusBar->showMessage("Loading videos ..."); + if(lpStatusBar) + lpStatusBar->showMessage("Loading videos ..."); + else if(lpSplashScreen) + lpSplashScreen->showMessage("Loading videos ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); loadVideos(); - lpStatusBar->showMessage("Loading tv shows ..."); + + if(lpStatusBar) + lpStatusBar->showMessage("Loading tv shows ..."); + else if(lpSplashScreen) + lpSplashScreen->showMessage("Loading tv shows ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); loadTVShows(); - lpStatusBar->showMessage("done."); + if(lpStatusBar) + lpStatusBar->showMessage("done."); + else if(lpSplashScreen) + lpSplashScreen->showMessage("done.", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); return(1); } diff --git a/ckodivideolibrary.h b/ckodivideolibrary.h index 5633ea3..d772542 100644 --- a/ckodivideolibrary.h +++ b/ckodivideolibrary.h @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -22,7 +23,7 @@ public: qint16 init(); qint16 version(); - qint32 load(QStatusBar* lpStatusBar); + qint32 load(QStatusBar* lpStatusBar, QSplashScreen* lpSplashScreen); bool art(const QString& szMediaType, const QString& szType, qint32 idMovie, qint32& artID, QString& szURL); void fillVideoList(QStandardItemModel* lpModel); diff --git a/cmainwindow.cpp b/cmainwindow.cpp index aa2382e..fa06a0e 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -7,7 +7,7 @@ #include -cMainWindow::cMainWindow(QWidget *parent) : +cMainWindow::cMainWindow(QWidget *parent, QSplashScreen *lpSplashScreen) : QMainWindow(parent), ui(new Ui::cMainWindow), m_lpVideoWidget(0), @@ -16,9 +16,8 @@ cMainWindow::cMainWindow(QWidget *parent) : m_lpMusicVideoWidget(0), m_lpKodiLibrary(0) { - initUI(); - - initDB(); + initUI(lpSplashScreen); + initDB(lpSplashScreen); } cMainWindow::~cMainWindow() @@ -41,10 +40,13 @@ cMainWindow::~cMainWindow() delete ui; } -void cMainWindow::initUI() +void cMainWindow::initUI(QSplashScreen* lpSplashScreen) { ui->setupUi(this); + lpSplashScreen->showMessage("initializing UI ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); + m_lpVideoWidget = new cVideoWidget(this); m_lpTVShowWidget = new cTVShowWidget(this); m_lpMusicWidget = new cMusicWidget(this); @@ -64,16 +66,21 @@ void cMainWindow::initUI() setWindowTitle(tr("qtKodiAdmin")); } -void cMainWindow::initDB() +void cMainWindow::initDB(QSplashScreen* lpSplashScreen) { QSettings settings; QString szKodiRoot = settings.value("lastDB", "").toString(); if(szKodiRoot.isEmpty()) return; -// m_lpKodiLibrary = new cKodiLibrary(ui->m_lpStatusBar, QDir::homePath() + QDir::separator() + QString(".kodi")); - m_lpKodiLibrary = new cKodiLibrary(ui->m_lpStatusBar, szKodiRoot); + m_lpKodiLibrary = new cKodiLibrary(lpSplashScreen, szKodiRoot); m_lpKodiLibrary->init(); + + lpSplashScreen->showMessage("filling video list ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); m_lpVideoWidget->setLibrary(m_lpKodiLibrary->videoLibrary(), m_lpKodiLibrary->imageList()); + + lpSplashScreen->showMessage("filling tv show list ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + QApplication::processEvents(); m_lpTVShowWidget->setLibrary(m_lpKodiLibrary->videoLibrary(), m_lpKodiLibrary->imageList()); } diff --git a/cmainwindow.h b/cmainwindow.h index 85adc5a..4ce1fff 100644 --- a/cmainwindow.h +++ b/cmainwindow.h @@ -12,6 +12,8 @@ #include #include +#include + namespace Ui { @@ -23,7 +25,7 @@ class cMainWindow : public QMainWindow Q_OBJECT public: - explicit cMainWindow(QWidget *parent = 0); + explicit cMainWindow(QWidget *parent = 0, QSplashScreen* lpSplashScreen = 0); ~cMainWindow(); private slots: @@ -36,8 +38,8 @@ private: cMusicVideosWidget* m_lpMusicVideoWidget; cKodiLibrary* m_lpKodiLibrary; - void initUI(); - void initDB(); + void initUI(QSplashScreen* lpSplashScreen); + void initDB(QSplashScreen* lpSplashScreen); }; #endif // CMAINWINDOW_H diff --git a/main.cpp b/main.cpp index 0267ef0..d7fd751 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,9 @@ #include +#include +#include + int main(int argc, char *argv[]) { @@ -20,11 +23,20 @@ int main(int argc, char *argv[]) a.setOrganizationDomain("windesign.at"); a.setApplicationName("qtKodiDB"); - cMainWindow w; + QPixmap pixmap(":/splash/splash.png"); + QSplashScreen* lpSplashScreen = new QSplashScreen(pixmap); + lpSplashScreen->show(); + a.processEvents(); + lpSplashScreen->showMessage("initializing ...", Qt::AlignLeft | Qt::AlignBottom, Qt::white); + + cMainWindow w(0, lpSplashScreen); w.showMaximized(); //w.show(); //w.resize(100, 100); + lpSplashScreen->finish(&w); + delete lpSplashScreen; + return a.exec(); } diff --git a/qtKodiDB.pro b/qtKodiDB.pro index 649c1c5..ab41769 100644 --- a/qtKodiDB.pro +++ b/qtKodiDB.pro @@ -65,4 +65,7 @@ DISTFILES += \ icons/Musics.ico \ icons/TV Shows.ico \ icons/Videos.ico \ - icons/empty.ico + icons/empty.ico \ + splash/splash.jpg \ + splash/splash.png \ + splash/splash.svg diff --git a/qtkodidb.qrc b/qtkodidb.qrc index 5baca51..0b28267 100644 --- a/qtkodidb.qrc +++ b/qtkodidb.qrc @@ -9,5 +9,6 @@ icons/Videos.ico icons/Videos.png icons/empty.ico + splash/splash.png diff --git a/splash/splash.jpg b/splash/splash.jpg new file mode 100644 index 0000000..04fe2e3 Binary files /dev/null and b/splash/splash.jpg differ diff --git a/splash/splash.png b/splash/splash.png new file mode 100644 index 0000000..15bb397 Binary files /dev/null and b/splash/splash.png differ diff --git a/splash/splash.svg b/splash/splash.svg new file mode 100644 index 0000000..f367418 --- /dev/null +++ b/splash/splash.svg @@ -0,0 +1,427 @@ + + + + + + + + + + image/svg+xml + + + + + + + + db + +