From ae202e5e7b6972bf9b40c872ac6b8e6123d522f9 Mon Sep 17 00:00:00 2001 From: Daniel Brunner <0xFEEDC0DE64@gmail.com> Date: Fri, 16 Nov 2018 22:01:13 +0100 Subject: [PATCH] Initial commit --- CMakeLists.txt | 38 ++++++++++++++++++++++++++++++++ exportdialog.cpp | 17 ++++++++++++++ exportdialog.h | 20 +++++++++++++++++ exportdialog.ui | 22 ++++++++++++++++++ exportplugin.cpp | 38 ++++++++++++++++++++++++++++++++ exportplugin.h | 24 ++++++++++++++++++++ exportplugin.json | 0 exportplugin.pro | 22 ++++++++++++++++++ exportplugin_resources.qrc | 5 +++++ images/export-plugin.png | Bin 0 -> 8010 bytes translations/exportplugin_de.ts | 18 +++++++++++++++ translations/exportplugin_en.ts | 18 +++++++++++++++ 12 files changed, 222 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 exportdialog.cpp create mode 100644 exportdialog.h create mode 100644 exportdialog.ui create mode 100644 exportplugin.cpp create mode 100644 exportplugin.h create mode 100644 exportplugin.json create mode 100644 exportplugin.pro create mode 100644 exportplugin_resources.qrc create mode 100755 images/export-plugin.png create mode 100644 translations/exportplugin_de.ts create mode 100644 translations/exportplugin_en.ts diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..54dbaee --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,38 @@ +set(HEADERS + exportdialog.h + exportplugin.h +) + +set(SOURCES + exportdialog.cpp + exportplugin.cpp +) + +set(FORMS + exportdialog.ui +) + +set(RESOURCES + exportplugin_resources.qrc +) + +set(OTHER_FILES + exportplugin.json +) + +set(TRANSLATIONS + translations/exportplugin_en.ts + translations/exportplugin_de.ts +) + +set_source_files_properties(${TRANSLATIONS} PROPERTIES OUTPUT_LOCATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/translations) +QT5_CREATE_TRANSLATION(TRANSLATIONS_C ${TRANSLATIONS} ${HEADERS} ${SOURCES} ${FORMS} OPTIONS -no-obsolete) +#QT5_ADD_TRANSLATION(TRANSLATIONS_C ${TRANSLATIONS}) + +add_library(zeiterfassung-plugins-exportplugin SHARED ${HEADERS} ${SOURCES} ${FORMS} ${RESOURCES} ${OTHER_FILES} ${TRANSLATIONS_C}) + +set_target_properties(zeiterfassung-plugins-exportplugin PROPERTIES OUTPUT_NAME exportplugin PREFIX "") + +target_link_libraries(zeiterfassung-plugins-exportplugin Qt5::Core Qt5::Gui Qt5::Widgets zeiterfassungguilib zeiterfassungnetworklib) + +add_dependencies(zeiterfassung-plugins zeiterfassung-plugins-exportplugin) diff --git a/exportdialog.cpp b/exportdialog.cpp new file mode 100644 index 0000000..70c2315 --- /dev/null +++ b/exportdialog.cpp @@ -0,0 +1,17 @@ +#include "exportdialog.h" +#include "ui_exportdialog.h" + +#include "mainwindow.h" + +ExportDialog::ExportDialog(MainWindow &mainWindow, QWidget *parent) : + ZeiterfassungDialog(parent), + ui(new Ui::ExportDialog), + m_mainWindow(mainWindow) +{ + ui->setupUi(this); +} + +ExportDialog::~ExportDialog() +{ + delete ui; +} diff --git a/exportdialog.h b/exportdialog.h new file mode 100644 index 0000000..07ca957 --- /dev/null +++ b/exportdialog.h @@ -0,0 +1,20 @@ +#pragma once + +#include "zeiterfassungdialog.h" + +namespace Ui { class ExportDialog; } +class MainWindow; + +class ExportDialog : public ZeiterfassungDialog +{ + Q_OBJECT + +public: + explicit ExportDialog(MainWindow &mainWindow, QWidget *parent = Q_NULLPTR); + ~ExportDialog(); + +private: + Ui::ExportDialog *ui; + + MainWindow &m_mainWindow; +}; diff --git a/exportdialog.ui b/exportdialog.ui new file mode 100644 index 0000000..d8ae0b2 --- /dev/null +++ b/exportdialog.ui @@ -0,0 +1,22 @@ + + + ExportDialog + + + + 0 + 0 + 1024 + 480 + + + + Export + + + + + + + + diff --git a/exportplugin.cpp b/exportplugin.cpp new file mode 100644 index 0000000..fa7bc9d --- /dev/null +++ b/exportplugin.cpp @@ -0,0 +1,38 @@ +#include "exportplugin.h" + +#include +#include +#include +#include +#include + +#include "utils/fileutils.h" + +#include "mainwindow.h" + +#include "exportdialog.h" + +ExportPlugin::ExportPlugin(QObject *parent) : + ZeiterfassungPlugin(parent) +{ + qDebug() << "called"; + + if(m_translator.load(QLocale(), QStringLiteral("exportplugin"), QStringLiteral("_"), translationsDir())) + { + if(!QCoreApplication::installTranslator(&m_translator)) + { + qWarning() << "could not install translation exportplugin"; + } + } + else + { + qWarning() << "could not load translation exportplugin"; + } +} + +void ExportPlugin::attachTo(MainWindow &mainWindow) +{ + auto dialog = new ExportDialog(mainWindow); + mainWindow.menuTools()->addAction(QIcon(QStringLiteral(":/zeiterfassung/plugins/exportplugin/images/export-plugin.png")), + tr("Export"), dialog, &QDialog::open); +} diff --git a/exportplugin.h b/exportplugin.h new file mode 100644 index 0000000..f70df24 --- /dev/null +++ b/exportplugin.h @@ -0,0 +1,24 @@ +#pragma once + +#include +#include + +#include "zeiterfassungplugin.h" + +class MainWindow; + +class Q_DECL_EXPORT ExportPlugin : public ZeiterfassungPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "dbsoftware.zeiterfassung.plugin/1.0" FILE "exportplugin.json") + Q_INTERFACES(ZeiterfassungPlugin) + +public: + explicit ExportPlugin(QObject *parent = Q_NULLPTR); + + // ZeiterfassungPlugin interface + void attachTo(MainWindow &mainWindow) Q_DECL_OVERRIDE; + +private: + QTranslator m_translator; +}; diff --git a/exportplugin.json b/exportplugin.json new file mode 100644 index 0000000..e69de29 diff --git a/exportplugin.pro b/exportplugin.pro new file mode 100644 index 0000000..886857b --- /dev/null +++ b/exportplugin.pro @@ -0,0 +1,22 @@ +QT += core network gui widgets + +DBLIBS += dbcore zeiterfassungcore zeiterfassunggui zeiterfassungnetwork + +TARGET = exportplugin + +HEADERS += exportdialog.h \ + exportplugin.h + +SOURCES += exportdialog.cpp \ + exportplugin.cpp + +FORMS += exportdialog.ui + +RESOURCES += exportplugin_resources.qrc + +TRANSLATIONS += translations/exportplugin_en.ts \ + translations/exportplugin_de.ts + +OTHER_FILES += exportplugin.json + +include(../plugin.pri) diff --git a/exportplugin_resources.qrc b/exportplugin_resources.qrc new file mode 100644 index 0000000..3afdec1 --- /dev/null +++ b/exportplugin_resources.qrc @@ -0,0 +1,5 @@ + + + images/export-plugin.png + + diff --git a/images/export-plugin.png b/images/export-plugin.png new file mode 100755 index 0000000000000000000000000000000000000000..3d35ba1c4cb5e5754f0be5fdd91ed956b2dbb1fa GIT binary patch literal 8010 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

