Merge lp:~carlos-mazieri/ubuntu-filemanager-app/new-protocols-support-02 into lp:ubuntu-filemanager-app

Proposed by Carlos Jose Mazieri
Status: Merged
Approved by: Carlos Jose Mazieri
Approved revision: 514
Merged at revision: 515
Proposed branch: lp:~carlos-mazieri/ubuntu-filemanager-app/new-protocols-support-02
Merge into: lp:ubuntu-filemanager-app
Prerequisite: lp:~carlos-mazieri/ubuntu-filemanager-app/new-protocols-support-01
Diff against target: 371 lines (+154/-58)
9 files modified
src/plugin/folderlistmodel/disk/disklocation.cpp (+3/-1)
src/plugin/folderlistmodel/disk/disklocation.h (+2/-1)
src/plugin/folderlistmodel/location.h (+3/-1)
src/plugin/folderlistmodel/locationitemdiriterator.cpp (+53/-13)
src/plugin/folderlistmodel/locationitemdiriterator.h (+41/-8)
src/plugin/folderlistmodel/smb/qsambaclient/src/smblocationdiriterator.cpp (+28/-24)
src/plugin/folderlistmodel/smb/qsambaclient/src/smblocationdiriterator.h (+19/-7)
src/plugin/folderlistmodel/smb/smblocation.cpp (+3/-2)
src/plugin/folderlistmodel/smb/smblocation.h (+2/-1)
To merge this branch: bzr merge lp:~carlos-mazieri/ubuntu-filemanager-app/new-protocols-support-02
Reviewer Review Type Date Requested Status
Jenkins Bot continuous-integration Approve
Arto Jalkanen Approve
Review via email: mp+280388@code.launchpad.net

Commit message

LocationItemDirIterator descendants classes now perform the loading inside the constructor according to the new constructor flag LocationItemDirIterator::LoadMode.
LocationItemDirIterator::LoadLater allows LocationItemDirIterator::load() be called later, that is how Network Locations should put the loading inside the secondary thread specific for loading.
For Disk loading, that means in DiskLocationItemDirIterator class it was not implemented because QDir is used directly inside the secondary thread.

Description of the change

LocationItemDirIterator descendants classes now perform the loading inside the constructor according to the new constructor flag LocationItemDirIterator::LoadMode.
LocationItemDirIterator::LoadLater allows LocationItemDirIterator::load() be called later, that is how Network Locations should put the loading inside the secondary thread specific for loading.
For Disk loading, that means in DiskLocationItemDirIterator class it was not implemented because QDir is used directly inside the secondary thread.

