File indexing completed on 2024-04-28 05:42:09

0001 /***************************************************************************
0002  *   Copyright (C) 2008-2009 by Rajko Albrecht  ral@alwins-world.de        *
0003  *   https://kde.org/applications/development/org.kde.kdesvn               *
0004  *                                                                         *
0005  * This program is free software; you can redistribute it and/or           *
0006  * modify it under the terms of the GNU Lesser General Public              *
0007  * License as published by the Free Software Foundation; either            *
0008  * version 2.1 of the License, or (at your option) any later version.      *
0009  *                                                                         *
0010  * This program is distributed in the hope that it will be useful,         *
0011  * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
0012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU       *
0013  * Lesser General Public License for more details.                         *
0014  *                                                                         *
0015  * You should have received a copy of the GNU Lesser General Public        *
0016  * License along with this program (in the file LGPL.txt); if not,         *
0017  * write to the Free Software Foundation, Inc., 51 Franklin St,            *
0018  * Fifth Floor, Boston, MA  02110-1301  USA                                *
0019  *                                                                         *
0020  * This software consists of voluntary contributions made by many          *
0021  * individuals.  For exact contribution history, see the revision          *
0022  * history and logs, available at https://commits.kde.org/kdesvn.          *
0023  ***************************************************************************/
0024 #include "conflictdescription.h"
0025 #include "svnqt_defines.h"
0026 
0027 #include "helper.h"
0028 #include <svn_wc.h>
0029 
0030 namespace svn
0031 {
0032 
0033 ConflictDescription::~ConflictDescription()
0034 {
0035 }
0036 
0037 ConflictDescription::ConflictDescription(const svn_wc_conflict_description2_t *conflict)
0038 {
0039     init();
0040     if (!conflict) {
0041         return;
0042     }
0043     m_baseFile = QString::fromUtf8(conflict->base_abspath);
0044     m_mergedFile = QString::fromUtf8(conflict->merged_file);
0045     m_mimeType = QString::fromUtf8(conflict->mime_type);
0046     m_myFile = QString::fromUtf8(conflict->my_abspath);
0047     m_Path = QString::fromUtf8(conflict->local_abspath);
0048     m_propertyName = QString::fromUtf8(conflict->property_name);
0049     m_theirFile = QString::fromUtf8(conflict->their_abspath);
0050     switch (conflict->action) {
0051     case svn_wc_conflict_action_edit:
0052         m_action = ConflictAction::Edit;
0053         break;
0054     case svn_wc_conflict_action_add:
0055         m_action = ConflictAction::Add;
0056         break;
0057     case svn_wc_conflict_action_delete:
0058         m_action = ConflictAction::Delete;
0059         break;
0060     case svn_wc_conflict_action_replace:
0061         m_action = ConflictAction::Replace;
0062         break;
0063     }
0064     switch (conflict->kind) {
0065     case svn_wc_conflict_kind_text:
0066         m_Type = ConflictType::Text;
0067         break;
0068     case svn_wc_conflict_kind_property:
0069         m_Type = ConflictType::Property;
0070         break;
0071     case svn_wc_conflict_kind_tree:
0072         m_Type = ConflictType::Tree;
0073         break;
0074     }
0075     m_nodeKind = conflict->node_kind;
0076     m_binary = conflict->is_binary;
0077     switch (conflict->reason) {
0078     case svn_wc_conflict_reason_edited:
0079         m_reason = ConflictReason::Edited;
0080         break;
0081     case svn_wc_conflict_reason_obstructed:
0082         m_reason = ConflictReason::Obstructed;
0083         break;
0084     case svn_wc_conflict_reason_deleted:
0085         m_reason = ConflictReason::Deleted;
0086         break;
0087     case svn_wc_conflict_reason_missing:
0088         m_reason = ConflictReason::Missing;
0089         break;
0090     case svn_wc_conflict_reason_unversioned:
0091         m_reason = ConflictReason::Unversioned;
0092         break;
0093     case svn_wc_conflict_reason_added:
0094         m_reason = ConflictReason::Added;
0095         break;
0096     case svn_wc_conflict_reason_replaced:
0097         m_reason = ConflictReason::Replaced;
0098         break;
0099 #if SVN_API_VERSION >= SVN_VERSION_CHECK(1, 8, 0)
0100     case svn_wc_conflict_reason_moved_away:
0101         m_reason = ConflictReason::MovedAway;
0102         break;
0103     case svn_wc_conflict_reason_moved_here:
0104         m_reason = ConflictReason::MovedHere;
0105         break;
0106 #endif
0107     }
0108 }
0109 
0110 ConflictDescription::ConflictDescription(const svn_wc_conflict_description_t *conflict)
0111     : m_pool()
0112 {
0113     init();
0114     if (!conflict) {
0115         return;
0116     }
0117     m_baseFile = QString::fromUtf8(conflict->base_file);
0118     m_mergedFile = QString::fromUtf8(conflict->merged_file);
0119     m_mimeType = QString::fromUtf8(conflict->mime_type);
0120     m_myFile = QString::fromUtf8(conflict->my_file);
0121     m_Path = QString::fromUtf8(conflict->path);
0122     m_propertyName = QString::fromUtf8(conflict->property_name);
0123     m_theirFile = QString::fromUtf8(conflict->their_file);
0124     switch (conflict->action) {
0125     case svn_wc_conflict_action_edit:
0126         m_action = ConflictAction::Edit;
0127         break;
0128     case svn_wc_conflict_action_add:
0129         m_action = ConflictAction::Add;
0130         break;
0131     case svn_wc_conflict_action_delete:
0132         m_action = ConflictAction::Delete;
0133         break;
0134     case svn_wc_conflict_action_replace:
0135         m_action = ConflictAction::Replace;
0136         break;
0137     }
0138     switch (conflict->kind) {
0139     case svn_wc_conflict_kind_text:
0140         m_Type = ConflictType::Text;
0141         break;
0142     case svn_wc_conflict_kind_property:
0143         m_Type = ConflictType::Property;
0144         break;
0145     case svn_wc_conflict_kind_tree:
0146         m_Type = ConflictType::Tree;
0147         break;
0148     }
0149     m_nodeKind = conflict->node_kind;
0150     m_binary = conflict->is_binary;
0151     switch (conflict->reason) {
0152     case svn_wc_conflict_reason_edited:
0153         m_reason = ConflictReason::Edited;
0154         break;
0155     case svn_wc_conflict_reason_obstructed:
0156         m_reason = ConflictReason::Obstructed;
0157         break;
0158     case svn_wc_conflict_reason_deleted:
0159         m_reason = ConflictReason::Deleted;
0160         break;
0161     case svn_wc_conflict_reason_missing:
0162         m_reason = ConflictReason::Missing;
0163         break;
0164     case svn_wc_conflict_reason_unversioned:
0165         m_reason = ConflictReason::Unversioned;
0166         break;
0167     case svn_wc_conflict_reason_added:
0168         m_reason = ConflictReason::Added;
0169         break;
0170     case svn_wc_conflict_reason_replaced:
0171         m_reason = ConflictReason::Replaced;
0172         break;
0173 #if SVN_API_VERSION >= SVN_VERSION_CHECK(1, 8, 0)
0174     case svn_wc_conflict_reason_moved_away:
0175         m_reason = ConflictReason::MovedAway;
0176         break;
0177     case svn_wc_conflict_reason_moved_here:
0178         m_reason = ConflictReason::MovedHere;
0179         break;
0180 #endif
0181     }
0182 }
0183 
0184 }
0185 
0186 svn::ConflictDescription::ConflictAction svn::ConflictDescription::action() const
0187 {
0188     return m_action;
0189 }
0190 
0191 const QString &svn::ConflictDescription::baseFile() const
0192 {
0193     return m_baseFile;
0194 }
0195 
0196 /*!
0197     \fn svn::ConflictDescription::init()
0198  */
0199 void svn::ConflictDescription::init()
0200 {
0201     m_action = ConflictAction::Edit;
0202     m_Type = ConflictType::Text;
0203     m_reason = ConflictReason::Edited;
0204     m_binary = false;
0205     m_nodeKind = svn_node_unknown;
0206 }
0207 
0208 bool svn::ConflictDescription::binary() const
0209 {
0210     return m_binary;
0211 }
0212 
0213 const QString &svn::ConflictDescription::mergedFile() const
0214 {
0215     return m_mergedFile;
0216 }
0217 
0218 const QString &svn::ConflictDescription::mimeType() const
0219 {
0220     return m_mimeType;
0221 }
0222 
0223 const QString &svn::ConflictDescription::myFile() const
0224 {
0225     return m_myFile;
0226 }
0227 
0228 svn_node_kind_t svn::ConflictDescription::nodeKind() const
0229 {
0230     return m_nodeKind;
0231 }
0232 
0233 const QString &svn::ConflictDescription::Path() const
0234 {
0235     return m_Path;
0236 }
0237 
0238 const QString &svn::ConflictDescription::propertyName() const
0239 {
0240     return m_propertyName;
0241 }
0242 
0243 svn::ConflictDescription::ConflictReason svn::ConflictDescription::reason() const
0244 {
0245     return m_reason;
0246 }
0247 
0248 const QString &svn::ConflictDescription::theirFile() const
0249 {
0250     return m_theirFile;
0251 }
0252 
0253 svn::ConflictDescription::ConflictType svn::ConflictDescription::Type() const
0254 {
0255     return m_Type;
0256 }