diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,6 +126,54 @@ add_definitions(-DQT_NO_URL_CAST_FROM_STRING) +function(JoinListAsString VALUES GLUE OUTPUT) + string(REPLACE ";" "${GLUE}" _TMP_STR "${VALUES}") + set(${OUTPUT} "${_TMP_STR}" PARENT_SCOPE) +endfunction() + +set(IMAGE_MIME_TYPES_LIST + image/gif + image/jpeg + image/png + image/bmp + image/x-eps + image/x-icns + image/x-ico + image/x-portable-bitmap + image/x-portable-graymap + image/x-portable-pixmap + image/x-xbitmap + image/x-xpixmap + image/tiff + image/x-psd + image/x-webp + image/webp + image/x-tga +) +if (KF5KDcraw_FOUND) + list(APPEND IMAGE_MIME_TYPES_LIST + image/x-kde-raw + image/x-canon-cr2 + image/x-canon-crw + image/x-kodak-dcr + image/x-adobe-dng + image/x-kodak-k25 + image/x-kodak-kdc + image/x-minolta-mrw + image/x-nikon-nef + image/x-olympus-orf + image/x-pentax-pef + image/x-fuji-raf + image/x-panasonic-rw + image/x-sony-sr2 + image/x-sony-srf + image/x-sigma-x3f + image/x-sony-arw + image/x-panasonic-rw2 + ) +endif() +JoinListAsString("${IMAGE_MIME_TYPES_LIST}" ";" IMAGE_MIME_TYPES) + ## dirs to build add_subdirectory(lib) add_subdirectory(app) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -108,10 +108,6 @@ set_target_properties(gwenview PROPERTIES MACOSX_BUNDLE_COPYRIGHT "2002-2016 The Gwenview Authors") endif (APPLE) -if (KF5KDcraw_FOUND) - set(RAW_MIME_TYPES "image/x-kde-raw;image/x-canon-cr2;image/x-canon-crw;image/x-kodak-dcr;image/x-adobe-dng;image/x-kodak-k25;image/x-kodak-kdc;image/x-minolta-mrw;image/x-nikon-nef;image/x-olympus-orf;image/x-pentax-pef;image/x-fuji-raf;image/x-panasonic-rw;image/x-sony-sr2;image/x-sony-srf;image/x-sigma-x3f;image/x-sony-arw;image/x-panasonic-rw2;") -endif() - configure_file(org.kde.gwenview.desktop.cmake ${CMAKE_CURRENT_BINARY_DIR}/org.kde.gwenview.desktop) install(TARGETS gwenview diff --git a/app/org.kde.gwenview.desktop.cmake b/app/org.kde.gwenview.desktop.cmake --- a/app/org.kde.gwenview.desktop.cmake +++ b/app/org.kde.gwenview.desktop.cmake @@ -184,7 +184,7 @@ Icon=gwenview Type=Application Categories=Qt;KDE;Graphics;Viewer;Photography; -MimeType=inode/directory;image/gif;image/jpeg;image/png;image/bmp;image/x-eps;image/x-icns;image/x-ico;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-xbitmap;image/x-xpixmap;image/tiff;image/x-psd;image/x-webp;image/webp;image/x-tga;${RAW_MIME_TYPES} +MimeType=inode/directory;${IMAGE_MIME_TYPES}; X-DocPath=gwenview/index.html # InitialPreference should be greater than Okular so that Gwenview is the # primary application associated with images, but less than Konqueror or Dolphin diff --git a/part/CMakeLists.txt b/part/CMakeLists.txt --- a/part/CMakeLists.txt +++ b/part/CMakeLists.txt @@ -14,7 +14,9 @@ target_link_libraries(gvpart KF5::Parts gwenviewlib) +configure_file(gvpart.desktop.cmake ${CMAKE_CURRENT_BINARY_DIR}/gvpart.desktop) + install(TARGETS gvpart DESTINATION ${KDE_INSTALL_PLUGINDIR}) -install(FILES gvpart.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/gvpart.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) install(FILES gvpart.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/gvpart) diff --git a/part/gvpart.desktop b/part/gvpart.desktop.cmake rename from part/gvpart.desktop rename to part/gvpart.desktop.cmake --- a/part/gvpart.desktop +++ b/part/gvpart.desktop.cmake @@ -64,7 +64,7 @@ Name[x-test]=xxGwenview Image Viewerxx Name[zh_CN]=Gwenview 图像查看器 Name[zh_TW]=Gwenview 影像檢視程式 -MimeType=image/gif;image/jpeg;image/jp2;image/png;image/bmp;image/x-eps;image/x-icns;image/x-ico;image/x-portable-bitmap;image/x-portable-pixmap;image/x-xbitmap;image/x-xpixmap;image/x-webp;image/webp;image/x-tga; +MimeType=${IMAGE_MIME_TYPES}; X-KDE-ServiceTypes=KParts/ReadOnlyPart X-KDE-Library=gvpart InitialPreference=12