Changeset View
Changeset View
Standalone View
Standalone View
libs/ui/KisResourceBundle.cpp
Show First 20 Lines • Show All 377 Lines • ▼ Show 20 Line(s) | 377 | if (res) { | |||
---|---|---|---|---|---|
378 | warnKrita << "Could not save resource" << resType << res->name(); | 378 | warnKrita << "Could not save resource" << resType << res->name(); | ||
379 | } | 379 | } | ||
380 | else { | 380 | else { | ||
381 | warnKrita << "could not find resource for" << QFileInfo(ref.resourcePath).fileName(); | 381 | warnKrita << "could not find resource for" << QFileInfo(ref.resourcePath).fileName(); | ||
382 | } | 382 | } | ||
383 | } | 383 | } | ||
384 | } | 384 | } | ||
385 | } | 385 | } | ||
386 | else if (resType == "ko_gamutmasks") { | ||||
387 | KoResourceServer<KoGamutMask>* gamutMaskServer = KoResourceServerProvider::instance()->gamutMaskServer(); | ||||
388 | Q_FOREACH (const KisResourceBundleManifest::ResourceReference &ref, m_manifest.files(resType)) { | ||||
389 | KoResource *res = gamutMaskServer->resourceByMD5(ref.md5sum); | ||||
390 | if (!res) res = gamutMaskServer->resourceByFilename(QFileInfo(ref.resourcePath).fileName()); | ||||
391 | if (!saveResourceToStore(res, store.data(), "gamutmasks")) { | ||||
392 | if (res) { | ||||
393 | warnKrita << "Could not save resource" << resType << res->name(); | ||||
394 | } | ||||
395 | else { | ||||
396 | warnKrita << "could not find resource for" << QFileInfo(ref.resourcePath).fileName(); | ||||
397 | } | ||||
398 | } | ||||
399 | } | ||||
400 | } | ||||
386 | } | 401 | } | ||
387 | 402 | | |||
388 | if (!m_thumbnail.isNull()) { | 403 | if (!m_thumbnail.isNull()) { | ||
389 | QByteArray byteArray; | 404 | QByteArray byteArray; | ||
390 | QBuffer buffer(&byteArray); | 405 | QBuffer buffer(&byteArray); | ||
391 | m_thumbnail.save(&buffer, "PNG"); | 406 | m_thumbnail.save(&buffer, "PNG"); | ||
392 | if (!store->open("preview.png")) warnKrita << "Could not open preview.png"; | 407 | if (!store->open("preview.png")) warnKrita << "Could not open preview.png"; | ||
393 | if (store->write(byteArray) != buffer.size()) warnKrita << "Could not write preview.png"; | 408 | if (store->write(byteArray) != buffer.size()) warnKrita << "Could not write preview.png"; | ||
▲ Show 20 Lines • Show All 301 Lines • ▼ Show 20 Line(s) | 698 | if (!res2) {//if it doesn't exist... | |||
695 | //paintoppresetServer->addTag(res.data(), name()); | 710 | //paintoppresetServer->addTag(res.data(), name()); | ||
696 | } | 711 | } | ||
697 | else { | 712 | else { | ||
698 | //warnKrita << "Didn't install" << res->name()<<"It already exists on the server"; | 713 | //warnKrita << "Didn't install" << res->name()<<"It already exists on the server"; | ||
699 | } | 714 | } | ||
700 | 715 | | |||
701 | } | 716 | } | ||
702 | } | 717 | } | ||
718 | else if (resType == "gamutmasks") { | ||||
719 | KoResourceServer<KoGamutMask>* gamutMaskServer = KoResourceServerProvider::instance()->gamutMaskServer(); | ||||
720 | Q_FOREACH (const KisResourceBundleManifest::ResourceReference &ref, m_manifest.files(resType)) { | ||||
721 | | ||||
722 | if (resourceStore->isOpen()) resourceStore->close(); | ||||
723 | | ||||
724 | dbgResources << "\tInstalling" << ref.resourcePath; | ||||
725 | KoGamutMask *res = gamutMaskServer->createResource(QString("bundle://%1:%2").arg(filename()).arg(ref.resourcePath)); | ||||
726 | | ||||
727 | if (!res) { | ||||
728 | warnKrita << "Could not create resource for" << ref.resourcePath; | ||||
729 | continue; | ||||
730 | } | ||||
731 | if (!resourceStore->open(ref.resourcePath)) { | ||||
732 | warnKrita << "Failed to open" << ref.resourcePath << "from bundle" << filename(); | ||||
733 | continue; | ||||
734 | } | ||||
735 | if (!res->loadFromDevice(resourceStore->device())) { | ||||
736 | warnKrita << "Failed to load" << ref.resourcePath << "from bundle" << filename(); | ||||
737 | continue; | ||||
738 | } | ||||
739 | dbgResources << "\t\tresource:" << res->name(); | ||||
740 | | ||||
741 | //find the resource on the server | ||||
742 | KoGamutMask *res2 = gamutMaskServer->resourceByName(res->name()); | ||||
743 | if (!res2) {//if it doesn't exist... | ||||
744 | gamutMaskServer->addResource(res, false);//add it! | ||||
745 | | ||||
746 | if (!m_gamutMasksMd5Installed.contains(res->md5())) { | ||||
747 | m_gamutMasksMd5Installed.append(res->md5()); | ||||
748 | } | ||||
749 | if (ref.md5sum!=res->md5()) { | ||||
750 | md5Mismatch.append(res->name()); | ||||
751 | } | ||||
752 | | ||||
753 | Q_FOREACH (const QString &tag, ref.tagList) { | ||||
754 | gamutMaskServer->addTag(res, tag); | ||||
755 | } | ||||
756 | //gamutMaskServer->addTag(res, name()); | ||||
757 | } | ||||
758 | else { | ||||
759 | //warnKrita << "Didn't install" << res->name()<<"It already exists on the server"; | ||||
760 | } | ||||
761 | } | ||||
762 | } | ||||
703 | } | 763 | } | ||
704 | m_installed = true; | 764 | m_installed = true; | ||
705 | if(!md5Mismatch.isEmpty()){ | 765 | if(!md5Mismatch.isEmpty()){ | ||
706 | QString message = i18n("The following resources had mismatching MD5 sums. They may have gotten corrupted, for example, during download."); | 766 | QString message = i18n("The following resources had mismatching MD5 sums. They may have gotten corrupted, for example, during download."); | ||
707 | QMessageBox bundleFeedback; | 767 | QMessageBox bundleFeedback; | ||
708 | bundleFeedback.setIcon(QMessageBox::Warning); | 768 | bundleFeedback.setIcon(QMessageBox::Warning); | ||
709 | Q_FOREACH (QString name, md5Mismatch) { | 769 | Q_FOREACH (QString name, md5Mismatch) { | ||
710 | message.append("\n"); | 770 | message.append("\n"); | ||
▲ Show 20 Lines • Show All 61 Lines • ▼ Show 20 Line(s) | 780 | { | |||
772 | //Q_FOREACH (const KisResourceBundleManifest::ResourceReference &ref, m_manifest.files("paintoppresets")) { | 832 | //Q_FOREACH (const KisResourceBundleManifest::ResourceReference &ref, m_manifest.files("paintoppresets")) { | ||
773 | Q_FOREACH (const QByteArray md5, m_presetsMd5Installed) { | 833 | Q_FOREACH (const QByteArray md5, m_presetsMd5Installed) { | ||
774 | KisPaintOpPresetSP res = paintoppresetServer->resourceByMD5(md5); | 834 | KisPaintOpPresetSP res = paintoppresetServer->resourceByMD5(md5); | ||
775 | if (res) { | 835 | if (res) { | ||
776 | paintoppresetServer->removeResourceFromServer(res); | 836 | paintoppresetServer->removeResourceFromServer(res); | ||
777 | } | 837 | } | ||
778 | } | 838 | } | ||
779 | 839 | | |||
840 | KoResourceServer<KoGamutMask>* gamutMaskServer = KoResourceServerProvider::instance()->gamutMaskServer(); | ||||
841 | //Q_FOREACH (const KisResourceBundleManifest::ResourceReference &ref, m_manifest.files("gamutmasks")) { | ||||
842 | Q_FOREACH (const QByteArray md5, m_gamutMasksMd5Installed) { | ||||
843 | KoGamutMask *res = gamutMaskServer->resourceByMD5(md5); | ||||
844 | if (res) { | ||||
845 | gamutMaskServer->removeResourceFromServer(res); | ||||
846 | } | ||||
847 | } | ||||
848 | | ||||
780 | Q_FOREACH(const QString &tag, tags) { | 849 | Q_FOREACH(const QString &tag, tags) { | ||
781 | paintoppresetServer->tagCategoryRemoved(tag); | 850 | paintoppresetServer->tagCategoryRemoved(tag); | ||
782 | workspaceServer->tagCategoryRemoved(tag); | 851 | workspaceServer->tagCategoryRemoved(tag); | ||
783 | paletteServer->tagCategoryRemoved(tag); | 852 | paletteServer->tagCategoryRemoved(tag); | ||
784 | brushServer->tagCategoryRemoved(tag); | 853 | brushServer->tagCategoryRemoved(tag); | ||
785 | patternServer->tagCategoryRemoved(tag); | 854 | patternServer->tagCategoryRemoved(tag); | ||
786 | gradientServer->tagCategoryRemoved(tag); | 855 | gradientServer->tagCategoryRemoved(tag); | ||
856 | gamutMaskServer->tagCategoryRemoved(tag); | ||||
787 | } | 857 | } | ||
788 | 858 | | |||
789 | 859 | | |||
790 | return true; | 860 | return true; | ||
791 | } | 861 | } | ||
792 | 862 | | |||
793 | void KisResourceBundle::addMeta(const QString &type, const QString &value) | 863 | void KisResourceBundle::addMeta(const QString &type, const QString &value) | ||
794 | { | 864 | { | ||
▲ Show 20 Lines • Show All 63 Lines • ▼ Show 20 Line(s) | 926 | else if (resType == "workspaces") { | |||
858 | KoResource *res = workspaceServer->resourceByMD5(ref.md5sum); | 928 | KoResource *res = workspaceServer->resourceByMD5(ref.md5sum); | ||
859 | if (res) ret << res; | 929 | if (res) ret << res; | ||
860 | } | 930 | } | ||
861 | else if (resType == "paintoppresets") { | 931 | else if (resType == "paintoppresets") { | ||
862 | KisPaintOpPresetResourceServer* paintoppresetServer = KisResourceServerProvider::instance()->paintOpPresetServer(); | 932 | KisPaintOpPresetResourceServer* paintoppresetServer = KisResourceServerProvider::instance()->paintOpPresetServer(); | ||
863 | KisPaintOpPresetSP res = paintoppresetServer->resourceByMD5(ref.md5sum); | 933 | KisPaintOpPresetSP res = paintoppresetServer->resourceByMD5(ref.md5sum); | ||
864 | if (res) ret << res.data(); | 934 | if (res) ret << res.data(); | ||
865 | } | 935 | } | ||
936 | else if (resType == "gamutmasks") { | ||||
937 | KoResourceServer<KoGamutMask>* gamutMaskServer = KoResourceServerProvider::instance()->gamutMaskServer(); | ||||
938 | KoResource *res = gamutMaskServer->resourceByMD5(ref.md5sum); | ||||
939 | if (res) ret << res; | ||||
940 | } | ||||
866 | } | 941 | } | ||
867 | return ret; | 942 | return ret; | ||
868 | } | 943 | } | ||
869 | 944 | | |||
870 | void KisResourceBundle::setThumbnail(QString filename) | 945 | void KisResourceBundle::setThumbnail(QString filename) | ||
871 | { | 946 | { | ||
872 | if (QFileInfo(filename).exists()) { | 947 | if (QFileInfo(filename).exists()) { | ||
873 | m_thumbnail = QImage(filename); | 948 | m_thumbnail = QImage(filename); | ||
▲ Show 20 Lines • Show All 145 Lines • Show Last 20 Lines |