To post a comment you must log in.
Revision history for this message
Jenkins Bot (ubuntu-core-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Arto Jalkanen (ajalkane) wrote :

Some spelling mistakes in comments

review: Approve
Revision history for this message
Carlos Jose Mazieri (carlos-mazieri) wrote :

I will fix that, thanks.

Revision history for this message
Jenkins Bot (ubuntu-core-apps-jenkins-bot) wrote :

FAILED: Autolanding.
Unapproved changes made after approval.
https://core-apps-jenkins.ubuntu.com/job/filemanager-app-autolanding/22/
Executed test runs:
    None: https://core-apps-jenkins.ubuntu.com/job/generic-land-mp/1444/console

review: Needs Fixing (continuous-integration)
Revision history for this message
Jenkins Bot (ubuntu-core-apps-jenkins-bot) :
review: Approve (continuous-integration)
Revision history for this message
Jenkins Bot (ubuntu-core-apps-jenkins-bot) wrote :

FAILED: Autolanding.
Approved revid is not set in launchpad. This is most likely a launchpad issue and re-approve should fix it. There is also a chance (although a very small one) this is a permission problem of the ps-jenkins bot.
https://core-apps-jenkins.ubuntu.com/job/filemanager-app-autolanding/23/
Executed test runs:
    None: https://core-apps-jenkins.ubuntu.com/job/generic-land-mp/1445/console

review: Needs Fixing (continuous-integration)
Revision history for this message
Jenkins Bot (ubuntu-core-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Jenkins Bot (ubuntu-core-apps-jenkins-bot) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/plugin/folderlistmodel/disk/disklocation.cpp'
--- src/plugin/folderlistmodel/disk/disklocation.cpp 2015-12-08 16:55:41 +0000
+++ src/plugin/folderlistmodel/disk/disklocation.cpp 2016-01-11 22:26:42 +0000
@@ -192,8 +192,10 @@
192LocationItemDirIterator *192LocationItemDirIterator *
193DiskLocation::newDirIterator(const QString &path,193DiskLocation::newDirIterator(const QString &path,
194 QDir::Filters filters,194 QDir::Filters filters,
195 QDirIterator::IteratorFlags flags)195 QDirIterator::IteratorFlags flags,
196 LocationItemDirIterator::LoadMode loadmode)
196{197{
198 Q_UNUSED(loadmode);
197 return new DiskLocationItemDirIterator(path, filters, flags);199 return new DiskLocationItemDirIterator(path, filters, flags);
198}200}
199201
200202
=== modified file 'src/plugin/folderlistmodel/disk/disklocation.h'
--- src/plugin/folderlistmodel/disk/disklocation.h 2015-12-08 16:55:41 +0000
+++ src/plugin/folderlistmodel/disk/disklocation.h 2016-01-11 22:26:42 +0000
@@ -65,7 +65,8 @@
65 const bool isRecursive);65 const bool isRecursive);
66 virtual LocationItemDirIterator * newDirIterator(const QString & path,66 virtual LocationItemDirIterator * newDirIterator(const QString & path,
67 QDir::Filters filters,67 QDir::Filters filters,
68 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags);68 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags,
69 LocationItemDirIterator::LoadMode loadmode = LocationItemDirIterator::LoadOnConstructor);
69 virtual LocationItemFile * newFile(const QString & path);70 virtual LocationItemFile * newFile(const QString & path);
70 virtual LocationItemDir * newDir(const QString & dir = QLatin1String(0));71 virtual LocationItemDir * newDir(const QString & dir = QLatin1String(0));
71 virtual bool isThereDiskSpace(const QString& pathname, qint64 requiredSize);72 virtual bool isThereDiskSpace(const QString& pathname, qint64 requiredSize);
7273
=== modified file 'src/plugin/folderlistmodel/location.h'
--- src/plugin/folderlistmodel/location.h 2015-12-08 16:55:41 +0000
+++ src/plugin/folderlistmodel/location.h 2016-01-11 22:26:42 +0000
@@ -23,6 +23,7 @@
23#define LOCATION_H23#define LOCATION_H
2424
25#include "diriteminfo.h"25#include "diriteminfo.h"
26#include "locationitemdiriterator.h"
2627
27#include <QObject>28#include <QObject>
28#include <QDirIterator>29#include <QDirIterator>
@@ -124,7 +125,8 @@
124 */125 */
125 virtual LocationItemDirIterator * newDirIterator(const QString & path,126 virtual LocationItemDirIterator * newDirIterator(const QString & path,
126 QDir::Filters filters,127 QDir::Filters filters,
127 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags) = 0;128 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags,
129 LocationItemDirIterator::LoadMode loadmode = LocationItemDirIterator::LoadOnConstructor) = 0;
128 /*!130 /*!
129 * \brief newFile() creates a LocationItemFile object which is similar to Qt QFile object131 * \brief newFile() creates a LocationItemFile object which is similar to Qt QFile object
130 *132 *
131133
=== modified file 'src/plugin/folderlistmodel/locationitemdiriterator.cpp'
--- src/plugin/folderlistmodel/locationitemdiriterator.cpp 2015-03-01 15:32:42 +0000
+++ src/plugin/folderlistmodel/locationitemdiriterator.cpp 2016-01-11 22:26:42 +0000
@@ -21,19 +21,40 @@
2121
22#include "locationitemdiriterator.h"22#include "locationitemdiriterator.h"
2323
24LocationItemDirIterator::LocationItemDirIterator(const QString &, const QStringList &, QDir::Filters, QDirIterator::IteratorFlags )24LocationItemDirIterator::LocationItemDirIterator(const QString &path,
25{25 const QStringList &nameFilters,
26}26 QDir::Filters filters,
2727 QDirIterator::IteratorFlags flags,
2828 LocationItemDirIterator::LoadMode loadmode)
29LocationItemDirIterator::LocationItemDirIterator(const QString &, QDir::Filters , QDirIterator::IteratorFlags)29 : m_path(path)
30{30 , m_nameFilters(nameFilters)
3131 , m_filters(filters)
32}32 , m_flags(flags)
3333
34LocationItemDirIterator::LocationItemDirIterator(const QString &, QDirIterator::IteratorFlags )34{
35{35 Q_UNUSED(loadmode);
3636}
37
38
39LocationItemDirIterator::LocationItemDirIterator(const QString &path,
40 QDir::Filters filters,
41 QDirIterator::IteratorFlags flags,
42 LocationItemDirIterator::LoadMode loadmode)
43 : m_path(path)
44 , m_filters(filters)
45 , m_flags(flags)
46{
47 Q_UNUSED(loadmode);
48}
49
50LocationItemDirIterator::LocationItemDirIterator(const QString &path,
51 QDirIterator::IteratorFlags flags,
52 LocationItemDirIterator::LoadMode loadmode)
53 : m_path(path)
54 , m_filters(QDir::NoFilter)
55 , m_flags(flags)
56{
57 Q_UNUSED(loadmode);
37}58}
3859
39LocationItemDirIterator::~LocationItemDirIterator()60LocationItemDirIterator::~LocationItemDirIterator()
@@ -42,3 +63,22 @@
42}63}
4364
4465
66QDirIterator::IteratorFlags LocationItemDirIterator::flags() const
67{
68 return m_flags;
69}
70
71QDir::Filters LocationItemDirIterator::filters() const
72{
73 return m_filters;
74}
75
76QString LocationItemDirIterator::path() const
77{
78 return m_path;
79}
80
81void LocationItemDirIterator::load()
82{
83 //default implementation does nothing
84}
4585
=== modified file 'src/plugin/folderlistmodel/locationitemdiriterator.h'
--- src/plugin/folderlistmodel/locationitemdiriterator.h 2015-03-01 15:32:42 +0000
+++ src/plugin/folderlistmodel/locationitemdiriterator.h 2016-01-11 22:26:42 +0000
@@ -29,14 +29,22 @@
29 * \brief The LocationItemDirIterator class is an abstract similar to Qt QDirIterator29 * \brief The LocationItemDirIterator class is an abstract similar to Qt QDirIterator
30 *30 *
31 * Different protocols supported by filemanager (different Locations) must provide a class like that.31 * Different protocols supported by filemanager (different Locations) must provide a class like that.
32 *
33 * The \ref LoadLater can used in the constructor to indicate to the constructor to NOT load the path/url, instead \ref load() can called later to do that.
32 */34 */
3335
34class LocationItemDirIterator36class LocationItemDirIterator
35{37{
36public:38public:
39 enum LoadMode
40 {
41 LoadOnConstructor, //!< loads the entire directory or url in the constructor as Qt QDirIterator does
42 LoadLater //!< do NOT load the entire directory or url, \ref load() method should be responsible to do that.
43 };
44
37 virtual ~LocationItemDirIterator();45 virtual ~LocationItemDirIterator();
38public:46public:
39 virtual bool hasNext() const = 0;47 virtual bool hasNext() const = 0;
40 virtual QString next() = 0;48 virtual QString next() = 0;
4149
42 virtual DirItemInfo fileInfo() const = 0;50 virtual DirItemInfo fileInfo() const = 0;
@@ -50,18 +58,43 @@
50 * \brief filePath()58 * \brief filePath()
51 * \return the full pathname of the current item59 * \return the full pathname of the current item
52 */60 */
53 virtual QString filePath() const = 0;61 virtual QString filePath() const = 0;
5462
55 /*!63 /*!
56 * \brief path()64 * \brief path()
57 * \return the base directory of the iterator path (not the current item)65 * \return the base directory of the iterator path (not the current item)
58 */66 */
59 virtual QString path() const = 0;67 virtual QString path() const;
6068
61protected:69 /*!
62 LocationItemDirIterator(const QString & path, QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags);70 * \brief load() responsible to load the entire directory or url when \ref LoadLater is passed to the constructor
63 LocationItemDirIterator(const QString & path, QDir::Filters filters, QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags);71 */
64 LocationItemDirIterator(const QString & path, const QStringList & nameFilters, QDir::Filters filters = QDir::NoFilter, QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags);72 virtual void load() ;
73
74 QDir::Filters filters() const;
75 QDirIterator::IteratorFlags flags() const;
76
77protected:
78 LocationItemDirIterator(const QString & path,
79 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags,
80 LocationItemDirIterator::LoadMode loadmode = LocationItemDirIterator::LoadOnConstructor);
81
82 LocationItemDirIterator(const QString & path,
83 QDir::Filters filters,
84 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags,
85 LocationItemDirIterator::LoadMode loadmode = LocationItemDirIterator::LoadOnConstructor);
86
87 LocationItemDirIterator(const QString & path,
88 const QStringList & nameFilters,
89 QDir::Filters filters = QDir::NoFilter,
90 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags,
91 LocationItemDirIterator::LoadMode loadmode = LocationItemDirIterator::LoadOnConstructor);
92
93protected:
94 QString m_path;
95 QStringList m_nameFilters;
96 QDir::Filters m_filters;
97 QDirIterator::IteratorFlags m_flags;
65};98};
6699
67100
68101
=== modified file 'src/plugin/folderlistmodel/smb/qsambaclient/src/smblocationdiriterator.cpp'
--- src/plugin/folderlistmodel/smb/qsambaclient/src/smblocationdiriterator.cpp 2015-07-13 20:41:48 +0000
+++ src/plugin/folderlistmodel/smb/qsambaclient/src/smblocationdiriterator.cpp 2016-01-11 22:26:42 +0000
@@ -32,35 +32,44 @@
32 const QStringList &nameFilters,32 const QStringList &nameFilters,
33 QDir::Filters filters,33 QDir::Filters filters,
34 QDirIterator::IteratorFlags flags,34 QDirIterator::IteratorFlags flags,
35 Const_SmbUtil_Ptr smb)35 Const_SmbUtil_Ptr smb,
36 : LocationItemDirIterator(path, nameFilters, filters, flags)36 LocationItemDirIterator::LoadMode loadmode)
37 : LocationItemDirIterator(path, nameFilters, filters, flags, loadmode)
37 , INIT_ATTR(path, smb)38 , INIT_ATTR(path, smb)
38{39{
39 bool recursive = flags == QDirIterator::Subdirectories ? true : false;40 if (loadmode == LocationItemDirIterator::LoadOnConstructor)
40 m_urlItems = smbObj()->listContent(path, recursive, filters, nameFilters);41 {
42 load();
43 }
41}44}
4245
4346
44SmbLocationDirIterator::SmbLocationDirIterator(const QString &path,47SmbLocationDirIterator::SmbLocationDirIterator(const QString &path,
45 QDir::Filters filters,48 QDir::Filters filters,
46 QDirIterator::IteratorFlags flags,49 QDirIterator::IteratorFlags flags,
47 Const_SmbUtil_Ptr smb)50 Const_SmbUtil_Ptr smb,
48 : LocationItemDirIterator(path,filters,flags)51 LocationItemDirIterator::LoadMode loadmode)
52 : LocationItemDirIterator(path,filters,flags, loadmode)
49 , INIT_ATTR(path, smb)53 , INIT_ATTR(path, smb)
50{54{
51 bool recursive = flags == QDirIterator::Subdirectories ? true : false;55 if (loadmode == LocationItemDirIterator::LoadOnConstructor)
52 m_urlItems = smbObj()->listContent(path, recursive, filters);56 {
57 load();
58 }
53}59}
5460
5561
56SmbLocationDirIterator::SmbLocationDirIterator(const QString &path,62SmbLocationDirIterator::SmbLocationDirIterator(const QString &path,
57 QDirIterator::IteratorFlags flags,63 QDirIterator::IteratorFlags flags,
58 Const_SmbUtil_Ptr smb)64 Const_SmbUtil_Ptr smb,
59 : LocationItemDirIterator(path,flags)65 LocationItemDirIterator::LoadMode loadmode)
66 : LocationItemDirIterator(path,flags, loadmode)
60 , INIT_ATTR(path, smb)67 , INIT_ATTR(path, smb)
61{68{
62 bool recursive = flags == QDirIterator::Subdirectories ? true : false;69 if (loadmode == LocationItemDirIterator::LoadOnConstructor)
63 m_urlItems = smbObj()->listContent(path, recursive, QDir::NoFilter);70 {
71 load();
72 }
64}73}
6574
6675
@@ -113,18 +122,6 @@
113}122}
114123
115124
116QString SmbLocationDirIterator::path() const
117{
118 QString ret;
119 QStringList separated = UrlItemInfo::separatePathFilename(cleanUrl());
120 if (separated.count() > 0)
121 {
122 ret = separated.at(0);
123 }
124 return ret;
125}
126
127
128QString SmbLocationDirIterator::filePath() const125QString SmbLocationDirIterator::filePath() const
129{126{
130 QString fullpathname;127 QString fullpathname;
@@ -134,3 +131,10 @@
134 }131 }
135 return fullpathname;132 return fullpathname;
136}133}
134
135
136void SmbLocationDirIterator::load()
137{
138 bool recursive = m_flags == QDirIterator::Subdirectories ? true : false;
139 m_urlItems = smbObj()->listContent(path(), recursive, m_filters, m_nameFilters);
140}
137141
=== modified file 'src/plugin/folderlistmodel/smb/qsambaclient/src/smblocationdiriterator.h'
--- src/plugin/folderlistmodel/smb/qsambaclient/src/smblocationdiriterator.h 2015-05-20 16:18:07 +0000
+++ src/plugin/folderlistmodel/smb/qsambaclient/src/smblocationdiriterator.h 2016-01-11 22:26:42 +0000
@@ -32,14 +32,26 @@
32public:32public:
33 virtual DirItemInfo fileInfo() const;33 virtual DirItemInfo fileInfo() const;
34 virtual QString fileName() const;34 virtual QString fileName() const;
35 virtual QString filePath() const;35 virtual QString filePath() const;
36 virtual bool hasNext() const;36 virtual bool hasNext() const;
37 virtual QString next() ;37 virtual QString next() ;
38 virtual QString path() const;38 virtual void load();
39public:39public:
40 SmbLocationDirIterator(const QString & path, QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags, Const_SmbUtil_Ptr smb = 0);40 SmbLocationDirIterator(const QString & path,
41 SmbLocationDirIterator(const QString & path, QDir::Filters filters, QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags, Const_SmbUtil_Ptr smb = 0);41 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags,
42 SmbLocationDirIterator(const QString & path, const QStringList & nameFilters, QDir::Filters filters = QDir::NoFilter, QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags, Const_SmbUtil_Ptr smb = 0);42 Const_SmbUtil_Ptr smb = 0,
43 LocationItemDirIterator::LoadMode loadmode = LocationItemDirIterator::LoadOnConstructor);
44
45 SmbLocationDirIterator(const QString & path, QDir::Filters filters,
46 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags,
47 Const_SmbUtil_Ptr smb = 0,
48 LocationItemDirIterator::LoadMode loadmode = LocationItemDirIterator::LoadOnConstructor);
49
50 SmbLocationDirIterator(const QString & path, const QStringList & nameFilters,
51 QDir::Filters filters = QDir::NoFilter,
52 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags,
53 Const_SmbUtil_Ptr smb = 0,
54 LocationItemDirIterator::LoadMode loadmode = LocationItemDirIterator::LoadOnConstructor);
43private:55private:
44 QStringList m_urlItems;56 QStringList m_urlItems;
45 int m_curItem;57 int m_curItem;
4658
=== modified file 'src/plugin/folderlistmodel/smb/smblocation.cpp'
--- src/plugin/folderlistmodel/smb/smblocation.cpp 2015-12-08 16:55:41 +0000
+++ src/plugin/folderlistmodel/smb/smblocation.cpp 2016-01-11 22:26:42 +0000
@@ -111,9 +111,10 @@
111LocationItemDirIterator *111LocationItemDirIterator *
112SmbLocation::newDirIterator(const QString &path,112SmbLocation::newDirIterator(const QString &path,
113 QDir::Filters filters,113 QDir::Filters filters,
114 QDirIterator::IteratorFlags flags)114 QDirIterator::IteratorFlags flags,
115 LocationItemDirIterator::LoadMode loadmode)
115{116{
116 return new SmbLocationDirIterator(path, filters, flags, m_smb);117 return new SmbLocationDirIterator(path, filters, flags, m_smb, loadmode);
117}118}
118119
119120
120121
=== modified file 'src/plugin/folderlistmodel/smb/smblocation.h'
--- src/plugin/folderlistmodel/smb/smblocation.h 2015-12-08 16:55:41 +0000
+++ src/plugin/folderlistmodel/smb/smblocation.h 2016-01-11 22:26:42 +0000
@@ -41,7 +41,8 @@
41 const bool isRecursive);41 const bool isRecursive);
42 virtual LocationItemDirIterator * newDirIterator(const QString & path,42 virtual LocationItemDirIterator * newDirIterator(const QString & path,
43 QDir::Filters filters,43 QDir::Filters filters,
44 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags);44 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags,
45 LocationItemDirIterator::LoadMode loadmode = LocationItemDirIterator::LoadOnConstructor);
45 virtual LocationItemFile * newFile(const QString & path); 46 virtual LocationItemFile * newFile(const QString & path);
46 virtual LocationItemDir * newDir(const QString & dir = QLatin1String(0));47 virtual LocationItemDir * newDir(const QString & dir = QLatin1String(0));
47 virtual bool isThereDiskSpace(const QString& pathname, qint64 requiredSize);48 virtual bool isThereDiskSpace(const QString& pathname, qint64 requiredSize);

Subscribers

People subscribed via source and target branches