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 ®Exp); |
106 void setFilterRegExp(const QRegExp ®Exp); |
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_ |