BEGIN KateFileTreePluginView
| 123 | |
| 124 | // BEGIN KateFileTreePluginView |
| 125 | KateFileTreePluginView::KateFileTreePluginView(KTextEditor::MainWindow *mainWindow, KateFileTreePlugin *plug) |
| 126 | : QObject(mainWindow) |
| 127 | , m_plug(plug) |
| 128 | , m_mainWindow(mainWindow) |
| 129 | { |
| 130 | KXMLGUIClient::setComponentName(QStringLiteral("katefiletree"), i18n("Documents")); |
| 131 | setXMLFile(QStringLiteral("ui.rc")); |
| 132 | |
| 133 | m_toolView = mainWindow->createToolView(plug, |
| 134 | QStringLiteral("kate_private_plugin_katefiletreeplugin"), |
| 135 | KTextEditor::MainWindow::Left, |
| 136 | QIcon::fromTheme(QStringLiteral("folder-documents-symbolic")), |
| 137 | i18n("Documents")); |
| 138 | |
| 139 | // create toolbar |
| 140 | m_toolbar = new QToolBar(m_toolView); |
| 141 | m_toolbar->setMovable(false); |
| 142 | m_toolbar->setToolButtonStyle(Qt::ToolButtonIconOnly); |
| 143 | m_toolbar->setContextMenuPolicy(Qt::NoContextMenu); |
| 144 | m_toolbar->layout()->setContentsMargins(0, 0, 0, 0); |
| 145 | |
| 146 | // ensure reasonable icons sizes, like e.g. the quick-open and co. icons |
| 147 | // the normal toolbar sizes are TOO large, e.g. for scaled stuff even more! |
| 148 | const int iconSize = m_toolView->style()->pixelMetric(QStyle::PM_ButtonIconSize, nullptr, m_toolView); |
| 149 | m_toolbar->setIconSize(QSize(iconSize, iconSize)); |
| 150 | |
| 151 | // create filetree |
| 152 | m_fileTree = new KateFileTree(m_mainWindow, m_toolView); |
| 153 | m_fileTree->setSortingEnabled(true); |
| 154 | m_fileTree->setShowCloseButton(m_plug->settings().showCloseButton()); |
| 155 | m_fileTree->setMiddleClickToClose(m_plug->settings().middleClickToClose); |
| 156 | m_fileTree->setProperty("_breeze_borders_sides", QVariant::fromValue(QFlags{Qt::TopEdge})); |
| 157 | |
| 158 | connect(m_fileTree, &KateFileTree::viewModeChanged, this, &KateFileTreePluginView::viewModeChanged); |
| 159 | connect(m_fileTree, &KateFileTree::sortRoleChanged, this, &KateFileTreePluginView::sortRoleChanged); |
| 160 | |
| 161 | m_documentModel = new KateFileTreeModel(m_mainWindow, this); |
| 162 | m_proxyModel = new KateFileTreeProxyModel(this); |
| 163 | m_proxyModel->setSourceModel(m_documentModel); |
| 164 | m_proxyModel->setDynamicSortFilter(true); |
| 165 | m_proxyModel->setRecursiveFilteringEnabled(true); |
| 166 | |
| 167 | m_documentModel->setShowFullPathOnRoots(m_plug->settings().showFullPathOnRoots()); |
| 168 | m_documentModel->setShadingEnabled(m_plug->settings().shadingEnabled()); |
| 169 | m_documentModel->setViewShade(m_plug->settings().viewShade()); |
| 170 | m_documentModel->setEditShade(m_plug->settings().editShade()); |
| 171 | |
| 172 | m_filter = new QLineEdit(m_toolView); |
| 173 | m_filter->setPlaceholderText(i18n("Filter…")); |
| 174 | m_filter->setClearButtonEnabled(true); |
| 175 | m_filter->setProperty("_breeze_borders_sides", QVariant::fromValue(QFlags{Qt::TopEdge})); |
| 176 | connect(m_filter, &QLineEdit::textChanged, this, [this](const QString &text) { |
| 177 | m_proxyModel->setFilterRegularExpression(QRegularExpression(text, QRegularExpression::CaseInsensitiveOption)); |
| 178 | if (!text.isEmpty()) { |
| 179 | QTimer::singleShot(100, m_fileTree, &QTreeView::expandAll); |
| 180 | } |
| 181 | }); |
| 182 |
nothing calls this directly
no test coverage detected