void CameraController::slotUploadFailed(const QString& folder, const QString& file, const QString& src) { Q_UNUSED(folder); Q_UNUSED(src); sendLogMsg(i18n("Failed to upload <filename>%1</filename>", file), DHistoryView::ErrorEntry); if (!d->canceled) { if (queueIsEmpty()) { KMessageBox::error(d->parent, i18n("Failed to upload file <filename>%1</filename>.", file)); } else { const QString msg = i18n("Failed to upload file <filename>%1</filename>. Do you want to continue?", file); int result = KMessageBox::warningContinueCancel(d->parent, msg); if (result != KMessageBox::Continue) { slotCancel(); } } } }
void cocosPlayerNetworkLog(const char * pszFormat, ...) { printf("Cocos2d: "); char szBuf[kMaxLogLen+1] = {0}; va_list ap; va_start(ap, pszFormat); vsnprintf(szBuf, kMaxLogLen, pszFormat, ap); va_end(ap); printf("%s", szBuf); printf("\n"); sendLogMsg(szBuf); }
void Robot::getMove(const std_msgs::UInt8 & move_number) { if (this->getNewturnFlag()) { this->setAttackToLaunch(move_number.data); this->setNewturnFlag(false); std_msgs::UInt8 speed_msg; speed_msg.data = this->getSpeed() + 100 * (int) getAttack(getAttackToLaunch())->getPriority(); myspeed_pub.publish(speed_msg); sendLogMsg("ho scelto il mio attack e comunicata la mia velocita... ti distruggo!",0); } }
void CameraController::slotLockFailed(const QString& folder, const QString& file) { emit signalLocked(folder, file, false); sendLogMsg(i18n("Failed to lock <filename>%1</filename>", file), DHistoryView::ErrorEntry, folder, file); if (!d->canceled) { if (queueIsEmpty()) { KMessageBox::error(d->parent, i18n("Failed to toggle lock file <filename>%1</filename>.", file)); } else { const QString msg = i18n("Failed to toggle lock file <filename>%1</filename>. Do you want to continue?", file); int result = KMessageBox::warningContinueCancel(d->parent, msg); if (result != KMessageBox::Continue) { slotCancel(); } } } }
void CameraController::slotCheckRename(const QString& folder, const QString& file, const QString& destination, const QString& temp, const QString& script) { // this is the direct continuation of executeCommand, case CameraCommand::cam_download bool skip = false; bool cancel = false; bool overwrite = d->overwriteAll; QString dest = destination; // Check if dest file already exist, unless we overwrite anyway QFileInfo info(dest); if (!d->overwriteAll) { while (info.exists()) { if (d->skipAll) { skip = true; break; } QPointer<KIO::RenameDialog> dlg = new KIO::RenameDialog(d->parent, i18nc("@title:window", "Rename File"), QString(folder + QLatin1String("/") + file), dest, KIO::RenameDialog_Mode(KIO::M_MULTI | KIO::M_OVERWRITE | KIO::M_SKIP)); int result = dlg->exec(); dest = dlg->newDestUrl().toLocalFile(); info = QFileInfo(dest); delete dlg; switch (result) { case KIO::R_CANCEL: { cancel = true; break; } case KIO::R_SKIP: { skip = true; break; } case KIO::R_AUTO_SKIP: { d->skipAll = true; skip = true; break; } case KIO::R_OVERWRITE: { overwrite = true; break; } case KIO::R_OVERWRITE_ALL: { d->overwriteAll = true; overwrite = true; break; } default: break; } if (cancel || skip || overwrite) { break; } } } if (cancel) { unlink(QFile::encodeName(temp)); slotCancel(); emit signalSkipped(folder, file); return; } else if (skip) { unlink(QFile::encodeName(temp)); sendLogMsg(i18n("Skipped file <filename>%1</filename>", file), DHistoryView::WarningEntry, folder, file); emit signalSkipped(folder, file); return; } kDebug() << "Checking whether (" << temp << ") has a sidecar"; // move the file to the destination file if (DMetadata::hasSidecar(temp)) { kDebug() << " Yes, renaming it to " << dest; if (KDE::rename(DMetadata::sidecarPath(temp), DMetadata::sidecarPath(dest)) != 0) { sendLogMsg(i18n("Failed to save sidecar file for <filename>%1</filename>", file), DHistoryView::ErrorEntry, folder, file); } } if (KDE::rename(temp, dest) != 0) { kDebug() << "Renaming " << temp << " to " << dest << " failed"; // rename failed. delete the temp file unlink(QFile::encodeName(temp)); emit signalDownloaded(folder, file, CamItemInfo::DownloadFailed); sendLogMsg(i18n("Failed to download <filename>%1</filename>", file), DHistoryView::ErrorEntry, folder, file); } else { kDebug() << "Rename done, emiting downloaded signals:" << file << " info.filename: " << info.fileName(); // TODO why two signals?? emit signalDownloaded(folder, file, CamItemInfo::DownloadedYes); emit signalDownloadComplete(folder, file, info.path(), info.fileName()); // Run script if (!script.isEmpty()) { kDebug() << "Got a script, processing: " << script; KProcess process; process.setOutputChannelMode(KProcess::SeparateChannels); QString s; if (script.indexOf('%') > -1) { QHash<QString, QString> map; map.insert("file", dest); map.insert("filename", info.fileName()); map.insert("path", info.path()); map.insert("orgfilename", file); map.insert("orgpath", folder); s = KMacroExpander::expandMacros(script, map); } else { s = script + " \"" + dest + "\""; } process.setShellCommand(s); kDebug() << "Running: " << s; int ret = process.execute(); if (ret != 0) { sendLogMsg(i18n("Failed to run script for <filename>%1</filename>", file), DHistoryView::ErrorEntry, folder, file); } kDebug() << "stdout" << process.readAllStandardOutput(); kDebug() << "stderr" << process.readAllStandardError(); } } }
void CameraController::executeCommand(CameraCommand* const cmd) { if (!cmd) { return; } switch (cmd->action) { case (CameraCommand::cam_connect): { sendLogMsg(i18n("Connecting to camera...")); bool result = d->camera->doConnect(); emit signalConnected(result); if (result) { sendLogMsg(i18n("Connection established.")); } else { sendLogMsg(i18n("Connection failed.")); } break; } case (CameraCommand::cam_cameraInformation): { QString summary, manual, about; d->camera->cameraSummary(summary); d->camera->cameraManual(manual); d->camera->cameraAbout(about); emit signalCameraInformation(summary, manual, about); break; } case (CameraCommand::cam_freeSpace): { unsigned long kBSize = 0; unsigned long kBAvail = 0; if (!d->camera->getFreeSpace(kBSize, kBAvail)) { sendLogMsg(i18n("Failed to get free space from camera"), DHistoryView::ErrorEntry); } emit signalFreeSpace(kBSize, kBAvail); break; } case (CameraCommand::cam_preview): { QImage preview; if (!d->camera->getPreview(preview)) { sendLogMsg(i18n("Failed to get preview from camera"), DHistoryView::ErrorEntry); } emit signalPreview(preview); break; } case (CameraCommand::cam_capture): { CamItemInfo itemInfo; if (!d->camera->capture(itemInfo)) { sendLogMsg(i18n("Failed to process capture from camera"), DHistoryView::ErrorEntry); } emit signalUploaded(itemInfo); break; } case (CameraCommand::cam_listfolders): { QString folder = cmd->map["folder"].toString(); if (!d->camera->getFolders(folder)) { sendLogMsg(i18n("Failed to list folder <filename>%1</filename>", folder), DHistoryView::ErrorEntry); } break; } case (CameraCommand::cam_listfiles): { QString folder = cmd->map["folder"].toString(); bool useMetadata = cmd->map["useMetadata"].toBool(); CamItemInfoList itemsList; if (!d->camera->getItemsInfoList(folder, useMetadata, itemsList)) { sendLogMsg(i18n("Failed to list files in <filename>%1</filename>", folder), DHistoryView::ErrorEntry); } // TODO would it be okay to pass this to the ImportImageModel and let it filter it for us? for (CamItemInfoList::iterator it = itemsList.begin() ; it != itemsList.end() ; ) { CamItemInfo &info = (*it); if (info.mime.isEmpty()) { it = itemsList.erase(it); continue; } ++it; } emit signalFileList(itemsList); break; } case (CameraCommand::cam_thumbsinfo): { QList<QVariant> list = cmd->map["list"].toList(); int thumbSize = cmd->map["thumbSize"].toInt(); for (QList<QVariant>::const_iterator it = list.constBegin(); it != list.constEnd(); ++it) { if (d->canceled) { break; } QString folder = (*it).toStringList().at(0); QString file = (*it).toStringList().at(1); CamItemInfo info; info.folder = folder; info.name = file; QImage thumbnail; if (d->camera->getThumbnail(folder, file, thumbnail)) { thumbnail = thumbnail.scaled(thumbSize, thumbSize, Qt::KeepAspectRatio); emit signalThumbInfo(folder, file, info, thumbnail); } else { sendLogMsg(i18n("Failed to get thumbnail for <filename>%1</filename>", file), DHistoryView::ErrorEntry, folder, file); emit signalThumbInfoFailed(folder, file, info); } } break; } case (CameraCommand::cam_metadata): { QString folder = cmd->map["folder"].toString(); QString file = cmd->map["file"].toString(); DMetadata meta; if (!d->camera->getMetadata(folder, file, meta)) sendLogMsg(i18n("Failed to get Metadata for <filename>%1</filename>", file), DHistoryView::ErrorEntry, folder, file); emit signalMetadata(folder, file, meta); break; } case (CameraCommand::cam_download): { QString folder = cmd->map["folder"].toString(); QString file = cmd->map["file"].toString(); QString dest = cmd->map["dest"].toString(); bool fixDateTime = cmd->map["fixDateTime"].toBool(); QDateTime newDateTime = cmd->map["newDateTime"].toDateTime(); QString templateTitle = cmd->map["template"].toString(); bool convertJpeg = cmd->map["convertJpeg"].toBool(); QString losslessFormat = cmd->map["losslessFormat"].toString(); QString script = cmd->map["script"].toString(); int pickLabel = cmd->map["pickLabel"].toInt(); int colorLabel = cmd->map["colorLabel"].toInt(); int rating = cmd->map["rating"].toInt(); // download to a temp file emit signalDownloaded(folder, file, CamItemInfo::DownloadStarted); KUrl tempURL(dest); tempURL = tempURL.upUrl(); tempURL.addPath(QString(".digikam-camera-tmp1-%1").arg(getpid()).append(file)); kDebug() << "Downloading: " << file << " using (" << tempURL << ")"; QString temp = tempURL.toLocalFile(); bool result = d->camera->downloadItem(folder, file, tempURL.toLocalFile()); if (!result) { unlink(QFile::encodeName(tempURL.toLocalFile())); sendLogMsg(i18n("Failed to download <filename>%1</filename>", file), DHistoryView::ErrorEntry, folder, file); emit signalDownloaded(folder, file, CamItemInfo::DownloadFailed); break; } else if (JPEGUtils::isJpegImage(tempURL.toLocalFile())) { // Possible modification operations. Only apply it to JPEG for the moment. kDebug() << "Set metadata from: " << file << " using (" << tempURL << ")"; DMetadata metadata(tempURL.toLocalFile()); metadata.setExifTagString("Exif.Image.DocumentName", QFileInfo(dest).fileName()); if (fixDateTime) { metadata.setImageDateTime(newDateTime, true); } //TODO: Set image tags using DMetadata. if (colorLabel > NoColorLabel) { metadata.setImageColorLabel(colorLabel); } if (pickLabel > NoPickLabel) { metadata.setImagePickLabel(pickLabel); } if (rating > RatingMin) { metadata.setImageRating(rating); } if (!templateTitle.isNull() && !templateTitle.isEmpty()) { TemplateManager* tm = TemplateManager::defaultManager(); kDebug() << "Metadata template title : " << templateTitle; if (tm && templateTitle == Template::removeTemplateTitle()) { metadata.removeMetadataTemplate(); } else if (tm) { metadata.removeMetadataTemplate(); metadata.setMetadataTemplate(tm->findByTitle(templateTitle)); } } metadata.applyChanges(); // Convert JPEG file to lossless format if wanted, // and move converted image to destination. if (convertJpeg) { KUrl tempURL2(dest); tempURL2 = tempURL2.upUrl(); tempURL2.addPath(QString(".digikam-camera-tmp2-%1").arg(getpid()).append(file)); temp = tempURL2.toLocalFile(); // when convertnig a file, we need to set the new format extension.. // The new extension is already set in importui.cpp. kDebug() << "Convert to LossLess: " << file << " using (" << tempURL << ") destination: " << dest; if (!JPEGUtils::jpegConvert(tempURL.toLocalFile(), tempURL2.toLocalFile(), file, losslessFormat)) { kDebug() << " Convert failed?! eh"; // convert failed. delete the temp file unlink(QFile::encodeName(tempURL.toLocalFile())); unlink(QFile::encodeName(tempURL2.toLocalFile())); sendLogMsg(i18n("Failed to convert file <filename>%1</filename> to JPEG", file), DHistoryView::ErrorEntry, folder, file); } else { kDebug() << " Done, removing the temp file: " << tempURL; // Else remove only the first temp file. unlink(QFile::encodeName(tempURL.toLocalFile())); } } } // Now we need to move from temp file to destination file. // This possibly involves UI operation, do it from main thread emit signalInternalCheckRename(folder, file, dest, temp, script); break; } case (CameraCommand::cam_upload): { QString folder = cmd->map["destFolder"].toString(); // We will using the same source file name to create the dest file // name in camera. QString file = cmd->map["destFile"].toString(); // The source file path to download in camera. QString src = cmd->map["srcFilePath"].toString(); CamItemInfo itemsInfo; bool result = d->camera->uploadItem(folder, file, src, itemsInfo); if (result) { emit signalUploaded(itemsInfo); } else { emit signalInternalUploadFailed(folder, file, src); } break; } case (CameraCommand::cam_delete): { QString folder = cmd->map["folder"].toString(); QString file = cmd->map["file"].toString(); bool result = d->camera->deleteItem(folder, file); if (result) { emit signalDeleted(folder, file, true); } else { emit signalInternalDeleteFailed(folder, file); } break; } case (CameraCommand::cam_lock): { QString folder = cmd->map["folder"].toString(); QString file = cmd->map["file"].toString(); bool lock = cmd->map["lock"].toBool(); bool result = d->camera->setLockItem(folder, file, lock); if (result) { emit signalLocked(folder, file, true); } else { emit signalInternalLockFailed(folder, file); } break; } default: { kWarning() << " unknown action specified"; break; } } }