Warning, file /utilities/okteta/kasten/gui/system/bytearrayviewprofilemanager.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     This file is part of the Okteta Kasten module, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2010, 2012 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #ifndef KASTEN_BYTEARRAYVIEWPROFILEMANAGER_HPP
0010 #define KASTEN_BYTEARRAYVIEWPROFILEMANAGER_HPP
0011 
0012 // lib
0013 #include "bytearrayviewprofile.hpp"
0014 // Qt
0015 #include <QObject>
0016 #include <QVector>
0017 #include <QDateTime>
0018 #include <QHash>
0019 
0020 class KDirWatch;
0021 
0022 namespace Kasten {
0023 class ByteArrayViewProfileLock;
0024 
0025 class ByteArrayViewProfileFileInfo
0026 {
0027 public:
0028     ByteArrayViewProfileFileInfo(const QDateTime& lastModified, bool locked)
0029         : mLastModified(lastModified)
0030         , mLocked(locked)
0031     {}
0032     ByteArrayViewProfileFileInfo(const ByteArrayViewProfileFileInfo&) = default;
0033 
0034     ~ByteArrayViewProfileFileInfo() = default;
0035 
0036     ByteArrayViewProfileFileInfo& operator=(const ByteArrayViewProfileFileInfo&) = default;
0037 
0038 public:
0039     const QDateTime& lastModified() const { return mLastModified; }
0040     bool isLocked()                 const { return mLocked; }
0041 
0042     void setLastModified(const QDateTime& lastModified)  { mLastModified = lastModified; }
0043     void setLocked(bool isLocked) { mLocked = isLocked; }
0044 
0045 private:
0046     QDateTime mLastModified;
0047     bool mLocked;
0048 //     bool mUserOwned;
0049 };
0050 
0051 using ByteArrayViewProfileFileInfoLookup = QHash<ByteArrayViewProfile::Id, ByteArrayViewProfileFileInfo>;
0052 
0053 class OKTETAKASTENGUI_EXPORT ByteArrayViewProfileManager : public QObject
0054 {
0055     Q_OBJECT
0056 
0057 public:
0058     ByteArrayViewProfileManager();
0059     ~ByteArrayViewProfileManager() override;
0060 
0061 public:
0062     QVector<ByteArrayViewProfile> viewProfiles() const;
0063     int viewProfilesCount() const;
0064     ByteArrayViewProfile viewProfile(const ByteArrayViewProfile::Id& id) const;
0065     ByteArrayViewProfile::Id defaultViewProfileId() const;
0066     ByteArrayViewProfile defaultViewProfile() const;
0067     bool isViewProfileLocked(const ByteArrayViewProfile::Id& id) const;
0068 
0069 public:
0070     void saveViewProfiles(QVector<ByteArrayViewProfile>& viewProfiles);
0071     void removeViewProfiles(const QVector<ByteArrayViewProfile::Id>& viewProfileIds);
0072     void setDefaultViewProfile(const ByteArrayViewProfile::Id& viewProfileId);
0073 
0074     ByteArrayViewProfileLock createLock(const ByteArrayViewProfile::Id& viewProfileId);
0075 
0076 Q_SIGNALS:
0077     void viewProfilesChanged(const QVector<Kasten::ByteArrayViewProfile>& viewProfiles);
0078     void viewProfilesRemoved(const QVector<Kasten::ByteArrayViewProfile::Id>& viewProfileIds);
0079     void defaultViewProfileChanged(const Kasten::ByteArrayViewProfile::Id& viewProfileId);
0080     void viewProfilesLocked(const QVector<Kasten::ByteArrayViewProfile::Id>& viewProfileIds);
0081     void viewProfilesUnlocked(const QVector<Kasten::ByteArrayViewProfile::Id>& viewProfileIds);
0082 
0083 private:
0084     OKTETAKASTENGUI_NO_EXPORT QString filePathOfViewProfile(const ByteArrayViewProfile::Id& viewProfileId) const;
0085     // Returns the viewProfile as loaded from the file with the given fileName.
0086     // If the loading fails the viewProfile has no id set.
0087     OKTETAKASTENGUI_NO_EXPORT ByteArrayViewProfile loadViewProfile(const QString& fileName) const;
0088     OKTETAKASTENGUI_NO_EXPORT void saveViewProfile(const ByteArrayViewProfile& viewProfile) const;
0089     OKTETAKASTENGUI_NO_EXPORT void removeViewProfile(const ByteArrayViewProfile::Id& viewProfileId);
0090 
0091 private Q_SLOTS:
0092     OKTETAKASTENGUI_NO_EXPORT void onViewProfilesFolderChanged(const QString& path);
0093     OKTETAKASTENGUI_NO_EXPORT void onDefaultViewProfileChanged(const QString& path);
0094 
0095 private:
0096     QVector<ByteArrayViewProfile> mViewProfiles;
0097 
0098     ByteArrayViewProfile::Id mDefaultViewProfileId;
0099 
0100     KDirWatch* mViewProfileFileWatcher;
0101 
0102     QHash<QString, ByteArrayViewProfileFileInfoLookup> mViewProfileFileInfoLookupPerFolder;
0103 };
0104 
0105 }
0106 
0107 #endif