summaryrefslogtreecommitdiffstats
path: root/kipi-plugins/galleryexport/galleries.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kipi-plugins/galleryexport/galleries.cpp')
-rw-r--r--kipi-plugins/galleryexport/galleries.cpp250
1 files changed, 250 insertions, 0 deletions
diff --git a/kipi-plugins/galleryexport/galleries.cpp b/kipi-plugins/galleryexport/galleries.cpp
new file mode 100644
index 0000000..c38baff
--- /dev/null
+++ b/kipi-plugins/galleryexport/galleries.cpp
@@ -0,0 +1,250 @@
+/* ============================================================
+ * File : galleries.cpp
+ * Author: Colin Guthrie <kde@colin.guthr.ie>
+ * Date : 2006-09-04
+ * Copyright 2006 by Colin Guthrie <kde@colin.guthr.ie>
+ *
+ * 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, 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.
+ * ============================================================ */
+
+#include <qstring.h>
+
+#include <qwidget.h>
+#include <kapplication.h>
+#include <kdebug.h>
+#include <kconfig.h>
+#include <klocale.h>
+#include <kdeversion.h>
+#if KDE_IS_VERSION(3,2,0)
+#include <kwallet.h>
+#endif
+
+#include "galleries.h"
+
+namespace KIPIGalleryExportPlugin
+{
+
+
+Gallery::Gallery(const QString& name, const QString& url,
+ const QString& username, const QString& password,
+ const unsigned int version,
+ const unsigned int galleryId)
+ : mName(name),
+ mUrl(url),
+ mUsername(username),
+ mPassword(password),
+ mVersion(version),
+ mGalleryId(galleryId)
+{
+
+}
+
+Gallery::~Gallery()
+{
+
+}
+
+QString Gallery::name() const { return mName; }
+QString Gallery::url() const { return mUrl; }
+QString Gallery::username() const { return mUsername; }
+QString Gallery::password() const { return mPassword; }
+unsigned int Gallery::version() const { return mVersion; }
+unsigned int Gallery::galleryId() const { return mGalleryId; }
+
+void Gallery::setName(QString name) { mName = name; }
+void Gallery::setUrl(QString url) { mUrl = url; }
+void Gallery::setUsername(QString username) { mUsername = username; }
+void Gallery::setPassword(QString password) { mPassword = password; }
+void Gallery::setVersion(unsigned int version) { mVersion = version; }
+void Gallery::setGalleryId(unsigned int galleryId) { mGalleryId = galleryId; }
+
+
+QListViewItem* Gallery::asQListViewItem(QListView* pParent)
+{
+ QListViewItem* p_lvi = (QListViewItem*) new GalleryQListViewItem(this, pParent);
+ return p_lvi;
+}
+
+
+
+GalleryQListViewItem::GalleryQListViewItem(Gallery* pGallery, QListView* pParent)
+ : QListViewItem(pParent, pGallery->name(), pGallery->url(), pGallery->username()),
+ mpGallery(pGallery)
+{
+}
+
+Gallery* GalleryQListViewItem::GetGallery()
+{
+ return mpGallery;
+}
+
+void GalleryQListViewItem::Refresh()
+{
+ setText(0, mpGallery->name());
+ setText(1, mpGallery->url());
+ setText(2, mpGallery->username());
+}
+
+
+
+Galleries::Galleries()
+ : mpWallet(0),
+ mMaxGalleryId(0)
+{
+}
+
+Galleries::~Galleries()
+{
+ if (mpWallet)
+ delete mpWallet;
+
+ // Todo: clear up mGalleries
+}
+
+void Galleries::Load()
+{
+ static bool bln_loaded = false;
+ if (bln_loaded) return;
+ bln_loaded = true;
+
+ bool bln_use_wallet = false;
+#if KDE_IS_VERSION(3,2,0)
+ mpWallet = KWallet::Wallet::openWallet(KWallet::Wallet::NetworkWallet(),
+ kapp->activeWindow()->winId(),
+ KWallet::Wallet::Synchronous);
+ if (!mpWallet)
+ {
+ kdWarning() << "Failed to open kwallet" << endl;
+ }
+ else
+ {
+ if (!mpWallet->hasFolder("KIPIGallerySyncPlugin"))
+ {
+ if (!mpWallet->createFolder("KIPIGallerySyncPlugin"))
+ kdWarning() << "Failed to create kwallet folder" << endl;
+ }
+
+ if (!mpWallet->setFolder("KIPIGallerySyncPlugin"))
+ kdWarning() << "Failed to set kwallet folder" << endl;
+ else
+ bln_use_wallet = true;
+ }
+#endif
+
+
+ // read config
+ KConfig config("kipirc");
+ config.setGroup("GallerySync Settings");
+ QValueList<int> gallery_ids = config.readIntListEntry("Galleries");
+
+ config.setGroup("GallerySync Galleries");
+ QString name, url, username, password = "";
+ int version;
+ for (QValueList<int>::Iterator it = gallery_ids.begin(); it != gallery_ids.end(); ++it)
+ {
+ unsigned int gallery_id = (*it);
+
+ if (gallery_id > mMaxGalleryId)
+ mMaxGalleryId = gallery_id;
+
+ // Load the gallery with this id.
+ name = config.readEntry(QString("Name%1").arg(gallery_id));
+ url = config.readEntry(QString("URL%1").arg(gallery_id));
+ username = config.readEntry(QString("Username%1").arg(gallery_id));
+ version = config.readNumEntry(QString("Version%1").arg(gallery_id));
+ if (bln_use_wallet)
+ mpWallet->readPassword(QString("Password%1").arg(gallery_id), password);
+
+ Gallery* p_gallery = new Gallery(name, url, username, password, version, gallery_id);
+ mGalleries.append(p_gallery);
+ }
+}
+
+
+void Galleries::Add(Gallery* pGallery)
+{
+ mGalleries.append(pGallery);
+}
+
+void Galleries::Remove(Gallery* pGallery)
+{
+ mGalleries.remove(pGallery);
+
+ // Slight cosmetic thing for gallery numbering.
+ if (mGalleries.isEmpty())
+ mMaxGalleryId = 0;
+}
+
+
+void Galleries::Save()
+{
+ QValueList<int> gallery_ids;
+ KConfig config("kipirc");
+ config.deleteGroup("GallerySync Galleries");
+ config.setGroup("GallerySync Galleries");
+
+ bool bln_use_wallet = false;
+ if (mpWallet)
+ {
+ if (mpWallet->hasFolder("KIPIGallerySyncPlugin"))
+ {
+ if (!mpWallet->removeFolder("KIPIGallerySyncPlugin"))
+ kdWarning() << "Failed to clear kwallet folder" << endl;
+ }
+ if (!mpWallet->createFolder("KIPIGallerySyncPlugin"))
+ kdWarning() << "Failed to create kwallet folder" << endl;
+
+ if (!mpWallet->setFolder("KIPIGallerySyncPlugin"))
+ kdWarning() << "Failed to set kwallet folder" << endl;
+ else
+ bln_use_wallet = true;
+ }
+
+ for (GalleryPtrList::iterator it = mGalleries.begin(); it != mGalleries.end(); ++it)
+ {
+ Gallery* p_gallery = (*it);
+ if (!p_gallery->galleryId())
+ p_gallery->setGalleryId(++mMaxGalleryId);
+ unsigned int gallery_id = p_gallery->galleryId();
+ gallery_ids.append(gallery_id);
+
+ config.writeEntry(QString("Name%1").arg(gallery_id), p_gallery->name());
+ config.writeEntry(QString("URL%1").arg(gallery_id), p_gallery->url());
+ config.writeEntry(QString("Username%1").arg(gallery_id), p_gallery->username());
+ config.writeEntry(QString("Version%1").arg(gallery_id), p_gallery->version());
+ if (bln_use_wallet)
+ mpWallet->writePassword(QString("Password%1").arg(gallery_id), p_gallery->password());
+ }
+
+ config.setGroup("GallerySync Settings");
+ config.writeEntry("Galleries", gallery_ids);
+}
+
+QListView* Galleries::asQListView(QWidget* pParent)
+{
+ Load();
+
+ QListView* p_lv = new QListView (pParent);
+ p_lv->addColumn(i18n("Gallery Name"));
+ p_lv->addColumn(i18n("URL"));
+ p_lv->addColumn(i18n("User"));
+ p_lv->setAllColumnsShowFocus(true);
+
+ for (GalleryPtrList::iterator it = mGalleries.begin(); it != mGalleries.end(); ++it)
+ {
+ (*it)->asQListViewItem(p_lv);
+ }
+
+ return p_lv;
+}
+
+}