#include <KIO/CommandLauncherJob>
#include <KLocalizedString>
#include <KShell>
+#include <KStringHandler>
#include <kio/global.h>
#include <QApplication>
connect(tabBar, &DolphinTabBar::openNewActivatedTab, this, QOverload<int>::of(&DolphinTabWidget::openNewActivatedTab));
connect(tabBar, &DolphinTabBar::tabDropEvent, this, &DolphinTabWidget::tabDropEvent);
connect(tabBar, &DolphinTabBar::tabDetachRequested, this, &DolphinTabWidget::detachTab);
- tabBar->hide();
setTabBar(tabBar);
setDocumentMode(true);
setElideMode(Qt::ElideRight);
setUsesScrollButtons(true);
+ setTabBarAutoHide(true);
}
DolphinTabPage *DolphinTabWidget::currentTabPage() const
const int tabCount = count();
for (int i = 0; i < tabCount; ++i) {
- tabBar()->setTabText(i, tabName(tabPageAt(i)));
+ updateTabName(i);
tabPageAt(i)->refreshViews();
}
}
+void DolphinTabWidget::updateTabName(int index)
+{
+ Q_ASSERT(index >= 0);
+ tabBar()->setTabText(index, tabName(tabPageAt(index)));
+}
+
bool DolphinTabWidget::isUrlOpen(const QUrl &url) const
{
return viewOpenAtDirectory(url).has_value();
connect(tabPage, &DolphinTabPage::activeViewChanged, this, &DolphinTabWidget::activeViewChanged);
connect(tabPage, &DolphinTabPage::activeViewUrlChanged, this, &DolphinTabWidget::tabUrlChanged);
connect(tabPage->activeViewContainer(), &DolphinViewContainer::captionChanged, this, [this, tabPage]() {
- const int tabIndex = indexOf(tabPage);
- Q_ASSERT(tabIndex >= 0);
- tabBar()->setTabText(tabIndex, tabName(tabPage));
+ updateTabName(indexOf(tabPage));
});
if (position == NewTabPosition::FollowSetting) {
const auto urls = event->mimeData()->urls();
for (const QUrl &url : urls) {
- auto *job = KIO::statDetails(url, KIO::StatJob::SourceSide, KIO::StatDetail::StatBasic, KIO::JobFlag::HideProgressInfo);
+ auto *job = KIO::stat(url, KIO::StatJob::SourceSide, KIO::StatDetail::StatBasic, KIO::JobFlag::HideProgressInfo);
connect(job, &KJob::result, this, [this, job]() {
if (!job->error() && job->statResult().isDir()) {
openNewTab(job->url(), QUrl(), NewTabPosition::AtEnd);
{
const int index = indexOf(qobject_cast<QWidget *>(sender()));
if (index >= 0) {
- tabBar()->setTabText(index, tabName(tabPageAt(index)));
+ updateTabName(index);
tabBar()->setTabToolTip(index, url.toDisplayString(QUrl::PreferLocalFile));
if (tabBar()->isVisible()) {
// ensure the path url ends with a slash to have proper folder icon for remote folders
if (index == currentIndex()) {
Q_EMIT currentUrlChanged(url);
}
+
+ Q_EMIT urlChanged(url);
}
}
{
QTabWidget::tabInserted(index);
- if (count() > 1) {
+ if (tabBar()->isVisible()) {
// Resolve all pending tab icons
for (int i = 0; i < count(); ++i) {
const QUrl url = tabPageAt(i)->activeViewContainer()->url();
tabBar()->setTabToolTip(index, url.toDisplayString(QUrl::PreferLocalFile));
}
}
-
- tabBar()->show();
}
Q_EMIT tabCountChanged(count());
{
QTabWidget::tabRemoved(index);
- // If only one tab is left, then remove the tab entry so that
- // closing the last tab is not possible.
- if (count() < 2) {
- tabBar()->hide();
- }
-
Q_EMIT tabCountChanged(count());
}
// Make sure that a '&' inside the directory name is displayed correctly
// and not misinterpreted as a keyboard shortcut in QTabBar::setTabText()
- return name.replace('&', QLatin1String("&&"));
+ return KStringHandler::rsqueeze(name.replace('&', QLatin1String("&&")), 40 /* default maximum visible folder name visible */);
}
DolphinViewContainer *DolphinTabWidget::viewContainerAt(DolphinTabWidget::ViewIndex viewIndex) const
return std::nullopt;
}
+
+#include "moc_dolphintabwidget.cpp"