QGIS API Documentation 4.1.0-Master (01362494303)
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
33
34#define DEFAULT_CPTCITY_ARCHIVE "cpt-city-qgis-min"
35
41class CORE_EXPORT QgsCptCityArchive
42{
43 public:
45
47
48 QgsCptCityArchive( const QString &archiveName = DEFAULT_CPTCITY_ARCHIVE, const QString &baseDir = QString() );
50
51 QgsCptCityArchive( const QgsCptCityArchive &rh ) = delete;
53
54 // basic dir info
55 QString baseDir() const;
56 static QString baseDir( QString archiveName );
57 static QString defaultBaseDir();
58 void setBaseDir( const QString &dirName ) { mBaseDir = dirName; }
59
60 // collection + selection info
61 QString copyingFileName( const QString &dirName ) const;
62 QString descFileName( const QString &dirName ) const;
63 static QString findFileName( const QString &target, const QString &startDir, const QString &baseDir );
64 static QMap< QString, QString > copyingInfo( const QString &fileName );
65 static QMap< QString, QString > description( const QString &fileName );
67 static QMap< double, QPair<QColor, QColor> > gradientColorMap( const QString &fileName ) SIP_SKIP;
68
69 // archive management
71 bool isEmpty() const;
72 QString archiveName() const { return mArchiveName; }
73 static void initArchives( bool loadAll = false );
74 static void initArchive( const QString &archiveName, const QString &archiveBaseDir );
75 static void initDefaultArchive();
76 static void clearArchives();
77 static QgsCptCityArchive *defaultArchive();
78 static QMap< QString, QgsCptCityArchive * > archiveRegistry();
79
80 // items
81 QVector< QgsCptCityDataItem * > rootItems() const { return mRootItems; }
82 QVector< QgsCptCityDataItem * > selectionItems() const { return mSelectionItems; }
83
84 private:
85 QString mArchiveName;
86 QString mBaseDir;
87 // root items, namely directories at root of archive
88 QVector< QgsCptCityDataItem * > mRootItems;
89 QVector<QgsCptCityDataItem *> mSelectionItems;
90
91 private:
92#ifdef SIP_RUN
94#endif
95};
96
101class CORE_EXPORT QgsCptCityDataItem : public QObject
102{
103 Q_OBJECT
104 public:
113
114 QgsCptCityDataItem( QgsCptCityDataItem::Type type, QgsCptCityDataItem *parent, const QString &name, const QString &path );
115
116 bool hasChildren();
117
118 int rowCount();
119
123 virtual int leafCount() const;
124
125 //
126
127 virtual void refresh();
128
132 virtual QVector<QgsCptCityDataItem *> createChildren();
133
137 virtual void populate();
138
142 bool isPopulated() { return mPopulated; }
143
149 virtual void addChildItem( QgsCptCityDataItem *child SIP_TRANSFER, bool refresh = false );
150
154 virtual void deleteChildItem( QgsCptCityDataItem *child );
155
161 virtual QgsCptCityDataItem *removeChildItem( QgsCptCityDataItem *child ) SIP_TRANSFERBACK;
162
166 virtual bool equal( const QgsCptCityDataItem *other );
167
171 Q_DECL_DEPRECATED virtual QWidget *paramWidget() SIP_DEPRECATED { return nullptr; }
172
178 Q_DECL_DEPRECATED virtual bool acceptDrop() SIP_DEPRECATED { return false; }
179
185 Q_DECL_DEPRECATED virtual bool handleDrop( const QMimeData *data, Qt::DropAction action ) SIP_DEPRECATED
186 {
187 Q_UNUSED( data );
188 Q_UNUSED( action );
189 return false;
190 }
191
192 // static methods
193
197 static int findItem( QVector<QgsCptCityDataItem *> items, QgsCptCityDataItem *item );
198
199 // members
200
201 Type type() const { return mType; }
202 QgsCptCityDataItem *parent() const { return mParent; }
204 QVector<QgsCptCityDataItem *> children() const { return mChildren; }
205 virtual QIcon icon() { return mIcon; }
206 virtual QIcon icon( QSize size )
207 {
208 Q_UNUSED( size )
209 return icon();
210 }
211 QString name() const { return mName; }
212 QString path() const { return mPath; }
213 QString info() const { return mInfo; }
214 QString shortInfo() const { return mShortInfo; }
215
216 void setIcon( const QIcon &icon ) { mIcon = icon; }
217
218 void setToolTip( const QString &msg ) { mToolTip = msg; }
219 QString toolTip() const { return mToolTip; }
220
221 bool isValid() { return mValid; }
222
223 protected:
226 QVector<QgsCptCityDataItem *> mChildren; // easier to have it always
227 bool mPopulated = false;
228 QString mName;
229 QString mPath; // it is also used to identify item in tree
230 QString mInfo;
231 QString mShortInfo;
232 QString mToolTip;
233 QIcon mIcon;
234 bool mValid = true;
235
236 signals:
237
249 void beginInsertItems( QgsCptCityDataItem *parent, int first, int last );
250
259
271 void beginRemoveItems( QgsCptCityDataItem *parent, int first, int last );
272
281};
282
288{
289 Q_OBJECT
290 public:
291 QgsCptCityColorRampItem( QgsCptCityDataItem *parent, const QString &name, const QString &path, const QString &variantName = QString(), bool initialize = false );
292 QgsCptCityColorRampItem( QgsCptCityDataItem *parent, const QString &name, const QString &path, const QStringList &variantList, bool initialize = false );
293
294 // --- reimplemented from QgsCptCityDataItem ---
295
296 bool equal( const QgsCptCityDataItem *other ) override;
297 int leafCount() const override { return 1; }
298
299 // --- New virtual methods for layer item derived classes ---
300 const QgsCptCityColorRamp &ramp() const { return mRamp; }
301 QIcon icon() override;
302 QIcon icon( QSize size ) override;
303 void init();
304
305 protected:
308 QList< QIcon > mIcons;
309};
310
311
317{
318 Q_OBJECT
319 public:
320 QgsCptCityCollectionItem( QgsCptCityDataItem *parent, const QString &name, const QString &path );
321 ~QgsCptCityCollectionItem() override;
322
323 void setPopulated() { mPopulated = true; }
324 void addChild( QgsCptCityDataItem *item SIP_TRANSFER ) { mChildren.append( item ); }
325 QVector<QgsCptCityDataItem *> childrenRamps( bool recursive );
326
327 protected:
328 bool mPopulatedRamps = false;
329};
330
336{
337 Q_OBJECT
338 public:
339 QgsCptCityDirectoryItem( QgsCptCityDataItem *parent, const QString &name, const QString &path );
340
341 QVector<QgsCptCityDataItem *> createChildren() override;
342
343 bool equal( const QgsCptCityDataItem *other ) override;
344
345 static QgsCptCityDataItem *dataItem( QgsCptCityDataItem *parent, const QString &name, const QString &path );
346
347 protected:
348 QMap< QString, QStringList > rampsMap();
349 QStringList dirEntries() const;
350 QMap< QString, QStringList > mRampsMap;
351};
352
359{
360 Q_OBJECT
361 public:
362 QgsCptCitySelectionItem( QgsCptCityDataItem *parent, const QString &name, const QString &path );
363
364 QVector<QgsCptCityDataItem *> createChildren() override;
365
366 bool equal( const QgsCptCityDataItem *other ) override;
367
368 QStringList selectionsList() const { return mSelectionsList; }
369
370 protected:
371 void parseXml();
372 QStringList mSelectionsList;
373};
374
380{
381 Q_OBJECT
382 public:
383 QgsCptCityAllRampsItem( QgsCptCityDataItem *parent, const QString &name, const QVector<QgsCptCityDataItem *> &items );
384
385 QVector<QgsCptCityDataItem *> createChildren() override;
386
387 protected:
388 QVector<QgsCptCityDataItem *> mItems;
389};
390
396class CORE_EXPORT QgsCptCityBrowserModel : public QAbstractItemModel
397{
398 Q_OBJECT
399
400 public:
402 {
405 List = 2 // not used anymore
406 };
407
408 QgsCptCityBrowserModel( QObject *parent SIP_TRANSFERTHIS = nullptr, QgsCptCityArchive *archive = QgsCptCityArchive::defaultArchive(), ViewType Type = Authors );
409 ~QgsCptCityBrowserModel() override;
410
411 // implemented methods from QAbstractItemModel for read-only access
412 Qt::ItemFlags flags( const QModelIndex &index ) const override;
413 QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const override;
414 QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override;
415 int rowCount( const QModelIndex &parent = QModelIndex() ) const override;
416 int columnCount( const QModelIndex &parent = QModelIndex() ) const override;
417 QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const override;
418
419 QModelIndex findItem( QgsCptCityDataItem *item, QgsCptCityDataItem *parent = nullptr ) const;
420
421 QModelIndex parent( const QModelIndex &index ) const override;
422
426 QgsCptCityDataItem *dataItem( const QModelIndex &idx ) const;
427
428 bool hasChildren( const QModelIndex &parent = QModelIndex() ) const override;
429
431 void reload();
432
434 void refresh( const QString &path );
435
437 void refresh( const QModelIndex &index = QModelIndex() );
438
440 QModelIndex findPath( const QString &path );
441
442 void connectItem( QgsCptCityDataItem *item );
443
444 bool canFetchMore( const QModelIndex &parent ) const override;
445 void fetchMore( const QModelIndex &parent ) override;
446
447 public slots:
448
449 void beginInsertItems( QgsCptCityDataItem *parent, int first, int last );
450 void endInsertItems();
451 void beginRemoveItems( QgsCptCityDataItem *parent, int first, int last );
452 void endRemoveItems();
453
454 protected:
455 // populates the model
456 void addRootItems();
457 void removeRootItems();
458
459 QVector<QgsCptCityDataItem *> mRootItems;
463};
464
465// clazy:excludeall=qstring-allocations
466
467#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()
static const QgsSettingsEntryString * settingsCptCityArchiveName
QVector< QgsCptCityDataItem * > rootItems() const
QString archiveName() const
static QgsCptCityArchive * defaultArchive()
QgsCptCityArchive & operator=(const QgsCptCityArchive &rh)=delete
void setBaseDir(const QString &dirName)
static const QgsSettingsEntryString * settingsCptCityBaseDir
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
A string settings entry.
#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