Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 添加批量打印功能 #167

Merged
merged 2 commits into from
May 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions .tx/config
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,22 @@ host = https://www.transifex.com
minimum_perc = 80
mode = developer

[deepin-image-viewer.deepin-image-viewer]
[o:linuxdeepin:p:deepin-image-viewer:r:deepin-image-viewer]
file_filter = src/translations/deepin-image-viewer_<lang>.ts
source_file = src/translations/deepin-image-viewer.ts
source_lang = en
type = QT

[deepin-image-viewer.desktop]
[o:linuxdeepin:p:deepin-image-viewer:r:desktop]
file_filter = src/translations/desktop/desktop_<lang>.ts
source_file = src/translations/desktop/desktop.ts
preTranslate_file = src/deepin-image-viewer.desktop
source_lang = en
type = QT

[deepin-image-viewer.libimage-viewer]
file_filter = libimage-viewer/translations/libimageviewer_<lang>.ts
source_file = libimage-viewer/translations/libimageviewer.ts
[o:linuxdeepin:p:deepin-image-viewer:r:libimage-viewer-context-menu]
file_filter = src/translations/context-menus/deepin-print-pictures_<lang>.ts
source_file = src/translations/context-menus/deepin-print-pictures.ts
preTranslat_file = src/misc/context-menus/deepin-print-pictures.conf
source_lang = en
type = QT
6 changes: 3 additions & 3 deletions debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@ Build-Depends: debhelper (>= 11), cmake, qtbase5-dev, pkg-config,libexif-dev, li
libraw-dev,libfreeimage-dev, libqt5opengl5-dev,
qtmultimedia5-dev, x11proto-xext-dev, libmtdev-dev, libegl1-mesa-dev,
libudev-dev, libfontconfig1-dev, libfreetype6-dev, libglib2.0-dev,
libxrender-dev, libdtkwidget-dev, libdtkwidget5-bin,libdtkcore5-bin,libimageeditor-dev (>= 1.0.22)
libxrender-dev, libdtkwidget-dev, libdtkwidget5-bin,libdtkcore5-bin,libimageeditor-dev (>> 1.0.43-1)
Standards-Version: 3.9.8
Homepage: http://www.deepin.org

Package: deepin-image-viewer
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, libqt5sql5-sqlite, qt5-image-formats-plugins, libimageeditor (>= 1.0.22)
Depends: ${shlibs:Depends}, ${misc:Depends}, libqt5sql5-sqlite, qt5-image-formats-plugins, libimageeditor (>> 1.0.43-1)
Recommends: libqt5libqgtk2, kimageformat-plugins ,deepin-ocr,uos-reporter, deepin-event-log
Conflicts: libxraw (<< 5.9.14)
Replaces: libxraw (<< 5.9.14)
Provides: libxraw (= 5.9.13)
Description: Image Viewer is an image viewing tool with fashion interface and smooth performance.
Deepin Image Viewer is an image viewing tool with fashion interface and smooth performance.


