+void SubversionPlugin::updateFiles()
+{
+ execSvnCommand("update");
+}
+
+void SubversionPlugin::showLocalChanges()
+{
+ Q_ASSERT(!m_contextDir.isEmpty());
+ Q_ASSERT(m_contextItems.isEmpty());
+
+ const QString command = "mkfifo /tmp/fifo; svn diff " +
+ KShell::quoteArg(m_contextDir) +
+ " > /tmp/fifo & kompare /tmp/fifo; rm /tmp/fifo";
+ KRun::runCommand(command, 0);
+}
+
+void SubversionPlugin::commitFiles()
+{
+ KDialog dialog(0, Qt::Dialog);
+
+ KVBox* box = new KVBox(&dialog);
+ new QLabel(i18nc("@label", "Description:"), box);
+ QTextEdit* editor = new QTextEdit(box);
+
+ dialog.setMainWidget(box);
+ dialog.setCaption(i18nc("@title:window", "SVN Commit"));
+ dialog.setButtons(KDialog::Ok | KDialog::Cancel);
+ dialog.setDefaultButton(KDialog::Ok);
+ dialog.setButtonText(KDialog::Ok, i18nc("@action:button", "Commit"));
+
+ KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"),
+ "SvnCommitDialog");
+ dialog.restoreDialogSize(dialogConfig);
+
+ if (dialog.exec() == QDialog::Accepted) {
+ const QString description = editor->toPlainText();
+ execSvnCommand("commit -m " + KShell::quoteArg(description));
+ }
+
+ dialog.saveDialogSize(dialogConfig, KConfigBase::Persistent);
+}
+
+void SubversionPlugin::addFiles()
+{
+ execSvnCommand("add");
+}
+
+void SubversionPlugin::removeFiles()
+{
+ execSvnCommand("remove");
+}
+
+void SubversionPlugin::execSvnCommand(const QString& svnCommand)
+{
+ const QString command = "svn " + svnCommand + ' ';
+ if (!m_contextDir.isEmpty()) {
+ KRun::runCommand(command + KShell::quoteArg(m_contextDir), 0);
+ } else {
+ foreach (const KFileItem& item, m_contextItems) {
+ KRun::runCommand(command + KShell::quoteArg(item.localPath()), 0);
+ }
+ }
+}
+