MainWindow::Private::Private(MainWindow *parent) : q(parent) , settings(SETTING_FILE_NAME, SETTING_FILE_FORMAT) , trayIcon(QIcon(":/resources/KanmusuMemory32.png")) { ui.setupUi(q); ui.webView->page()->networkAccessManager()->setCookieJar(new CookieJar(q)); QNetworkDiskCache *cache = new QNetworkDiskCache(q); cache->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)); cache->setMaximumCacheSize(1073741824); //about 1024MB ui.webView->page()->networkAccessManager()->setCache(cache); //通知タイマーのダイアログ作成 m_timerDialog = new TimerDialog(q, &trayIcon, &settings); //メニュー connect(ui.capture, &QAction::triggered, [this](){ captureGame(); }); connect(ui.actionCaptureAndEdit, &QAction::triggered, [this]() { captureGame(true); }); #ifndef DISABLE_CATALOG_AND_DETAIL_FLEET connect(ui.captureCatalog, &QAction::triggered, [this](){ captureCatalog(); }); connect(ui.captureFleetDetail, &QAction::triggered, [this](){ captureFleetDetail(); }); #endif connect(ui.reload, &QAction::triggered, ui.webView, &QWebView::reload); connect(ui.exit, &QAction::triggered, q, &MainWindow::close); connect(ui.actionReturn_to_Kan_Colle, &QAction::triggered, [this]() { //艦これ読込み ui.webView->load(QUrl(URL_KANCOLLE)); }); connect(ui.actionClearAccessCache, &QAction::triggered, [this]() { //キャッシュをクリア ui.webView->page()->networkAccessManager()->cache()->clear(); }); //画像リスト connect(ui.viewMemory, &QAction::triggered, [this]() { checkSavePath(); MemoryDialog dlg(settings.value(QStringLiteral("path")).toString(), q); dlg.exec(); if(QFile::exists(dlg.imagePath())){ switch(dlg.nextOperation()){ case MemoryDialog::Tweet: //つぶやく openTweetDialog(dlg.imagePath()); break; case MemoryDialog::Edit: { //編集 QString format; if(settings.value(SETTING_GENERAL_SAVE_PNG, false).toBool()) format = QStringLiteral("png"); else format = QStringLiteral("jpg"); QString path = makeFileName(format); QString editPath = makeFileName(format); openImageEditDialog(path ,dlg.imagePath(), editPath); break; } default: break; } } }); //通知タイマー connect(ui.notificationTimer, &QAction::triggered, [this]() { m_timerDialog->show(); }); //設定ダイアログ表示 connect(ui.preferences, &QAction::triggered, [this]() { SettingsDialog dlg(q); dlg.setSavePath(settings.value(QStringLiteral("path")).toString()); dlg.setUnusedTwitter(settings.value(SETTING_GENERAL_UNUSED_TWITTER, false).toBool()); dlg.setSavePng(settings.value(SETTING_GENERAL_SAVE_PNG, false).toBool()); dlg.setMaskAdmiralName(settings.value(SETTING_GENERAL_MASK_ADMIRAL_NAME, false).toBool()); dlg.setMaskHqLevel(settings.value(SETTING_GENERAL_MASK_HQ_LEVEL, false).toBool()); if (dlg.exec()) { //設定更新 settings.setValue(QStringLiteral("path"), dlg.savePath()); settings.setValue(SETTING_GENERAL_UNUSED_TWITTER, dlg.unusedTwitter()); settings.setValue(SETTING_GENERAL_SAVE_PNG, dlg.savePng()); settings.setValue(SETTING_GENERAL_MASK_ADMIRAL_NAME, dlg.isMaskAdmiralName()); settings.setValue(SETTING_GENERAL_MASK_HQ_LEVEL, dlg.isMaskHqLevel()); } }); //アバウト connect(ui.about, &QAction::triggered, [this]() { AboutDialog dlg(q); dlg.setVersion(KANMEMO_VERSION); dlg.setDevelopers(KANMEMO_DEVELOPERS); dlg.exec(); }); //フルスクリーン q->addAction(ui.actionFullScreen); connect(ui.actionFullScreen, &QAction::triggered, [this]() { if(q->isFullScreen()){ //フルスクリーン解除 q->setWindowState(q->windowState() ^ Qt::WindowFullScreen); }else if(ui.webView->gameExists()){ //フルスクリーンじゃなくてゲームがある q->setWindowState(q->windowState() ^ Qt::WindowFullScreen); }else{ //フルスクリーンでゲームがないときは何もしない } }); //WebViewの読込み開始 connect(ui.webView, &QWebView::loadStarted, [this](){ ui.progressBar->show(); }); //WebViewの読込み完了 connect(ui.webView, &QWebView::loadFinished, [this](bool ok) { if (ok) { ui.statusBar->showMessage(MainWindow::tr("complete"), STATUS_BAR_MSG_TIME); // if(ui.webView->url().toString().compare(URL_KANCOLLE) == 0){ // setFullScreen(); // } } else { ui.statusBar->showMessage(MainWindow::tr("error"), STATUS_BAR_MSG_TIME); } ui.progressBar->hide(); }); //WebViewの読込み状態 connect(ui.webView, &QWebView::loadProgress, ui.progressBar, &QProgressBar::setValue); //通知アイコン #ifdef Q_OS_WIN trayIcon.show(); #endif #ifdef DISABLE_CATALOG_AND_DETAIL_FLEET ui.captureCatalog->setVisible(false); ui.captureFleetDetail->setVisible(false); #endif }
void Agent::run() { ThreadedAssignment::commonInit(AGENT_LOGGING_NAME, NodeType::Agent); auto nodeList = DependencyManager::get<NodeList>(); nodeList->addSetOfNodeTypesToNodeInterestSet(NodeSet() << NodeType::AudioMixer << NodeType::AvatarMixer << NodeType::EntityServer ); // figure out the URL for the script for this agent assignment QUrl scriptURL; if (_payload.isEmpty()) { scriptURL = QUrl(QString("http://%1:%2/assignment/%3") .arg(DependencyManager::get<NodeList>()->getDomainHandler().getIP().toString()) .arg(DOMAIN_SERVER_HTTP_PORT) .arg(uuidStringWithoutCurlyBraces(_uuid))); } else { scriptURL = QUrl(_payload); } QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); QNetworkReply *reply = networkAccessManager.get(QNetworkRequest(scriptURL)); QNetworkDiskCache* cache = new QNetworkDiskCache(); QString cachePath = QStandardPaths::writableLocation(QStandardPaths::DataLocation); cache->setCacheDirectory(!cachePath.isEmpty() ? cachePath : "agentCache"); networkAccessManager.setCache(cache); qDebug() << "Downloading script at" << scriptURL.toString(); QEventLoop loop; QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec(); QString scriptContents(reply->readAll()); delete reply; qDebug() << "Downloaded script:" << scriptContents; // setup an Avatar for the script to use ScriptableAvatar scriptedAvatar(&_scriptEngine); scriptedAvatar.setForceFaceshiftConnected(true); // call model URL setters with empty URLs so our avatar, if user, will have the default models scriptedAvatar.setFaceModelURL(QUrl()); scriptedAvatar.setSkeletonModelURL(QUrl()); // give this AvatarData object to the script engine _scriptEngine.setAvatarData(&scriptedAvatar, "Avatar"); _scriptEngine.setAvatarHashMap(&_avatarHashMap, "AvatarList"); // register ourselves to the script engine _scriptEngine.registerGlobalObject("Agent", this); _scriptEngine.init(); // must be done before we set up the viewers _scriptEngine.registerGlobalObject("SoundCache", &SoundCache::getInstance()); _scriptEngine.registerGlobalObject("EntityViewer", &_entityViewer); _entityViewer.setJurisdictionListener(_scriptEngine.getEntityScriptingInterface()->getJurisdictionListener()); _entityViewer.init(); _scriptEngine.getEntityScriptingInterface()->setEntityTree(_entityViewer.getTree()); _scriptEngine.setScriptContents(scriptContents); _scriptEngine.run(); setFinished(true); }
void StelApp::init(QSettings* conf) { confSettings = conf; devicePixelsPerPixel = QOpenGLContext::currentContext()->screen()->devicePixelRatio(); setBaseFontSize(confSettings->value("gui/base_font_size", 13).toInt()); core = new StelCore(); if (saveProjW!=-1 && saveProjH!=-1) core->windowHasBeenResized(0, 0, saveProjW, saveProjH); // Initialize AFTER creation of openGL context textureMgr = new StelTextureMgr(); textureMgr->init(); networkAccessManager = new QNetworkAccessManager(this); // Activate http cache if Qt version >= 4.5 QNetworkDiskCache* cache = new QNetworkDiskCache(networkAccessManager); QString cachePath = StelFileMgr::getCacheDir(); qDebug() << "Cache directory is: " << QDir::toNativeSeparators(cachePath); cache->setCacheDirectory(cachePath); networkAccessManager->setCache(cache); connect(networkAccessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(reportFileDownloadFinished(QNetworkReply*))); //create non-StelModule managers propMgr = new StelPropertyMgr(); localeMgr = new StelLocaleMgr(); skyCultureMgr = new StelSkyCultureMgr(); propMgr->registerObject(skyCultureMgr); planetLocationMgr = new StelLocationMgr(); actionMgr = new StelActionMgr(); // Stel Object Data Base manager stelObjectMgr = new StelObjectMgr(); stelObjectMgr->init(); getModuleMgr().registerModule(stelObjectMgr); localeMgr->init(); // Init the solar system first SolarSystem* ssystem = new SolarSystem(); ssystem->init(); getModuleMgr().registerModule(ssystem); // Load hipparcos stars & names StarMgr* hip_stars = new StarMgr(); hip_stars->init(); getModuleMgr().registerModule(hip_stars); core->init(); // Init nebulas NebulaMgr* nebulas = new NebulaMgr(); nebulas->init(); getModuleMgr().registerModule(nebulas); // Init milky way MilkyWay* milky_way = new MilkyWay(); milky_way->init(); getModuleMgr().registerModule(milky_way); // Init zodiacal light ZodiacalLight* zodiacal_light = new ZodiacalLight(); zodiacal_light->init(); getModuleMgr().registerModule(zodiacal_light); // Init sky image manager skyImageMgr = new StelSkyLayerMgr(); skyImageMgr->init(); getModuleMgr().registerModule(skyImageMgr); // Init audio manager audioMgr = new StelAudioMgr(); // Init video manager videoMgr = new StelVideoMgr(); videoMgr->init(); getModuleMgr().registerModule(videoMgr); // Constellations ConstellationMgr* asterisms = new ConstellationMgr(hip_stars); asterisms->init(); getModuleMgr().registerModule(asterisms); // Landscape, atmosphere & cardinal points section LandscapeMgr* landscape = new LandscapeMgr(); landscape->init(); getModuleMgr().registerModule(landscape); GridLinesMgr* gridLines = new GridLinesMgr(); gridLines->init(); getModuleMgr().registerModule(gridLines); // Sporadic Meteors SporadicMeteorMgr* meteors = new SporadicMeteorMgr(10, 72); meteors->init(); getModuleMgr().registerModule(meteors); // User labels LabelMgr* skyLabels = new LabelMgr(); skyLabels->init(); getModuleMgr().registerModule(skyLabels); skyCultureMgr->init(); //Create the script manager here, maybe some modules/plugins may want to connect to it //It has to be initialized later after all modules have been loaded by calling initScriptMgr #ifndef DISABLE_SCRIPTING scriptAPIProxy = new StelMainScriptAPIProxy(this); scriptMgr = new StelScriptMgr(this); #endif // Initialisation of the color scheme emit colorSchemeChanged("color"); setVisionModeNight(confSettings->value("viewing/flag_night").toBool()); // Enable viewport effect at startup if he set setViewportEffect(confSettings->value("video/viewport_effect", "none").toString()); // Proxy Initialisation setupNetworkProxy(); updateI18n(); // Init actions. actionMgr->addAction("actionShow_Night_Mode", N_("Display Options"), N_("Night mode"), this, "nightMode", "Ctrl+N"); setFlagShowDecimalDegrees(confSettings->value("gui/flag_show_decimal_degrees", false).toBool()); setFlagSouthAzimuthUsage(confSettings->value("gui/flag_use_azimuth_from_south", false).toBool()); // Animation animationScale = confSettings->value("gui/pointer_animation_speed", 1.f).toFloat(); initialized = true; }