4 changes: 3 additions & 1 deletion src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,8 @@ install(FILES ${PROJECT_SOURCE_DIR}/com.deepin.ImageViewer.service
install(DIRECTORY ${PROJECT_SOURCE_DIR}/translations
DESTINATION ${APPSHAREDIR}
FILES_MATCHING PATTERN "*.qm")

#context-menu conf 文管右键菜单配置文件
install(FILES ${PROJECT_SOURCE_DIR}/misc/context-menus/deepin-print-pictures.conf
DESTINATION /usr/share/applications/context-menus/)


18 changes: 18 additions & 0 deletions src/misc/context-menus/deepin-print-pictures.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[Menu Entry]
Actions=Zero
Version=1.0

[Menu Action Zero]
Exec=/usr/bin/deepin-image-viewer --print %F
MimeType=image/bmp:image/bmp24:image/jpg:image/jpe:image/jpeg:image/jpeg24:image/jng:image/x-panasonic-rw:image/x-jp2-codestream:video/x-mng:image/x-canon-crw:image/x-dds:image/x-olympus-orf:image/x-sigma-x3:image/x-ilbm:image/x-sgi:image/wmf:image/webp:image/vnd.microsoft.icon:image/pcd:image/pcx:image/png:image/tif:image/tiff:image/tiff24:image/dds:image/gif:image/sgi:image/j2k:image/jp2:image/pct:image/wdp:image/arw:image/icb:image/dng:image/vda:image/vst:image/svg:image/ptif:image/mef:image/xbm:image/svg+xml:image/x-minolta-mrw:image/vnd.adobe.photoshop:image/x-xpixmap:image/vnd.wap.wbmp:image/x-photo-cd:image/x-portable-graymap:image/x-xbitmap:image/x-portable-bitmap:image/vnd.zbrush.pcx:image/x-portable-anymap:image/x-tga:image/x-icns:image/x-fuji-raf:image/x-hdr:image/fax-g3:image/x-photo-cd
Name=Print
PosNum=6
Separator=Top
X-DFM-ExcludeMimeTypes=inode/directory:application/x-desktop
X-DFM-MenuTypes=SingleFile:MultiFiles
X-DFM-SupportSchemes=file
Name[bo]=པར་འདེབས།
Name[ug]=بېسىش
Name[zh_CN]=打印
Name[zh_HK]=打印
Name[zh_TW]=打印
89 changes: 86 additions & 3 deletions src/src/application.cpp
Original file line number Diff line number Diff line change
@@ -1,16 +1,99 @@
// SPDX-FileCopyrightText: 2020-2022 UnionTech Software Technology Co., Ltd.
// SPDX-FileCopyrightText: 2020-2024 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later

#include "application.h"

#include <libimageviewer/image-viewer_global.h>
#ifdef IMAGEVIEWER_CLASS_QUICKPRINT
#include <libimageviewer/quickprint.h>
#endif

#include <QCommandLineParser>

Application::Application(int &argc, char **argv)
: DApplication(argc, argv)
{

}

Application::~Application()
{
emit sigQuit();
Q_EMIT sigQuit();
}

/**
@brief 解析命令行参数
*/
void Application::parseCommandLine()
{
QCommandLineParser parser;
QCommandLineOption newWindowOption("new-window");
QCommandLineOption configOption("config", "permission config", "base64 param");
QCommandLineOption printOption("print");

parser.addOption(newWindowOption);
parser.addOption(configOption);
parser.addOption(printOption);

if (!parser.parse(arguments())) {
qWarning() << qPrintable("Parse param error:") << parser.errorText();
}

if (parser.isSet(newWindowOption)) {
cmdWithParam.insert(NewWindow, {});
}

if (parser.isSet(configOption)) {
cmdWithParam.insert(Config, parser.value(configOption));
}

if (parser.isSet(printOption)) {
cmdWithParam.insert(Print, parser.value(printOption));
}

fileList = parser.positionalArguments();
}

/**
@brief 判断是否设置了 \a cmd 指令,若指令存在参数,且 \a param 不为 nullptr , 将写入参数数据
*/
bool Application::isCommandSet(Application::Command cmd, QString *param)
{
if (!cmdWithParam.contains(cmd)) {
return false;
}

if (param) {
*param = cmdWithParam.value(cmd);
}
return true;
}

/**
@brief 返回解析的文件列表
*/
QStringList Application::parseFileList() const

Check warning on line 75 in src/src/application.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

The function 'parseFileList' is never used.
{
return fileList;
}

/**
@brief 触发打印图片操作
*/
int Application::triggerPrintAction()
{
#ifdef IMAGEVIEWER_CLASS_QUICKPRINT
qInfo() << "Trigger print pictures";

// 调用异步打印,打印完成后退出
QuickPrint print;
connect(&print, &QuickPrint::printFinished, this, &Application::quit);
if (!print.showPrintDialogAsync(fileList)) {
return 1;
}

return exec();
#else
return 1;
#endif
}
26 changes: 22 additions & 4 deletions src/src/application.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2020-2022 UnionTech Software Technology Co., Ltd.
// SPDX-FileCopyrightText: 2020-2024 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later

Expand All @@ -16,8 +16,26 @@ class Application : public DApplication
public:
Application(int &argc, char **argv);
~Application();
signals:
void sigQuit();

Q_SIGNAL void sigQuit();

enum Command { // CLI参数类型
None,
NewWindow, // 新窗口
Config, // 权限控制(带有Base64 json参数)
Print, // 快速打印图片
};

void parseCommandLine();
bool isCommandSet(Command cmd, QString *param = nullptr);
QStringList parseFileList() const;

// 触发打印图片操作
int triggerPrintAction();

private:
QMap<Command, QString> cmdWithParam; // 命令-参数映射表
QStringList fileList; // 解析的待处理文件列表
};

