File indexing completed on 2024-04-28 05:42:02
0001 /*************************************************************************** 0002 * Copyright (C) 2005-2009 by Rajko Albrecht * 0003 * ral@alwins-world.de * 0004 * * 0005 * This program is free software; you can redistribute it and/or modify * 0006 * it under the terms of the GNU General Public License as published by * 0007 * the Free Software Foundation; either version 2 of the License, or * 0008 * (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 * 0013 * GNU General Public License for more details. * 0014 * * 0015 * You should have received a copy of the GNU General Public License * 0016 * along with this program; if not, write to the * 0017 * Free Software Foundation, Inc., * 0018 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * 0019 ***************************************************************************/ 0020 #include "mergedlg_impl.h" 0021 #include "helpers/ktranslateurl.h" 0022 #include "ksvnwidgets/ksvndialog.h" 0023 #include "rangeinput_impl.h" 0024 #include "settings/kdesvnsettings.h" 0025 #include <svnqt/url.h> 0026 #include <svnqt/version_check.h> 0027 0028 #include <KLocalizedString> 0029 0030 MergeDlg_impl::MergeDlg_impl(QWidget *parent, bool src1, bool src2, bool out, bool record_only, bool reintegrate) 0031 : QWidget(parent) 0032 , Ui::MergeDlg() 0033 { 0034 setupUi(this); 0035 m_SrcOneInput->setMode(KFile::Directory | KFile::File); 0036 if (!src1) { 0037 m_SrcOneInput->setEnabled(false); 0038 m_SrcOneInput->hide(); 0039 m_SrcOneLabel->hide(); 0040 } 0041 m_SrcTwoInput->setMode(KFile::Directory | KFile::File); 0042 if (!src2) { 0043 m_SrcTwoInput->setEnabled(false); 0044 m_SrcTwoInput->hide(); 0045 m_SrcTwoLabel->hide(); 0046 } 0047 m_OutInput->setMode(KFile::LocalOnly | KFile::Directory | KFile::File); 0048 if (!out) { 0049 m_OutInput->setEnabled(false); 0050 m_OutInput->hide(); 0051 m_OutLabel->hide(); 0052 } 0053 if (!record_only) { 0054 m_RecordOnly->setEnabled(false); 0055 m_RecordOnly->hide(); 0056 } 0057 if (!reintegrate) { 0058 m_Reintegrate->setEnabled(false); 0059 m_Reintegrate->hide(); 0060 } 0061 if (svn::Version::version_major() == 1 && svn::Version::version_minor() < 7) { 0062 m_AllowMixedRev->setEnabled(false); 0063 m_AllowMixedRev->hide(); 0064 } 0065 adjustSize(); 0066 setMinimumSize(minimumSizeHint()); 0067 m_useExternMerge->setChecked(Kdesvnsettings::extern_merge_default()); 0068 } 0069 0070 MergeDlg_impl::~MergeDlg_impl() 0071 { 0072 } 0073 0074 void MergeDlg_impl::setSrc1(const QString &what) 0075 { 0076 if (what.isEmpty()) { 0077 m_SrcOneInput->clear(); 0078 return; 0079 } 0080 m_SrcOneInput->setUrl(helpers::KTranslateUrl::string2Uri(what)); 0081 } 0082 0083 void MergeDlg_impl::setSrc2(const QString &what) 0084 { 0085 if (what.isEmpty()) { 0086 m_SrcTwoInput->clear(); 0087 return; 0088 } 0089 m_SrcTwoInput->setUrl(helpers::KTranslateUrl::string2Uri(what)); 0090 } 0091 0092 void MergeDlg_impl::setDest(const QString &what) 0093 { 0094 if (what.isEmpty()) { 0095 m_OutInput->clear(); 0096 return; 0097 } 0098 // only local destination 0099 m_OutInput->setUrl(QUrl::fromLocalFile(what)); 0100 } 0101 0102 bool MergeDlg_impl::recursive() const 0103 { 0104 return m_RecursiveCheck->isChecked(); 0105 } 0106 0107 bool MergeDlg_impl::force() const 0108 { 0109 return m_ForceCheck->isChecked(); 0110 } 0111 0112 bool MergeDlg_impl::ignorerelated() const 0113 { 0114 return m_RelatedCheck->isChecked(); 0115 } 0116 0117 bool MergeDlg_impl::dryrun() const 0118 { 0119 return m_DryCheck->isChecked(); 0120 } 0121 0122 bool MergeDlg_impl::useExtern() const 0123 { 0124 return m_useExternMerge->isChecked(); 0125 } 0126 0127 bool MergeDlg_impl::recordOnly() const 0128 { 0129 return m_RecordOnly->isChecked(); 0130 } 0131 0132 bool MergeDlg_impl::reintegrate() const 0133 { 0134 return m_Reintegrate->isChecked(); 0135 } 0136 0137 bool MergeDlg_impl::allowmixedrevs() const 0138 { 0139 return m_AllowMixedRev->isChecked(); 0140 } 0141 0142 QString MergeDlg_impl::Src1() const 0143 { 0144 QUrl uri(m_SrcOneInput->url()); 0145 const QString proto = svn::Url::transformProtokoll(uri.scheme()); 0146 if (proto == QLatin1String("file") && !m_SrcOneInput->url().scheme().startsWith("ksvn+file:")) { 0147 return uri.toLocalFile(); 0148 } 0149 0150 uri.setScheme(proto); 0151 return uri.url(); 0152 } 0153 0154 QString MergeDlg_impl::Src2() const 0155 { 0156 if (m_SrcTwoInput->url().isEmpty()) { 0157 return QString(); 0158 } 0159 QUrl uri(m_SrcTwoInput->url()); 0160 const QString proto = svn::Url::transformProtokoll(uri.scheme()); 0161 if (proto == QLatin1String("file") && !m_SrcTwoInput->url().scheme().startsWith("ksvn+file:")) { 0162 return uri.toLocalFile(); 0163 } 0164 0165 uri.setScheme(proto); 0166 return uri.url(); 0167 } 0168 0169 QString MergeDlg_impl::Dest() const 0170 { 0171 return m_OutInput->url().toLocalFile(); 0172 } 0173 0174 Rangeinput_impl::revision_range MergeDlg_impl::getRange() const 0175 { 0176 return m_RangeInput->getRange(); 0177 } 0178 0179 /*! 0180 \fn MergeDlg_impl::getMergeRange(bool*force,bool*recursive,bool*related,bool*dry) 0181 */ 0182 bool MergeDlg_impl::getMergeRange(Rangeinput_impl::revision_range &range, 0183 bool *force, 0184 bool *recursive, 0185 bool *ignorerelated, 0186 bool *dry, 0187 bool *useExternal, 0188 bool *allowmixedrevs, 0189 QWidget *parent) 0190 { 0191 QPointer<KSvnSimpleOkDialog> dlg(new KSvnSimpleOkDialog(QStringLiteral("merge_range"), parent)); 0192 dlg->setWithCancelButton(); 0193 dlg->setHelp(QLatin1String("merging-items")); 0194 dlg->setWindowTitle(i18nc("@title:window", "Enter Merge Range")); 0195 0196 MergeDlg_impl *ptr = new MergeDlg_impl(dlg, false, false, false, false, false); 0197 dlg->addWidget(ptr); 0198 bool ret = false; 0199 if (dlg->exec() == QDialog::Accepted) { 0200 range = ptr->getRange(); 0201 *force = ptr->force(); 0202 *recursive = ptr->recursive(); 0203 *ignorerelated = ptr->ignorerelated(); 0204 *dry = ptr->dryrun(); 0205 *useExternal = ptr->useExtern(); 0206 *allowmixedrevs = ptr->allowmixedrevs(); 0207 ret = true; 0208 } 0209 delete dlg; 0210 0211 return ret; 0212 } 0213 0214 void MergeDlg_impl::externDisplayToggled(bool how) 0215 { 0216 m_DryCheck->setEnabled(!how); 0217 m_RelatedCheck->setEnabled(!how); 0218 m_ForceCheck->setEnabled(!how); 0219 m_RecordOnly->setEnabled(!how); 0220 m_Reintegrate->setEnabled(!how); 0221 } 0222 0223 void MergeDlg_impl::recordOnlyToggled(bool) 0224 { 0225 } 0226 0227 void MergeDlg_impl::reintegrateToggled(bool how) 0228 { 0229 m_RelatedCheck->setEnabled(!how); 0230 m_ForceCheck->setEnabled(!how); 0231 m_RecordOnly->setEnabled(!how); 0232 m_useExternMerge->setEnabled(!how); 0233 m_RecursiveCheck->setEnabled(!how); 0234 m_SrcTwoInput->setEnabled(!how); 0235 m_RangeInput->setStartOnly(how); 0236 if (how) { 0237 m_RecursiveCheck->setChecked(true); 0238 m_useExternMerge->setChecked(false); 0239 m_RecordOnly->setChecked(false); 0240 m_ForceCheck->setChecked(false); 0241 m_RelatedCheck->setChecked(false); 0242 } 0243 } 0244 0245 #include "moc_mergedlg_impl.cpp"