diff --git a/src/translations/dtkwidget.ts b/src/translations/dtkwidget.ts
index f5e9e255c..a31ca24fc 100644
--- a/src/translations/dtkwidget.ts
+++ b/src/translations/dtkwidget.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Exit
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ady.ts b/src/translations/dtkwidget_ady.ts
index f54ba23aa..fd176f415 100644
--- a/src/translations/dtkwidget_ady.ts
+++ b/src/translations/dtkwidget_ady.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_af.ts b/src/translations/dtkwidget_af.ts
index a11c24399..3ad4b1c83 100644
--- a/src/translations/dtkwidget_af.ts
+++ b/src/translations/dtkwidget_af.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_am_ET.ts b/src/translations/dtkwidget_am_ET.ts
index 54e6b3f2f..e7aef81c2 100644
--- a/src/translations/dtkwidget_am_ET.ts
+++ b/src/translations/dtkwidget_am_ET.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
መውጫ
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ar.ts b/src/translations/dtkwidget_ar.ts
index 7bb97ca83..48c58ffb4 100644
--- a/src/translations/dtkwidget_ar.ts
+++ b/src/translations/dtkwidget_ar.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
خروج
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ast.ts b/src/translations/dtkwidget_ast.ts
index 1b0a5e884..13e286a40 100644
--- a/src/translations/dtkwidget_ast.ts
+++ b/src/translations/dtkwidget_ast.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Colar
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_az.ts b/src/translations/dtkwidget_az.ts
index b252ec06c..81fc064a8 100644
--- a/src/translations/dtkwidget_az.ts
+++ b/src/translations/dtkwidget_az.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Çıxış
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_bg.ts b/src/translations/dtkwidget_bg.ts
index 0c20673ec..3ad4a6606 100644
--- a/src/translations/dtkwidget_bg.ts
+++ b/src/translations/dtkwidget_bg.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Изход
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_bn.ts b/src/translations/dtkwidget_bn.ts
index 4f381861e..5547299ae 100644
--- a/src/translations/dtkwidget_bn.ts
+++ b/src/translations/dtkwidget_bn.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
বের হয়ে যান
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_bo.ts b/src/translations/dtkwidget_bo.ts
index 9579281f0..8bffbbb3b 100644
--- a/src/translations/dtkwidget_bo.ts
+++ b/src/translations/dtkwidget_bo.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
ཕྱིར་འབུད།
+
+ WaterMark
+
+
+ Date
+ དུས་ཚོད།
+
+
+
+ Username
+ མི་སྤྱོད་པའི་མིང་།
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_bqi.ts b/src/translations/dtkwidget_bqi.ts
index 79c61394e..5093ca231 100644
--- a/src/translations/dtkwidget_bqi.ts
+++ b/src/translations/dtkwidget_bqi.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_br.ts b/src/translations/dtkwidget_br.ts
index a64c48011..6679396db 100644
--- a/src/translations/dtkwidget_br.ts
+++ b/src/translations/dtkwidget_br.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Kuitaat
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ca.ts b/src/translations/dtkwidget_ca.ts
index de3ca4643..629253ebc 100644
--- a/src/translations/dtkwidget_ca.ts
+++ b/src/translations/dtkwidget_ca.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Surt
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_cs.ts b/src/translations/dtkwidget_cs.ts
index aee3732d8..890220780 100644
--- a/src/translations/dtkwidget_cs.ts
+++ b/src/translations/dtkwidget_cs.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Ukončit
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_da.ts b/src/translations/dtkwidget_da.ts
index 537ae7ac8..a3b8b0847 100644
--- a/src/translations/dtkwidget_da.ts
+++ b/src/translations/dtkwidget_da.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Afslut
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_de.ts b/src/translations/dtkwidget_de.ts
index a7ca57842..4cef88803 100644
--- a/src/translations/dtkwidget_de.ts
+++ b/src/translations/dtkwidget_de.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Beenden
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_el.ts b/src/translations/dtkwidget_el.ts
index a50d863f5..13ff76b55 100644
--- a/src/translations/dtkwidget_el.ts
+++ b/src/translations/dtkwidget_el.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Έξοδος
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_en_AU.ts b/src/translations/dtkwidget_en_AU.ts
index e0d9769c8..745e75d14 100644
--- a/src/translations/dtkwidget_en_AU.ts
+++ b/src/translations/dtkwidget_en_AU.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_eo.ts b/src/translations/dtkwidget_eo.ts
index 56e441d5a..d7cd2f0f4 100644
--- a/src/translations/dtkwidget_eo.ts
+++ b/src/translations/dtkwidget_eo.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_es.ts b/src/translations/dtkwidget_es.ts
index 25a80f810..7fb9779ff 100644
--- a/src/translations/dtkwidget_es.ts
+++ b/src/translations/dtkwidget_es.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Salir
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_eu.ts b/src/translations/dtkwidget_eu.ts
index c3768ecf9..e9ca6f545 100644
--- a/src/translations/dtkwidget_eu.ts
+++ b/src/translations/dtkwidget_eu.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Irten
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_fa.ts b/src/translations/dtkwidget_fa.ts
index 19bfc0bde..79146c5b4 100644
--- a/src/translations/dtkwidget_fa.ts
+++ b/src/translations/dtkwidget_fa.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
خروج
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_fi.ts b/src/translations/dtkwidget_fi.ts
index d084f4b13..2631130db 100644
--- a/src/translations/dtkwidget_fi.ts
+++ b/src/translations/dtkwidget_fi.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Poistu
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_fil.ts b/src/translations/dtkwidget_fil.ts
index 3d7c72000..498db14ab 100644
--- a/src/translations/dtkwidget_fil.ts
+++ b/src/translations/dtkwidget_fil.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_fr.ts b/src/translations/dtkwidget_fr.ts
index 44fd1a83e..de0771540 100644
--- a/src/translations/dtkwidget_fr.ts
+++ b/src/translations/dtkwidget_fr.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Quitter
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_gl_ES.ts b/src/translations/dtkwidget_gl_ES.ts
index cfcc2aa05..5a78e0477 100644
--- a/src/translations/dtkwidget_gl_ES.ts
+++ b/src/translations/dtkwidget_gl_ES.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Saír
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_he.ts b/src/translations/dtkwidget_he.ts
index 704e4ecf9..af56ad0d8 100644
--- a/src/translations/dtkwidget_he.ts
+++ b/src/translations/dtkwidget_he.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
יציאה
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_hi_IN.ts b/src/translations/dtkwidget_hi_IN.ts
index cb524a9e6..79639f997 100644
--- a/src/translations/dtkwidget_hi_IN.ts
+++ b/src/translations/dtkwidget_hi_IN.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
बंद करें
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_hr.ts b/src/translations/dtkwidget_hr.ts
index f4e8897ff..44c77274f 100644
--- a/src/translations/dtkwidget_hr.ts
+++ b/src/translations/dtkwidget_hr.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Izlaz
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_hu.ts b/src/translations/dtkwidget_hu.ts
index 842ea5548..c0cb725bc 100644
--- a/src/translations/dtkwidget_hu.ts
+++ b/src/translations/dtkwidget_hu.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Kilépés
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_hy.ts b/src/translations/dtkwidget_hy.ts
index ef6f7388b..56029fe9d 100644
--- a/src/translations/dtkwidget_hy.ts
+++ b/src/translations/dtkwidget_hy.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_id.ts b/src/translations/dtkwidget_id.ts
index 8148e2f92..0471d268c 100644
--- a/src/translations/dtkwidget_id.ts
+++ b/src/translations/dtkwidget_id.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Keluar
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_it.ts b/src/translations/dtkwidget_it.ts
index a8ecca35e..11abe3490 100644
--- a/src/translations/dtkwidget_it.ts
+++ b/src/translations/dtkwidget_it.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Esci
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ja.ts b/src/translations/dtkwidget_ja.ts
index 0fd3d27b8..128d2ecff 100644
--- a/src/translations/dtkwidget_ja.ts
+++ b/src/translations/dtkwidget_ja.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
終了
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ka.ts b/src/translations/dtkwidget_ka.ts
index 60699038a..427f89320 100644
--- a/src/translations/dtkwidget_ka.ts
+++ b/src/translations/dtkwidget_ka.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_km_KH.ts b/src/translations/dtkwidget_km_KH.ts
index 28ec2f9d3..b9b4c9506 100644
--- a/src/translations/dtkwidget_km_KH.ts
+++ b/src/translations/dtkwidget_km_KH.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_kn_IN.ts b/src/translations/dtkwidget_kn_IN.ts
index 32df29677..b44e63689 100644
--- a/src/translations/dtkwidget_kn_IN.ts
+++ b/src/translations/dtkwidget_kn_IN.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ko.ts b/src/translations/dtkwidget_ko.ts
index 8c9daf729..085e33108 100644
--- a/src/translations/dtkwidget_ko.ts
+++ b/src/translations/dtkwidget_ko.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
종료
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ku.ts b/src/translations/dtkwidget_ku.ts
index dd441263d..6fae91127 100644
--- a/src/translations/dtkwidget_ku.ts
+++ b/src/translations/dtkwidget_ku.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ku_IQ.ts b/src/translations/dtkwidget_ku_IQ.ts
index 7d546d8d5..d7ed5b515 100644
--- a/src/translations/dtkwidget_ku_IQ.ts
+++ b/src/translations/dtkwidget_ku_IQ.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ky.ts b/src/translations/dtkwidget_ky.ts
index fa4fd2bbd..ac15ab862 100644
--- a/src/translations/dtkwidget_ky.ts
+++ b/src/translations/dtkwidget_ky.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ky@Arab.ts b/src/translations/dtkwidget_ky@Arab.ts
index 0d0f11814..bbe10b895 100644
--- a/src/translations/dtkwidget_ky@Arab.ts
+++ b/src/translations/dtkwidget_ky@Arab.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_lt.ts b/src/translations/dtkwidget_lt.ts
index a18220117..42c85f4a2 100644
--- a/src/translations/dtkwidget_lt.ts
+++ b/src/translations/dtkwidget_lt.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Išeiti
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ml.ts b/src/translations/dtkwidget_ml.ts
index 405605c46..1d615886d 100644
--- a/src/translations/dtkwidget_ml.ts
+++ b/src/translations/dtkwidget_ml.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_mn.ts b/src/translations/dtkwidget_mn.ts
index 43807b79c..f729a50b4 100644
--- a/src/translations/dtkwidget_mn.ts
+++ b/src/translations/dtkwidget_mn.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_mr.ts b/src/translations/dtkwidget_mr.ts
index eb9393c26..7027f76ad 100644
--- a/src/translations/dtkwidget_mr.ts
+++ b/src/translations/dtkwidget_mr.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ms.ts b/src/translations/dtkwidget_ms.ts
index 54647a9ac..763c8f8bc 100644
--- a/src/translations/dtkwidget_ms.ts
+++ b/src/translations/dtkwidget_ms.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Keluar
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_nb.ts b/src/translations/dtkwidget_nb.ts
index a50a63af4..6056011f7 100644
--- a/src/translations/dtkwidget_nb.ts
+++ b/src/translations/dtkwidget_nb.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Avslutt
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ne.ts b/src/translations/dtkwidget_ne.ts
index 20556bb54..8dbbf79c4 100644
--- a/src/translations/dtkwidget_ne.ts
+++ b/src/translations/dtkwidget_ne.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
बाहिर निस्कनुहोस्
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_nl.ts b/src/translations/dtkwidget_nl.ts
index 243dc48dc..427bb9fa5 100644
--- a/src/translations/dtkwidget_nl.ts
+++ b/src/translations/dtkwidget_nl.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Afsluiten
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_pam.ts b/src/translations/dtkwidget_pam.ts
index 045633dec..1a9768eae 100644
--- a/src/translations/dtkwidget_pam.ts
+++ b/src/translations/dtkwidget_pam.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_pl.ts b/src/translations/dtkwidget_pl.ts
index 954de49bf..a0d9df19e 100644
--- a/src/translations/dtkwidget_pl.ts
+++ b/src/translations/dtkwidget_pl.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Wyjdź
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_pt.ts b/src/translations/dtkwidget_pt.ts
index 73188c323..386764d8b 100644
--- a/src/translations/dtkwidget_pt.ts
+++ b/src/translations/dtkwidget_pt.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Sair
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_pt_BR.ts b/src/translations/dtkwidget_pt_BR.ts
index e3b0a5504..342929172 100644
--- a/src/translations/dtkwidget_pt_BR.ts
+++ b/src/translations/dtkwidget_pt_BR.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Sair
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ro.ts b/src/translations/dtkwidget_ro.ts
index ef12c5de5..76cd58df4 100644
--- a/src/translations/dtkwidget_ro.ts
+++ b/src/translations/dtkwidget_ro.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Ieșire
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ru.ts b/src/translations/dtkwidget_ru.ts
index 25b215225..fac9a28f7 100644
--- a/src/translations/dtkwidget_ru.ts
+++ b/src/translations/dtkwidget_ru.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Выход
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_sc.ts b/src/translations/dtkwidget_sc.ts
index ff440711d..e13b0343e 100644
--- a/src/translations/dtkwidget_sc.ts
+++ b/src/translations/dtkwidget_sc.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_si.ts b/src/translations/dtkwidget_si.ts
index 09bd6f2f8..495dd99af 100644
--- a/src/translations/dtkwidget_si.ts
+++ b/src/translations/dtkwidget_si.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_sk.ts b/src/translations/dtkwidget_sk.ts
index df51bc4f2..082565343 100644
--- a/src/translations/dtkwidget_sk.ts
+++ b/src/translations/dtkwidget_sk.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Ukončiť
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_sl.ts b/src/translations/dtkwidget_sl.ts
index de813db96..bfb632611 100644
--- a/src/translations/dtkwidget_sl.ts
+++ b/src/translations/dtkwidget_sl.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Izhod
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_sq.ts b/src/translations/dtkwidget_sq.ts
index d2054d997..b813889ef 100644
--- a/src/translations/dtkwidget_sq.ts
+++ b/src/translations/dtkwidget_sq.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Dil
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_sr.ts b/src/translations/dtkwidget_sr.ts
index 3e7785986..ea8806661 100644
--- a/src/translations/dtkwidget_sr.ts
+++ b/src/translations/dtkwidget_sr.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Изађи
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_sv.ts b/src/translations/dtkwidget_sv.ts
index 7255b7ba2..c9edd22f9 100644
--- a/src/translations/dtkwidget_sv.ts
+++ b/src/translations/dtkwidget_sv.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_sw.ts b/src/translations/dtkwidget_sw.ts
index 7aee9848b..6babfdf68 100644
--- a/src/translations/dtkwidget_sw.ts
+++ b/src/translations/dtkwidget_sw.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ta.ts b/src/translations/dtkwidget_ta.ts
index 83bc22f96..6b78e60b8 100644
--- a/src/translations/dtkwidget_ta.ts
+++ b/src/translations/dtkwidget_ta.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_th.ts b/src/translations/dtkwidget_th.ts
index e55058979..7a089b31b 100644
--- a/src/translations/dtkwidget_th.ts
+++ b/src/translations/dtkwidget_th.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_tr.ts b/src/translations/dtkwidget_tr.ts
index 2770f38dc..c786219d8 100644
--- a/src/translations/dtkwidget_tr.ts
+++ b/src/translations/dtkwidget_tr.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Çıkış
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ug.ts b/src/translations/dtkwidget_ug.ts
index ad13d5b46..8215f86af 100644
--- a/src/translations/dtkwidget_ug.ts
+++ b/src/translations/dtkwidget_ug.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
چېكىنىش
+
+ WaterMark
+
+
+ Date
+ ۋاقىت
+
+
+
+ Username
+ نامى ئىشلەتكۈچى
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_uk.ts b/src/translations/dtkwidget_uk.ts
index 0c00a81d9..f680d3454 100644
--- a/src/translations/dtkwidget_uk.ts
+++ b/src/translations/dtkwidget_uk.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
Вийти
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_ur.ts b/src/translations/dtkwidget_ur.ts
index faea5681e..e75c4fa20 100644
--- a/src/translations/dtkwidget_ur.ts
+++ b/src/translations/dtkwidget_ur.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_vi.ts b/src/translations/dtkwidget_vi.ts
index dc33f1333..362756149 100644
--- a/src/translations/dtkwidget_vi.ts
+++ b/src/translations/dtkwidget_vi.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
+
+ WaterMark
+
+
+ Date
+
+
+
+
+ Username
+
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_zh_CN.ts b/src/translations/dtkwidget_zh_CN.ts
index cb88848f5..33b9dd64d 100644
--- a/src/translations/dtkwidget_zh_CN.ts
+++ b/src/translations/dtkwidget_zh_CN.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
退出
+
+ WaterMark
+
+
+ Date
+ 时间
+
+
+
+ Username
+ 用户名
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_zh_HK.ts b/src/translations/dtkwidget_zh_HK.ts
index a6d534c4a..58971aaac 100644
--- a/src/translations/dtkwidget_zh_HK.ts
+++ b/src/translations/dtkwidget_zh_HK.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
退出
+
+ WaterMark
+
+
+ Date
+ 時間
+
+
+
+ Username
+ 用戶名
+
+
\ No newline at end of file
diff --git a/src/translations/dtkwidget_zh_TW.ts b/src/translations/dtkwidget_zh_TW.ts
index 0beb152ff..9251e8769 100644
--- a/src/translations/dtkwidget_zh_TW.ts
+++ b/src/translations/dtkwidget_zh_TW.ts
@@ -800,4 +800,17 @@ SPDX-License-Identifier: LGPL-3.0-or-later
退出
+
+ WaterMark
+
+
+ Date
+ 時間
+
+
+
+ Username
+ 使用者名稱
+
+
\ No newline at end of file
diff --git a/src/widgets/dprintpreviewwidget.cpp b/src/widgets/dprintpreviewwidget.cpp
index 46ea1bba5..bdcc979b5 100644
--- a/src/widgets/dprintpreviewwidget.cpp
+++ b/src/widgets/dprintpreviewwidget.cpp
@@ -15,7 +15,8 @@
#include
#include
-
+#include
+#include
#define FIRST_PAGE 1
#define FIRST_INDEX 0
@@ -29,6 +30,8 @@
#define WATER_DEFAULTFONTSIZE 65
#define WATER_TEXTSPACE WATER_DEFAULTFONTSIZE
+#define DATE_TIME_FORMAT "yyyy-MM-dd hh:mm:ss"
+#define USER_USEC_CONFIG_FILE "/etc/usec/default/contexts/default_mls_type"
DGUI_USE_NAMESPACE
DWIDGET_BEGIN_NAMESPACE
@@ -60,6 +63,77 @@ static void saveImageToFile(int index, const QString &outPutFileName, const QStr
});
}
+//优先从环境变量中获取,如果环境变量为空,则通过系统调用获取。
+static QString getUserInfo(const QString &envVar, std::function fallback) {
+ QString value = qgetenv(envVar.toUtf8());
+ if (value.isEmpty() && fallback) {
+ value = fallback();
+ }
+ return value;
+}
+
+static QString getUserName() {
+ return getUserInfo("USER", []() {
+ struct passwd *pw = getpwuid(getuid());
+ return pw ? QString::fromLocal8Bit(pw->pw_name) : QString();
+ });
+}
+
+static QString getUserId() {
+ return getUserInfo("UID", []() {
+ return QString::number(getuid());
+ });
+}
+
+// 获取用户的安全标签
+static QPair getUserSecurityLabel() {
+ QPair securityLabel = qMakePair(-1, -1);
+ QFile file(USER_USEC_CONFIG_FILE);
+ if (!file.exists()) {
+ qWarning() << "Failed to open default_mls_type file:" << file.fileName();
+ return securityLabel;
+ }
+
+ bool res = file.open(QIODevice::ReadOnly | QIODevice::Text);
+ if (!res) {
+ qWarning() << "Failed to open file:" << file.fileName();
+ return securityLabel;
+ }
+
+ QString userName = getUserName();
+ QString defaultSmodel;
+ QString hexString;
+ QTextStream in(&file);
+
+ while (!in.atEnd()) {
+ QString line = in.readLine().trimmed();
+ if (line.startsWith(userName + " ")) {
+ hexString = line.split(' ').value(1).trimmed();
+ break;
+ }else if (line.startsWith("default ")) {
+ defaultSmodel = line.split(' ').value(1).trimmed();
+ }
+ }
+
+ bool ok = false;
+ quint32 hexValue = 0;
+ if (!hexString.isEmpty()) {
+ hexValue = hexString.mid(2).toUInt(&ok, 16);
+ }else if (!defaultSmodel.isEmpty()) {
+ hexValue = defaultSmodel.mid(2).toUInt(&ok, 16);
+ } else {
+ qWarning() << "Invalid security label format in file:" << file.fileName();
+ }
+
+ if (ok) {
+ int ilevel = (hexValue >> 16) & 0xFF;
+ int slevel = hexValue & 0xFF;
+ securityLabel = qMakePair(ilevel, slevel);
+ }
+ file.close();
+ return securityLabel;
+}
+
DPrintPreviewWidgetPrivate::DPrintPreviewWidgetPrivate(DPrintPreviewWidget *qq)
: DFramePrivate(qq)
, imposition(DPrintPreviewWidget::One)
@@ -93,6 +167,13 @@ void DPrintPreviewWidgetPrivate::init()
background->setZValue(-1);
scene->addItem(background);
+ if (usec_strict_getenforce() == 1) {
+ baseWatermarkItem = new WaterMark();
+ scene->addItem(baseWatermarkItem);
+ updateBaseWatermark();
+ baseWatermarkItem->setZValue(2);
+ }
+
waterMark = new WaterMark;
scene->addItem(waterMark);
waterMark->setZValue(1);
@@ -143,6 +224,8 @@ void DPrintPreviewWidgetPrivate::populateScene()
}
waterMark->setBoundingRect(pageRect);
+ if (baseWatermarkItem)
+ baseWatermarkItem->setBoundingRect(pageRect);
scene->setSceneRect(QRect(QPoint(0, 0), paperSize));
}
@@ -418,11 +501,19 @@ void DPrintPreviewWidgetPrivate::printSinglePageDrawUtil(QPainter *painter, cons
}
// 绘制水印
if (!waterImage.isNull()) {
+ painter->save();
painter->resetTransform();
painter->translate(translateSize.width() / 2, translateSize.height() / 2);
painter->rotate(waterMark->rotation());
-
painter->drawImage(-waterImage.width() / 2, -waterImage.height() / 2, waterImage);
+ painter->restore();
+ }
+
+ // 绘制基底水印
+ if (baseWatermarkItem) {
+ QRectF boundingRect = QRectF(QPointF(0, 0), translateSize);
+ baseWatermarkItem->setBoundingRect(boundingRect);
+ baseWatermarkItem->paint(painter, nullptr, nullptr);
}
painter->restore();
@@ -460,6 +551,13 @@ void DPrintPreviewWidgetPrivate::printMultiPageDrawUtil(QPainter *painter, const
// 绘制并打水印 此时不能再设置缩放比
if (!waterImage.isNull())
painter->drawImage(leftTop, waterImage);
+
+ // 绘制基底水印
+ if (baseWatermarkItem) {
+ QRectF boundingRect = QRectF(leftTop, previewPrinter->pageLayout().paintRectPixels(previewPrinter->resolution()).size());
+ baseWatermarkItem->setBoundingRect(boundingRect);
+ baseWatermarkItem->paint(painter, nullptr, nullptr);
+ }
}
void DPrintPreviewWidgetPrivate::print(bool printAsPicture)
@@ -1203,6 +1301,28 @@ QVector DPrintPreviewWidgetPrivate::requestPages(int page)
return pagesVector;
}
+//更新基底水印的文字相关内容。
+void DPrintPreviewWidgetPrivate::updateBaseWatermark()
+{
+ baseWatermarkItem->setType(WaterMark::Text);
+ baseWatermarkItem->setLayoutType(WaterMark::Center);
+ QString userName = getUserName();
+ QString userId = getUserId();
+ QPair securityLabel = getUserSecurityLabel();
+ QString timeStr = QDateTime::currentDateTime().toString(DATE_TIME_FORMAT);
+ QString waterMarkText = QString("%1: %2\n"
+ "%3: %4 UID: %5\n"
+ "ilevel_%6 slevel_%7")
+ .arg(qApp->translate("WaterMark", "Date"), timeStr,
+ qApp->translate("WaterMark", "Username"), userName, userId,
+ QString::number(securityLabel.first),
+ QString::number(securityLabel.second));
+ baseWatermarkItem->setText(waterMarkText);
+ baseWatermarkItem->setScaleFactor(0.3);
+ baseWatermarkItem->setColor(QColor("#6f6f6f"));
+ baseWatermarkItem->update();
+}
+
/*!
\class Dtk::Widget::DPrintPreviewWidget
\inmodule dtkwidget
diff --git a/src/widgets/private/dprintpreviewwidget_p.h b/src/widgets/private/dprintpreviewwidget_p.h
index 899a233b7..3768dd934 100644
--- a/src/widgets/private/dprintpreviewwidget_p.h
+++ b/src/widgets/private/dprintpreviewwidget_p.h
@@ -289,6 +289,7 @@ class DPrintPreviewWidgetPrivate : public DFramePrivate
void calculateNumberPageScale();// 计算缩放比,拼版数发生改变需要调用
void calculateCurrentNumberPage();// page是相对于原文档,添加page页需要显示的小页面到Vector
QByteArray foundColorModelByCups() const;
+ void updateBaseWatermark();
inline void setCurrentPageNumber(int page)
{
@@ -303,6 +304,7 @@ class DPrintPreviewWidgetPrivate : public DFramePrivate
QList pages;
QGraphicsRectItem *background;
WaterMark *waterMark;
+ WaterMark *baseWatermarkItem = nullptr;
QVector pageRange; // 选择的页码
int currentPageNumber = 0; // 处理以后当前页,值一定是连续的,比如处理共10页,那么取值就是1到10
DPrinter::ColorMode colorMode;