#endif // APPLICATION_H
#endif // APPLICATION_H
15 changes: 14 additions & 1 deletion src/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -195,13 +195,26 @@ int main(int argc, char *argv[])

DLogManager::registerConsoleAppender();
DLogManager::registerFileAppender();
qDebug() << "LogFile:" << DLogManager::getlogFilePath();

a.setApplicationVersion("1.0.0");
#ifdef CMAKE_BUILD
//增加版本号
a.setApplicationVersion(VERSION);
#endif

qInfo()
<< QString("%1 start, PID: %2, Version: %3").arg(a.applicationName()).arg(a.applicationPid()).arg(a.applicationVersion());
qDebug() << "LogFile:" << DLogManager::getlogFilePath();

// 在主窗口显示前调用识别是否启用打印窗口
#ifdef IMAGEVIEWER_CLASS_QUICKPRINT
a.parseCommandLine();
if (a.isCommandSet(Application::Print)) {
// 打印后直接退出
return a.triggerPrintAction();
}
#endif

// 构造前关联通知信号,部分信息在构造时通知
connectAuthNotify();

Expand Down
12 changes: 12 additions & 0 deletions src/translations/context-menus/deepin-print-pictures.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
<context>
<name>desktop</name>
<message>
<location filename="Menu Action Zero]Name" line="0" />
<source>Print</source>
<translation type="unfinished" />
</message>
</context>
</TS>
10 changes: 10 additions & 0 deletions src/translations/context-menus/deepin-print-pictures_bo.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="bo">
<context>
<name>desktop</name>
<message>
<location filename="Menu Action Zero]Name" line="0"/>
<source>Print</source>
<translation>པར་འདེབས།</translation>
</message>
</context>
</TS>
10 changes: 10 additions & 0 deletions src/translations/context-menus/deepin-print-pictures_ug.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="ug">
<context>
<name>desktop</name>
<message>
<location filename="Menu Action Zero]Name" line="0"/>
<source>Print</source>
<translation>بېسىش</translation>
</message>
</context>
</TS>
10 changes: 10 additions & 0 deletions src/translations/context-menus/deepin-print-pictures_zh_CN.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="zh_CN">
<context>
<name>desktop</name>
<message>
<location filename="Menu Action Zero]Name" line="0"/>
<source>Print</source>
<translation>打印</translation>
</message>
</context>
</TS>
10 changes: 10 additions & 0 deletions src/translations/context-menus/deepin-print-pictures_zh_HK.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="zh_HK">
<context>
<name>desktop</name>
<message>
<location filename="Menu Action Zero]Name" line="0"/>
<source>Print</source>
<translation>打印</translation>
</message>
</context>
</TS>
10 changes: 10 additions & 0 deletions src/translations/context-menus/deepin-print-pictures_zh_TW.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="zh_TW">
<context>
<name>desktop</name>
<message>
<location filename="Menu Action Zero]Name" line="0"/>
<source>Print</source>
<translation>列印</translation>
</message>
</context>
</TS>
Loading
Loading