+B9)S~J2r6yDx@eRtQtTi^EY+4gO53wzVy zONs()<~AX0#x2YTST1nSSjfkzd<6^DkF53SMW z@$XH0*NgwZy7l*r6aVLaeP0svqgBFh)!_?A`5hD*C-WF9=V)D8AmF6p)WOnVc#Q3< zlX{K7yXN+FlNa!>Tkd6d?9crDlUD56oBpT$@2+&OoZd_n^G~qmbRJ&;J=>JQFgH{JgoBfq_A_#5JNMxhOTUBvm&h zu_Tqj$iTo-*U(7Uz#_!Z$jZdr%E&<1z}(8f;6?hnpD+y|l~xd43`Pcq2D%1@x`u`! z1{PMP237{<5DkhN@}L=Gunk}hx%nxXX_dG&1e7lS!@$5`3UZQ9W^!s?aVkSbNlAf~ zzCPHl%(B$v{M_99ykfolqICTnh>~J`ANK$seIq?Xed~i;Bw$X2SVq84+ppa?%fP@O z2C^|YzqBYhmBG2FvbZEMMIfC_p+P<{XQh^<7A5AS + + + + ExportDialog + + Export + + + + + ExportPlugin + + Export + + + + diff --git a/translations/exportplugin_en.ts b/translations/exportplugin_en.ts new file mode 100644 index 0000000..2620668 --- /dev/null +++ b/translations/exportplugin_en.ts @@ -0,0 +1,18 @@ + + + + + ExportDialog + + Export + + + + + ExportPlugin + + Export + + + +