hgwidgets_plat/hgcacheproxymodel_api/inc/hgcacheproxymodel.h
changeset 2 49c70dcc3f17
parent 1 e48454f237ca
child 3 c863538fcbb6
equal deleted inserted replaced
1:e48454f237ca 2:49c70dcc3f17
    11 *
    11 *
    12 * Contributors:
    12 * Contributors:
    13 *
    13 *
    14 * Description:
    14 * Description:
    15 *
    15 *
    16 *  Version     : %version: 2 %
    16 *  Version     : %version: 5 %
    17 */
    17 */
    18 
    18 
    19 #ifndef HGCACHEPROXYMODEL_H_
    19 #ifndef HGCACHEPROXYMODEL_H_
    20 #define HGCACHEPROXYMODEL_H_
    20 #define HGCACHEPROXYMODEL_H_
    21 
    21 
    45 
    45 
    46     virtual void release(int start, int end) = 0;
    46     virtual void release(int start, int end) = 0;
    47     virtual void request(int start, int end, HgRequestOrder order = HgRequestOrderAscending) = 0;  
    47     virtual void request(int start, int end, HgRequestOrder order = HgRequestOrderAscending) = 0;  
    48 };
    48 };
    49 
    49 
    50 class HgCacheProxyModel : public QAbstractItemModel, public HgBufferManagerObserver, public HgDataProviderModelObserver
    50 class CACHEPROXYMODEL_EXPORT HgCacheProxyModel : public QAbstractItemModel, public HgBufferManagerObserver, public HgDataProviderModelObserver
    51 {
    51 {
    52     Q_OBJECT
    52     Q_OBJECT
    53 public:
    53 public:
    54     CACHEPROXYMODEL_EXPORT HgCacheProxyModel(QObject *parent = 0);
    54     HgCacheProxyModel(QObject *parent = 0);
    55     CACHEPROXYMODEL_EXPORT ~HgCacheProxyModel();   
    55     ~HgCacheProxyModel();   
    56     
    56     
    57     CACHEPROXYMODEL_EXPORT void setDataProvider(HgDataProviderModel *dataProvider, int cacheSize = KDefaultCacheSize, int cacheTreshold = KDefaultCacheTreshold);
    57     void setDataProvider(HgDataProviderModel *dataProvider, int cacheSize = KDefaultCacheSize, int cacheTreshold = KDefaultCacheTreshold);
    58     CACHEPROXYMODEL_EXPORT HgDataProviderModel* DataProvider();
    58     HgDataProviderModel* DataProvider();
    59     CACHEPROXYMODEL_EXPORT void resizeCache(int newSize, int newTreshold);
    59     void resizeCache(int newSize, int newTreshold);
    60     
    60     
    61 //from QAbstractItemModel
    61 //from QAbstractItemModel
    62     CACHEPROXYMODEL_EXPORT virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
    62     virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
    63     CACHEPROXYMODEL_EXPORT virtual QModelIndex parent(const QModelIndex &child) const;
    63     virtual QModelIndex parent(const QModelIndex &child) const;
    64     CACHEPROXYMODEL_EXPORT virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
    64     virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
    65     CACHEPROXYMODEL_EXPORT virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
    65     virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
    66     CACHEPROXYMODEL_EXPORT virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const;
    66     virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const;
    67     CACHEPROXYMODEL_EXPORT virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
    67     virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
    68     CACHEPROXYMODEL_EXPORT virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
    68     virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
    69     CACHEPROXYMODEL_EXPORT virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
    69     virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
    70     CACHEPROXYMODEL_EXPORT virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole);
    70     virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole);
    71     CACHEPROXYMODEL_EXPORT virtual QMap<int, QVariant> itemData(const QModelIndex &index) const;
    71     virtual QMap<int, QVariant> itemData(const QModelIndex &index) const;
    72     CACHEPROXYMODEL_EXPORT virtual bool setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles);
    72     virtual bool setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles);
    73     CACHEPROXYMODEL_EXPORT virtual QStringList mimeTypes() const;
    73     virtual QStringList mimeTypes() const;
    74     CACHEPROXYMODEL_EXPORT virtual QMimeData *mimeData(const QModelIndexList &indexes) const;
    74     virtual QMimeData *mimeData(const QModelIndexList &indexes) const;
    75     CACHEPROXYMODEL_EXPORT virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent);
    75     virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent);
    76     CACHEPROXYMODEL_EXPORT virtual Qt::DropActions supportedDropActions() const;
    76     virtual Qt::DropActions supportedDropActions() const;
    77     CACHEPROXYMODEL_EXPORT virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
    77     virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
    78     CACHEPROXYMODEL_EXPORT virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex());
    78     virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex());
    79     CACHEPROXYMODEL_EXPORT virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
    79     virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
    80     CACHEPROXYMODEL_EXPORT virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex());
    80     virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex());
    81     CACHEPROXYMODEL_EXPORT virtual void fetchMore(const QModelIndex &parent);
    81     virtual void fetchMore(const QModelIndex &parent);
    82     CACHEPROXYMODEL_EXPORT virtual bool canFetchMore(const QModelIndex &parent) const;
    82     virtual bool canFetchMore(const QModelIndex &parent) const;
    83     CACHEPROXYMODEL_EXPORT virtual Qt::ItemFlags flags(const QModelIndex &index) const;
    83     virtual Qt::ItemFlags flags(const QModelIndex &index) const;
    84     CACHEPROXYMODEL_EXPORT virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
    84     virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
    85     CACHEPROXYMODEL_EXPORT virtual QModelIndex buddy(const QModelIndex &index) const;
    85     virtual QModelIndex buddy(const QModelIndex &index) const;
    86     CACHEPROXYMODEL_EXPORT virtual QModelIndexList match(const QModelIndex &start, int role,
    86     virtual QModelIndexList match(const QModelIndex &start, int role,
    87                                   const QVariant &value, int hits = 1,
    87                                   const QVariant &value, int hits = 1,
    88                                   Qt::MatchFlags flags =
    88                                   Qt::MatchFlags flags =
    89                                   Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const;
    89                                   Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const;
    90     CACHEPROXYMODEL_EXPORT virtual QSize span(const QModelIndex &index) const;
    90     virtual QSize span(const QModelIndex &index) const;
    91 
    91 
    92 // for sorting
    92 // for sorting
    93     CACHEPROXYMODEL_EXPORT Qt::CaseSensitivity sortCaseSensitivity() const;
    93     Qt::CaseSensitivity sortCaseSensitivity() const;
    94     CACHEPROXYMODEL_EXPORT void setSortCaseSensitivity(Qt::CaseSensitivity cs);
    94     void setSortCaseSensitivity(Qt::CaseSensitivity cs);
    95     CACHEPROXYMODEL_EXPORT bool isSortLocaleAware() const;
    95     bool isSortLocaleAware() const;
    96     CACHEPROXYMODEL_EXPORT void setSortLocaleAware(bool on);
    96     void setSortLocaleAware(bool on);
    97     CACHEPROXYMODEL_EXPORT int sortColumn() const;
    97     int sortColumn() const;
    98     CACHEPROXYMODEL_EXPORT Qt::SortOrder sortOrder() const;
    98     Qt::SortOrder sortOrder() const;
    99     CACHEPROXYMODEL_EXPORT bool dynamicSortFilter() const;
    99     bool dynamicSortFilter() const;
   100     CACHEPROXYMODEL_EXPORT void setDynamicSortFilter(bool enable);
   100     void setDynamicSortFilter(bool enable);
   101     CACHEPROXYMODEL_EXPORT int sortRole() const;
   101     int sortRole() const;
   102     CACHEPROXYMODEL_EXPORT void setSortRole(int role);
   102     void setSortRole(int role);
   103 
   103 
   104 //for filtering
   104 //for filtering
   105 //    CACHEPROXYMODEL_EXPORT QRegExp filterRegExp() const;
   105     QRegExp filterRegExp() const;
   106 //    CACHEPROXYMODEL_EXPORT void setFilterRegExp(const QRegExp &regExp);
   106     void setFilterRegExp(const QRegExp &regExp);
   107 //    CACHEPROXYMODEL_EXPORT int filterKeyColumn() const;
   107     int filterKeyColumn() const;
   108 //    CACHEPROXYMODEL_EXPORT void setFilterKeyColumn(int column);
   108     void setFilterKeyColumn(int column);
   109 //    CACHEPROXYMODEL_EXPORT Qt::CaseSensitivity filterCaseSensitivity() const;
   109     Qt::CaseSensitivity filterCaseSensitivity() const;
   110 //    CACHEPROXYMODEL_EXPORT void setFilterCaseSensitivity(Qt::CaseSensitivity cs);
   110     void setFilterCaseSensitivity(Qt::CaseSensitivity cs);
   111 //    CACHEPROXYMODEL_EXPORT int filterRole() const;
   111     int filterRole() const;
   112 //    CACHEPROXYMODEL_EXPORT void setFilterRole(int role);
   112     void setFilterRole(int role);
   113     
   113     
   114 public slots:
   114 public slots:
   115     virtual bool submit();
   115     virtual bool submit();
   116     virtual void revert();
   116     virtual void revert();
   117     
   117     
   118 public:
   118 public:
   119 //from HgBufferManagerObserver
   119 //from HgBufferManagerObserver
   120     CACHEPROXYMODEL_EXPORT virtual void release(int start, int end);
   120     virtual void release(int start, int end);
   121     CACHEPROXYMODEL_EXPORT virtual void request(int start, int end, HgRequestOrder order = HgRequestOrderAscending);  
   121     virtual void request(int start, int end, HgRequestOrder order = HgRequestOrderAscending);  
   122     
   122     
   123 private:
   123 private:
   124     int count()const;
   124     int count()const;
   125     QModelIndex mapToSource(const QModelIndex &index)const;
   125     QModelIndex mapToSource(const QModelIndex &index)const;
   126     QModelIndex mapToSource(int row, int col) const;
   126     QModelIndex mapToSource(int row, int col) const;
   127     int mapToDataProviderIndex(int myIndex) const;
   127     int mapToDataProviderIndex(int myIndex) const;
   128     int mapFromDataProviderIndex(int myIndex) const;
   128     int mapFromDataProviderIndex(int myIndex) const;
   129     void cleanupForBMResetIfNeeded();
   129     void cleanupForBMReset();
   130     void resetBMIfNeeded();
   130     void resetBM();
   131     void releaseAll();
   131     void releaseAll();
   132     void setBufferPosition(int pos) const;
   132     void setBufferPosition(int pos) const;
   133     
   133     
   134 private slots:
   134 private slots:
   135     void sourceReset();
   135     void sourceColumnsAboutToBeInserted( const QModelIndex & parent, int start, int end);
   136     void sourceAboutToBeReset();
   136     void sourceColumnsAboutToBeMoved( const QModelIndex & sourceParent, int sourceStart, int sourceEnd, const QModelIndex & destinationParent, int destinationColumn );
   137     void sourceRowsInserted(const QModelIndex &source_parent, int start, int end);
   137     void sourceColumnsAboutToBeRemoved( const QModelIndex & parent, int start, int end);
   138     void sourceRowsRemoved(const QModelIndex &source_parent, int start, int end);
   138     void sourceColumnsInserted( const QModelIndex & parent, int start, int end );
   139     void dataUpdated(QModelIndex from, QModelIndex to);
   139     void sourceColumnsMoved( const QModelIndex & sourceParent, int sourceStart, int sourceEnd, const QModelIndex & destinationParent, int destinationColumn );
       
   140     void sourceColumnsRemoved( const QModelIndex & parent, int start, int end );
       
   141     void sourceDataChanged( const QModelIndex & topLeft, const QModelIndex & bottomRight );
       
   142     void sourceHeaderDataChanged( Qt::Orientation orientation, int first, int last );
       
   143     void sourceLayoutAboutToBeChanged();
       
   144     void sourceLayoutChanged();
       
   145     void sourceModelAboutToBeReset();
       
   146     void sourceModelReset();
       
   147     void sourceRowsAboutToBeInserted( const QModelIndex & parent, int start, int end );
       
   148     void sourceRowsAboutToBeMoved( const QModelIndex & sourceParent, int sourceStart, int sourceEnd, const QModelIndex & destinationParent, int destinationRow );
       
   149     void sourceRowsAboutToBeRemoved( const QModelIndex & parent, int start, int end );
       
   150     void sourceRowsInserted( const QModelIndex & parent, int start, int end );
       
   151     void sourceRowsMoved( const QModelIndex & sourceParent, int sourceStart, int sourceEnd, const QModelIndex & destinationParent, int destinationRow );
       
   152     void sourceRowsRemoved( const QModelIndex & parent, int start, int end );
   140     
   153     
   141 //from HgDataProviderModelObserver    
   154 //from HgDataProviderModelObserver    
   142 public:
   155 public:
   143     CACHEPROXYMODEL_EXPORT virtual void dataUpdated(int from, int to);
   156     virtual void dataUpdated(int from, int to);
   144     
   157     
   145 private:
   158 private:
   146     HgBufferManager* mBufferManager;
   159     HgBufferManager* mBufferManager;
   147     QSortFilterProxyModel* mSortFilterProxyModel;
   160     QSortFilterProxyModel* mSortFilterProxyModel;
   148     HgDataProviderModel* mDataProviderModel;
   161     HgDataProviderModel* mDataProviderModel;
   149     mutable bool mResetNeeded;
       
   150     mutable bool mSupressBM;
   162     mutable bool mSupressBM;
   151     mutable int mCurrentPos;
   163     mutable int mCurrentPos;
   152     bool mSortParameterChanged;
       
   153     bool mFilterParameterChanged;
       
   154     
       
   155 };
   164 };
   156 
   165 
   157 #endif // HGCACHEPROXYMODEL_H_
   166 #endif // HGCACHEPROXYMODEL_H_