summaryrefslogtreecommitdiffstats
path: root/src/svnqt/entry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/svnqt/entry.cpp')
-rw-r--r--src/svnqt/entry.cpp394
1 files changed, 394 insertions, 0 deletions
diff --git a/src/svnqt/entry.cpp b/src/svnqt/entry.cpp
new file mode 100644
index 0000000..27c14cf
--- /dev/null
+++ b/src/svnqt/entry.cpp
@@ -0,0 +1,394 @@
+/*
+ * Port for usage with qt-framework and development for kdesvn
+ * (C) 2005-2007 by Rajko Albrecht
+ * http://kdesvn.alwins-world.de
+ */
+/*
+ * ====================================================================
+ * Copyright (c) 2002-2005 The RapidSvn Group. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library (in the file LGPL.txt); if not,
+ * write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals. For exact contribution history, see the revision
+ * history and logs, available at http://rapidsvn.tigris.org/.
+ * ====================================================================
+ */
+
+// svncpp
+#include "entry.hpp"
+
+namespace svn
+{
+ class SVNQT_NOEXPORT Entry_private
+ {
+ protected:
+ void init_clean();
+ public:
+ Entry_private();
+ Entry_private(const Entry_private&src);
+ virtual ~Entry_private();
+
+ bool m_valid;
+ LockEntry m_Lock;
+
+ QString _name,_url,_repos,_uuid,_copyfrom_url,_conflict_old,_conflict_new,_conflict_wrk,_prejfile,_checksum,_cmt_author;
+ bool _copied,_deleted,_absent,_incomplete;
+ svn_revnum_t _revision,_copyfrom_rev,_cmt_rev;
+ svn_node_kind_t _kind;
+ svn_wc_schedule_t _schedule;
+ DateTime _text_time,_prop_time,_cmt_date;
+
+ /**
+ * initializes the members
+ */
+ void
+ init (const svn_wc_entry_t * src);
+ void
+ init(const Entry_private&src);
+ void
+ init(const QString&url,const DirEntryPtr&src);
+ void
+ init(const QString&url,const InfoEntry&src);
+ };
+
+ void Entry_private::init_clean()
+ {
+ _name = _url = _repos = _uuid = _copyfrom_url = _conflict_old = _conflict_new = _conflict_wrk
+ = _prejfile = _checksum = _cmt_author = QString::null;
+ _revision = _copyfrom_rev = _cmt_rev = -1;
+ _kind = svn_node_unknown;
+ _schedule = svn_wc_schedule_normal;
+ _text_time = _prop_time = _cmt_date = 0;
+ _copied = _deleted = _absent = _incomplete = false;
+ }
+
+ Entry_private::Entry_private()
+ : m_valid (false),m_Lock()
+ {
+ init_clean();
+ }
+
+ Entry_private::Entry_private(const Entry_private&src)
+ : m_valid (false),m_Lock()
+ {
+ init_clean();
+ init(src);
+ }
+
+ Entry_private::~Entry_private()
+ {
+ }
+
+ void
+ Entry_private::init (const svn_wc_entry_t * src)
+ {
+ if (src) {
+ // copy & convert the contents of src
+ _name = QString::FROMUTF8(src->name);
+ _revision = src->revision;
+ _url = QString::FROMUTF8(src->url);
+ _repos = QString::FROMUTF8(src->repos);
+ _uuid = QString::FROMUTF8(src->uuid);
+ _kind = src->kind;
+ _schedule = src->schedule;
+ _copied = src->copied!=0;
+ _deleted = src->deleted!=0;
+ _absent = src->absent!=0;
+ _incomplete = src->incomplete!=0;
+ _copyfrom_url=QString::FROMUTF8(src->copyfrom_url);
+ _copyfrom_rev = src->copyfrom_rev;
+ _conflict_old = QString::FROMUTF8(src->conflict_old);
+ _conflict_new = QString::FROMUTF8(src->conflict_new);
+ _conflict_wrk = QString::FROMUTF8(src->conflict_wrk);
+ _prejfile = QString::FROMUTF8(src->prejfile);
+ _text_time = src->text_time;
+ _prop_time = src->prop_time;
+ _checksum = QString::FROMUTF8(src->checksum);
+ _cmt_rev = src->cmt_rev;
+ _cmt_date = src->cmt_date;
+ _cmt_author = QString::FROMUTF8(src->cmt_author);
+ m_Lock.init(src);
+ m_valid = true;
+ } else {
+ m_valid = false;
+ m_Lock=LockEntry();
+ _name=
+ _url=_repos=_uuid=_copyfrom_url=_conflict_old=_conflict_new=_conflict_wrk=_prejfile=_checksum=_cmt_author= QString::null;
+ _copied=_deleted=_absent=_incomplete = false;
+ _kind = svn_node_unknown;
+ _schedule=svn_wc_schedule_normal;
+ _text_time=_prop_time=_cmt_date=0;
+ }
+ }
+ void
+ Entry_private::init(const Entry_private&src)
+ {
+ _name=src._name;
+ _url=src._url;
+ _repos=src._repos;
+ _uuid=src._uuid;
+ _copyfrom_url=src._copyfrom_url;
+ _conflict_old=src._conflict_old;
+ _conflict_new=src._conflict_new;
+ _conflict_wrk=src._conflict_wrk;
+ _prejfile=src._prejfile;
+ _checksum=src._checksum;
+ _cmt_author=src._cmt_author;
+ _copied=src._copied;
+ _deleted=src._deleted;
+ _absent=src._absent;
+ _incomplete=src._incomplete;
+ _revision=src._revision;
+ _copyfrom_rev=src._copyfrom_rev;
+ _cmt_rev=src._cmt_rev;
+ _kind=src._kind;
+ _schedule=src._schedule;
+ _text_time=src._text_time;
+ _prop_time=src._prop_time;
+ _cmt_date=src._cmt_date;
+ _kind = src._kind;
+ m_Lock=src.m_Lock;
+ m_valid=src.m_valid;
+ }
+
+ void Entry_private::init(const QString&url,const DirEntryPtr&dirEntry)
+ {
+ init(0);
+ _url = url;
+ if (dirEntry) {
+ _name=dirEntry->name();
+ _revision = dirEntry->createdRev();
+ _kind = dirEntry->kind();
+ _schedule = svn_wc_schedule_normal;
+ _text_time = dirEntry->time ();
+ _prop_time = dirEntry->time ();
+ _cmt_rev = dirEntry->createdRev ();
+ _cmt_date = dirEntry->time ();
+ _cmt_author = dirEntry->lastAuthor ();
+ m_Lock=dirEntry->lockEntry();
+ m_valid = true;
+ }
+ }
+
+ void Entry_private::init(const QString&url,const InfoEntry&src)
+ {
+ init(0);
+ _name = src.Name();
+ _url = url;
+ _revision = src.revision();
+ _kind = src.kind ();
+ _schedule = svn_wc_schedule_normal;
+ _text_time = src.textTime ();
+ _prop_time = src.propTime ();
+ _cmt_rev = src.cmtRev ();
+ _cmt_date = src.cmtDate();
+ _cmt_author = src.cmtAuthor();
+ m_Lock=src.lockEntry();
+ m_valid = true;
+ }
+
+ Entry::Entry (const svn_wc_entry_t * src)
+ : m_Data(new Entry_private())
+ {
+ m_Data->init (src);
+ }
+
+ Entry::Entry (const Entry & src)
+ : m_Data(new Entry_private())
+ {
+ if (src.m_Data) {
+ m_Data->init(*(src.m_Data));
+ } else {
+ m_Data->init(0);
+ }
+ }
+
+ Entry::Entry (const QString&url,const DirEntryPtr&src)
+ : m_Data(new Entry_private())
+ {
+ m_Data->init(url,src);
+ }
+
+ Entry::Entry (const QString&url,const InfoEntry&src)
+ : m_Data(new Entry_private())
+ {
+ m_Data->init(url,src);
+ }
+
+ Entry::~Entry ()
+ {
+ delete m_Data;
+ }
+
+ Entry &
+ Entry::operator = (const Entry & src)
+ {
+ if (this == &src)
+ return *this;
+ if (src.m_Data) {
+ m_Data->init(*(src.m_Data));
+ } else {
+ m_Data->init(0);
+ }
+ return *this;
+ }
+
+ const LockEntry&
+ Entry::lockEntry()const
+ {
+ return m_Data->m_Lock;
+ }
+
+ const QString&
+ Entry::cmtAuthor () const
+ {
+ return m_Data->_cmt_author;
+ }
+
+ const DateTime&
+ Entry::cmtDate () const
+ {
+ return m_Data->_cmt_date;
+ }
+
+ svn_revnum_t
+ Entry::cmtRev () const
+ {
+ return m_Data->_cmt_rev;
+ }
+ const QString&
+ Entry::checksum () const
+ {
+ return m_Data->_checksum;
+ }
+
+ const DateTime&
+ Entry::propTime () const
+ {
+ return m_Data->_prop_time;
+ }
+
+ const DateTime&
+ Entry::textTime () const
+ {
+ return m_Data->_text_time;
+ }
+ const QString&
+ Entry::prejfile () const
+ {
+ return m_Data->_prejfile;
+ }
+ const QString&
+ Entry::conflictWrk () const
+ {
+ return m_Data->_conflict_wrk;
+ }
+
+ const QString&
+ Entry::conflictNew () const
+ {
+ return m_Data->_conflict_new;
+ }
+ const QString&
+ Entry::conflictOld () const
+ {
+ return m_Data->_conflict_old;
+ }
+ svn_revnum_t
+ Entry::copyfromRev () const
+ {
+ return m_Data->_copyfrom_rev;
+ }
+ const QString&
+ Entry::copyfromUrl () const
+ {
+ return m_Data->_copyfrom_url;
+ }
+
+ bool
+ Entry::isAbsent () const
+ {
+ return m_Data->_absent;
+ }
+ bool
+ Entry::isDeleted () const
+ {
+ return m_Data->_deleted != 0;
+ }
+ bool
+ Entry::isCopied () const
+ {
+ return m_Data->_copied != 0;
+ }
+ svn_wc_schedule_t
+ Entry::schedule () const
+ {
+ return m_Data->_schedule;
+ }
+ svn_node_kind_t
+ Entry::kind () const
+ {
+ return m_Data->_kind;
+ }
+ const QString&
+ Entry::uuid () const
+ {
+ return m_Data->_uuid;
+ }
+ const QString&
+ Entry::repos () const
+ {
+ return m_Data->_repos;
+ }
+ const QString&
+ Entry::url () const
+ {
+ return m_Data->_url;
+ }
+ svn_revnum_t
+ Entry::revision () const
+ {
+ return m_Data->_revision;
+ }
+ const QString&
+ Entry::name () const
+ {
+ return m_Data->_name;
+ }
+
+ bool Entry::isValid () const
+ {
+ return m_Data->m_valid;
+ }
+}
+
+/*!
+ \fn svn::Entry::isDir()
+ */
+bool svn::Entry::isDir() const
+{
+ return kind()==svn_node_dir;
+}
+
+
+/*!
+ \fn svn::Entry::isFile()
+ */
+bool svn::Entry::isFile() const
+{
+ return kind()==svn_node_file;
+}