[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [gwenview/bring-back-importer] /: Start bringing back Gwenview Importer
From: Aurélien Gâteau <agateau () kde ! org>
Date: 2016-10-31 9:21:30
Message-ID: E1c18mY-0006Kn-HD () code ! kde ! org
[Download RAW message or body]
Git commit 017b4fe5dc7f4b6e876cfd7b108dcebbf609ae94 by Aurélien Gâteau.
Committed on 31/10/2016 at 09:20.
Pushed by gateau into branch 'bring-back-importer'.
Start bringing back Gwenview Importer
Port from KUrl to QUrl, and KDateTime to QDateTime
M +2 -1 CMakeLists.txt
M +5 -1 importer/CMakeLists.txt
M +1 -1 importer/dialogpage.cpp
M +10 -10 importer/documentdirfinder.cpp
M +4 -4 importer/documentdirfinder.h
M +5 -5 importer/filenameformater.cpp
M +3 -4 importer/filenameformater.h
M +8 -5 importer/fileutils.cpp
M +3 -3 importer/fileutils.h
M +13 -13 importer/importdialog.cpp
M +2 -2 importer/importdialog.h
M +28 -24 importer/importer.cpp
M +4 -4 importer/importer.h
M +4 -3 importer/importerconfigdialog.cpp
M +25 -22 importer/main.cpp
M +0 -1 importer/progresspage.h
M +17 -17 importer/serializedurlmap.cpp
M +4 -4 importer/serializedurlmap.h
M +37 -32 importer/thumbnailpage.cpp
M +7 -7 importer/thumbnailpage.h
http://commits.kde.org/gwenview/017b4fe5dc7f4b6e876cfd7b108dcebbf609ae94
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0f528ae..645d434 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -59,6 +59,7 @@ find_package(KF5KIO 5.4 REQUIRED)
find_package(KF5 REQUIRED COMPONENTS
KDELibs4Support
Activities
+ ItemModels
)
## Dependencies
@@ -111,7 +112,7 @@ add_definitions(-DTRANSLATION_DOMAIN="gwenview")
## dirs to build
add_subdirectory(lib)
add_subdirectory(app)
-# add_subdirectory(importer)
+add_subdirectory(importer)
add_subdirectory(part)
add_subdirectory(tests)
add_subdirectory(icons)
diff --git a/importer/CMakeLists.txt b/importer/CMakeLists.txt
index e75746e..81e585c 100644
--- a/importer/CMakeLists.txt
+++ b/importer/CMakeLists.txt
@@ -27,24 +27,28 @@ ki18n_wrap_ui(importer_SRCS
thumbnailpage.ui
)
-file(GLOB ICONS_SRCS \
"${CMAKE_CURRENT_SOURCE_DIR}/../icons/hi*-apps-gwenview-importer.png") +file(GLOB \
ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/../icons/*-apps-gwenview.png") \
ecm_add_app_icon(importer_SRCS ICONS ${ICONS_SRCS})
kconfig_add_kcfg_files(importer_SRCS
importerconfig.kcfgc
)
+add_definitions(-DQT_NO_URL_CAST_FROM_STRING)
+
add_executable(gwenview_importer ${importer_SRCS})
target_link_libraries(gwenview_importer
gwenviewlib
KF5::KIOCore
+ KF5::ItemModels
Qt5::Core
)
target_link_libraries(gwenview_importer
LINK_INTERFACE_LIBRARIES
KF5::KIOCore
+ KF5::ItemModels
Qt5::Core
)
diff --git a/importer/dialogpage.cpp b/importer/dialogpage.cpp
index 5091cba..f7a8fbc 100644
--- a/importer/dialogpage.cpp
+++ b/importer/dialogpage.cpp
@@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA
*/
// Self
-#include "dialogpage.moc"
+#include "dialogpage.h"
// Qt
#include <QEventLoop>
diff --git a/importer/documentdirfinder.cpp b/importer/documentdirfinder.cpp
index 0211aef..8eaa63a 100644
--- a/importer/documentdirfinder.cpp
+++ b/importer/documentdirfinder.cpp
@@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA
*/
// Self
-#include "documentdirfinder.moc"
+#include "documentdirfinder.h"
// Qt
@@ -35,19 +35,19 @@ namespace Gwenview
struct DocumentDirFinderPrivate
{
- KUrl mRootUrl;
+ QUrl mRootUrl;
KDirLister* mDirLister;
- KUrl mFoundDirUrl;
+ QUrl mFoundDirUrl;
};
-DocumentDirFinder::DocumentDirFinder(const KUrl& rootUrl)
+DocumentDirFinder::DocumentDirFinder(const QUrl& rootUrl)
: d(new DocumentDirFinderPrivate)
{
d->mRootUrl = rootUrl;
d->mDirLister = new KDirLister(this);
- connect(d->mDirLister, SIGNAL(itemsAdded(KUrl,KFileItemList)),
- SLOT(slotItemsAdded(KUrl,KFileItemList)));
+ connect(d->mDirLister, SIGNAL(itemsAdded(QUrl,KFileItemList)),
+ SLOT(slotItemsAdded(QUrl,KFileItemList)));
connect(d->mDirLister, SIGNAL(completed()),
SLOT(slotCompleted()));
d->mDirLister->openUrl(rootUrl);
@@ -63,7 +63,7 @@ void DocumentDirFinder::start()
d->mDirLister->openUrl(d->mRootUrl);
}
-void DocumentDirFinder::slotItemsAdded(const KUrl& dir, const KFileItemList& list)
+void DocumentDirFinder::slotItemsAdded(const QUrl& dir, const KFileItemList& list)
{
Q_FOREACH(const KFileItem & item, list) {
MimeTypeUtils::Kind kind = MimeTypeUtils::fileItemKind(item);
@@ -96,15 +96,15 @@ void DocumentDirFinder::slotItemsAdded(const KUrl& dir, const \
KFileItemList& lis void DocumentDirFinder::slotCompleted()
{
if (d->mFoundDirUrl.isValid()) {
- KUrl url = d->mFoundDirUrl;
- d->mFoundDirUrl = KUrl();
+ QUrl url = d->mFoundDirUrl;
+ d->mFoundDirUrl = QUrl();
d->mDirLister->openUrl(url);
} else {
finish(d->mRootUrl, NoDocumentFound);
}
}
-void DocumentDirFinder::finish(const KUrl& url, DocumentDirFinder::Status status)
+void DocumentDirFinder::finish(const QUrl& url, DocumentDirFinder::Status status)
{
disconnect(d->mDirLister, 0, this, 0);
emit done(url, status);
diff --git a/importer/documentdirfinder.h b/importer/documentdirfinder.h
index 4c01e0c..05b9623 100644
--- a/importer/documentdirfinder.h
+++ b/importer/documentdirfinder.h
@@ -55,21 +55,21 @@ public:
MultipleDirsFound
};
- DocumentDirFinder(const KUrl& rootUrl);
+ DocumentDirFinder(const QUrl& rootUrl);
~DocumentDirFinder();
void start();
Q_SIGNALS:
- void done(const KUrl&, DocumentDirFinder::Status);
+ void done(const QUrl&, DocumentDirFinder::Status);
private Q_SLOTS:
- void slotItemsAdded(const KUrl&, const KFileItemList&);
+ void slotItemsAdded(const QUrl&, const KFileItemList&);
void slotCompleted();
private:
DocumentDirFinderPrivate* const d;
- void finish(const KUrl&, Status);
+ void finish(const QUrl&, Status);
};
} // namespace
diff --git a/importer/filenameformater.cpp b/importer/filenameformater.cpp
index 6080526..f9c33ec 100644
--- a/importer/filenameformater.cpp
+++ b/importer/filenameformater.cpp
@@ -22,12 +22,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA #include "filenameformater.h"
// Qt
+#include <QDateTime>
#include <QFileInfo>
+#include <QUrl>
// KDE
-#include <KDateTime>
#include <KLocale>
-#include <KUrl>
// Local
@@ -52,14 +52,14 @@ FileNameFormater::~FileNameFormater()
delete d;
}
-QString FileNameFormater::format(const KUrl& url, const KDateTime& dateTime)
+QString FileNameFormater::format(const QUrl& url, const QDateTime& dateTime)
{
QFileInfo info(url.fileName());
// Keep in sync with helpMap()
Dict dict;
- dict["date"] = dateTime.toString("%Y-%m-%d");
- dict["time"] = dateTime.toString("%H-%M-%S");
+ dict["date"] = dateTime.toString("yyyy-MM-dd");
+ dict["time"] = dateTime.toString("HH-mm-ss");
dict["ext"] = info.suffix();
dict["ext.lower"] = info.suffix().toLower();
dict["name"] = info.completeBaseName();
diff --git a/importer/filenameformater.h b/importer/filenameformater.h
index 97205d7..f16409d 100644
--- a/importer/filenameformater.h
+++ b/importer/filenameformater.h
@@ -28,10 +28,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA
// Local
+class QDateTime;
class QString;
-
-class KDateTime;
-class KUrl;
+class QUrl;
namespace Gwenview
{
@@ -49,7 +48,7 @@ public:
* Given an url and its dateTime, returns a filename according to the
* format passed to the constructor
*/
- QString format(const KUrl& url, const KDateTime& dateTime);
+ QString format(const QUrl& url, const QDateTime& dateTime);
/**
* Returns a map whose keys are the available keywords and values are the
diff --git a/importer/fileutils.cpp b/importer/fileutils.cpp
index 258c592..35a22e0 100644
--- a/importer/fileutils.cpp
+++ b/importer/fileutils.cpp
@@ -24,6 +24,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA // Qt
#include <QFile>
#include <QFileInfo>
+#include <QUrl>
// KDE
#include <QDebug>
@@ -33,7 +34,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA #include <KIO/JobClasses>
#include <KIO/JobUiDelegate>
#include <KIO/NetAccess>
-#include <KUrl>
// libc
#include <errno.h>
@@ -45,7 +45,7 @@ namespace Gwenview
namespace FileUtils
{
-bool contentsAreIdentical(const KUrl& url1, const KUrl& url2, QWidget* authWindow)
+bool contentsAreIdentical(const QUrl& url1, const QUrl& url2, QWidget* authWindow)
{
// FIXME: Support remote urls
QFile file1(KIO::NetAccess::mostLocalUrl(url1, authWindow).toLocalFile());
@@ -79,9 +79,9 @@ bool contentsAreIdentical(const KUrl& url1, const KUrl& url2, \
QWidget* authWindo }
}
-RenameResult rename(const KUrl& src, const KUrl& dst_, QWidget* authWindow)
+RenameResult rename(const QUrl& src, const QUrl& dst_, QWidget* authWindow)
{
- KUrl dst = dst_;
+ QUrl dst = dst_;
RenameResult result = RenamedOK;
int count = 1;
@@ -104,15 +104,18 @@ RenameResult rename(const KUrl& src, const KUrl& dst_, QWidget* \
authWindow)
if (srcSize == dstSize && contentsAreIdentical(src, dst, authWindow)) {
// Already imported, skip it
KIO::Job* job = KIO::file_delete(src, KIO::HideProgressInfo);
+ // FIXME KF5
+ /*
if (job->ui()) {
job->ui()->setWindow(authWindow);
}
+ */
return Skipped;
}
result = RenamedUnderNewName;
- dst.setFileName(prefix + QString::number(count) + suffix);
+ dst.setPath(dst.path() + '/' + prefix + QString::number(count) + suffix);
++count;
}
diff --git a/importer/fileutils.h b/importer/fileutils.h
index e81c1db..db10f56 100644
--- a/importer/fileutils.h
+++ b/importer/fileutils.h
@@ -23,7 +23,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA
class QString;
class QWidget;
-class KUrl;
+class QUrl;
namespace Gwenview
{
@@ -41,12 +41,12 @@ enum RenameResult {
/**
* Compare content of two urls, returns whether they are the same
*/
-bool contentsAreIdentical(const KUrl& url1, const KUrl& url2, QWidget* authWindow = \
0); +bool contentsAreIdentical(const QUrl& url1, const QUrl& url2, QWidget* \
authWindow = 0);
/**
* Rename src to dst, returns RenameResult
*/
-RenameResult rename(const KUrl& src, const KUrl& dst, QWidget* authWindow = 0);
+RenameResult rename(const QUrl& src, const QUrl& dst, QWidget* authWindow = 0);
/**
* Create a temp dir in baseDir, starting with prefix. If successful returns
diff --git a/importer/importdialog.cpp b/importer/importdialog.cpp
index 2a4d468..7c85f51 100644
--- a/importer/importdialog.cpp
+++ b/importer/importdialog.cpp
@@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA
*/
// Self
-#include "importdialog.moc"
+#include "importdialog.h"
// Qt
#include <QApplication>
@@ -62,8 +62,8 @@ public:
void deleteImportedUrls()
{
- KUrl::List importedUrls = mImporter->importedUrlList();
- KUrl::List skippedUrls = mImporter->skippedUrlList();
+ QList<QUrl> importedUrls = mImporter->importedUrlList();
+ QList<QUrl> skippedUrls = mImporter->skippedUrlList();
int importedCount = importedUrls.count();
int skippedCount = skippedUrls.count();
@@ -120,7 +120,7 @@ public:
if (answer != KMessageBox::Yes) {
return;
}
- KUrl::List urls = importedUrls + skippedUrls;
+ QList<QUrl> urls = importedUrls + skippedUrls;
while (true) {
KIO::Job* job = KIO::del(urls);
if (KIO::NetAccess::synchronousRun(job, q)) {
@@ -144,11 +144,11 @@ public:
void startGwenview()
{
- KService::Ptr service = KService::serviceByDesktopName("gwenview");
+ KService::Ptr service = KService::serviceByDesktopName("org.kde.gwenview");
if (!service) {
qCritical() << "Could not find gwenview";
} else {
- KRun::run(*service, KUrl::List() << mThumbnailPage->destinationUrl(), 0 \
/* window */); + KRun::run(*service, {mThumbnailPage->destinationUrl()}, 0 \
/* window */); }
}
@@ -182,11 +182,11 @@ ImportDialog::ImportDialog()
SLOT(showImportError(QString)));
d->mThumbnailPage = new ThumbnailPage;
- KUrl url = ImporterConfig::destinationUrl();
+ QUrl url = ImporterConfig::destinationUrl();
if (!url.isValid()) {
url = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation));
int year = QDate::currentDate().year();
- url.addPath(QString::number(year));
+ url.setPath(url.path() + '/' + QString::number(year));
}
d->mThumbnailPage->setDestinationUrl(url);
@@ -209,7 +209,7 @@ ImportDialog::ImportDialog()
d->mCentralWidget->setCurrentWidget(d->mThumbnailPage);
- setWindowIcon(KIcon("gwenview"));
+ setWindowIcon(QIcon::fromTheme("gwenview"));
setAutoSaveSettings();
}
@@ -223,12 +223,12 @@ QSize ImportDialog::sizeHint() const
return QSize(700, 500);
}
-void ImportDialog::setSourceUrl(const KUrl& url, const QString& deviceUdi)
+void ImportDialog::setSourceUrl(const QUrl& url, const QString& deviceUdi)
{
QString name, iconName;
if (deviceUdi.isEmpty()) {
- name = url.pathOrUrl();
- iconName = KProtocolInfo::icon(url.protocol());
+ name = url.url(QUrl::PreferLocalFile);
+ iconName = KProtocolInfo::icon(url.scheme());
if (iconName.isEmpty()) {
iconName = "folder";
}
@@ -242,7 +242,7 @@ void ImportDialog::setSourceUrl(const KUrl& url, const QString& \
deviceUdi)
void ImportDialog::startImport()
{
- KUrl url = d->mThumbnailPage->destinationUrl();
+ QUrl url = d->mThumbnailPage->destinationUrl();
ImporterConfig::setDestinationUrl(url);
ImporterConfig::self()->save();
diff --git a/importer/importdialog.h b/importer/importdialog.h
index f8f56d3..4abe82f 100644
--- a/importer/importdialog.h
+++ b/importer/importdialog.h
@@ -22,9 +22,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA #define IMPORTDIALOG_H
// Qt
+#include <QUrl>
// KDE
-#include <KUrl>
#include <KMainWindow>
// Local
@@ -43,7 +43,7 @@ public:
virtual QSize sizeHint() const;
public Q_SLOTS:
- void setSourceUrl(const KUrl&, const QString& deviceUdi);
+ void setSourceUrl(const QUrl&, const QString& deviceUdi);
private Q_SLOTS:
void startImport();
diff --git a/importer/importer.cpp b/importer/importer.cpp
index 25bb4ee..b606360 100644
--- a/importer/importer.cpp
+++ b/importer/importer.cpp
@@ -19,16 +19,16 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA
*/
// Self
-#include "importer.moc"
+#include "importer.h"
// Qt
+#include <QDateTime>
+#include <QDebug>
+#include <QUrl>
// KDE
-#include <KDateTime>
-#include <QDebug>
#include <KFileItem>
#include <KLocale>
-#include <KUrl>
#include <KIO/CopyJob>
#include <KIO/DeleteJob>
#include <KIO/Job>
@@ -53,26 +53,26 @@ struct ImporterPrivate
Importer* q;
QWidget* mAuthWindow;
std::auto_ptr<FileNameFormater> mFileNameFormater;
- KUrl mTempImportDir;
+ QUrl mTempImportDirUrl;
/* @defgroup reset Should be reset in start()
* @{ */
- KUrl::List mUrlList;
- KUrl::List mImportedUrlList;
- KUrl::List mSkippedUrlList;
+ QList<QUrl> mUrlList;
+ QList<QUrl> mImportedUrlList;
+ QList<QUrl> mSkippedUrlList;
int mRenamedCount;
int mProgress;
int mJobProgress;
/* @} */
- KUrl mCurrentUrl;
+ QUrl mCurrentUrl;
void emitError(const QString& message)
{
QMetaObject::invokeMethod(q, "error", Q_ARG(QString, message));
}
- bool createImportDir(const KUrl url)
+ bool createImportDir(const QUrl url)
{
Q_ASSERT(url.isLocalFile());
// FIXME: Support remote urls
@@ -82,8 +82,9 @@ struct ImporterPrivate
return false;
}
QString message;
- mTempImportDir = FileUtils::createTempDir(url.toLocalFile(), \
".gwenview_importer-", &message);
- if (mTempImportDir.isEmpty()) {
+ QString dir = FileUtils::createTempDir(url.toLocalFile(), \
".gwenview_importer-", &message); + mTempImportDirUrl = \
QUrl::fromLocalFile(dir); + if (mTempImportDirUrl.isEmpty()) {
emitError(i18n("Could not create temporary upload folder:\n%1", \
message)); return false;
}
@@ -97,22 +98,23 @@ struct ImporterPrivate
return;
}
mCurrentUrl = mUrlList.takeFirst();
- KUrl dst = mTempImportDir;
- dst.addPath(mCurrentUrl.fileName());
+ QUrl dst = mTempImportDirUrl;
+ dst.setPath(dst.path() + '/' + mCurrentUrl.fileName());
KIO::Job* job = KIO::copy(mCurrentUrl, dst, KIO::HideProgressInfo);
+ /* KF5 FIXME
if (job->ui()) {
job->ui()->setWindow(mAuthWindow);
}
+ */
QObject::connect(job, SIGNAL(result(KJob*)),
q, SLOT(slotCopyDone(KJob*)));
QObject::connect(job, SIGNAL(percent(KJob*,ulong)),
q, SLOT(slotPercent(KJob*,ulong)));
}
- void renameImportedUrl(const KUrl& src)
+ void renameImportedUrl(const QUrl& src)
{
- KUrl dst = src;
- dst.cd("..");
+ QUrl dst = src.resolved(QUrl(".."));
QString fileName;
if (mFileNameFormater.get()) {
KFileItem item(KFileItem::Unknown, KFileItem::Unknown, src, true /* \
delayedMimeTypes */); @@ -120,12 +122,12 @@ struct ImporterPrivate
// 'src' url is temporary: if we import "foo/image.jpg" and
// "bar/image.jpg", both images will be temporarily saved in the
// 'src' url.
- KDateTime dateTime = TimeUtils::dateTimeForFileItem(item, \
TimeUtils::SkipCache); + QDateTime dateTime = \
TimeUtils::dateTimeForFileItem(item, TimeUtils::SkipCache); fileName = \
mFileNameFormater->format(src, dateTime); } else {
fileName = src.fileName();
}
- dst.setFileName(fileName);
+ dst.setPath(dst.path() + '/' + fileName);
FileUtils::RenameResult result = FileUtils::rename(src, dst, mAuthWindow);
switch (result) {
@@ -169,7 +171,7 @@ void Importer::setAutoRenameFormat(const QString& format)
}
}
-void Importer::start(const KUrl::List& list, const KUrl& destination)
+void Importer::start(const QList<QUrl>& list, const QUrl& destination)
{
d->mUrlList = list;
d->mImportedUrlList.clear();
@@ -191,7 +193,7 @@ void Importer::start(const KUrl::List& list, const KUrl& \
destination) void Importer::slotCopyDone(KJob* _job)
{
KIO::CopyJob* job = static_cast<KIO::CopyJob*>(_job);
- KUrl url = job->destUrl();
+ QUrl url = job->destUrl();
if (job->error()) {
qWarning() << "FIXME: What do we do with failed urls?";
advance();
@@ -204,10 +206,12 @@ void Importer::slotCopyDone(KJob* _job)
void Importer::finalizeImport()
{
- KIO::Job* job = KIO::del(d->mTempImportDir, KIO::HideProgressInfo);
+ KIO::Job* job = KIO::del(d->mTempImportDirUrl, KIO::HideProgressInfo);
+ /* KF5 FIXME
if (job->ui()) {
job->ui()->setWindow(d->mAuthWindow);
}
+ */
importFinished();
}
@@ -229,12 +233,12 @@ void Importer::emitProgressChanged()
progressChanged(d->mProgress * 100 + d->mJobProgress);
}
-KUrl::List Importer::importedUrlList() const
+QList<QUrl> Importer::importedUrlList() const
{
return d->mImportedUrlList;
}
-KUrl::List Importer::skippedUrlList() const
+QList<QUrl> Importer::skippedUrlList() const
{
return d->mSkippedUrlList;
}
diff --git a/importer/importer.h b/importer/importer.h
index 0f175da..3efa282 100644
--- a/importer/importer.h
+++ b/importer/importer.h
@@ -23,9 +23,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA
// Qt
#include <QObject>
+#include <QUrl>
// KDE
-#include <KUrl>
// Local
@@ -48,14 +48,14 @@ public:
*/
void setAutoRenameFormat(const QString&);
- void start(const KUrl::List& list, const KUrl& destUrl);
+ void start(const QList<QUrl>& list, const QUrl& destUrl);
- KUrl::List importedUrlList() const;
+ QList<QUrl> importedUrlList() const;
/**
* Documents which have been skipped during import
*/
- KUrl::List skippedUrlList() const;
+ QList<QUrl> skippedUrlList() const;
/**
* How many documents have been renamed during import
diff --git a/importer/importerconfigdialog.cpp b/importer/importerconfigdialog.cpp
index 87619f1..7385977 100644
--- a/importer/importerconfigdialog.cpp
+++ b/importer/importerconfigdialog.cpp
@@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA
*/
// Self
-#include "importerconfigdialog.moc"
+#include "importerconfigdialog.h"
// Qt
#include <QTextDocument>
@@ -36,7 +36,7 @@ namespace Gwenview
{
static const QString PREVIEW_FILENAME = "PICT0012.JPG";
-static const KDateTime PREVIEW_DATETIME = KDateTime(QDate(2009, 10, 25), QTime(17, \
51, 18)); +static const QDateTime PREVIEW_DATETIME = QDateTime(QDate(2009, 10, 25), \
QTime(17, 51, 18));
struct ImporterConfigDialogPrivate : public Ui_ImporterConfigDialog
{
@@ -71,9 +71,10 @@ ImporterConfigDialog::ImporterConfigDialog(QWidget* parent)
QWidget* widget = new QWidget;
d->setupUi(widget);
setFaceType(KPageDialog::Plain);
+ /* KF5 FIXME
// Hide help button until there is actual documentation to show
showButton(KDialog::Help, false);
- showButtonSeparator(true);
+ */
addPage(widget, QString());
connect(d->kcfg_AutoRenameFormat, SIGNAL(textChanged(QString)),
diff --git a/importer/main.cpp b/importer/main.cpp
index 3f5e5c1..85dbdc2 100644
--- a/importer/main.cpp
+++ b/importer/main.cpp
@@ -18,15 +18,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA \
02110-1301, USA.
*/
// Qt
+#include <QApplication>
+#include <QDebug>
+#include <QDir>
+#include <QCommandLineParser>
#include <QScopedPointer>
+#include <QUrl>
// KDE
#include <KAboutData>
-#include <KApplication>
#include <KCmdLineArgs>
-#include <QDebug>
#include <KLocale>
-#include <KUrl>
// Local
#include <lib/about.h>
@@ -37,38 +39,39 @@ int main(int argc, char *argv[])
{
QScopedPointer<KAboutData> aboutData(
Gwenview::createAboutData(
- "gwenview_importer", /* appname */
- "gwenview", /* catalogName */
- ki18n("Gwenview Importer") /* programName */
+ QStringLiteral("org.kde.gwenview"), /* component name */
+ i18n("Gwenview Importer") /* programName */
));
- aboutData->setShortDescription(ki18n("Photo Importer"));
-
- KCmdLineArgs::init(argc, argv, aboutData.data());
+ aboutData->setShortDescription(i18n("Photo Importer"));
- KCmdLineOptions options;
- options.add("+folder", ki18n("Source folder"));
- options.add("udi <device-udi>", ki18n("Device UDI"));
- KCmdLineArgs::addCmdLineOptions(options);
+ QApplication app(argc, argv);
+ KAboutData::setApplicationData(*aboutData);
- KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
- KApplication app;
+ QCommandLineParser parser;
+ aboutData.data()->setupCommandLine(&parser);
+ parser.addOption(QCommandLineOption({QStringLiteral("udi")}, i18n("Device \
UDI"))); + parser.addHelpOption();
+ parser.addVersionOption();
+ parser.addPositionalArgument("folder", i18n("Source folder"));
+ parser.process(app);
+ aboutData.data()->processCommandLine(&parser);
- if (args->count() != 1) {
- KCmdLineArgs::usageError("Missing required source folder argument."); // \
FIXME 2.11 Add i18n() call + if (parser.positionalArguments().count() != 1) {
+ KCmdLineArgs::usageError(i18n("Missing required source folder argument."));
return 1;
}
- KUrl url = args->url(0);
+ QString urlString = parser.positionalArguments().first();
+ QUrl url = QUrl::fromUserInput(urlString, QDir::currentPath(), \
QUrl::AssumeLocalFile); if (!url.isValid()) {
- qCritical() << "Invalid source folder."; // FIXME 2.11 Add i18n() call
+ qCritical() << i18n("Invalid source folder.");
return 1;
}
- QString deviceUdi = args->isSet("udi") ? args->getOption("udi") : QString();
- args->clear();
+ QString deviceUdi = parser.isSet("udi") ? parser.value("udi") : QString();
Gwenview::ImageFormats::registerPlugins();
Gwenview::ImportDialog* dialog = new Gwenview::ImportDialog();
dialog->show();
- QMetaObject::invokeMethod(dialog, "setSourceUrl", Qt::QueuedConnection, \
Q_ARG(KUrl, url), Q_ARG(QString, deviceUdi)); + QMetaObject::invokeMethod(dialog, \
"setSourceUrl", Qt::QueuedConnection, Q_ARG(QUrl, url), Q_ARG(QString, deviceUdi)); \
return app.exec(); }
diff --git a/importer/progresspage.h b/importer/progresspage.h
index bd1856a..1a5e84b 100644
--- a/importer/progresspage.h
+++ b/importer/progresspage.h
@@ -25,7 +25,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA #include <QWidget>
// KDE
-#include <KUrl>
// Local
diff --git a/importer/serializedurlmap.cpp b/importer/serializedurlmap.cpp
index 172761b..4127071 100644
--- a/importer/serializedurlmap.cpp
+++ b/importer/serializedurlmap.cpp
@@ -25,9 +25,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA
// KDE
#include <KConfigGroup>
-#include <KUrl>
// Qt
+#include <QUrl>
namespace Gwenview
{
@@ -35,17 +35,17 @@ namespace Gwenview
static const char* KEY_SUFFIX = "key";
static const char* VALUE_SUFFIX = "value";
-static KUrl stripPass(const KUrl &url_)
+static QUrl stripPass(const QUrl &url_)
{
- KUrl url = url_;
- url.setPass(QString());
+ QUrl url = url_;
+ url.setPassword(QString());
return url;
}
struct SerializedUrlMapPrivate
{
KConfigGroup mGroup;
- QMap<KUrl, KUrl> mMap;
+ QMap<QUrl, QUrl> mMap;
void read()
{
@@ -56,21 +56,21 @@ struct SerializedUrlMapPrivate
if (!mGroup.hasKey(key)) {
break;
}
- QString keyUrl = mGroup.readEntry(key);
- QString valueUrl = mGroup.readEntry(idxString + \
QLatin1String(VALUE_SUFFIX));
- mMap.insert(keyUrl, valueUrl);
+ QVariant keyUrl = mGroup.readEntry(key, QVariant());
+ QVariant valueUrl = mGroup.readEntry(idxString + \
QLatin1String(VALUE_SUFFIX), QVariant()); + mMap.insert(keyUrl.toUrl(), \
valueUrl.toUrl()); }
}
void write()
{
mGroup.deleteGroup();
- QMap<KUrl, KUrl>::ConstIterator it = mMap.constBegin(), end = \
mMap.constEnd(); + QMap<QUrl, QUrl>::ConstIterator it = mMap.constBegin(), end \
= mMap.constEnd(); int idx = 0;
for (; it != end; ++it, ++idx) {
QString idxString = QString::number(idx);
- mGroup.writeEntry(idxString + QLatin1String(KEY_SUFFIX), \
it.key().url());
- mGroup.writeEntry(idxString + QLatin1String(VALUE_SUFFIX), \
it.value().url()); + mGroup.writeEntry(idxString + \
QLatin1String(KEY_SUFFIX), QVariant(it.key())); + \
mGroup.writeEntry(idxString + QLatin1String(VALUE_SUFFIX), QVariant(it.value())); }
mGroup.sync();
}
@@ -92,16 +92,16 @@ void SerializedUrlMap::setConfigGroup(const KConfigGroup& group)
d->read();
}
-KUrl SerializedUrlMap::value(const KUrl& key_) const
+QUrl SerializedUrlMap::value(const QUrl& key_) const
{
- QString pass = key_.pass();
- KUrl key = stripPass(key_);
- KUrl url = d->mMap.value(key);
- url.setPass(pass);
+ QString pass = key_.password();
+ QUrl key = stripPass(key_);
+ QUrl url = d->mMap.value(key);
+ url.setPassword(pass);
return url;
}
-void SerializedUrlMap::insert(const KUrl& key, const KUrl& value)
+void SerializedUrlMap::insert(const QUrl& key, const QUrl& value)
{
d->mMap.insert(stripPass(key), stripPass(value));
d->write();
diff --git a/importer/serializedurlmap.h b/importer/serializedurlmap.h
index d15918d..b50927e 100644
--- a/importer/serializedurlmap.h
+++ b/importer/serializedurlmap.h
@@ -28,14 +28,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA // Qt
class KConfigGroup;
-class KUrl;
+class QUrl;
namespace Gwenview
{
struct SerializedUrlMapPrivate;
/**
- * A map-like KUrl=>KUrl object, serialized in a KConfigGroup
+ * A map-like QUrl=>QUrl object, serialized in a KConfigGroup
*/
class SerializedUrlMap
{
@@ -45,9 +45,9 @@ public:
void setConfigGroup(const KConfigGroup&);
- KUrl value(const KUrl&) const;
+ QUrl value(const QUrl&) const;
- void insert(const KUrl& key, const KUrl& value);
+ void insert(const QUrl& key, const QUrl& value);
private:
SerializedUrlMapPrivate* const d;
diff --git a/importer/thumbnailpage.cpp b/importer/thumbnailpage.cpp
index 31e1d7f..bd7c7ad 100644
--- a/importer/thumbnailpage.cpp
+++ b/importer/thumbnailpage.cpp
@@ -19,9 +19,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA
*/
// Self
-#include "thumbnailpage.moc"
+#include "thumbnailpage.h"
// Qt
+#include <QDir>
+#include <QIcon>
#include <QPushButton>
#include <QTreeView>
@@ -32,6 +34,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA #include <KDirModel>
#include <KIconLoader>
#include <KIO/NetAccess>
+#include <kio/global.h>
#include <kmodelindexproxymapper.h>
// Local
@@ -66,10 +69,10 @@ public:
void showContextMenu(QWidget*)
{}
- void showMenuForUrlDroppedOnViewport(QWidget*, const KUrl::List&)
+ void showMenuForUrlDroppedOnViewport(QWidget*, const QList<QUrl>&)
{}
- void showMenuForUrlDroppedOnDir(QWidget*, const KUrl::List&, const KUrl&)
+ void showMenuForUrlDroppedOnDir(QWidget*, const QList<QUrl>&, const QUrl&)
{}
};
@@ -83,10 +86,10 @@ struct ThumbnailPagePrivate : public Ui_ThumbnailPage
ThumbnailPage* q;
SerializedUrlMap mUrlMap;
- KIcon mSrcBaseIcon;
+ QIcon mSrcBaseIcon;
QString mSrcBaseName;
- KUrl mSrcBaseUrl;
- KUrl mSrcUrl;
+ QUrl mSrcBaseUrl;
+ QUrl mSrcUrl;
KModelIndexProxyMapper* mSrcUrlModelProxyMapper;
RecursiveDirModel* mRecursiveDirModel;
@@ -96,7 +99,7 @@ struct ThumbnailPagePrivate : public Ui_ThumbnailPage
QPushButton* mImportSelectedButton;
QPushButton* mImportAllButton;
- KUrl::List mUrlList;
+ QList<QUrl> mUrlList;
void setupDirModel()
{
@@ -206,23 +209,23 @@ struct ThumbnailPagePrivate : public Ui_ThumbnailPage
q, SIGNAL(rejected()));
}
- KUrl urlForBaseUrl() const
+ QUrl urlForBaseUrl() const
{
- KUrl url = mUrlMap.value(mSrcBaseUrl);
+ QUrl url = mUrlMap.value(mSrcBaseUrl);
if (!url.isValid()) {
- return KUrl();
+ return QUrl();
}
KIO::UDSEntry entry;
bool ok = KIO::NetAccess::stat(url, entry, q);
if (!ok) {
- return KUrl();
+ return QUrl();
}
KFileItem item(entry, url, true /* delayedMimeTypes */);
- return item.isDir() ? url : KUrl();
+ return item.isDir() ? url : QUrl();
}
- void rememberUrl(const KUrl& url)
+ void rememberUrl(const QUrl& url)
{
mUrlMap.insert(mSrcBaseUrl, url);
}
@@ -248,38 +251,40 @@ ThumbnailPage::~ThumbnailPage()
delete d;
}
-void ThumbnailPage::setSourceUrl(const KUrl& srcBaseUrl, const QString& iconName, \
const QString& name) +void ThumbnailPage::setSourceUrl(const QUrl& srcBaseUrl, const \
QString& iconName, const QString& name) {
- d->mSrcBaseIcon = KIcon(iconName);
+ d->mSrcBaseIcon = QIcon(iconName);
d->mSrcBaseName = name;
const int size = KIconLoader::SizeHuge;
d->mSrcIconLabel->setPixmap(d->mSrcBaseIcon.pixmap(size));
d->mSrcBaseUrl = srcBaseUrl;
- d->mSrcBaseUrl.adjustPath(KUrl::AddTrailingSlash);
- KUrl url = d->urlForBaseUrl();
+ if (!d->mSrcBaseUrl.path().endsWith('/')) {
+ d->mSrcBaseUrl.setPath(d->mSrcBaseUrl.path() + '/');
+ }
+ QUrl url = d->urlForBaseUrl();
if (url.isValid()) {
openUrl(url);
} else {
DocumentDirFinder* finder = new DocumentDirFinder(srcBaseUrl);
- connect(finder, SIGNAL(done(KUrl,DocumentDirFinder::Status)),
- SLOT(slotDocumentDirFinderDone(KUrl,DocumentDirFinder::Status)));
+ connect(finder, SIGNAL(done(QUrl,DocumentDirFinder::Status)),
+ SLOT(slotDocumentDirFinderDone(QUrl,DocumentDirFinder::Status)));
finder->start();
}
}
-void ThumbnailPage::slotDocumentDirFinderDone(const KUrl& url, \
DocumentDirFinder::Status /*status*/) +void \
ThumbnailPage::slotDocumentDirFinderDone(const QUrl& url, DocumentDirFinder::Status \
/*status*/) {
d->rememberUrl(url);
openUrl(url);
}
-void ThumbnailPage::openUrl(const KUrl& url)
+void ThumbnailPage::openUrl(const QUrl& url)
{
d->mSrcUrl = url;
- QString path = KUrl::relativeUrl(d->mSrcBaseUrl, d->mSrcUrl);
+ QString path = QDir(d->mSrcBaseUrl.path()).relativeFilePath(d->mSrcUrl.path());
QString text;
if (path.isEmpty() || path == "./") {
text = d->mSrcBaseName;
@@ -292,17 +297,17 @@ void ThumbnailPage::openUrl(const KUrl& url)
d->mRecursiveDirModel->setUrl(url);
}
-KUrl::List ThumbnailPage::urlList() const
+QList<QUrl> ThumbnailPage::urlList() const
{
return d->mUrlList;
}
-void ThumbnailPage::setDestinationUrl(const KUrl& url)
+void ThumbnailPage::setDestinationUrl(const QUrl& url)
{
d->mDstUrlRequester->setUrl(url);
}
-KUrl ThumbnailPage::destinationUrl() const
+QUrl ThumbnailPage::destinationUrl() const
{
return d->mDstUrlRequester->url();
}
@@ -355,7 +360,7 @@ void ThumbnailPage::showConfigDialog()
class OnlyBaseUrlProxyModel : public QSortFilterProxyModel
{
public:
- OnlyBaseUrlProxyModel(const KUrl& url, const KIcon& icon, const QString& name, \
QObject* parent) + OnlyBaseUrlProxyModel(const QUrl& url, const QIcon& icon, const \
QString& name, QObject* parent) : QSortFilterProxyModel(parent)
, mUrl(url)
, mIcon(icon)
@@ -369,7 +374,7 @@ public:
}
QModelIndex index = sourceModel()->index(sourceRow, 0);
KFileItem item = itemForIndex(index);
- return item.url().equals(mUrl, KUrl::CompareWithoutTrailingSlash);
+ return item.url().matches(mUrl, QUrl::StripTrailingSlash);
}
QVariant data(const QModelIndex& index, int role) const // reimp
@@ -383,15 +388,15 @@ public:
case Qt::DecorationRole:
return mIcon;
case Qt::ToolTipRole:
- return mUrl.pathOrUrl();
+ return mUrl.toDisplayString(QUrl::PreferLocalFile);
default:
return QSortFilterProxyModel::data(index, role);
}
}
private:
- KUrl mUrl;
- KIcon mIcon;
+ QUrl mUrl;
+ QIcon mIcon;
QString mName;
};
@@ -403,7 +408,7 @@ void ThumbnailPage::setupSrcUrlTreeView()
}
KDirModel* dirModel = new KDirModel(this);
dirModel->dirLister()->setDirOnlyMode(true);
- dirModel->dirLister()->openUrl(d->mSrcBaseUrl.upUrl());
+ dirModel->dirLister()->openUrl(KIO::upUrl(d->mSrcBaseUrl));
OnlyBaseUrlProxyModel* onlyBaseUrlModel = new \
OnlyBaseUrlProxyModel(d->mSrcBaseUrl, d->mSrcBaseIcon, d->mSrcBaseName, this); \
onlyBaseUrlModel->setSourceModel(dirModel); @@ -447,7 +452,7 @@ void \
ThumbnailPage::openUrlFromIndex(const QModelIndex& index) if (item.isNull()) {
return;
}
- KUrl url = item.url();
+ QUrl url = item.url();
d->rememberUrl(url);
openUrl(url);
}
diff --git a/importer/thumbnailpage.h b/importer/thumbnailpage.h
index 4f74482..95d5006 100644
--- a/importer/thumbnailpage.h
+++ b/importer/thumbnailpage.h
@@ -23,10 +23,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA \
02110-1301, USA
// Qt
#include <QModelIndex>
+#include <QUrl>
#include <QWidget>
// KDE
-#include <KUrl>
// Local
#include "documentdirfinder.h"
@@ -46,12 +46,12 @@ public:
* Returns the list of urls to import
* Only valid after importRequested() has been emitted
*/
- KUrl::List urlList() const;
+ QList<QUrl> urlList() const;
- KUrl destinationUrl() const;
- void setDestinationUrl(const KUrl&);
+ QUrl destinationUrl() const;
+ void setDestinationUrl(const QUrl&);
- void setSourceUrl(const KUrl&, const QString& icon, const QString& label);
+ void setSourceUrl(const QUrl&, const QString& icon, const QString& label);
Q_SIGNALS:
void importRequested();
@@ -61,8 +61,8 @@ private Q_SLOTS:
void slotImportSelected();
void slotImportAll();
void updateImportButtons();
- void openUrl(const KUrl&);
- void slotDocumentDirFinderDone(const KUrl& url, DocumentDirFinder::Status \
status); + void openUrl(const QUrl&);
+ void slotDocumentDirFinderDone(const QUrl& url, DocumentDirFinder::Status \
status); void showConfigDialog();
void openUrlFromIndex(const QModelIndex& index);
void setupSrcUrlTreeView();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic