summaryrefslogtreecommitdiffstats
path: root/kontact/src/profilemanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'kontact/src/profilemanager.h')
-rw-r--r--kontact/src/profilemanager.h162
1 files changed, 162 insertions, 0 deletions
diff --git a/kontact/src/profilemanager.h b/kontact/src/profilemanager.h
new file mode 100644
index 000000000..e8b10adb5
--- /dev/null
+++ b/kontact/src/profilemanager.h
@@ -0,0 +1,162 @@
+/*
+ This file is part of KDE Kontact.
+
+ Copyright (c) 2007 Frank Osterfeld <frank.osterfeld@kdemail.net>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef KONTACT_PROFILEMANAGER_H
+#define KONTACT_PROFILEMANAGER_H
+
+#include <qmap.h>
+#include <qobject.h>
+#include <qstring.h>
+
+template <class T> class QValueList;
+
+namespace KIO {
+ class Job;
+}
+
+namespace Kontact {
+
+class Profile
+{
+ friend class ProfileManager;
+public:
+ Profile();
+
+ explicit Profile( const QString& id, bool isLocal = false );
+
+ QString id() const;
+
+ QString name() const;
+
+ QString description() const;
+
+ bool isNull() const;
+
+ void setName( const QString& name );
+
+ void setDescription( const QString& description );
+
+ bool operator==( const Kontact::Profile& other ) const;
+
+ QString saveLocation() const;
+
+private: // ProfileManager only
+
+ enum SetLocalMode {
+ DoNotCopyProfileFiles,
+ CopyProfileFiles
+ };
+ void setLocal( SetLocalMode mode );
+ bool isLocal() const;
+ void setOriginalLocation( const QString& path );
+ void setId( const QString& id );
+
+private:
+
+ static void copyConfigFiles( const QString& source, const QString& dest );
+
+ QString localSaveLocation() const;
+
+private:
+ QString m_id;
+ QString m_name;
+ QString m_description;
+ bool m_local;
+ QString m_originalLocation;
+};
+
+class ProfileManager : public QObject
+{
+Q_OBJECT
+public:
+ enum ImportError {
+ SuccessfulImport=0,
+ NoValidProfile
+ };
+
+ enum ExportError {
+ SuccessfulExport=0,
+ DirectoryDoesNotExist,
+ DirectoryNotWritable
+ };
+
+ static ProfileManager* self();
+
+ ~ProfileManager();
+
+ Kontact::Profile profileById( const QString& id ) const;
+
+ bool addProfile( const Kontact::Profile& profile, bool syncConfig = true );
+
+ void removeProfile( const Kontact::Profile& profile );
+
+ void removeProfile( const QString& id );
+
+ void updateProfile( const Kontact::Profile& profile );
+
+ void loadProfile( const QString& id );
+
+ void saveToProfile( const QString& id );
+
+ QValueList<Kontact::Profile> profiles() const;
+
+ ExportError exportProfileToDirectory( const QString& id, const QString& path );
+
+ ImportError importProfileFromDirectory( const QString& path );
+
+ QString generateNewId() const;
+
+signals:
+ void profileAdded( const QString& id );
+
+ void profileRemoved( const QString& id );
+
+ void profileUpdated( const QString& id );
+
+ void profileLoaded( const QString& id );
+
+ void saveToProfileRequested( const QString& id );
+
+ void profileImportFinished( ImportError status );
+
+private:
+ static ProfileManager* m_self;
+
+ static Kontact::Profile readFromConfiguration( const QString& configFile, bool isLocal );
+
+ explicit ProfileManager( QObject* parent = 0 );
+
+ void readConfig();
+
+ void writeConfig() const;
+
+ void writeProfileConfig( const Kontact::Profile& profile ) const;
+
+private:
+ QMap<QString, Kontact::Profile> m_profiles;
+};
+
+}
+
+#endif // KONTACT_PROFILEMANAGER_H