File indexing completed on 2023-11-26 09:01:55
0001 /* 0002 This file is part of Lokalize 0003 0004 SPDX-FileCopyrightText: 2014 Nick Shaforostoff <shafff@ukr.net> 0005 SPDX-FileCopyrightText: 2018-2019 Simon Depiets <sdepiets@gmail.com> 0006 0007 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0008 */ 0009 0010 #ifndef LOKALIZESUBWINDOWBASE_H 0011 #define LOKALIZESUBWINDOWBASE_H 0012 0013 #include <QHash> 0014 #include <QString> 0015 #include <QFile> 0016 #include <QFileInfo> 0017 #include <QDateTime> 0018 0019 #include "actionproxy.h" 0020 0021 #include <kmainwindow.h> 0022 #include <kxmlguiclient.h> 0023 0024 0025 /** 0026 * Interface for LokalizeMainWindow 0027 */ 0028 class LokalizeSubwindowBase: public KMainWindow 0029 { 0030 Q_OBJECT 0031 public: 0032 explicit LokalizeSubwindowBase(QWidget* parent): KMainWindow(parent) {} 0033 virtual ~LokalizeSubwindowBase() 0034 { 0035 Q_EMIT aboutToBeClosed(); 0036 } 0037 virtual KXMLGUIClient* guiClient() = 0; 0038 virtual void reloadUpdatedXML() = 0; 0039 virtual void setUpdatedXMLFile() = 0; 0040 0041 //interface for LokalizeMainWindow 0042 virtual void hideDocks() = 0; 0043 virtual void showDocks() = 0; 0044 //bool queryClose(); 0045 0046 virtual QString currentFilePath() 0047 { 0048 return QString(); 0049 } 0050 0051 protected: 0052 void reflectNonApprovedCount(int count, int total); 0053 void reflectUntranslatedCount(int count, int total); 0054 0055 Q_SIGNALS: 0056 void aboutToBeClosed(); 0057 0058 public: 0059 //QHash<QString,ActionProxy*> supportedActions; 0060 StatusBarProxy statusBarItems; 0061 0062 protected: 0063 QDateTime lastXMLUpdate; 0064 }; 0065 0066 /** 0067 * C++ casting workaround 0068 */ 0069 class LokalizeSubwindowBase2: public LokalizeSubwindowBase, public KXMLGUIClient 0070 { 0071 public: 0072 explicit LokalizeSubwindowBase2(QWidget* parent): LokalizeSubwindowBase(parent), KXMLGUIClient() {} 0073 ~LokalizeSubwindowBase2() override = default; 0074 0075 KXMLGUIClient* guiClient() override 0076 { 0077 return (KXMLGUIClient*)this; 0078 } 0079 0080 void setUpdatedXMLFile() override 0081 { 0082 QString localXml = guiClient()->localXMLFile(); 0083 if (QFile::exists(localXml)) { 0084 lastXMLUpdate = QFileInfo(localXml).lastModified(); 0085 } 0086 } 0087 0088 void reloadUpdatedXML() override 0089 { 0090 QString localXml = guiClient()->localXMLFile(); 0091 if (QFile::exists(localXml)) { 0092 QDateTime newXMLUpdate = QFileInfo(localXml).lastModified(); 0093 if (newXMLUpdate > lastXMLUpdate) { 0094 lastXMLUpdate = newXMLUpdate; 0095 guiClient()->reloadXML(); 0096 } 0097 } 0098 } 0099 }; 0100 0101 #endif