#include "dolphinmainwindow.h"
#include "dolphinviewactionhandler.h"
+#include "dolphinremoteencoding.h"
#include <config-nepomuk.h>
#include "settings/dolphinsettings.h"
#include "settings/dolphinsettingsdialog.h"
#include "dolphinsearchbox.h"
-#include "dolphinstatusbar.h"
#include "dolphinviewcontainer.h"
#include "panels/folders/folderspanel.h"
#include "panels/places/placespanel.h"
#include "panels/information/informationpanel.h"
#include "panels/information/metadatawidget.h"
#include "mainwindowadaptor.h"
+#include "statusbar/dolphinstatusbar.h"
#include "viewproperties.h"
#ifndef Q_OS_WIN
#include <kmenu.h>
#include <kmenubar.h>
#include <kmessagebox.h>
-#include <konq_fileitemcapabilities.h>
+#include <kfileitemlistproperties.h>
#include <konqmimedata.h>
#include <kprotocolinfo.h>
#include <krun.h>
#include <QDBusMessage>
#include <QKeyEvent>
#include <QClipboard>
-#include <QLineEdit>
#include <QSplitter>
#include <QDockWidget>
#include <kacceleratormanager.h>
m_tabIndex(0),
m_viewTab(),
m_actionHandler(0),
+ m_remoteEncoding(0),
m_settingsDialog(0)
{
setObjectName("Dolphin#");
updateEditActions();
updateViewActions();
updateGoActions();
- setCaption(url.fileName());
+ setUrlAsCaption(url);
if (m_viewTab.count() > 1) {
- m_tabBar->setTabText(m_tabIndex, tabName(url));
+ m_tabBar->setTabText(m_tabIndex, squeezedText(tabName(m_activeViewContainer->url())));
}
const QString iconName = KMimeType::iconNameForUrl(url);
m_tabBar->setTabIcon(m_tabIndex, KIcon(iconName));
compareFilesAction->setEnabled(false);
}
- m_activeViewContainer->updateStatusBar();
-
emit selectionChanged(selection);
}
if (m_viewTab.count() == 1) {
// Only one view is open currently and hence no tab is shown at
// all. Before creating a tab for 'url', provide a tab for the current URL.
- m_tabBar->addTab(icon, tabName(m_activeViewContainer->url()));
+ m_tabBar->addTab(icon, squeezedText(tabName(m_activeViewContainer->url())));
m_tabBar->blockSignals(false);
}
- m_tabBar->addTab(icon, tabName(url));
+ m_tabBar->addTab(icon, squeezedText(tabName(url)));
ViewTab viewTab;
viewTab.splitter = new QSplitter(this);
+ viewTab.splitter->setChildrenCollapsible(false);
viewTab.primaryView = new DolphinViewContainer(this, viewTab.splitter, url);
viewTab.primaryView->setActive(false);
connectViewSignals(viewTab.primaryView);
m_newMenu->setPopupFiles(activeViewContainer()->url());
}
+void DolphinMainWindow::createDirectory()
+{
+ m_newMenu->setPopupFiles(activeViewContainer()->url());
+ m_newMenu->createDirectory();
+}
+
void DolphinMainWindow::quit()
{
close();
// URL instead of all items of the view
KUrlNavigator* urlNavigator = m_activeViewContainer->urlNavigator();
- QLineEdit* lineEdit = urlNavigator->editor()->lineEdit();
+ QLineEdit* lineEdit = urlNavigator->editor()->lineEdit(); // krazy:exclude=qclasses
const bool selectUrl = urlNavigator->isUrlEditable() &&
lineEdit->hasFocus();
if (selectUrl) {
navigator->setFocus();
// select the whole text of the combo box editor
- QLineEdit* lineEdit = navigator->editor()->lineEdit();
+ QLineEdit* lineEdit = navigator->editor()->lineEdit(); // krazy:exclude=qclasses
const QString text = lineEdit->text();
lineEdit->setSelection(0, text.length());
}
void DolphinMainWindow::openTerminal()
{
- KToolInvocation::invokeTerminal(QString(), m_activeViewContainer->url().path());
+ QString dir(QDir::homePath());
+
+ // If the given directory is not local, it can still be the URL of an
+ // ioslave using UDS_LOCAL_PATH which to be converted first.
+ KUrl url = KIO::NetAccess::mostLocalUrl(m_activeViewContainer->url(), this);
+
+ //If the URL is local after the above conversion, set the directory.
+ if (url.isLocalFile()) {
+ dir = url.toLocalFile();
+ }
+
+ KToolInvocation::invokeTerminal(QString(), dir);
}
void DolphinMainWindow::editSettings()
m_activeViewContainer->setUrl(url);
}
+void DolphinMainWindow::slotTabMoved(int from, int to)
+{
+ m_viewTab.move(from, to);
+ m_tabIndex = m_tabBar->currentIndex();
+}
+
void DolphinMainWindow::init()
{
DolphinSettings& settings = DolphinSettings::instance();
setAcceptDrops(true);
m_viewTab[m_tabIndex].splitter = new QSplitter(this);
+ m_viewTab[m_tabIndex].splitter->setChildrenCollapsible(false);
setupActions();
const KUrl& homeUrl = generalSettings->homeUrl();
- setCaption(homeUrl.fileName());
+ setUrlAsCaption(homeUrl);
m_actionHandler = new DolphinViewActionHandler(actionCollection(), this);
connect(m_actionHandler, SIGNAL(actionBeingHandled()), SLOT(clearStatusBar()));
+ connect(m_actionHandler, SIGNAL(createDirectory()), SLOT(createDirectory()));
ViewProperties props(homeUrl);
m_viewTab[m_tabIndex].primaryView = new DolphinViewContainer(this,
m_viewTab[m_tabIndex].splitter,
m_activeViewContainer->show();
m_actionHandler->setCurrentView(view);
+ m_remoteEncoding = new DolphinRemoteEncoding(this, m_actionHandler);
+ connect(this, SIGNAL(urlChanged(const KUrl&)),
+ m_remoteEncoding, SLOT(slotAboutToOpenUrl()));
+
m_tabBar = new KTabBar(this);
m_tabBar->setMovable(true);
m_tabBar->setTabsClosable(true);
this, SLOT(slotWheelMoved(int)));
connect(m_tabBar, SIGNAL(mouseMiddleClick(int)),
this, SLOT(closeTab(int)));
+ connect(m_tabBar, SIGNAL(tabMoved(int, int)),
+ this, SLOT(slotTabMoved(int, int)));
m_tabBar->blockSignals(true); // signals get unblocked after at least 2 tabs are open
updateGoActions();
const KUrl& url = m_activeViewContainer->url();
- setCaption(url.fileName());
+ setUrlAsCaption(url);
if (m_viewTab.count() > 1 && m_viewTab[m_tabIndex].secondaryView != 0) {
m_tabBar->setTabText(m_tabIndex, tabName(url));
m_tabBar->setTabIcon(m_tabIndex, KIcon(KMimeType::iconNameForUrl(url)));
KAction* openTerminal = actionCollection()->addAction("open_terminal");
openTerminal->setText(i18nc("@action:inmenu Tools", "Open Terminal"));
- openTerminal->setIcon(KIcon("terminal"));
+ openTerminal->setIcon(KIcon("utilities-terminal"));
openTerminal->setShortcut(Qt::SHIFT | Qt::Key_F4);
connect(openTerminal, SIGNAL(triggered()), this, SLOT(openTerminal()));
QAction* terminalAction = terminalDock->toggleViewAction();
terminalAction->setText(i18nc("@title:window Shell terminal", "Terminal"));
terminalAction->setShortcut(Qt::Key_F4);
- terminalAction->setIcon(KIcon("terminal"));
+ terminalAction->setIcon(KIcon("utilities-terminal"));
actionCollection()->addAction("show_terminal_panel", terminalDock->toggleViewAction());
addDockWidget(Qt::BottomDockWidgetArea, terminalDock);
QAction* cutAction = col->action(KStandardAction::name(KStandardAction::Cut));
QAction* deleteWithTrashShortcut = col->action("delete_shortcut"); // see DolphinViewActionHandler
- KonqFileItemCapabilities capabilities(list);
+ KFileItemListProperties capabilities(list);
const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving();
renameAction->setEnabled(capabilities.supportsMoving());
const QString primaryPath = m_viewTab[index].primaryView->url().path();
const QString iconName = KMimeType::iconNameForUrl(primaryPath);
- const QFontMetrics fm = fontMetrics();
- const QString actionText = fm.elidedText(primaryPath, Qt::ElideMiddle, fm.maxWidth() * 20);
-
- QAction* action = new QAction(actionText, tabsMenu);
+ QAction* action = new QAction(squeezedText(primaryPath), tabsMenu);
ClosedTab closedTab;
closedTab.primaryUrl = m_viewTab[index].primaryView->url();
{
QString name;
if (url.equals(KUrl("file:///"))) {
- name = "/";
+ name = '/';
} else {
name = url.fileName();
if (name.isEmpty()) {
return "Tab " + QString::number(tabIndex) + ' ' + property;
}
+void DolphinMainWindow::setUrlAsCaption(const KUrl& url)
+{
+ QString caption;
+ if (url.equals(KUrl("file:///"))) {
+ caption = '/';
+ } else {
+ caption = url.fileName();
+ if (caption.isEmpty()) {
+ caption = url.protocol();
+ }
+ }
+
+ setCaption(caption);
+}
+
+QString DolphinMainWindow::squeezedText(const QString& text) const
+{
+ const QFontMetrics fm = fontMetrics();
+ return fm.elidedText(text, Qt::ElideMiddle, fm.maxWidth() * 10);
+}
+
DolphinMainWindow::UndoUiInterface::UndoUiInterface() :
KIO::FileUndoManager::UiInterface()
{