summaryrefslogtreecommitdiffstats
path: root/src/svnfrontend/fronthelpers/checkoutinfo_impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/svnfrontend/fronthelpers/checkoutinfo_impl.cpp')
-rw-r--r--src/svnfrontend/fronthelpers/checkoutinfo_impl.cpp211
1 files changed, 211 insertions, 0 deletions
diff --git a/src/svnfrontend/fronthelpers/checkoutinfo_impl.cpp b/src/svnfrontend/fronthelpers/checkoutinfo_impl.cpp
new file mode 100644
index 0000000..8d207e7
--- /dev/null
+++ b/src/svnfrontend/fronthelpers/checkoutinfo_impl.cpp
@@ -0,0 +1,211 @@
+/***************************************************************************
+ * Copyright (C) 2005-2007 by Rajko Albrecht *
+ * *
+ * 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; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+#include "checkoutinfo_impl.h"
+#include "rangeinput_impl.h"
+#include "src/ksvnwidgets/depthselector.h"
+#include "src/svnqt/url.hpp"
+#include "helpers/ktranslateurl.h"
+#include <kurlrequester.h>
+#include <qlabel.h>
+#include <qtooltip.h>
+
+#include <klineedit.h>
+#include <qcheckbox.h>
+#include <klocale.h>
+#include <kdebug.h>
+
+CheckoutInfo_impl::CheckoutInfo_impl(QWidget *parent, const char *name)
+ :CheckoutInfo(parent, name)
+{
+ m_RangeInput->setStartOnly(true);
+ m_RangeInput->setHeadDefault();
+}
+
+CheckoutInfo_impl::~CheckoutInfo_impl()
+{
+}
+
+svn::Revision CheckoutInfo_impl::toRevision()
+{
+ return m_RangeInput->getRange().first;
+}
+
+QString CheckoutInfo_impl::reposURL()
+{
+ KURL uri(m_UrlEdit->url());
+ QString proto = svn::Url::transformProtokoll(uri.protocol());
+ if (proto=="file"&&!m_UrlEdit->url().startsWith("ksvn+file:")) {
+ uri.setProtocol("");
+ } else {
+ uri.setProtocol(proto);
+ }
+ return uri.prettyURL();
+}
+
+QString CheckoutInfo_impl::targetDir()
+{
+ if (!m_CreateDirButton->isChecked()) {
+ return m_TargetSelector->url();
+ }
+ QString _uri = reposURL();
+ while (_uri.endsWith("/")) {
+ _uri.truncate(_uri.length()-1);
+ }
+ QStringList l = QStringList::split('/',_uri);
+ if (l.count()==0) {
+ return m_TargetSelector->url();
+ }
+ return m_TargetSelector->url()+"/"+l[l.count()-1];
+}
+
+bool CheckoutInfo_impl::overwrite()
+{
+ return m_overwriteButton->isChecked();
+}
+
+/*!
+ \fn CheckoutInfo_impl::setTargetUrl(const QString&)
+ */
+void CheckoutInfo_impl::setTargetUrl(const QString&what)
+{
+ m_TargetSelector->setURL(what);
+}
+
+void CheckoutInfo_impl::setStartUrl(const QString&what)
+{
+ KURL uri(what);
+ if (uri.protocol()=="file") {
+ if (what.startsWith("file:")) {
+ uri.setProtocol("ksvn+file");
+ } else {
+ uri.setProtocol("");
+ }
+ } else {
+ uri.setProtocol(helpers::KTranslateUrl::makeKdeUrl(uri.protocol()));
+ }
+ m_UrlEdit->setURL(uri.prettyURL());
+}
+
+void CheckoutInfo_impl::hideDepth(bool how,bool overwriteAsRecurse)
+{
+ if (how) {
+ m_DepthSelector->setEnabled(false);
+ m_DepthSelector->hide();
+ if (overwriteAsRecurse) {
+ QToolTip::add( m_overwriteButton, i18n( "Make operation recursive." ) );
+ m_overwriteButton->setText(i18n("Recursive"));
+ }
+ } else if (!how) {
+ m_DepthSelector->setEnabled(false);
+ m_DepthSelector->show();
+ m_overwriteButton->setText( tr2i18n( "Overwrite existing" ) );
+ QToolTip::add( m_overwriteButton, tr2i18n( "May existing unversioned items ovewritten" ) );
+ }
+ adjustSize();
+}
+
+svn::Depth CheckoutInfo_impl::getDepth()
+{
+ if (m_DepthSelector->isEnabled()) {
+ return m_DepthSelector->getDepth();
+ }
+ return svn::DepthUnknown;
+}
+
+void CheckoutInfo_impl::disableTargetDir(bool how)
+{
+ if (how) {
+ m_TargetSelector->setEnabled(false);
+ m_TargetSelector->hide();
+ m_TargetLabel->hide();
+ } else if (!how) {
+ m_TargetSelector->setEnabled(true);
+ m_TargetSelector->show();
+ m_TargetLabel->show();
+ }
+}
+
+void CheckoutInfo_impl::disableOpen(bool how)
+{
+ if (how) {
+ m_ShowExplorer->setEnabled(false);
+ m_ShowExplorer->hide();
+ } else if (!how) {
+ m_ShowExplorer->setEnabled(true);
+ m_ShowExplorer->show();
+ }
+}
+
+
+/*!
+ \fn CheckoutInfo_impl::openAfterJob()
+ */
+bool CheckoutInfo_impl::openAfterJob()
+{
+ return m_ShowExplorer->isChecked();
+}
+
+/*!
+ \fn CheckoutInfo_impl::disableRange(bool how)
+ */
+void CheckoutInfo_impl::disableRange(bool how)
+{
+ if (how) {
+ m_RangeInput->setEnabled(false);
+ m_RangeInput->hide();
+ } else {
+ m_RangeInput->setEnabled(true);
+ m_RangeInput->show();
+ }
+}
+
+void CheckoutInfo_impl::urlChanged(const QString&)
+{
+}
+
+void CheckoutInfo_impl::disableAppend(bool how)
+{
+ m_CreateDirButton->setChecked(!how);
+ if (how) {
+ m_CreateDirButton->hide();
+ } else {
+ m_CreateDirButton->show();
+ }
+}
+
+/*!
+ \fn CheckoutInfo_impl::ignoreExternals()
+ */
+bool CheckoutInfo_impl::ignoreExternals()
+{
+ return m_ignoreExternals->isChecked();
+}
+
+void CheckoutInfo_impl::disableExternals(bool how)
+{
+ m_ignoreExternals->setChecked(!how);
+ if (how) {
+ m_ignoreExternals->hide();
+ } else {
+ m_ignoreExternals->show();
+ }
+}
+
+#include "checkoutinfo_impl.moc"