1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
#include "mainwindow.h" #include <QApplication> #include <QStatusBar> #include <QDir> #include <QDesktopServices> #include "config.h" #include "server.h" #include "library.h" #include "libraryinitthread.h" #include "malclient.h" #include "mplayer.h" #include "mpv.h" #include "omxplayer.h" #include "metadataparseravconv.h" #include "thumbnailcreatoravconv.h" #include "transmissionclient.h" #include "snapshotwallpapergenerator.h" #include "nyaarss.h" #include <string.h> #include <curl/curl.h> #include <locale.h> int main(int argc, char *argv[]) { // TODO move argument parsing partly back here, since it calls exit(0) BaseConfig config(argc, argv); QApplication a(argc, argv, !config.getNoGui()); curl_global_init(CURL_GLOBAL_SSL); bool noInitFail = true; Library library(config.libraryPath()); noInitFail *= library.initDirectory(); if (!noInitFail) { return 2; } MainWindow w(library); if (!config.getNoGui()) { if (config.getFullScreen()) { w.showFullScreen(); } else { w.show(); } } VideoPlayer* player; // omx support is dead // if (config.omxPlayerIsInstalled()) { // player = new Omxplayer(library, config); // } else { // player = new Mplayer(library, config, config.getMplayerConfigConstRef()); // } // numeric locale c is required by mpv to do anything setlocale(LC_NUMERIC, "C"); #ifdef USE_MPV player = new Mpv(library, config); #else // this requires mplayer2 // mplayer2 is no longer in development and packages for distros are dying player = new Mplayer(library, config, config.getMplayerConfigConstRef()); #endif MetaDataParserAvconv metaDataParser(config.getAvconvConfigConstRef()); ThumbnailCreatorAvconv thumbnailCreator(config.getAvconvConfigConstRef()); player->setMetaDataParser(&metaDataParser); player->setThumbnailCreator(&thumbnailCreator); library.setMetaDataParser(&metaDataParser); library.addWallpaperDownloader(new SnapshotWallpaperGenerator::Client(metaDataParser, thumbnailCreator)); // TODO move into the thread const RssConfig& rssConfig = config.getRssConfigConstRef(); TransmissionClient transmission; NyaaRss::Client nyaaClient(transmission, library, rssConfig); TorrentRss::Thread rssThread(nyaaClient); rssThread.start(QThread::LowestPriority); //nyaaClient.moveToThread(&rssThread); nyaaClient.connectLibrary(); #ifdef SERVER_PUBLIC_ROOT QDir publicDir = QDir(SERVER_PUBLIC_ROOT); #else QDir publicDir = QDir::current(); publicDir.cd("public"); #endif qDebug() << "server dir" << publicDir.absoluteFilePath("."); Server s(publicDir.path(), w, library, player); const int port = s.start(config.serverPort()); if (config.getAutoOpenBrowser()) { QString url(QString("http://localhost:%1").arg(port)); QDesktopServices::openUrl(url); } library.initWallpaperDownloaders(); library.watchFilesystem(); library.initOnlineSync(config); LibraryInitThread initThread(library, config, QThread::currentThread()); initThread.start(QThread::HighestPriority); w.setPage("MainPage", QString("Launched on port %1").arg(port)); int returnCode = a.exec(); library.write(); // write before exit rssThread.toldToStop = true; rssThread.wait(); return returnCode; }