summaryrefslogtreecommitdiffstats
path: root/konqueror/KonquerorIface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'konqueror/KonquerorIface.cpp')
-rw-r--r--konqueror/KonquerorIface.cpp294
1 files changed, 294 insertions, 0 deletions
diff --git a/konqueror/KonquerorIface.cpp b/konqueror/KonquerorIface.cpp
new file mode 100644
index 000000000..6a164b160
--- /dev/null
+++ b/konqueror/KonquerorIface.cpp
@@ -0,0 +1,294 @@
+/* This file is part of the KDE project
+ Copyright (C) 1998, 1999 Simon Hausmann <hausmann@kde.org>
+ Copyright (C) 2000 David Faure <faure@kde.org>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "KonquerorIface.h"
+#include "konq_misc.h"
+#include "KonqMainWindowIface.h"
+#include "konq_mainwindow.h"
+#include "konq_viewmgr.h"
+#include "konq_view.h"
+#include <konq_settings.h>
+#include <tdeapplication.h>
+#include <dcopclient.h>
+#include <kdebug.h>
+#include <tqfile.h>
+#include "konq_settingsxt.h"
+
+// these DCOP calls come from outside, so any windows created by these
+// calls would have old user timestamps (for KWin's no-focus-stealing),
+// it's better to reset the timestamp and rely on other means
+// of detecting the time when the user action that triggered all this
+// happened
+// TODO a valid timestamp should be passed in the DCOP calls that
+// are not for user scripting
+#include <X11/Xlib.h>
+
+KonquerorIface::KonquerorIface()
+ : DCOPObject( "KonquerorIface" )
+{
+}
+
+KonquerorIface::~KonquerorIface()
+{
+}
+
+DCOPRef KonquerorIface::openBrowserWindow( const TQString &url )
+{
+ SET_QT_X_USER_TIME(0);
+ KonqMainWindow *res = KonqMisc::createSimpleWindow( KURL(url) );
+ if ( !res )
+ return DCOPRef();
+ return res->dcopObject();
+}
+
+DCOPRef KonquerorIface::openBrowserWindowASN( const TQString &url, const TQCString& startup_id )
+{
+ kapp->setStartupId( startup_id );
+ return openBrowserWindow( url );
+}
+
+DCOPRef KonquerorIface::createNewWindow( const TQString &url )
+{
+ return createNewWindow( url, TQString::null, false );
+}
+
+DCOPRef KonquerorIface::createNewWindowASN( const TQString &url, const TQCString& startup_id, bool tempFile )
+{
+ kapp->setStartupId( startup_id );
+ return createNewWindow( url, TQString::null, tempFile );
+}
+
+DCOPRef KonquerorIface::createNewWindowWithSelection( const TQString &url, TQStringList filesToSelect )
+{
+ SET_QT_X_USER_TIME(0);
+ KonqMainWindow *res = KonqMisc::createNewWindow( KURL(url), KParts::URLArgs(), false, filesToSelect );
+ if ( !res )
+ return DCOPRef();
+ return res->dcopObject();
+}
+
+DCOPRef KonquerorIface::createNewWindowWithSelectionASN( const TQString &url, TQStringList filesToSelect, const TQCString &startup_id )
+{
+ kapp->setStartupId( startup_id );
+ return createNewWindowWithSelection( url, filesToSelect );
+}
+
+DCOPRef KonquerorIface::createNewWindow( const TQString &url, const TQString &mimetype, bool tempFile )
+{
+ SET_QT_X_USER_TIME(0);
+ KParts::URLArgs args;
+ args.serviceType = mimetype;
+ // Filter the URL, so that "kfmclient openURL gg:foo" works also when konq is already running
+ KURL finalURL = KonqMisc::konqFilteredURL( 0, url );
+ KonqMainWindow *res = KonqMisc::createNewWindow( finalURL, args, false, TQStringList(), tempFile );
+ if ( !res )
+ return DCOPRef();
+ return res->dcopObject();
+}
+
+DCOPRef KonquerorIface::createNewWindowASN( const TQString &url, const TQString &mimetype,
+ const TQCString& startup_id, bool tempFile )
+{
+ kapp->setStartupId( startup_id );
+ return createNewWindow( url, mimetype, tempFile );
+}
+
+DCOPRef KonquerorIface::createBrowserWindowFromProfile( const TQString &path )
+{
+ SET_QT_X_USER_TIME(0);
+ kdDebug(1202) << "void KonquerorIface::createBrowserWindowFromProfile( const TQString &path ) " << endl;
+ kdDebug(1202) << path << endl;
+ KonqMainWindow *res = KonqMisc::createBrowserWindowFromProfile( path, TQString::null );
+ if ( !res )
+ return DCOPRef();
+ return res->dcopObject();
+}
+
+DCOPRef KonquerorIface::createBrowserWindowFromProfileASN( const TQString &path, const TQCString& startup_id )
+{
+ kapp->setStartupId( startup_id );
+ return createBrowserWindowFromProfile( path );
+}
+
+DCOPRef KonquerorIface::createBrowserWindowFromProfile( const TQString & path, const TQString &filename )
+{
+ SET_QT_X_USER_TIME(0);
+ kdDebug(1202) << "void KonquerorIface::createBrowserWindowFromProfile( path, filename ) " << endl;
+ kdDebug(1202) << path << "," << filename << endl;
+ KonqMainWindow *res = KonqMisc::createBrowserWindowFromProfile( path, filename );
+ if ( !res )
+ return DCOPRef();
+ return res->dcopObject();
+}
+
+DCOPRef KonquerorIface::createBrowserWindowFromProfileASN( const TQString &path, const TQString &filename,
+ const TQCString& startup_id )
+{
+ kapp->setStartupId( startup_id );
+ return createBrowserWindowFromProfile( path, filename );
+}
+
+DCOPRef KonquerorIface::createBrowserWindowFromProfileAndURL( const TQString & path, const TQString &filename, const TQString &url )
+{
+ SET_QT_X_USER_TIME(0);
+ KonqMainWindow *res = KonqMisc::createBrowserWindowFromProfile( path, filename, KURL(url) );
+ if ( !res )
+ return DCOPRef();
+ return res->dcopObject();
+}
+
+DCOPRef KonquerorIface::createBrowserWindowFromProfileAndURLASN( const TQString & path, const TQString &filename, const TQString &url,
+ const TQCString& startup_id )
+{
+ kapp->setStartupId( startup_id );
+ return createBrowserWindowFromProfileAndURL( path, filename, url );
+}
+
+DCOPRef KonquerorIface::createBrowserWindowFromProfileAndURL( const TQString &path, const TQString &filename, const TQString &url, const TQString &mimetype )
+{
+ SET_QT_X_USER_TIME(0);
+ KParts::URLArgs args;
+ args.serviceType = mimetype;
+ KonqMainWindow *res = KonqMisc::createBrowserWindowFromProfile( path, filename, KURL(url), args );
+ if ( !res )
+ return DCOPRef();
+ return res->dcopObject();
+}
+
+DCOPRef KonquerorIface::createBrowserWindowFromProfileAndURLASN( const TQString & path, const TQString &filename, const TQString &url, const TQString &mimetype,
+ const TQCString& startup_id )
+{
+ kapp->setStartupId( startup_id );
+ return createBrowserWindowFromProfileAndURL( path, filename, url, mimetype );
+}
+
+
+void KonquerorIface::reparseConfiguration()
+{
+ TDEGlobal::config()->reparseConfiguration();
+ KonqFMSettings::reparseConfiguration();
+
+ TQPtrList<KonqMainWindow> *mainWindows = KonqMainWindow::mainWindowList();
+ if ( mainWindows )
+ {
+ TQPtrListIterator<KonqMainWindow> it( *mainWindows );
+ for (; it.current(); ++it )
+ it.current()->reparseConfiguration();
+ }
+}
+
+void KonquerorIface::updateProfileList()
+{
+ TQPtrList<KonqMainWindow> *mainWindows = KonqMainWindow::mainWindowList();
+ if ( !mainWindows )
+ return;
+
+ TQPtrListIterator<KonqMainWindow> it( *mainWindows );
+ for (; it.current(); ++it )
+ it.current()->viewManager()->profileListDirty( false );
+}
+
+TQString KonquerorIface::crashLogFile()
+{
+ return KonqMainWindow::s_crashlog_file->name();
+}
+
+TQValueList<DCOPRef> KonquerorIface::getWindows()
+{
+ TQValueList<DCOPRef> lst;
+ TQPtrList<KonqMainWindow> *mainWindows = KonqMainWindow::mainWindowList();
+ if ( mainWindows )
+ {
+ TQPtrListIterator<KonqMainWindow> it( *mainWindows );
+ for (; it.current(); ++it )
+ lst.append( DCOPRef( kapp->dcopClient()->appId(), it.current()->dcopObject()->objId() ) );
+ }
+ return lst;
+}
+
+void KonquerorIface::addToCombo( TQString url, TQCString objId )
+{
+ KonqMainWindow::comboAction( KonqMainWindow::ComboAdd, url, objId );
+}
+
+void KonquerorIface::removeFromCombo( TQString url, TQCString objId )
+{
+ KonqMainWindow::comboAction( KonqMainWindow::ComboRemove, url, objId );
+}
+
+void KonquerorIface::comboCleared( TQCString objId )
+{
+ KonqMainWindow::comboAction( KonqMainWindow::ComboClear,
+ TQString::null, objId );
+}
+
+bool KonquerorIface::processCanBeReused( int screen )
+{
+ if( tqt_xscreen() != screen )
+ return false; // this instance run on different screen, and Qt apps can't migrate
+ if( KonqMainWindow::isPreloaded())
+ return false; // will be handled by preloading related code instead
+ TQPtrList<KonqMainWindow>* windows = KonqMainWindow::mainWindowList();
+ if( windows == NULL )
+ return true;
+ TQStringList allowed_parts = KonqSettings::safeParts();
+ bool all_parts_allowed = false;
+
+ if( allowed_parts.count() == 1 && allowed_parts.first() == TQString::fromLatin1( "SAFE" ))
+ {
+ allowed_parts.clear();
+ // is duplicated in client/kfmclient.cpp
+ allowed_parts << TQString::fromLatin1( "konq_iconview.desktop" )
+ << TQString::fromLatin1( "konq_multicolumnview.desktop" )
+ << TQString::fromLatin1( "konq_sidebartng.desktop" )
+ << TQString::fromLatin1( "konq_infolistview.desktop" )
+ << TQString::fromLatin1( "konq_treeview.desktop" )
+ << TQString::fromLatin1( "konq_detailedlistview.desktop" );
+ }
+ else if( allowed_parts.count() == 1 && allowed_parts.first() == TQString::fromLatin1( "ALL" ))
+ {
+ allowed_parts.clear();
+ all_parts_allowed = true;
+ }
+ if( all_parts_allowed )
+ return true;
+ for( TQPtrListIterator<KonqMainWindow> it1( *windows );
+ it1 != NULL;
+ ++it1 )
+ {
+ kdDebug(1202) << "processCanBeReused: count=" << (*it1)->viewCount() << endl;
+ const KonqMainWindow::MapViews& views = (*it1)->viewMap();
+ for( KonqMainWindow::MapViews::ConstIterator it2 = views.begin();
+ it2 != views.end();
+ ++it2 )
+ {
+ kdDebug(1202) << "processCanBeReused: part=" << (*it2)->service()->desktopEntryPath() << ", URL=" << (*it2)->url().prettyURL() << endl;
+ if( !allowed_parts.contains( (*it2)->service()->desktopEntryPath()))
+ return false;
+ }
+ }
+ return true;
+}
+
+void KonquerorIface::terminatePreloaded()
+{
+ if( KonqMainWindow::isPreloaded())
+ kapp->exit();
+}