QGIS API Documentation 4.0.0-Norrköping (1ddcee3d0e4)
Loading...
Searching...
No Matches
qgscptcityarchive.h
Go to the documentation of this file.
1/***************************************************************************
2 qgscptcityarchive.h
3 ---------------------
4 begin : August 2012
5 copyright : (C) 2009 by Martin Dobias
6 copyright : (C) 2012 by Etienne Tourigny
7 email : etourigny.dev at gmail.com
8 ***************************************************************************
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 ***************************************************************************/
16
17#ifndef QGSCPTCITYARCHIVE_H
18#define QGSCPTCITYARCHIVE_H
19
20#include "qgis.h"
21#include "qgis_core.h"
22#include "qgis_sip.h"
23#include "qgscolorrampimpl.h"
24
25#include <QAbstractItemModel>
26#include <QIcon>
27#include <QMimeData>
28
32
33#define DEFAULT_CPTCITY_ARCHIVE "cpt-city-qgis-min"
34
40class CORE_EXPORT QgsCptCityArchive
41{
42 public:
43 QgsCptCityArchive( const QString &archiveName = DEFAULT_CPTCITY_ARCHIVE, const QString &baseDir = QString() );
45
46 QgsCptCityArchive( const QgsCptCityArchive &rh ) = delete;
48
49 // basic dir info
50 QString baseDir() const;
51 static QString baseDir( QString archiveName );
52 static QString defaultBaseDir();
53 void setBaseDir( const QString &dirName ) { mBaseDir = dirName; }
54
55 // collection + selection info
56 QString copyingFileName( const QString &dirName ) const;
57 QString descFileName( const QString &dirName ) const;
58 static QString findFileName( const QString &target, const QString &startDir, const QString &baseDir );
59 static QMap< QString, QString > copyingInfo( const QString &fileName );
60 static QMap< QString, QString > description( const QString &fileName );
62 static QMap< double, QPair<QColor, QColor> > gradientColorMap( const QString &fileName ) SIP_SKIP;
63
64 // archive management
66 bool isEmpty() const;
67 QString archiveName() const { return mArchiveName; }
68 static void initArchives( bool loadAll = false );
69 static void initArchive( const QString &archiveName, const QString &archiveBaseDir );
70 static void initDefaultArchive();
71 static void clearArchives();
72 static QgsCptCityArchive *defaultArchive();
73 static QMap< QString, QgsCptCityArchive * > archiveRegistry();
74
75 // items
76 QVector< QgsCptCityDataItem * > rootItems() const { return mRootItems; }
77 QVector< QgsCptCityDataItem * > selectionItems() const { return mSelectionItems; }
78
79 private:
80 QString mArchiveName;
81 QString mBaseDir;
82 // root items, namely directories at root of archive
83 QVector< QgsCptCityDataItem * > mRootItems;
84 QVector<QgsCptCityDataItem *> mSelectionItems;
85
86 private:
87#ifdef SIP_RUN
89#endif
90};
91
96class CORE_EXPORT QgsCptCityDataItem : public QObject
97{
98 Q_OBJECT
99 public:
108
109 QgsCptCityDataItem( QgsCptCityDataItem::Type type, QgsCptCityDataItem *parent, const QString &name, const QString &path );
110
111 bool hasChildren();
112
113 int rowCount();
114
118 virtual int leafCount() const;
119
120 //
121
122 virtual void refresh();
123
127 virtual QVector<QgsCptCityDataItem *> createChildren();
128
132 virtual void populate();
133
137 bool isPopulated() { return mPopulated; }
138
144 virtual void addChildItem( QgsCptCityDataItem *child SIP_TRANSFER, bool refresh = false );
145
149 virtual void deleteChildItem( QgsCptCityDataItem *child );
150
156 virtual QgsCptCityDataItem *removeChildItem( QgsCptCityDataItem *child ) SIP_TRANSFERBACK;
157
161 virtual bool equal( const QgsCptCityDataItem *other );
162
166 Q_DECL_DEPRECATED virtual QWidget *paramWidget() SIP_DEPRECATED { return nullptr; }
167
173 Q_DECL_DEPRECATED virtual bool acceptDrop() SIP_DEPRECATED { return false; }
174
180 Q_DECL_DEPRECATED virtual bool handleDrop( const QMimeData *data, Qt::DropAction action ) SIP_DEPRECATED
181 {
182 Q_UNUSED( data );
183 Q_UNUSED( action );
184 return false;
185 }
186
187 // static methods
188
192 static int findItem( QVector<QgsCptCityDataItem *> items, QgsCptCityDataItem *item );
193
194 // members
195
196 Type type() const { return mType; }
197 QgsCptCityDataItem *parent() const { return mParent; }
199 QVector<QgsCptCityDataItem *> children() const { return mChildren; }
200 virtual QIcon icon() { return mIcon; }
201 virtual QIcon icon( QSize size )
202 {
203 Q_UNUSED( size )
204 return icon();
205 }
206 QString name() const { return mName; }
207 QString path() const { return mPath; }
208 QString info() const { return mInfo; }
209 QString shortInfo() const { return mShortInfo; }
210
211 void setIcon( const QIcon &icon ) { mIcon = icon; }
212
213 void setToolTip( const QString &msg ) { mToolTip = msg; }
214 QString toolTip() const { return mToolTip; }
215
216 bool isValid() { return mValid; }
217
218 protected:
221 QVector<QgsCptCityDataItem *> mChildren; // easier to have it always
222 bool mPopulated = false;
223 QString mName;
224 QString mPath; // it is also used to identify item in tree
225 QString mInfo;
226 QString mShortInfo;
227 QString mToolTip;
228 QIcon mIcon;
229 bool mValid = true;
230
231 signals:
232
244 void beginInsertItems( QgsCptCityDataItem *parent, int first, int last );
245
254
266 void beginRemoveItems( QgsCptCityDataItem *parent, int first, int last );
267
276};
277
283{
284 Q_OBJECT
285 public:
286 QgsCptCityColorRampItem( QgsCptCityDataItem *parent, const QString &name, const QString &path, const QString &variantName = QString(), bool initialize = false );
287 QgsCptCityColorRampItem( QgsCptCityDataItem *parent, const QString &name, const QString &path, const QStringList &variantList, bool initialize = false );
288
289 // --- reimplemented from QgsCptCityDataItem ---
290
291 bool equal( const QgsCptCityDataItem *other ) override;
292 int leafCount() const override { return 1; }
293
294 // --- New virtual methods for layer item derived classes ---
295 const QgsCptCityColorRamp &ramp() const { return mRamp; }
296 QIcon icon() override;
297 QIcon icon( QSize size ) override;
298 void init();
299
300 protected:
303 QList< QIcon > mIcons;
304};
305
306
312{
313 Q_OBJECT
314 public:
315 QgsCptCityCollectionItem( QgsCptCityDataItem *parent, const QString &name, const QString &path );
316 ~QgsCptCityCollectionItem() override;
317
318 void setPopulated() { mPopulated = true; }
319 void addChild( QgsCptCityDataItem *item SIP_TRANSFER ) { mChildren.append( item ); }
320 QVector<QgsCptCityDataItem *> childrenRamps( bool recursive );
321
322 protected:
323 bool mPopulatedRamps = false;
324};
325
331{
332 Q_OBJECT
333 public:
334 QgsCptCityDirectoryItem( QgsCptCityDataItem *parent, const QString &name, const QString &path );
335
336 QVector<QgsCptCityDataItem *> createChildren() override;
337
338 bool equal( const QgsCptCityDataItem *other ) override;
339
340 static QgsCptCityDataItem *dataItem( QgsCptCityDataItem *parent, const QString &name, const QString &path );
341
342 protected:
343 QMap< QString, QStringList > rampsMap();
344 QStringList dirEntries() const;
345 QMap< QString, QStringList > mRampsMap;
346};
347
354{
355 Q_OBJECT
356 public:
357 QgsCptCitySelectionItem( QgsCptCityDataItem *parent, const QString &name, const QString &path );
358
359 QVector<QgsCptCityDataItem *> createChildren() override;
360
361 bool equal( const QgsCptCityDataItem *other ) override;
362
363 QStringList selectionsList() const { return mSelectionsList; }
364
365 protected:
366 void parseXml();
367 QStringList mSelectionsList;
368};
369
375{
376 Q_OBJECT
377 public:
378 QgsCptCityAllRampsItem( QgsCptCityDataItem *parent, const QString &name, const QVector<QgsCptCityDataItem *> &items );
379
380 QVector<QgsCptCityDataItem *> createChildren() override;
381
382 protected:
383 QVector<QgsCptCityDataItem *> mItems;
384};
385
391class CORE_EXPORT QgsCptCityBrowserModel : public QAbstractItemModel
392{
393 Q_OBJECT
394
395 public:
397 {
400 List = 2 // not used anymore
401 };
402
403 QgsCptCityBrowserModel( QObject *parent SIP_TRANSFERTHIS = nullptr, QgsCptCityArchive *archive = QgsCptCityArchive::defaultArchive(), ViewType Type = Authors );
404 ~QgsCptCityBrowserModel() override;
405
406 // implemented methods from QAbstractItemModel for read-only access
407 Qt::ItemFlags flags( const QModelIndex &index ) const override;
408 QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const override;
409 QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override;
410 int rowCount( const QModelIndex &parent = QModelIndex() ) const override;
411 int columnCount( const QModelIndex &parent = QModelIndex() ) const override;
412 QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const override;
413
414 QModelIndex findItem( QgsCptCityDataItem *item, QgsCptCityDataItem *parent = nullptr ) const;
415
416 QModelIndex parent( const QModelIndex &index ) const override;
417
421 QgsCptCityDataItem *dataItem( const QModelIndex &idx ) const;
422
423 bool hasChildren( const QModelIndex &parent = QModelIndex() ) const override;
424
426 void reload();
427
429 void refresh( const QString &path );
430
432 void refresh( const QModelIndex &index = QModelIndex() );
433
435 QModelIndex findPath( const QString &path );
436
437 void connectItem( QgsCptCityDataItem *item );
438
439 bool canFetchMore( const QModelIndex &parent ) const override;
440 void fetchMore( const QModelIndex &parent ) override;
441
442 public slots:
443
444 void beginInsertItems( QgsCptCityDataItem *parent, int first, int last );
445 void endInsertItems();
446 void beginRemoveItems( QgsCptCityDataItem *parent, int first, int last );
447 void endRemoveItems();
448
449 protected:
450 // populates the model
451 void addRootItems();
452 void removeRootItems();
453
454 QVector<QgsCptCityDataItem *> mRootItems;
458};
459
460// clazy:excludeall=qstring-allocations
461
462#endif
QgsCptCityAllRampsItem(QgsCptCityDataItem *parent, const QString &name, const QVector< QgsCptCityDataItem * > &items)
QVector< QgsCptCityDataItem * > mItems
QVector< QgsCptCityDataItem * > createChildren() override
Returns a vector of children items.
Represents a CPT City color scheme.
QString baseDir() const
static QString defaultBaseDir()
QVector< QgsCptCityDataItem * > rootItems() const
QString archiveName() const
static QgsCptCityArchive * defaultArchive()
QgsCptCityArchive & operator=(const QgsCptCityArchive &rh)=delete
void setBaseDir(const QString &dirName)
QgsCptCityArchive(const QString &archiveName=DEFAULT_CPTCITY_ARCHIVE, const QString &baseDir=QString())
QVector< QgsCptCityDataItem * > selectionItems() const
QgsCptCityArchive(const QgsCptCityArchive &rh)=delete
A custom item model for display of CPT City color palettes.
QgsCptCityArchive * mArchive
QgsCptCityBrowserModel(QObject *parent=nullptr, QgsCptCityArchive *archive=QgsCptCityArchive::defaultArchive(), ViewType Type=Authors)
QVector< QgsCptCityDataItem * > mRootItems
void addChild(QgsCptCityDataItem *item)
QgsCptCityCollectionItem(QgsCptCityDataItem *parent, const QString &name, const QString &path)
const QgsCptCityColorRamp & ramp() const
bool equal(const QgsCptCityDataItem *other) override
Returns true if this item is equal to an other item.
int leafCount() const override
Returns the total count of "leaf" items (all children which are end nodes).
QgsCptCityColorRampItem(QgsCptCityDataItem *parent, const QString &name, const QString &path, const QString &variantName=QString(), bool initialize=false)
QgsCptCityColorRamp mRamp
A color ramp from the CPT City collection.
Base class for all items in a QgsCptCityBrowserModel model.
QgsCptCityDataItem * parent() const
QString toolTip() const
void setToolTip(const QString &msg)
void beginRemoveItems(QgsCptCityDataItem *parent, int first, int last)
Emitted before child items are removed from this data item.
QString shortInfo() const
virtual Q_DECL_DEPRECATED bool acceptDrop()
Returns true if the item accepts drag & dropped layers - e.g.
virtual Q_DECL_DEPRECATED bool handleDrop(const QMimeData *data, Qt::DropAction action)
Tries to process the data dropped on this item.
void endRemoveItems()
Emitted after child items have been removed from this data item.
bool isPopulated()
Returns true if the item is already populated.
QVector< QgsCptCityDataItem * > mChildren
void endInsertItems()
Emitted after child items have been added to this data item.
void setParent(QgsCptCityDataItem *parent)
virtual Q_DECL_DEPRECATED QWidget * paramWidget()
virtual QIcon icon(QSize size)
QgsCptCityDataItem * mParent
void setIcon(const QIcon &icon)
QgsCptCityDataItem(QgsCptCityDataItem::Type type, QgsCptCityDataItem *parent, const QString &name, const QString &path)
QVector< QgsCptCityDataItem * > children() const
void beginInsertItems(QgsCptCityDataItem *parent, int first, int last)
Emitted before child items are added to this item.
QStringList dirEntries() const
static QgsCptCityDataItem * dataItem(QgsCptCityDataItem *parent, const QString &name, const QString &path)
QVector< QgsCptCityDataItem * > createChildren() override
Returns a vector of children items.
QgsCptCityDirectoryItem(QgsCptCityDataItem *parent, const QString &name, const QString &path)
QMap< QString, QStringList > mRampsMap
bool equal(const QgsCptCityDataItem *other) override
Returns true if this item is equal to an other item.
QMap< QString, QStringList > rampsMap()
A selection which contains subdirectories and color ramps for use in QgsCptCityBrowserModel.
QVector< QgsCptCityDataItem * > createChildren() override
Returns a vector of children items.
QgsCptCitySelectionItem(QgsCptCityDataItem *parent, const QString &name, const QString &path)
bool equal(const QgsCptCityDataItem *other) override
Returns true if this item is equal to an other item.
QStringList selectionsList() const
#define SIP_DEPRECATED
Definition qgis_sip.h:113
#define SIP_TRANSFERTHIS
Definition qgis_sip.h:52
#define SIP_SKIP
Definition qgis_sip.h:133
#define SIP_TRANSFER
Definition qgis_sip.h:35
#define SIP_TRANSFERBACK
Definition qgis_sip.h:47
#define DEFAULT_CPTCITY_ARCHIVE