summaryrefslogtreecommitdiffstats
path: root/kioslave/svn/ksvnd
diff options
context:
space:
mode:
Diffstat (limited to 'kioslave/svn/ksvnd')
-rw-r--r--kioslave/svn/ksvnd/Makefile.am13
-rw-r--r--kioslave/svn/ksvnd/commitdlg.ui116
-rw-r--r--kioslave/svn/ksvnd/commitdlg.ui.h30
-rw-r--r--kioslave/svn/ksvnd/ksvnd.cpp351
-rw-r--r--kioslave/svn/ksvnd/ksvnd.desktop50
-rw-r--r--kioslave/svn/ksvnd/ksvnd.h69
6 files changed, 629 insertions, 0 deletions
diff --git a/kioslave/svn/ksvnd/Makefile.am b/kioslave/svn/ksvnd/Makefile.am
new file mode 100644
index 00000000..a466be08
--- /dev/null
+++ b/kioslave/svn/ksvnd/Makefile.am
@@ -0,0 +1,13 @@
+#INCLUDES= -I$(top_srcdir)/kwallet/client $(all_includes)
+INCLUDES= $(all_includes)
+
+kde_module_LTLIBRARIES = kded_ksvnd.la
+
+kded_ksvnd_la_SOURCES = commitdlg.ui ksvnd.cpp ksvnd.skel
+kded_ksvnd_la_METASOURCES = AUTO
+kded_ksvnd_la_LDFLAGS = $(all_libraries) -module -avoid-version
+#kded_ksvnd_la_LIBADD = $(top_builddir)/kwallet/client/libkwalletclient.la $(LIB_KIO)
+kded_ksvnd_la_LIBADD = $(LIB_KIO)
+
+kded_DATA = ksvnd.desktop
+kdeddir = $(kde_servicesdir)/kded
diff --git a/kioslave/svn/ksvnd/commitdlg.ui b/kioslave/svn/ksvnd/commitdlg.ui
new file mode 100644
index 00000000..7425e5c9
--- /dev/null
+++ b/kioslave/svn/ksvnd/commitdlg.ui
@@ -0,0 +1,116 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>CommitDlg</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>CommitDlg</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>451</width>
+ <height>337</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Log Message</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout2</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="KTextEdit">
+ <property name="name">
+ <cstring>textMessage</cstring>
+ </property>
+ </widget>
+ <widget class="KTextEdit">
+ <property name="name">
+ <cstring>listMessage</cstring>
+ </property>
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout1</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>220</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>pushButton1</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;OK</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>pushButton2</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Cancel</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ </vbox>
+</widget>
+<connections>
+ <connection>
+ <sender>pushButton1</sender>
+ <signal>clicked()</signal>
+ <receiver>CommitDlg</receiver>
+ <slot>accept()</slot>
+ </connection>
+ <connection>
+ <sender>pushButton2</sender>
+ <signal>clicked()</signal>
+ <receiver>CommitDlg</receiver>
+ <slot>reject()</slot>
+ </connection>
+</connections>
+<includes>
+ <include location="local" impldecl="in implementation">commitdlg.ui.h</include>
+</includes>
+<functions>
+ <function>setLog( const QString &amp; comment )</function>
+ <function returnType="QString">logMessage() const</function>
+</functions>
+<layoutdefaults spacing="6" margin="11"/>
+<includehints>
+ <includehint>ktextedit.h</includehint>
+ <includehint>ktextedit.h</includehint>
+</includehints>
+</UI>
diff --git a/kioslave/svn/ksvnd/commitdlg.ui.h b/kioslave/svn/ksvnd/commitdlg.ui.h
new file mode 100644
index 00000000..296d55c0
--- /dev/null
+++ b/kioslave/svn/ksvnd/commitdlg.ui.h
@@ -0,0 +1,30 @@
+/* This file is part of the KDE project
+ Copyright (C) 2004 Mickael Marchand <marchand@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+
+void CommitDlg::setLog( const QString & comment )
+{
+listMessage->setText(comment);
+}
+
+
+QString CommitDlg::logMessage() const
+{
+return textMessage->text();
+}
diff --git a/kioslave/svn/ksvnd/ksvnd.cpp b/kioslave/svn/ksvnd/ksvnd.cpp
new file mode 100644
index 00000000..c9701647
--- /dev/null
+++ b/kioslave/svn/ksvnd/ksvnd.cpp
@@ -0,0 +1,351 @@
+/*
+ This file is part of the KDE Project
+
+ Copyright (C) 2003, 2004 Mickael Marchand <marchand@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ version 2 as published by the Free Software Foundation.
+
+ This software 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 library; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#include <kapplication.h>
+#include <klocale.h>
+#include <kdebug.h>
+#include <kmessagebox.h>
+#include <qdir.h>
+#include <qfile.h>
+
+#include "config.h"
+
+#include "ksvnd.h"
+#include "commitdlg.h"
+
+extern "C" {
+ KDE_EXPORT KDEDModule *create_ksvnd(const QCString &name) {
+ return new KSvnd(name);
+ }
+}
+
+KSvnd::KSvnd(const QCString &name)
+ : KDEDModule(name) {
+}
+
+KSvnd::~KSvnd() {
+}
+
+QString KSvnd::commitDialog(QString modifiedFiles) {
+ CommitDlg commitDlg;
+ commitDlg.setLog( modifiedFiles );
+ int result = commitDlg.exec();
+ if ( result == QDialog::Accepted ) {
+ return commitDlg.logMessage();
+ } else
+ return QString::null;
+}
+
+bool KSvnd::AreAnyFilesInSvn( const KURL::List& wclist ) {
+ for ( QValueListConstIterator<KURL> it = wclist.begin(); it != wclist.end() ; ++it ) {
+ kdDebug( 7128 ) << "Checking file " << ( *it ) << endl;
+ QDir bdir ( ( *it ).path() );
+ if ( bdir.exists() && QFile::exists( ( *it ).path() + "/.svn/entries" ) ) {
+ return true;
+ } else if ( !bdir.exists() ) {
+ if ( isFileInSvnEntries( ( *it ).fileName(), ( *it ).directory() + "/.svn/entries" ) || isFileInExternals ( ( *it ).fileName(), ( *it ).directory()+"/.svn/dir-props" ) )
+ return true;
+ }
+ }
+ return false;
+}
+
+bool KSvnd::AreAnyFilesNotInSvn( const KURL::List& wclist ) {
+ for ( QValueListConstIterator<KURL> it = wclist.begin(); it != wclist.end() ; ++it ) {
+ kdDebug( 7128 ) << "Checking file " << ( *it ) << endl;
+ QDir bdir ( ( *it ).path() );
+ if ( bdir.exists() && !QFile::exists( ( *it ).path() + "/.svn/entries" ) ) {
+ return true;
+ } else if ( !bdir.exists() ) {
+ if ( !isFileInSvnEntries( ( *it ).fileName(),( *it ).directory() + "/.svn/entries" ) && !isFileInExternals ( ( *it ).fileName(), ( *it ).directory()+"/.svn/dir-props" ) )
+ return true;
+ }
+ }
+ return false;
+}
+
+bool KSvnd::AreAllFilesInSvn( const KURL::List& wclist ) {
+ for ( QValueListConstIterator<KURL> it = wclist.begin(); it != wclist.end() ; ++it ) {
+ kdDebug( 7128 ) << "Checking file " << ( *it ) << endl;
+ QDir bdir ( ( *it ).path() );
+ if ( bdir.exists() && !QFile::exists( ( *it ).path() + "/.svn/entries" ) ) {
+ return false;
+ } else if ( !bdir.exists() ) {
+ if ( !isFileInSvnEntries( ( *it ).fileName(),( *it ).directory() + "/.svn/entries" ) && !isFileInExternals ( ( *it ).fileName(), ( *it ).directory()+"/.svn/dir-props" ) )
+ return false;
+ }
+ }
+ return true;
+}
+
+bool KSvnd::AreAllFilesNotInSvn( const KURL::List& wclist ) {
+ for ( QValueListConstIterator<KURL> it = wclist.begin(); it != wclist.end() ; ++it ) {
+ kdDebug( 7128 ) << "Checking file " << ( *it ) << endl;
+ QDir bdir ( ( *it ).path() );
+ if ( bdir.exists() && QFile::exists( ( *it ).path() + "/.svn/entries" ) ) {
+ return false;
+ } else if ( !bdir.exists() ) {
+ if ( isFileInSvnEntries( ( *it ).fileName(),( *it ).directory() + "/.svn/entries" ) || isFileInExternals ( ( *it ).fileName(), ( *it ).directory()+"/.svn/dir-props" ) )
+ return false;
+ }
+ }
+ return true;
+}
+
+bool KSvnd::isFileInSvnEntries ( const QString filename, const QString entfile ) {
+ QFile file( entfile );
+ if ( file.open( IO_ReadOnly ) ) {
+ QTextStream stream( &file );
+ QString line;
+ while ( !stream.atEnd() ) {
+ line = stream.readLine().simplifyWhiteSpace();
+ if ( line == "name=\""+ filename + "\"" ) {
+ file.close();
+ return true;
+ }
+ }
+ file.close();
+ }
+ return false;
+}
+
+bool KSvnd::isFileInExternals ( const QString filename, const QString propfile ) {
+ QFile file( propfile );
+ if ( file.open( IO_ReadOnly ) ) {
+ QTextStream stream( &file );
+ QStringList line;
+ while ( !stream.atEnd() )
+ line << stream.readLine().simplifyWhiteSpace();
+ for ( uint i = 0 ; i < line.count(); i++ ) {
+ if ( line[ i ] == "K 13" && line[ i+1 ] == "svn:externals" ) { //Key 13 : svn:externals
+ //next line should be "V xx"
+ if ( line [ i+2 ].startsWith( "V " ) ) {
+ //ok browse the values now
+ i+=2;
+ while ( i < line.count() ) {
+ if ( line[ i ].startsWith( filename+" " ) ) { //found it !
+ file.close( );
+ return true;
+ } else if ( line[ i ].isEmpty() ) {
+ file.close( );
+ return false; //we are out of svn:externals now...
+ }
+ i++;
+ }
+ }
+ }
+ }
+ file.close();
+ }
+ return false;
+}
+
+bool KSvnd::anyNotValidWorkingCopy( const KURL::List& wclist ) {
+ bool result = true; //one negative match is enough
+ for ( QValueListConstIterator<KURL> it = wclist.begin(); it != wclist.end() ; ++it ) {
+ //exception for .svn dirs
+ if ( ( *it ).path(-1).endsWith( "/.svn" ) )
+ return true;
+ //if is a directory check whether it contains a .svn/entries file
+ QDir dir( ( *it ).path() );
+ if ( dir.exists() ) { //it's a dir
+ if ( !QFile::exists( ( *it ).path() + "/.svn/entries" ) )
+ result = false;
+ }
+
+ //else check if ./.svn/entries exists
+ if ( !QFile::exists( ( *it ).directory() + "/.svn/entries" ) )
+ result = false;
+ }
+ return result;
+}
+
+bool KSvnd::anyValidWorkingCopy( const KURL::List& wclist ) {
+ for ( QValueListConstIterator<KURL> it = wclist.begin(); it != wclist.end() ; ++it ) {
+ //skip .svn dirs
+ if ( ( *it ).path(-1).endsWith( "/.svn" ) )
+ continue;
+ //if is a directory check whether it contains a .svn/entries file
+ QDir dir( ( *it ).path() );
+ if ( dir.exists() ) { //it's a dir
+ if ( QFile::exists( ( *it ).path() + "/.svn/entries" ) )
+ return true;
+ }
+
+ //else check if ./.svn/entries exists
+ if ( QFile::exists( ( *it ).directory() + "/.svn/entries" ) )
+ return true;
+ }
+ return false;
+}
+
+int KSvnd::getStatus( const KURL::List& list ) {
+ int result = 0;
+ uint files = 0, folders = 0, parentsentries = 0, parentshavesvn = 0, subdirhavesvn = 0, external = 0;
+ for ( QValueListConstIterator<KURL> it = list.begin(); it != list.end() ; ++it ) {
+ if ( isFolder ( ( *it ) ) ) {
+ folders++;
+ } else {
+ files++;
+ }
+ if ( isFileInSvnEntries ( (*it).filename(),( *it ).directory() + "/.svn/entries" ) ) { // normal subdir known in the working copy
+ parentsentries++;
+ } else if ( isFolder( *it ) ) { // other subfolders (either another module checkouted or an external, or something not known at all)
+ if ( QFile::exists( ( *it ).path() + "/.svn/entries" ) )
+ subdirhavesvn++;
+ if ( isFileInExternals( (*it).filename(), ( *it ).directory() + "/.svn/dir-props" ) ) {
+ external++;
+ }
+ }
+ if ( ( isFolder( ( *it ) ) && QFile::exists( ( *it ).directory() + "../.svn/entries" ) ) || QFile::exists( ( *it ).directory() + "/.svn/entries" ) ) //parent has a .svn ?
+ parentshavesvn++;
+ }
+ if ( files > 0 )
+ result |= SomeAreFiles;
+ if ( folders == list.count() ) {
+ result |= AllAreFolders;
+ result |= SomeAreFolders;
+ }
+ if ( folders > 0 )
+ result |= SomeAreFolders;
+ if ( parentsentries == list.count() ) {
+ result |= AllAreInParentsEntries;
+ result |= SomeAreInParentsEntries;
+ } else if ( parentsentries != 0 )
+ result |= SomeAreInParentsEntries;
+ if ( parentshavesvn == list.count() ) {
+ result |= AllParentsHaveSvn;
+ result |= SomeParentsHaveSvn;
+ } else if ( parentshavesvn > 0 )
+ result |= SomeParentsHaveSvn;
+ if ( subdirhavesvn == list.count() ) {
+ result |= AllHaveSvn;
+ result |= SomeHaveSvn;
+ } else if ( subdirhavesvn > 0 )
+ result |= SomeHaveSvn;
+ if ( external == list.count() ) {
+ result |= AllAreExternalToParent;
+ result |= SomeAreExternalToParent;
+ } else if ( external > 0 )
+ result |= SomeAreExternalToParent;
+
+ return result;
+}
+
+bool KSvnd::isFolder( const KURL& url ) {
+ QDir d( url.path() );
+ return d.exists();
+}
+
+QStringList KSvnd::getActionMenu ( const KURL::List &list ) {
+ QStringList result;
+ int listStatus = getStatus( list );
+
+ if ( !(listStatus & SomeAreInParentsEntries) &&
+ !(listStatus & SomeAreExternalToParent) &&
+ !(listStatus & SomeHaveSvn)) {
+ if( list.size() == 1 && listStatus & SomeAreFolders) {
+ result << "Checkout";
+ result << "Export";
+// result << "CreateRepository";
+ result << "Import";
+ }
+ } else if ( (listStatus & AllAreInParentsEntries) ) {
+ result << "Diff";
+ //In SVN
+// result << "ShowLog";
+// result << "CheckForModifications";
+// result << "RevisionGraph";
+// result << "_SEPARATOR_";
+// result << "Update to revision..."
+ result << "Rename";
+ result << "Delete";
+ if( listStatus & SomeAreFolders && !(listStatus & SomeAreFiles)) {
+ result << "Revert";
+// result << "Cleanup";
+ }
+ result << "_SEPARATOR_";
+// result << "BranchTag";
+ result << "Switch";
+ result << "Merge";
+ if( listStatus & SomeAreFolders && !(listStatus & SomeAreFiles)) {
+// result << "Export";
+// result << "Relocate";
+ result << "_SEPARATOR_";
+ result << "Add";
+ }
+ result << "_SEPARATOR_";
+ if( listStatus & SomeAreFiles && !(listStatus & SomeAreFolders)) {
+ result << "Blame";
+ }
+ result << "CreatePatch";
+
+ if( list.size() == 1 && listStatus & SomeAreFolders) {
+// result << "ApplyPatchToFolder";
+ }
+ }
+ return result;
+}
+
+QStringList KSvnd::getTopLevelActionMenu ( const KURL::List &list ) {
+ QStringList result;
+ int listStatus = getStatus( list );
+
+
+ if ( ( listStatus & AllParentsHaveSvn &&
+ ( ( listStatus & SomeAreExternalToParent ) || ( listStatus & SomeAreInParentsEntries ) )
+ || ( listStatus & SomeHaveSvn ) )
+ ) {
+ result << "Update";
+ result << "Commit";
+ }
+
+ return result;
+}
+
+#if 0
+void KSvnd::notify(const QString& path, int action, int kind, const QString& mime_type, int content_state, int prop_state, long int revision, const QString& userstring) {
+ kdDebug(7128) << "KDED/Subversion : notify " << path << " action : " << action << " mime_type : " << mime_type << " content_state : " << content_state << " prop_state : " << prop_state << " revision : " << revision << " userstring : " << userstring << endl;
+ QByteArray params;
+
+ QDataStream stream(params, IO_WriteOnly);
+ stream << path << action << kind << mime_type << content_state << prop_state << revision << userstring;
+
+ emitDCOPSignal( "subversionNotify(QString,int,int,QString,int,int,long int,QString)", params );
+}
+
+void KSvnd::status(const QString& path, int text_status, int prop_status, int repos_text_status, int repos_prop_status, long int rev ) {
+ kdDebug(7128) << "KDED/Subversion : status " << path << " " << text_status << " " << prop_status << " "
+ << repos_text_status << " " << repos_prop_status << " " << rev << endl;
+ QByteArray params;
+
+ QDataStream stream(params, IO_WriteOnly);
+ stream << path << text_status << prop_status << repos_text_status << repos_prop_status << rev;
+
+ emitDCOPSignal( "subversionStatus(QString,int,int,int,int,long int)", params );
+}
+
+void KSvnd::popupMessage( const QString& message ) {
+ kdDebug(7128) << "KDED/Subversion : popupMessage" << message << endl;
+ KMessageBox::information(0, message, i18n( "Subversion" ) );
+}
+#endif
+
+#include "ksvnd.moc"
diff --git a/kioslave/svn/ksvnd/ksvnd.desktop b/kioslave/svn/ksvnd/ksvnd.desktop
new file mode 100644
index 00000000..d2c942d4
--- /dev/null
+++ b/kioslave/svn/ksvnd/ksvnd.desktop
@@ -0,0 +1,50 @@
+[Desktop Entry]
+Type=Service
+Name=KDED Subversion Module
+Name[bg]=Модул KDED Subversion
+Name[br]=Mollad Subversion KDED
+Name[ca]=Mòdul KDED de Subversion
+Name[cs]=KDED Subversion modul
+Name[da]=KDED Subversion modul
+Name[de]=Subversion-Unterstützung
+Name[el]=Άρθρωμα KDED Subversion
+Name[es]=Módulo de Subversion de KDED
+Name[et]=KDED Subversioni moodul
+Name[eu]=KDED Subversion modulua
+Name[fa]=پیمانۀ زیرنسخۀ KDED
+Name[fi]=KDED Subversion -moduuli
+Name[fr]=Module KDED Subversion
+Name[ga]=Modúl Subversion KDED
+Name[gl]=Módulo KDED Subversion
+Name[hu]=KDED Subversion modul
+Name[is]=KDED Subversion eining
+Name[it]=Modulo Subversion di KDED
+Name[ja]=KDED Subversion モジュール
+Name[ka]=KDED Subversion მოდული
+Name[kk]=KDED Subversion қызмет модулі
+Name[lt]=KDED Subversion modulis
+Name[nb]=KDED Subversion-modul
+Name[nds]=KDED Subversion-Moduul
+Name[ne]=केडीईडी उप संस्करण मोड्युल
+Name[nl]=KDED Subversion-module
+Name[nn]=KDED Subversion-modul
+Name[pa]=KDED ਸਬ-ਵਰਜਨ ਮੈਡੀਊਲ
+Name[pl]=Moduł Subversion dla KDED
+Name[pt]=Módulo KDED Subversion
+Name[pt_BR]=Módulo de Sub-versão KDED
+Name[ru]=Служба Subversion
+Name[sk]=KDED Subversion modul
+Name[sl]=Modul Subversion za KDED
+Name[sr]=KDED модул за Subversion
+Name[sr@Latn]=KDED modul za Subversion
+Name[sv]=KDED Subversion-modul
+Name[tr]=KDED Alt Versiyon Modülü
+Name[uk]=Модуль KDED Subversion
+Name[zh_CN]=KDED Subversion 模块
+Name[zh_TW]=KDED Subversion 模組
+ServiceTypes=KDEDModule
+X-KDE-ModuleType=Library
+X-KDE-Library=ksvnd
+X-KDE-FactoryName=ksvnd
+X-KDE-Kded-autoload=true
+X-KDE-Kded-load-on-demand=true
diff --git a/kioslave/svn/ksvnd/ksvnd.h b/kioslave/svn/ksvnd/ksvnd.h
new file mode 100644
index 00000000..20bb7e9a
--- /dev/null
+++ b/kioslave/svn/ksvnd/ksvnd.h
@@ -0,0 +1,69 @@
+/*
+ This file is part of the KDE Project
+
+ Copyright (C) 2003-2005 Mickael Marchand <marchand@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ version 2 as published by the Free Software Foundation.
+
+ This software 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 library; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KSVND_H
+#define KSVND_H
+
+#include <dcopclient.h>
+#include <kdedmodule.h>
+#include <kurl.h>
+#include <qstringlist.h>
+
+class KSvnd : public KDEDModule
+{
+ Q_OBJECT
+ K_DCOP
+
+ //note: InSVN means parent is added. InRepos means itself is added
+ enum { SomeAreFiles = 1, SomeAreFolders = 2, SomeAreInParentsEntries = 4, SomeParentsHaveSvn = 8, SomeHaveSvn = 16, SomeAreExternalToParent = 32, AllAreInParentsEntries = 64, AllParentsHaveSvn = 128, AllHaveSvn = 256, AllAreExternalToParent = 512, AllAreFolders = 1024 };
+public:
+ KSvnd(const QCString &);
+ ~KSvnd();
+
+k_dcop:
+// void addAuthInfo(KIO::AuthInfo, long);
+ QString commitDialog(QString);
+ bool anyNotValidWorkingCopy( const KURL::List& wclist );
+ bool anyValidWorkingCopy( const KURL::List& wclist );
+ bool AreAnyFilesNotInSvn( const KURL::List& wclist );
+ bool AreAnyFilesInSvn( const KURL::List& wclist );
+ bool AreAllFilesNotInSvn( const KURL::List& wclist );
+ bool AreAllFilesInSvn( const KURL::List& wclist );
+ QStringList getActionMenu ( const KURL::List& list );
+ QStringList getTopLevelActionMenu ( const KURL::List &list );
+// void notify(const QString&, int ,int, const QString& , int , int, long int, const QString&);
+// void status(const QString& path, int text_status, int prop_status, int repos_text_status, int repos_prop_status ,long int rev);
+// void popupMessage( const QString& message );
+
+k_dcop_signals:
+ //emitted whenever something happens using subversion ;)
+// void subversionNotify(const QString&, int ,int, const QString& , int , int, long int, const QString&);
+// void subversionStatus(const QString&,int,int,int,int,long int);
+
+public slots:
+
+protected:
+ bool isFileInSvnEntries ( const QString filename, const QString entfile );
+ bool isFileInExternals ( const QString filename, const QString propfile );
+ bool isFolder( const KURL& url );
+ int getStatus( const KURL::List& list );
+};
+
+#endif