+void TerminalPanel::cdUrl(const KUrl& url)
+{
+ if (url.isLocalFile()) {
+ cdDirectory(url.toLocalFile());
+ } else {
+ KIO::StatJob* job = KIO::mostLocalUrl(url, KIO::HideProgressInfo);
+ job->ui()->setWindow(this);
+ connect(job, SIGNAL(result(KJob*)), this, SLOT(slotMostLocalUrlResult(KJob*)));
+ }
+}
+
+void TerminalPanel::cdDirectory(const QString& dir)
+{
+ m_terminal->sendInput("cd " + KShell::quoteArg(dir) + '\n');
+}
+
+void TerminalPanel::slotMostLocalUrlResult(KJob* job)
+{
+ KIO::StatJob* statJob = static_cast<KIO::StatJob *>(job);
+ const KUrl url = statJob->mostLocalUrl();
+ if (url.isLocalFile()) {
+ cdDirectory(url.toLocalFile());
+ }
+}
+