MCPcopy Create free account
hub / github.com/KDE/kdevelop / CommitToolView

Method CommitToolView

plugins/git/committoolview.cpp:167–246  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

165}
166
167CommitToolView::CommitToolView(std::shared_ptr<RepoStatusModel> statusModel, QWidget* parent)
168 : QWidget(parent)
169 , m_statusmodel(std::move(statusModel))
170 , m_proxymodel(new FilterEmptyItemsProxyModel(this))
171 , m_commitForm(new SimpleCommitForm(this))
172 , m_view(new QTreeView(this))
173 , m_filter(new QLineEdit(this))
174 , m_refreshMenu(new QMenu(this))
175 , m_toolviewMenu(new QMenu(this))
176 , m_styleDelegate(new ActiveStyledDelegate)
177{
178 setWindowIcon(QIcon::fromTheme(QStringLiteral("git")));
179
180
181 // FIXME: We should get the current area dock area from somewhere (the sublime area?)
182 // Right now we initially assume it is in the Qt::RightWidgetArea and layout
183 // accordingly (this may be wrong if the user previously moved it to, e.g. the
184 // bottom so its restored in the bottom area); when the user moves the dock
185 // widget we re-layout it and then the layout is always correct, since the signal
186 doLayOut(Qt::RightDockWidgetArea);
187 connect(dynamic_cast<QDockWidget*>(parent), &QDockWidget::dockLocationChanged, this, &CommitToolView::doLayOut);
188
189 // Creates a proxy model so that we can filter the
190 // items by the text entered into the filter lineedit
191 m_proxymodel->setSourceModel(m_statusmodel.get());
192 m_proxymodel->setFilterCaseSensitivity(Qt::CaseInsensitive);
193 m_proxymodel->setSortCaseSensitivity(Qt::CaseInsensitive);
194 m_proxymodel->setSortRole(Qt::DisplayRole);
195 m_proxymodel->setRecursiveFilteringEnabled(true);
196 connect(m_filter, &QLineEdit::textEdited, m_proxymodel, &QSortFilterProxyModel::setFilterWildcard);
197 m_filter->setToolTip(i18n("Filter by filename/project name"));
198 m_filter->setPlaceholderText(i18n("Filter by filename/project name"));
199
200 // Sets up the view
201 m_view->setModel(m_proxymodel);
202 m_view->setHeaderHidden(true);
203 m_view->setEditTriggers(QAbstractItemView::NoEditTriggers);
204 m_view->setSelectionMode(QAbstractItemView::SelectionMode::ContiguousSelection);
205 m_view->setContextMenuPolicy(Qt::CustomContextMenu);
206 m_view->setAnimated(true);
207 m_view->setItemDelegate(m_styleDelegate);
208
209 connect(m_view, &QTreeView::customContextMenuRequested, this, &CommitToolView::popupContextMenu);
210 connect(m_view, &QTreeView::doubleClicked, this, &CommitToolView::dblClicked);
211 connect(m_view, &QTreeView::clicked, this, &CommitToolView::clicked);
212 connect(m_view, &QTreeView::expanded, this, &CommitToolView::activateProject);
213
214 // Construct the tool view context menus & actions
215 m_refreshModelAct = m_refreshMenu->addAction(QIcon::fromTheme(QStringLiteral("view-refresh")), i18n("Refresh"));
216 m_stageFilesAct = m_toolviewMenu->addAction(QIcon::fromTheme(QStringLiteral("list-add")), i18n("Stage selected"));
217 m_unstageFilesAct
218 = m_toolviewMenu->addAction(QIcon::fromTheme(QStringLiteral("list-remove")), i18n("Unstage selected"));
219 m_revertFilesAct
220 = m_toolviewMenu->addAction(QIcon::fromTheme(QStringLiteral("edit-undo")), i18n("Revert unstaged edits"));
221
222 m_toolviewMenu->addAction(m_refreshModelAct);
223
224 // Refresh diffs when documents are saved

Callers

nothing calls this directly

Calls 14

setSourceModelMethod · 0.80
setToolTipMethod · 0.80
setPlaceholderTextMethod · 0.80
documentControllerMethod · 0.80
disableCommitButtonMethod · 0.80
enableCommitButtonMethod · 0.80
getMethod · 0.45
setModelMethod · 0.45
addActionMethod · 0.45
urlMethod · 0.45
dataMethod · 0.45
rowCountMethod · 0.45

Tested by

no test coverage detected