forked from qt-creator/qt-creator
Introduce ClearCase plugin
Change-Id: Ib2cebaff0f035f48ca958cad16dedfdd80f4bff9 Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
@@ -35,6 +35,7 @@ Project {
|
||||
"src/plugins/bineditor/bineditor.qbs",
|
||||
"src/plugins/bookmarks/bookmarks.qbs",
|
||||
"src/plugins/classview/classview.qbs",
|
||||
"src/plugins/clearcase/clearcase.qbs",
|
||||
"src/plugins/cmakeprojectmanager/cmakeprojectmanager.qbs",
|
||||
"src/plugins/coreplugin/coreplugin.qbs",
|
||||
"src/plugins/coreplugin/images/logo/logo.qbs",
|
||||
|
||||
7
src/plugins/clearcase/ClearCase.mimetypes.xml
Normal file
7
src/plugins/clearcase/ClearCase.mimetypes.xml
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
|
||||
<mime-type type="application/vnd.audc.text.clearcase.submit">
|
||||
<comment>ClearCase submit template</comment>
|
||||
<sub-class-of type="text/plain"/>
|
||||
</mime-type>
|
||||
</mime-info>
|
||||
18
src/plugins/clearcase/ClearCase.pluginspec.in
Normal file
18
src/plugins/clearcase/ClearCase.pluginspec.in
Normal file
@@ -0,0 +1,18 @@
|
||||
<plugin name=\"ClearCase\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_VERSION\">
|
||||
<vendor>AudioCodes</vendor>
|
||||
<copyright>(C) 2012 AudioCodes Ltd.</copyright>
|
||||
<license>
|
||||
GNU Lesser General Public License Usage
|
||||
|
||||
this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
</license>
|
||||
<category>Version Control</category>
|
||||
<description>ClearCase integration.</description>
|
||||
<url>http://www.qt-project.org</url>
|
||||
<dependencyList>
|
||||
<dependency name=\"TextEditor\" version=\"$$QTCREATOR_VERSION\"/>
|
||||
<dependency name=\"ProjectExplorer\" version=\"$$QTCREATOR_VERSION\"/>
|
||||
<dependency name=\"Core\" version=\"$$QTCREATOR_VERSION\"/>
|
||||
<dependency name=\"VcsBase\" version=\"$$QTCREATOR_VERSION\"/>
|
||||
</dependencyList>
|
||||
</plugin>
|
||||
123
src/plugins/clearcase/activityselector.cpp
Normal file
123
src/plugins/clearcase/activityselector.cpp
Normal file
@@ -0,0 +1,123 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "activityselector.h"
|
||||
#include "clearcaseconstants.h"
|
||||
#include "clearcaseplugin.h"
|
||||
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
#include <QComboBox>
|
||||
#include <QHBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QToolButton>
|
||||
|
||||
using namespace ClearCase;
|
||||
using namespace ClearCase::Internal;
|
||||
|
||||
ActivitySelector::ActivitySelector(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
m_plugin(ClearCasePlugin::instance()),
|
||||
m_changed(false)
|
||||
{
|
||||
QHBoxLayout *hboxLayout = new QHBoxLayout(this);
|
||||
hboxLayout->setContentsMargins(0, 0, 0, 0);
|
||||
|
||||
QLabel *lblActivity = new QLabel(tr("Select &Activity:"));
|
||||
lblActivity->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
|
||||
hboxLayout->addWidget(lblActivity);
|
||||
|
||||
m_cmbActivity = new QComboBox(this);
|
||||
m_cmbActivity->setMinimumSize(QSize(350, 0));
|
||||
hboxLayout->addWidget(m_cmbActivity);
|
||||
|
||||
QString addText = tr("Add");
|
||||
if (!m_plugin->settings().autoAssignActivityName)
|
||||
addText.append(QLatin1String("..."));
|
||||
QToolButton *btnAdd = new QToolButton;
|
||||
btnAdd->setText(addText);
|
||||
hboxLayout->addWidget(btnAdd);
|
||||
|
||||
#ifndef QT_NO_SHORTCUT
|
||||
lblActivity->setBuddy(m_cmbActivity);
|
||||
#endif // QT_NO_SHORTCUT
|
||||
|
||||
connect(btnAdd, SIGNAL(clicked()), this, SLOT(newActivity()));
|
||||
|
||||
refresh();
|
||||
connect(m_cmbActivity, SIGNAL(currentIndexChanged(int)), this, SLOT(userChanged()));
|
||||
}
|
||||
|
||||
void ActivitySelector::userChanged()
|
||||
{
|
||||
m_changed = true;
|
||||
}
|
||||
|
||||
bool ActivitySelector::refresh()
|
||||
{
|
||||
int current;
|
||||
QList<QStringPair> activities = m_plugin->activities(¤t);
|
||||
m_cmbActivity->clear();
|
||||
foreach (QStringPair activity, activities)
|
||||
m_cmbActivity->addItem(activity.second, activity.first);
|
||||
m_cmbActivity->setCurrentIndex(current);
|
||||
m_cmbActivity->updateGeometry();
|
||||
resize(size());
|
||||
return !activities.isEmpty();
|
||||
}
|
||||
|
||||
void ActivitySelector::addKeep()
|
||||
{
|
||||
m_cmbActivity->insertItem(0, tr("Keep item activity"), QLatin1String(Constants::KEEP_ACTIVITY));
|
||||
setActivity(QLatin1String(Constants::KEEP_ACTIVITY));
|
||||
}
|
||||
|
||||
QString ActivitySelector::activity() const
|
||||
{
|
||||
return m_cmbActivity->itemData(m_cmbActivity->currentIndex()).toString();
|
||||
}
|
||||
|
||||
void ActivitySelector::setActivity(const QString &act)
|
||||
{
|
||||
int index = m_cmbActivity->findData(act);
|
||||
if (index != -1) {
|
||||
disconnect(m_cmbActivity, SIGNAL(currentIndexChanged(int)), this, SLOT(userChanged()));
|
||||
m_cmbActivity->setCurrentIndex(index);
|
||||
connect(m_cmbActivity, SIGNAL(currentIndexChanged(int)), this, SLOT(userChanged()));
|
||||
}
|
||||
}
|
||||
|
||||
void ActivitySelector::newActivity()
|
||||
{
|
||||
if (m_plugin->newActivity())
|
||||
refresh();
|
||||
}
|
||||
74
src/plugins/clearcase/activityselector.h
Normal file
74
src/plugins/clearcase/activityselector.h
Normal file
@@ -0,0 +1,74 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef ACTIVITYSELECTOR_H
|
||||
#define ACTIVITYSELECTOR_H
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QComboBox;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Internal {
|
||||
|
||||
class ClearCasePlugin;
|
||||
|
||||
class ActivitySelector : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ActivitySelector(QWidget *parent = 0);
|
||||
QString activity() const;
|
||||
void setActivity(const QString &act);
|
||||
void addKeep();
|
||||
bool refresh();
|
||||
bool changed() { return m_changed; }
|
||||
|
||||
public slots:
|
||||
void newActivity();
|
||||
|
||||
private slots:
|
||||
void userChanged();
|
||||
|
||||
private:
|
||||
ClearCasePlugin *m_plugin;
|
||||
bool m_changed;
|
||||
QComboBox *m_cmbActivity;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClearCase
|
||||
|
||||
#endif // ACTIVITYSELECTOR_H
|
||||
50
src/plugins/clearcase/annotationhighlighter.cpp
Normal file
50
src/plugins/clearcase/annotationhighlighter.cpp
Normal file
@@ -0,0 +1,50 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "annotationhighlighter.h"
|
||||
|
||||
using namespace ClearCase;
|
||||
using namespace ClearCase::Internal;
|
||||
|
||||
ClearCaseAnnotationHighlighter::ClearCaseAnnotationHighlighter(const ChangeNumbers &changeNumbers,
|
||||
const QColor &bg,
|
||||
QTextDocument *document) :
|
||||
VcsBase::BaseAnnotationHighlighter(changeNumbers, bg, document),
|
||||
m_separator(QLatin1Char('|'))
|
||||
{
|
||||
}
|
||||
|
||||
QString ClearCaseAnnotationHighlighter::changeNumber(const QString &block) const
|
||||
{
|
||||
const int pos = block.indexOf(m_separator);
|
||||
return pos > 1 ? block.left(pos) : QString();
|
||||
}
|
||||
58
src/plugins/clearcase/annotationhighlighter.h
Normal file
58
src/plugins/clearcase/annotationhighlighter.h
Normal file
@@ -0,0 +1,58 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef ANNOTATIONHIGHLIGHTER_H
|
||||
#define ANNOTATIONHIGHLIGHTER_H
|
||||
|
||||
#include <vcsbase/baseannotationhighlighter.h>
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Internal {
|
||||
|
||||
// Annotation highlighter for clearcase triggering on 'changenumber '
|
||||
class ClearCaseAnnotationHighlighter : public VcsBase::BaseAnnotationHighlighter
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ClearCaseAnnotationHighlighter(const ChangeNumbers &changeNumbers, const QColor &bg,
|
||||
QTextDocument *document = 0);
|
||||
|
||||
private:
|
||||
virtual QString changeNumber(const QString &block) const;
|
||||
|
||||
const QChar m_separator;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClearCase
|
||||
|
||||
#endif // ANNOTATIONHIGHLIGHTER_H
|
||||
100
src/plugins/clearcase/checkoutdialog.cpp
Normal file
100
src/plugins/clearcase/checkoutdialog.cpp
Normal file
@@ -0,0 +1,100 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "checkoutdialog.h"
|
||||
#include "clearcaseplugin.h"
|
||||
#include "ui_checkoutdialog.h"
|
||||
|
||||
#include <QList>
|
||||
#include <QPair>
|
||||
#include <QPalette>
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Internal {
|
||||
|
||||
CheckOutDialog::CheckOutDialog(const QString &fileName, QWidget *parent) :
|
||||
QDialog(parent), ui(new Ui::CheckOutDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->lblFileName->setText(fileName);
|
||||
}
|
||||
|
||||
CheckOutDialog::~CheckOutDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
QString CheckOutDialog::activity() const
|
||||
{
|
||||
return ui->actSelector->activity();
|
||||
}
|
||||
|
||||
QString CheckOutDialog::comment() const
|
||||
{
|
||||
return ui->txtComment->toPlainText();
|
||||
}
|
||||
|
||||
bool CheckOutDialog::isReserved() const
|
||||
{
|
||||
return ui->chkReserved->isChecked();
|
||||
}
|
||||
|
||||
bool CheckOutDialog::isUnreserved() const
|
||||
{
|
||||
return ui->chkUnreserved->isChecked();
|
||||
}
|
||||
|
||||
bool CheckOutDialog::isPreserveTime() const
|
||||
{
|
||||
return ui->chkPTime->isChecked();
|
||||
}
|
||||
|
||||
bool CheckOutDialog::isUseHijacked() const
|
||||
{
|
||||
return ui->hijackedCheckBox->isChecked();
|
||||
}
|
||||
|
||||
void CheckOutDialog::hideHijack()
|
||||
{
|
||||
ui->hijackedCheckBox->setVisible(false);
|
||||
ui->hijackedCheckBox->setChecked(false);
|
||||
}
|
||||
|
||||
void CheckOutDialog::toggleUnreserved(bool checked)
|
||||
{
|
||||
ui->chkUnreserved->setEnabled(checked);
|
||||
if (!checked)
|
||||
ui->chkUnreserved->setChecked(false);
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClearCase
|
||||
70
src/plugins/clearcase/checkoutdialog.h
Normal file
70
src/plugins/clearcase/checkoutdialog.h
Normal file
@@ -0,0 +1,70 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef CHECKOUTDIALOG_H
|
||||
#define CHECKOUTDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Internal {
|
||||
|
||||
namespace Ui {
|
||||
class CheckOutDialog;
|
||||
}
|
||||
|
||||
class CheckOutDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit CheckOutDialog(const QString &fileName, QWidget *parent = 0);
|
||||
~CheckOutDialog();
|
||||
QString activity() const;
|
||||
QString comment() const;
|
||||
bool isReserved() const;
|
||||
bool isUnreserved() const;
|
||||
bool isPreserveTime() const;
|
||||
bool isUseHijacked() const;
|
||||
void hideHijack();
|
||||
|
||||
private slots:
|
||||
void toggleUnreserved(bool checked);
|
||||
|
||||
private:
|
||||
Ui::CheckOutDialog *ui;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClearCase
|
||||
|
||||
#endif // CHECKOUTDIALOG_H
|
||||
176
src/plugins/clearcase/checkoutdialog.ui
Normal file
176
src/plugins/clearcase/checkoutdialog.ui
Normal file
@@ -0,0 +1,176 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ClearCase::Internal::CheckOutDialog</class>
|
||||
<widget class="QDialog" name="ClearCase::Internal::CheckOutDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>352</width>
|
||||
<height>317</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Check Out</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="lblFileName">
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ActivitySelector" name="actSelector" native="true"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lblComment">
|
||||
<property name="text">
|
||||
<string>&Checkout Comment:</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>txtComment</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPlainTextEdit" name="txtComment"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="chkReserved">
|
||||
<property name="text">
|
||||
<string>&Reserved</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>16</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="chkUnreserved">
|
||||
<property name="text">
|
||||
<string>&Unreserved if already reserved</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="chkPTime">
|
||||
<property name="text">
|
||||
<string>&Preserve file modification time</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="hijackedCheckBox">
|
||||
<property name="text">
|
||||
<string>Use &Hijacked file</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>ActivitySelector</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>activityselector.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>ClearCase::Internal::CheckOutDialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>ClearCase::Internal::CheckOutDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>chkReserved</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>ClearCase::Internal::CheckOutDialog</receiver>
|
||||
<slot>toggleUnreserved(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>50</x>
|
||||
<y>173</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>6</x>
|
||||
<y>186</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
<slots>
|
||||
<slot>toggleUnreserved(bool)</slot>
|
||||
<slot>newActivity()</slot>
|
||||
</slots>
|
||||
</ui>
|
||||
40
src/plugins/clearcase/clearcase.pro
Normal file
40
src/plugins/clearcase/clearcase.pro
Normal file
@@ -0,0 +1,40 @@
|
||||
TEMPLATE = lib
|
||||
TARGET = ClearCase
|
||||
# PROVIDER = AudioCodes
|
||||
|
||||
include(../../qtcreatorplugin.pri)
|
||||
include(clearcase_dependencies.pri)
|
||||
|
||||
DEFINES += QT_NO_CAST_FROM_ASCII
|
||||
|
||||
HEADERS += annotationhighlighter.h \
|
||||
clearcaseplugin.h \
|
||||
clearcasecontrol.h \
|
||||
settingspage.h \
|
||||
clearcaseeditor.h \
|
||||
clearcasesettings.h \
|
||||
clearcaseconstants.h \
|
||||
clearcasesubmiteditor.h \
|
||||
checkoutdialog.h \
|
||||
activityselector.h \
|
||||
clearcasesubmiteditorwidget.h \
|
||||
versionselector.h
|
||||
|
||||
SOURCES += annotationhighlighter.cpp \
|
||||
clearcaseplugin.cpp \
|
||||
clearcasecontrol.cpp \
|
||||
settingspage.cpp \
|
||||
clearcaseeditor.cpp \
|
||||
clearcasesettings.cpp \
|
||||
clearcasesubmiteditor.cpp \
|
||||
checkoutdialog.cpp \
|
||||
activityselector.cpp \
|
||||
clearcasesubmiteditorwidget.cpp \
|
||||
versionselector.cpp
|
||||
|
||||
FORMS += settingspage.ui \
|
||||
checkoutdialog.ui \
|
||||
undocheckout.ui \
|
||||
versionselector.ui
|
||||
|
||||
RESOURCES += clearcase.qrc
|
||||
59
src/plugins/clearcase/clearcase.qbs
Normal file
59
src/plugins/clearcase/clearcase.qbs
Normal file
@@ -0,0 +1,59 @@
|
||||
import qbs.base 1.0
|
||||
|
||||
import "../QtcPlugin.qbs" as QtcPlugin
|
||||
|
||||
QtcPlugin {
|
||||
name: "ClearCase"
|
||||
// provider: "AudioCodes"
|
||||
|
||||
condition: qbs.targetOS != "mac"
|
||||
|
||||
Depends { name: "Qt.widgets" }
|
||||
Depends { name: "Core" }
|
||||
Depends { name: "TextEditor" }
|
||||
Depends { name: "ProjectExplorer" }
|
||||
Depends { name: "Find" }
|
||||
Depends { name: "VcsBase" }
|
||||
Depends { name: "Locator" }
|
||||
|
||||
Depends { name: "cpp" }
|
||||
cpp.defines: base.concat(["QT_NO_CAST_FROM_ASCII"])
|
||||
cpp.includePaths: [
|
||||
".",
|
||||
"..",
|
||||
"../../libs",
|
||||
buildDirectory
|
||||
]
|
||||
|
||||
files: [
|
||||
"activityselector.cpp",
|
||||
"activityselector.h",
|
||||
"annotationhighlighter.cpp",
|
||||
"annotationhighlighter.h",
|
||||
"checkoutdialog.cpp",
|
||||
"checkoutdialog.h",
|
||||
"checkoutdialog.ui",
|
||||
"clearcaseconstants.h",
|
||||
"clearcasecontrol.cpp",
|
||||
"clearcasecontrol.h",
|
||||
"clearcaseeditor.cpp",
|
||||
"clearcaseeditor.h",
|
||||
"clearcaseplugin.cpp",
|
||||
"clearcaseplugin.h",
|
||||
"clearcase.qrc",
|
||||
"clearcasesettings.cpp",
|
||||
"clearcasesettings.h",
|
||||
"clearcasesubmiteditor.cpp",
|
||||
"clearcasesubmiteditor.h",
|
||||
"clearcasesubmiteditorwidget.cpp",
|
||||
"clearcasesubmiteditorwidget.h",
|
||||
"settingspage.cpp",
|
||||
"settingspage.h",
|
||||
"settingspage.ui",
|
||||
"undocheckout.ui",
|
||||
"versionselector.cpp",
|
||||
"versionselector.h",
|
||||
"versionselector.ui",
|
||||
]
|
||||
}
|
||||
|
||||
5
src/plugins/clearcase/clearcase.qrc
Normal file
5
src/plugins/clearcase/clearcase.qrc
Normal file
@@ -0,0 +1,5 @@
|
||||
<RCC>
|
||||
<qresource prefix="/clearcase">
|
||||
<file>ClearCase.mimetypes.xml</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
5
src/plugins/clearcase/clearcase_dependencies.pri
Normal file
5
src/plugins/clearcase/clearcase_dependencies.pri
Normal file
@@ -0,0 +1,5 @@
|
||||
include(../../plugins/projectexplorer/projectexplorer.pri)
|
||||
include(../../plugins/texteditor/texteditor.pri)
|
||||
include(../../plugins/coreplugin/coreplugin.pri)
|
||||
include(../../plugins/vcsbase/vcsbase.pri)
|
||||
include(../../libs/utils/utils.pri)
|
||||
56
src/plugins/clearcase/clearcaseconstants.h
Normal file
56
src/plugins/clearcase/clearcaseconstants.h
Normal file
@@ -0,0 +1,56 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef CLEARCASE_CONSTANTS_H
|
||||
#define CLEARCASE_CONSTANTS_H
|
||||
|
||||
#include <QtGlobal>
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Constants {
|
||||
|
||||
const char VCS_ID_CLEARCASE[] = "E.ClearCase";
|
||||
const char CLEARCASE_ROOT_FILE[] = "view.dat";
|
||||
const char CLEARCASE_SUBMIT_MIMETYPE[] = "application/vnd.audc.text.clearcase.submit";
|
||||
const char CLEARCASECHECKINEDITOR[] = "ClearCase Check In Editor";
|
||||
const char CLEARCASECHECKINEDITOR_ID[] = "ClearCase Check In Editor";
|
||||
const char CLEARCASECHECKINEDITOR_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("VCS", "ClearCase Check In Editor");
|
||||
const char CHECKIN_SELECTED[] = "ClearCase.CheckInSelected";
|
||||
const char DIFF_SELECTED[] = "ClearCase.DiffSelected";
|
||||
const char TASK_INDEX[] = "ClearCase.Task.Index";
|
||||
const char KEEP_ACTIVITY[] = "__KEEP__";
|
||||
enum { debug = 0 };
|
||||
|
||||
} // namespace Constants
|
||||
} // namespace ClearCase
|
||||
|
||||
#endif // CLEARCASE_CONSTANTS_H
|
||||
178
src/plugins/clearcase/clearcasecontrol.cpp
Normal file
178
src/plugins/clearcase/clearcasecontrol.cpp
Normal file
@@ -0,0 +1,178 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "clearcasecontrol.h"
|
||||
#include "clearcaseplugin.h"
|
||||
#include "clearcaseconstants.h"
|
||||
|
||||
#include <vcsbase/vcsbaseconstants.h>
|
||||
#include <utils/synchronousprocess.h>
|
||||
|
||||
#include <QFileInfo>
|
||||
|
||||
using namespace ClearCase;
|
||||
using namespace ClearCase::Internal;
|
||||
|
||||
ClearCaseControl::ClearCaseControl(ClearCasePlugin *plugin) :
|
||||
m_plugin(plugin)
|
||||
{
|
||||
}
|
||||
|
||||
QString ClearCaseControl::displayName() const
|
||||
{
|
||||
return QLatin1String("ClearCase");
|
||||
}
|
||||
|
||||
Core::Id ClearCaseControl::id() const
|
||||
{
|
||||
return ClearCase::Constants::VCS_ID_CLEARCASE;
|
||||
}
|
||||
|
||||
bool ClearCaseControl::isConfigured() const
|
||||
{
|
||||
return !Utils::SynchronousProcess::locateBinary(m_plugin->settings().ccCommand).isEmpty();
|
||||
}
|
||||
|
||||
bool ClearCaseControl::supportsOperation(Operation operation) const
|
||||
{
|
||||
bool rc = isConfigured();
|
||||
switch (operation) {
|
||||
case OpenOperation:
|
||||
case AddOperation:
|
||||
case DeleteOperation:
|
||||
case MoveOperation:
|
||||
case AnnotateOperation:
|
||||
case GetRepositoryRootOperation:
|
||||
break;
|
||||
case CheckoutOperation:
|
||||
case CreateRepositoryOperation:
|
||||
case SnapshotOperations:
|
||||
rc = false;
|
||||
break;
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
bool ClearCaseControl::vcsOpen(const QString &fileName)
|
||||
{
|
||||
const QFileInfo fi(fileName);
|
||||
return m_plugin->vcsOpen(fi.absolutePath(), fi.fileName());
|
||||
}
|
||||
|
||||
Core::IVersionControl::SettingsFlags ClearCaseControl::settingsFlags() const
|
||||
{
|
||||
SettingsFlags rc;
|
||||
if (m_plugin->settings().autoCheckOut)
|
||||
rc|= AutoOpen;
|
||||
return rc;
|
||||
}
|
||||
|
||||
bool ClearCaseControl::vcsAdd(const QString &fileName)
|
||||
{
|
||||
const QFileInfo fi(fileName);
|
||||
return m_plugin->vcsAdd(fi.absolutePath(), fi.fileName());
|
||||
}
|
||||
|
||||
bool ClearCaseControl::vcsDelete(const QString &fileName)
|
||||
{
|
||||
const QFileInfo fi(fileName);
|
||||
return m_plugin->vcsDelete(fi.absolutePath(), fi.fileName());
|
||||
}
|
||||
|
||||
bool ClearCaseControl::vcsMove(const QString &from, const QString &to)
|
||||
{
|
||||
const QFileInfo ifrom(from);
|
||||
const QFileInfo ito(to);
|
||||
return m_plugin->vcsMove(ifrom.absolutePath(), ifrom.fileName(), ito.fileName());
|
||||
}
|
||||
|
||||
QString ClearCaseControl::vcsGetRepositoryURL(const QString &directory)
|
||||
{
|
||||
return m_plugin->vcsGetRepositoryURL(directory);
|
||||
}
|
||||
|
||||
bool ClearCaseControl::managesDirectory(const QString &directory, QString *topLevel) const
|
||||
{
|
||||
return m_plugin->managesDirectory(directory, topLevel);
|
||||
}
|
||||
|
||||
bool ClearCaseControl::vcsAnnotate(const QString &file, int line)
|
||||
{
|
||||
const QFileInfo fi(file);
|
||||
m_plugin->vcsAnnotate(fi.absolutePath(), fi.fileName(), QString(), line);
|
||||
return true;
|
||||
}
|
||||
|
||||
void ClearCaseControl::emitRepositoryChanged(const QString &s)
|
||||
{
|
||||
emit repositoryChanged(s);
|
||||
}
|
||||
|
||||
void ClearCaseControl::emitFilesChanged(const QStringList &l)
|
||||
{
|
||||
emit filesChanged(l);
|
||||
}
|
||||
|
||||
void ClearCaseControl::emitConfigurationChanged()
|
||||
{
|
||||
emit configurationChanged();
|
||||
}
|
||||
|
||||
bool ClearCaseControl::vcsCheckout(const QString & /*directory*/, const QByteArray & /*url*/)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ClearCaseControl::vcsCreateRepository(const QString &)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
QString ClearCaseControl::vcsCreateSnapshot(const QString &)
|
||||
{
|
||||
return QString();
|
||||
}
|
||||
|
||||
QStringList ClearCaseControl::vcsSnapshots(const QString &)
|
||||
{
|
||||
return QStringList();
|
||||
}
|
||||
|
||||
bool ClearCaseControl::vcsRestoreSnapshot(const QString &, const QString &)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ClearCaseControl::vcsRemoveSnapshot(const QString &, const QString &)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
84
src/plugins/clearcase/clearcasecontrol.h
Normal file
84
src/plugins/clearcase/clearcasecontrol.h
Normal file
@@ -0,0 +1,84 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef CLEARCASECONTROL_H
|
||||
#define CLEARCASECONTROL_H
|
||||
|
||||
#include <coreplugin/iversioncontrol.h>
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Internal {
|
||||
|
||||
class ClearCasePlugin;
|
||||
|
||||
// Just a proxy for ClearCasePlugin
|
||||
class ClearCaseControl : public Core::IVersionControl
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ClearCaseControl(ClearCasePlugin *plugin);
|
||||
QString displayName() const;
|
||||
Core::Id id() const;
|
||||
|
||||
bool managesDirectory(const QString &directory, QString *topLevel = 0) const;
|
||||
|
||||
bool isConfigured() const;
|
||||
|
||||
bool supportsOperation(Operation operation) const;
|
||||
bool vcsOpen(const QString &fileName);
|
||||
SettingsFlags settingsFlags() const;
|
||||
bool vcsAdd(const QString &fileName);
|
||||
bool vcsDelete(const QString &filename);
|
||||
bool vcsMove(const QString &from, const QString &to);
|
||||
bool vcsCreateRepository(const QString &directory);
|
||||
bool vcsCheckout(const QString &directory, const QByteArray &url);
|
||||
QString vcsGetRepositoryURL(const QString &directory);
|
||||
|
||||
QString vcsCreateSnapshot(const QString &topLevel);
|
||||
QStringList vcsSnapshots(const QString &topLevel);
|
||||
bool vcsRestoreSnapshot(const QString &topLevel, const QString &name);
|
||||
bool vcsRemoveSnapshot(const QString &topLevel, const QString &name);
|
||||
|
||||
bool vcsAnnotate(const QString &file, int line);
|
||||
|
||||
void emitRepositoryChanged(const QString &);
|
||||
void emitFilesChanged(const QStringList &);
|
||||
void emitConfigurationChanged();
|
||||
|
||||
private:
|
||||
ClearCasePlugin *m_plugin;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClearCase
|
||||
|
||||
#endif // CLEARCASECONTROL_H
|
||||
131
src/plugins/clearcase/clearcaseeditor.cpp
Normal file
131
src/plugins/clearcase/clearcaseeditor.cpp
Normal file
@@ -0,0 +1,131 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "annotationhighlighter.h"
|
||||
#include "clearcaseconstants.h"
|
||||
#include "clearcaseeditor.h"
|
||||
#include "clearcaseplugin.h"
|
||||
|
||||
#include <utils/qtcassert.h>
|
||||
#include <vcsbase/diffhighlighter.h>
|
||||
|
||||
#include <QDebug>
|
||||
#include <QDir>
|
||||
#include <QFileInfo>
|
||||
#include <QTextBlock>
|
||||
#include <QTextCursor>
|
||||
|
||||
using namespace ClearCase;
|
||||
using namespace ClearCase::Internal;
|
||||
|
||||
ClearCaseEditor::ClearCaseEditor(const VcsBase::VcsBaseEditorParameters *type,
|
||||
QWidget *parent) :
|
||||
VcsBase::VcsBaseEditorWidget(type, parent),
|
||||
m_versionNumberPattern(QLatin1String("[\\\\/]main[\\\\/][^ \t\n\"]*"))
|
||||
{
|
||||
QTC_ASSERT(m_versionNumberPattern.isValid(), return);
|
||||
setAnnotateRevisionTextFormat(tr("Annotate version \"%1\""));
|
||||
}
|
||||
|
||||
QSet<QString> ClearCaseEditor::annotationChanges() const
|
||||
{
|
||||
QSet<QString> changes;
|
||||
QString txt = toPlainText();
|
||||
if (txt.isEmpty())
|
||||
return changes;
|
||||
// search until header
|
||||
int separator = txt.indexOf(QRegExp(QLatin1String("\n-{30}")));
|
||||
QRegExp r(QLatin1String("([^|]*)\\|[^\n]*\n"));
|
||||
QTC_ASSERT(r.isValid(), return changes);
|
||||
int pos = r.indexIn(txt, 0);
|
||||
while (pos != -1 && pos < separator) {
|
||||
changes.insert(r.cap(1));
|
||||
pos = r.indexIn(txt, pos + r.matchedLength());
|
||||
}
|
||||
return changes;
|
||||
}
|
||||
|
||||
QString ClearCaseEditor::changeUnderCursor(const QTextCursor &c) const
|
||||
{
|
||||
QTextCursor cursor = c;
|
||||
// Any number is regarded as change number.
|
||||
cursor.select(QTextCursor::BlockUnderCursor);
|
||||
if (!cursor.hasSelection())
|
||||
return QString();
|
||||
QString change = cursor.selectedText();
|
||||
// Annotation output has number, log output has revision numbers
|
||||
// as r1, r2...
|
||||
if (m_versionNumberPattern.indexIn(change) != -1)
|
||||
return m_versionNumberPattern.cap();
|
||||
return QString();
|
||||
}
|
||||
|
||||
/*
|
||||
Diff header format (on Windows, native separators are used after the @@)
|
||||
--- main.cpp@@\main\2
|
||||
+++ main.cpp@@\main\1
|
||||
@@ -6,6 +6,5 @@
|
||||
*/
|
||||
VcsBase::DiffHighlighter *ClearCaseEditor::createDiffHighlighter() const
|
||||
{
|
||||
const QRegExp filePattern(QLatin1String("^[-+][-+][-+] "));
|
||||
QTC_CHECK(filePattern.isValid());
|
||||
return new VcsBase::DiffHighlighter(filePattern);
|
||||
}
|
||||
|
||||
VcsBase::BaseAnnotationHighlighter *ClearCaseEditor::createAnnotationHighlighter(const QSet<QString> &changes,
|
||||
const QColor &bg) const
|
||||
{
|
||||
return new ClearCaseAnnotationHighlighter(changes, bg);
|
||||
}
|
||||
|
||||
QString ClearCaseEditor::fileNameFromDiffSpecification(const QTextBlock &inBlock) const
|
||||
{
|
||||
// "+++ D:\depot\...\mainwindow.cpp@@\main\3"
|
||||
// "+++ D:\depot\...\mainwindow.cpp[TAB]Sun May 01 14:22:37 2011"
|
||||
// Go back chunks
|
||||
const QString diffIndicator = QLatin1String("+++ ");
|
||||
for (QTextBlock block = inBlock; block.isValid() ; block = block.previous()) {
|
||||
QString diffFileName = block.text();
|
||||
if (diffFileName.startsWith(diffIndicator)) {
|
||||
diffFileName.remove(0, diffIndicator.size());
|
||||
const int tabIndex = diffFileName.indexOf(QRegExp(QLatin1String("@@|\t")));
|
||||
if (tabIndex != -1)
|
||||
diffFileName.truncate(tabIndex);
|
||||
const QString rc = findDiffFile(diffFileName);
|
||||
if (ClearCase::Constants::debug)
|
||||
qDebug() << Q_FUNC_INFO << diffFileName << rc << source();
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
64
src/plugins/clearcase/clearcaseeditor.h
Normal file
64
src/plugins/clearcase/clearcaseeditor.h
Normal file
@@ -0,0 +1,64 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef CLEARCASEEDITOR_H
|
||||
#define CLEARCASEEDITOR_H
|
||||
|
||||
#include <vcsbase/vcsbaseeditor.h>
|
||||
|
||||
#include <QRegExp>
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Internal {
|
||||
|
||||
class ClearCaseEditor : public VcsBase::VcsBaseEditorWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ClearCaseEditor(const VcsBase::VcsBaseEditorParameters *type,
|
||||
QWidget *parent);
|
||||
|
||||
private:
|
||||
QSet<QString> annotationChanges() const;
|
||||
QString changeUnderCursor(const QTextCursor &) const;
|
||||
VcsBase::DiffHighlighter *createDiffHighlighter() const;
|
||||
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
|
||||
QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const;
|
||||
|
||||
mutable QRegExp m_versionNumberPattern;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClearCase
|
||||
|
||||
#endif // CLEARCASEEDITOR_H
|
||||
1956
src/plugins/clearcase/clearcaseplugin.cpp
Normal file
1956
src/plugins/clearcase/clearcaseplugin.cpp
Normal file
File diff suppressed because it is too large
Load Diff
270
src/plugins/clearcase/clearcaseplugin.h
Normal file
270
src/plugins/clearcase/clearcaseplugin.h
Normal file
@@ -0,0 +1,270 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef CLEARCASEPLUGIN_H
|
||||
#define CLEARCASEPLUGIN_H
|
||||
|
||||
#include "clearcasesettings.h"
|
||||
|
||||
#include <vcsbase/vcsbaseplugin.h>
|
||||
#include <QFile>
|
||||
#include <QPair>
|
||||
#include <QStringList>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QAction;
|
||||
class QComboBox;
|
||||
class QDir;
|
||||
template <typename T>
|
||||
class QFutureInterface;
|
||||
class QMutex;
|
||||
typedef QPair<QString, QString> QStringPair;
|
||||
class QTextCodec;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace Core {
|
||||
class IVersionControl;
|
||||
class IEditor;
|
||||
}
|
||||
namespace Utils {
|
||||
class ParameterAction;
|
||||
}
|
||||
|
||||
namespace VcsBase {
|
||||
class VcsBaseSubmitEditor;
|
||||
}
|
||||
|
||||
namespace Locator {
|
||||
class CommandLocator;
|
||||
}
|
||||
|
||||
namespace ProjectExplorer {
|
||||
class Project;
|
||||
}
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Internal {
|
||||
|
||||
class ClearCaseSubmitEditor;
|
||||
class ClearCaseControl;
|
||||
|
||||
class ClearCaseResponse
|
||||
{
|
||||
public:
|
||||
ClearCaseResponse() : error(false) {}
|
||||
bool error;
|
||||
QString stdOut;
|
||||
QString stdErr;
|
||||
QString message;
|
||||
};
|
||||
|
||||
struct FileStatus
|
||||
{
|
||||
enum Status
|
||||
{
|
||||
Unknown = 0x0f,
|
||||
CheckedIn = 0x01,
|
||||
CheckedOut = 0x02,
|
||||
Hijacked = 0x04,
|
||||
NotManaged = 0x08,
|
||||
Missing = 0x10
|
||||
} status;
|
||||
|
||||
QFile::Permissions permissions;
|
||||
|
||||
FileStatus(Status _status = Unknown, QFile::Permissions perm = 0)
|
||||
: status(_status), permissions(perm)
|
||||
{}
|
||||
};
|
||||
|
||||
typedef QHash<QString, FileStatus> StatusMap;
|
||||
|
||||
class ClearCasePlugin : public VcsBase::VcsBasePlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "ClearCase.json")
|
||||
|
||||
static const unsigned SilentRun =
|
||||
SuppressStdErrInLogWindow |
|
||||
SuppressFailMessageInLogWindow |
|
||||
SuppressCommandLogging |
|
||||
FullySynchronously;
|
||||
|
||||
public:
|
||||
ClearCasePlugin();
|
||||
~ClearCasePlugin();
|
||||
|
||||
bool initialize(const QStringList &arguments, QString *error_message);
|
||||
|
||||
ClearCaseSubmitEditor *openClearCaseSubmitEditor(const QString &fileName);
|
||||
|
||||
const ClearCaseSettings &settings() const;
|
||||
void setSettings(const ClearCaseSettings &s);
|
||||
|
||||
// IVersionControl
|
||||
bool vcsOpen(const QString &workingDir, const QString &fileName);
|
||||
bool vcsAdd(const QString &workingDir, const QString &fileName);
|
||||
bool vcsDelete(const QString &workingDir, const QString &fileName);
|
||||
bool vcsCheckIn(const QString &workingDir, const QStringList &files, const QString &activity,
|
||||
bool isIdentical, bool isPreserve, bool replaceActivity);
|
||||
bool vcsUndoCheckOut(const QString &workingDir, const QString &fileName, bool keep);
|
||||
bool vcsUndoHijack(const QString &workingDir, const QString &fileName, bool keep);
|
||||
bool vcsMove(const QString &workingDir, const QString &from, const QString &to);
|
||||
bool vcsSetActivity(const QString &workingDir, const QString &title, const QString &activity);
|
||||
bool managesDirectory(const QString &directory, QString *topLevel = 0) const;
|
||||
bool vcsCheckout(const QString &directory, const QByteArray &url);
|
||||
QString vcsGetRepositoryURL(const QString &directory);
|
||||
|
||||
static ClearCasePlugin *instance();
|
||||
|
||||
QString ccGetCurrentActivity() const;
|
||||
QList<QStringPair> activities(int *current = 0) const;
|
||||
QString ccGetPredecessor(const QString &version) const;
|
||||
QStringList ccGetActiveVobs() const;
|
||||
bool ccFileOp(const QString &workingDir, const QString &title, const QStringList &args,
|
||||
const QString &fileName, const QString &file2 = QString());
|
||||
FileStatus vcsStatus(const QString &file) const;
|
||||
QString currentView() const { return m_view; }
|
||||
|
||||
public slots:
|
||||
void vcsAnnotate(const QString &workingDir, const QString &file,
|
||||
const QString &revision = QString(), int lineNumber = -1) const;
|
||||
bool newActivity();
|
||||
|
||||
private slots:
|
||||
void checkOutCurrentFile();
|
||||
void addCurrentFile();
|
||||
void undoCheckOutCurrent();
|
||||
void undoHijackCurrent();
|
||||
void diffActivity();
|
||||
void diffCurrentFile();
|
||||
void startCheckInAll();
|
||||
void startCheckInActivity();
|
||||
void startCheckInCurrentFile();
|
||||
void historyCurrentFile();
|
||||
void annotateCurrentFile();
|
||||
void annotateVersion(const QString &file, const QString &revision, int lineNumber);
|
||||
void describe(const QString &source, const QString &changeNr);
|
||||
void viewStatus();
|
||||
void checkInSelected();
|
||||
void diffCheckInFiles(const QStringList &);
|
||||
void updateIndex();
|
||||
void updateView();
|
||||
void projectChanged(ProjectExplorer::Project *project);
|
||||
void tasksFinished(const QString &type);
|
||||
void syncSlot();
|
||||
void closing();
|
||||
|
||||
protected:
|
||||
void updateActions(VcsBase::VcsBasePlugin::ActionState);
|
||||
bool submitEditorAboutToClose(VcsBase::VcsBaseSubmitEditor *submitEditor);
|
||||
QString ccGet(const QString &workingDir, const QString &file, const QString &prefix = QString());
|
||||
void refreshActivities();
|
||||
QList<QStringPair> ccGetActivities() const;
|
||||
|
||||
private:
|
||||
inline bool isCheckInEditorOpen() const;
|
||||
QString findTopLevel(const QString &directory) const;
|
||||
Core::IEditor * showOutputInEditor(const QString& title, const QString &output,
|
||||
int editorType, const QString &source,
|
||||
QTextCodec *codec) const;
|
||||
QString runCleartoolSync(const QString &workingDir, const QStringList &arguments) const;
|
||||
ClearCaseResponse runCleartool(const QString &workingDir,
|
||||
const QStringList &arguments, int timeOut,
|
||||
unsigned flags, QTextCodec *outputCodec = 0) const;
|
||||
static void sync(QFutureInterface<void> &future, QString topLevel, QStringList files);
|
||||
|
||||
void history(const QString &workingDir,
|
||||
const QStringList &file = QStringList(),
|
||||
bool enableAnnotationContextMenu = false);
|
||||
QString ccGetFileVersion(const QString &workingDir, const QString &file) const;
|
||||
void ccUpdate(const QString &workingDir, const QStringList &relativePaths = QStringList());
|
||||
void ccDiffWithPred(const QStringList &files);
|
||||
void startCheckIn(const QString &workingDir, const QStringList &files = QStringList());
|
||||
void cleanCheckInMessageFile();
|
||||
inline ClearCaseControl *clearCaseControl() const;
|
||||
QString ccGetFileActivity(const QString &workingDir, const QString &file);
|
||||
void setStatus(const QString &file, FileStatus::Status status, bool update = true);
|
||||
QStringList ccGetActivityVersions(const QString &workingDir, const QString &activity);
|
||||
void updateStatusActions();
|
||||
void diffGraphical(const QString &file1, const QString &file2 = QString());
|
||||
QString diffExternal(QString file1, QString file2 = QString(), bool keep = false);
|
||||
QString getFile(const QString &nativeFile, const QString &prefix);
|
||||
static void rmdir(const QString &path);
|
||||
QString runExtDiff(const QString &workingDir, const QStringList &arguments,
|
||||
int timeOut, QTextCodec *outputCodec = 0);
|
||||
QString ccGetView(const QString &workingDir, bool *isDynamic = 0) const;
|
||||
void updateStreamAndView();
|
||||
|
||||
ClearCaseSettings m_settings;
|
||||
|
||||
static StatusMap s_statusMap;
|
||||
QString m_checkInMessageFileName;
|
||||
QString m_topLevel;
|
||||
QString m_stream;
|
||||
QString m_view;
|
||||
QString m_intStream;
|
||||
QString m_activity;
|
||||
QString m_diffPrefix;
|
||||
|
||||
Locator::CommandLocator *m_commandLocator;
|
||||
Utils::ParameterAction *m_checkOutAction;
|
||||
Utils::ParameterAction *m_checkInCurrentAction;
|
||||
Utils::ParameterAction *m_undoCheckOutAction;
|
||||
Utils::ParameterAction *m_undoHijackAction;
|
||||
Utils::ParameterAction *m_diffCurrentAction;
|
||||
Utils::ParameterAction *m_historyCurrentAction;
|
||||
Utils::ParameterAction *m_annotateCurrentAction;
|
||||
Utils::ParameterAction *m_addFileAction;
|
||||
QAction *m_diffActivityAction;
|
||||
QAction *m_updateIndexAction;
|
||||
Utils::ParameterAction *m_updateViewAction;
|
||||
Utils::ParameterAction *m_checkInActivityAction;
|
||||
QAction *m_checkInAllAction;
|
||||
QAction *m_statusAction;
|
||||
|
||||
QAction *m_checkInSelectedAction;
|
||||
QAction *m_checkInDiffAction;
|
||||
QAction *m_submitUndoAction;
|
||||
QAction *m_submitRedoAction;
|
||||
QAction *m_menuAction;
|
||||
bool m_submitActionTriggered;
|
||||
QMutex *activityMutex;
|
||||
QList<QStringPair> m_activities;
|
||||
|
||||
static ClearCasePlugin *m_clearcasePluginInstance;
|
||||
};
|
||||
|
||||
} // namespace ClearCase
|
||||
} // namespace Internal
|
||||
|
||||
#endif // CLEARCASEPLUGIN_H
|
||||
144
src/plugins/clearcase/clearcasesettings.cpp
Normal file
144
src/plugins/clearcase/clearcasesettings.cpp
Normal file
@@ -0,0 +1,144 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "clearcasesettings.h"
|
||||
|
||||
#include <utils/environment.h>
|
||||
|
||||
#include <QSettings>
|
||||
|
||||
static const char groupC[] = "ClearCase";
|
||||
static const char commandKeyC[] = "Command";
|
||||
|
||||
static const char historyCountKeyC[] = "HistoryCount";
|
||||
static const char timeOutKeyC[] = "TimeOut";
|
||||
static const char autoCheckOutKeyC[] = "AutoCheckOut";
|
||||
static const char diffTypeKeyC[] = "DiffType";
|
||||
static const char extDiffCommandKeyC[] = "ExternalDiffCommand";
|
||||
static const char diffArgsKeyC[] = "DiffArgs";
|
||||
static const char autoAssignActivityKeyC[] = "AutoAssignActivityName";
|
||||
static const char promptToCheckInKeyC[] = "PromptToCheckIn";
|
||||
static const char disableIndexerKeyC[] = "DisableIndexer";
|
||||
static const char totalFilesKeyC[] = "TotalFiles";
|
||||
static const char indexOnlyVOBsC[] = "IndexOnlyVOBs";
|
||||
|
||||
static const char defaultDiffArgs[] = "-ubp";
|
||||
|
||||
enum { defaultTimeOutS = 30, defaultHistoryCount = 50 };
|
||||
|
||||
static QString defaultCommand(const char *command)
|
||||
{
|
||||
QString rc = QLatin1String(command);
|
||||
QString expanded = Utils::Environment::systemEnvironment().searchInPath(rc);
|
||||
return expanded.isEmpty() ? rc : expanded;
|
||||
}
|
||||
|
||||
using namespace ClearCase::Internal;
|
||||
|
||||
ClearCaseSettings::ClearCaseSettings() :
|
||||
ccCommand(defaultCommand("cleartool")),
|
||||
historyCount(defaultHistoryCount),
|
||||
timeOutS(defaultTimeOutS),
|
||||
diffType(GraphicalDiff),
|
||||
diffArgs(QLatin1String(defaultDiffArgs)),
|
||||
autoAssignActivityName(true),
|
||||
autoCheckOut(true),
|
||||
promptToCheckIn(false),
|
||||
disableIndexer(false)
|
||||
{
|
||||
}
|
||||
|
||||
void ClearCaseSettings::fromSettings(QSettings *settings)
|
||||
{
|
||||
settings->beginGroup(QLatin1String(groupC));
|
||||
ccCommand = settings->value(QLatin1String(commandKeyC), defaultCommand("cleartool")).toString();
|
||||
timeOutS = settings->value(QLatin1String(timeOutKeyC), defaultTimeOutS).toInt();
|
||||
autoCheckOut = settings->value(QLatin1String(autoCheckOutKeyC), false).toBool();
|
||||
QString sDiffType = settings->value(QLatin1String(diffTypeKeyC), QLatin1String("Graphical")).toString();
|
||||
switch (sDiffType[0].toUpper().toLatin1()) {
|
||||
case 'G': diffType = GraphicalDiff; break;
|
||||
case 'E': diffType = ExternalDiff; break;
|
||||
}
|
||||
|
||||
diffArgs = settings->value(QLatin1String(diffArgsKeyC), QLatin1String(defaultDiffArgs)).toString();
|
||||
autoAssignActivityName = settings->value(QLatin1String(autoAssignActivityKeyC), true).toBool();
|
||||
historyCount = settings->value(QLatin1String(historyCountKeyC), int(defaultHistoryCount)).toInt();
|
||||
promptToCheckIn = settings->value(QLatin1String(promptToCheckInKeyC), false).toBool();
|
||||
disableIndexer = settings->value(QLatin1String(disableIndexerKeyC), false).toBool();
|
||||
indexOnlyVOBs = settings->value(QLatin1String(indexOnlyVOBsC), QString()).toString();
|
||||
settings->beginGroup(QLatin1String(totalFilesKeyC));
|
||||
foreach (const QString &view, settings->childKeys())
|
||||
totalFiles[view] = settings->value(view).toInt();
|
||||
settings->endGroup();
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void ClearCaseSettings::toSettings(QSettings *settings) const
|
||||
{
|
||||
settings->beginGroup(QLatin1String(groupC));
|
||||
settings->setValue(QLatin1String(commandKeyC), ccCommand);
|
||||
settings->setValue(QLatin1String(autoCheckOutKeyC), autoCheckOut);
|
||||
settings->setValue(QLatin1String(timeOutKeyC), timeOutS);
|
||||
QString sDiffType;
|
||||
switch (diffType) {
|
||||
case ExternalDiff: sDiffType = QLatin1String("External"); break;
|
||||
default: sDiffType = QLatin1String("Graphical"); break;
|
||||
}
|
||||
|
||||
settings->setValue(QLatin1String(diffArgsKeyC), diffArgs);
|
||||
settings->setValue(QLatin1String(diffTypeKeyC), sDiffType);
|
||||
settings->setValue(QLatin1String(autoAssignActivityKeyC), autoAssignActivityName);
|
||||
settings->setValue(QLatin1String(historyCountKeyC), historyCount);
|
||||
settings->setValue(QLatin1String(promptToCheckInKeyC), promptToCheckIn);
|
||||
settings->setValue(QLatin1String(disableIndexerKeyC), disableIndexer);
|
||||
settings->setValue(QLatin1String(indexOnlyVOBsC), indexOnlyVOBs);
|
||||
settings->beginGroup(QLatin1String(totalFilesKeyC));
|
||||
foreach (const QString &view, totalFiles.keys())
|
||||
settings->setValue(view, totalFiles[view]);
|
||||
settings->endGroup();
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
bool ClearCaseSettings::equals(const ClearCaseSettings &s) const
|
||||
{
|
||||
return ccCommand == s.ccCommand
|
||||
&& historyCount == s.historyCount
|
||||
&& timeOutS == s.timeOutS
|
||||
&& autoCheckOut == s.autoCheckOut
|
||||
&& diffType == s.diffType
|
||||
&& diffArgs == s.diffArgs
|
||||
&& autoAssignActivityName == s.autoAssignActivityName
|
||||
&& promptToCheckIn == s.promptToCheckIn
|
||||
&& disableIndexer == s.disableIndexer
|
||||
&& indexOnlyVOBs == s.indexOnlyVOBs
|
||||
&& totalFiles == s.totalFiles;
|
||||
}
|
||||
86
src/plugins/clearcase/clearcasesettings.h
Normal file
86
src/plugins/clearcase/clearcasesettings.h
Normal file
@@ -0,0 +1,86 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef CLEARCASESETTINGS_H
|
||||
#define CLEARCASESETTINGS_H
|
||||
|
||||
#include <QHash>
|
||||
#include <QStringList>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QSettings;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Internal {
|
||||
|
||||
enum DiffType
|
||||
{
|
||||
GraphicalDiff,
|
||||
ExternalDiff
|
||||
};
|
||||
|
||||
class ClearCaseSettings
|
||||
{
|
||||
public:
|
||||
ClearCaseSettings();
|
||||
|
||||
void fromSettings(QSettings *);
|
||||
void toSettings(QSettings *) const;
|
||||
|
||||
inline int timeOutMS() const { return timeOutS * 1000; }
|
||||
inline int longTimeOutMS() const { return timeOutS * 10000; }
|
||||
|
||||
bool equals(const ClearCaseSettings &s) const;
|
||||
|
||||
QString ccCommand;
|
||||
int historyCount;
|
||||
int timeOutS;
|
||||
DiffType diffType;
|
||||
QString diffArgs;
|
||||
bool autoAssignActivityName;
|
||||
bool autoCheckOut;
|
||||
bool promptToCheckIn;
|
||||
bool disableIndexer;
|
||||
QString indexOnlyVOBs;
|
||||
QHash<QString, int> totalFiles;
|
||||
};
|
||||
|
||||
inline bool operator==(const ClearCaseSettings &p1, const ClearCaseSettings &p2)
|
||||
{ return p1.equals(p2); }
|
||||
inline bool operator!=(const ClearCaseSettings &p1, const ClearCaseSettings &p2)
|
||||
{ return !p1.equals(p2); }
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClearCase
|
||||
|
||||
#endif // CLEARCASESETTINGS_H
|
||||
69
src/plugins/clearcase/clearcasesubmiteditor.cpp
Normal file
69
src/plugins/clearcase/clearcasesubmiteditor.cpp
Normal file
@@ -0,0 +1,69 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "clearcasesubmiteditor.h"
|
||||
#include "clearcasesubmiteditorwidget.h"
|
||||
|
||||
#include <utils/submiteditorwidget.h>
|
||||
#include <vcsbase/submitfilemodel.h>
|
||||
|
||||
using namespace ClearCase::Internal;
|
||||
|
||||
ClearCaseSubmitEditor::ClearCaseSubmitEditor(const VcsBase::VcsBaseSubmitEditorParameters *parameters,
|
||||
QWidget *parentWidget) :
|
||||
VcsBase::VcsBaseSubmitEditor(parameters, new ClearCaseSubmitEditorWidget(parentWidget))
|
||||
{
|
||||
setDisplayName(tr("ClearCase Check In"));
|
||||
}
|
||||
|
||||
ClearCaseSubmitEditorWidget *ClearCaseSubmitEditor::submitEditorWidget()
|
||||
{
|
||||
return static_cast<ClearCaseSubmitEditorWidget *>(widget());
|
||||
}
|
||||
|
||||
void ClearCaseSubmitEditor::setStatusList(const QStringList &statusOutput)
|
||||
{
|
||||
typedef QStringList::const_iterator ConstIterator;
|
||||
VcsBase::SubmitFileModel *model = new VcsBase::SubmitFileModel(this);
|
||||
|
||||
const ConstIterator cend = statusOutput.constEnd();
|
||||
for (ConstIterator it = statusOutput.constBegin(); it != cend; ++it)
|
||||
model->addFile(*it, QLatin1String("C"), true);
|
||||
setFileModel(model, checkScriptWorkingDirectory());
|
||||
if (statusOutput.count() > 1)
|
||||
submitEditorWidget()->addKeep();
|
||||
}
|
||||
|
||||
QByteArray ClearCaseSubmitEditor::fileContents() const
|
||||
{
|
||||
return VcsBase::VcsBaseSubmitEditor::fileContents().trimmed();
|
||||
}
|
||||
65
src/plugins/clearcase/clearcasesubmiteditor.h
Normal file
65
src/plugins/clearcase/clearcasesubmiteditor.h
Normal file
@@ -0,0 +1,65 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef CLEARCASESUBMITEDITOR_H
|
||||
#define CLEARCASESUBMITEDITOR_H
|
||||
|
||||
#include <QPair>
|
||||
#include <QStringList>
|
||||
|
||||
#include <vcsbase/vcsbasesubmiteditor.h>
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Internal {
|
||||
|
||||
class ClearCaseSubmitEditorWidget;
|
||||
|
||||
class ClearCaseSubmitEditor : public VcsBase::VcsBaseSubmitEditor
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ClearCaseSubmitEditor(const VcsBase::VcsBaseSubmitEditorParameters *parameters,
|
||||
QWidget *parentWidget = 0);
|
||||
|
||||
static QString fileFromStatusLine(const QString &statusLine);
|
||||
|
||||
void setStatusList(const QStringList &statusOutput);
|
||||
ClearCaseSubmitEditorWidget *submitEditorWidget();
|
||||
|
||||
protected:
|
||||
virtual QByteArray fileContents() const;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClearCase
|
||||
|
||||
#endif // CLEARCASESUBMITEDITOR_H
|
||||
101
src/plugins/clearcase/clearcasesubmiteditorwidget.cpp
Normal file
101
src/plugins/clearcase/clearcasesubmiteditorwidget.cpp
Normal file
@@ -0,0 +1,101 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "activityselector.h"
|
||||
#include "clearcasesubmiteditorwidget.h"
|
||||
|
||||
#include <vcsbase/submitfilemodel.h>
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QFrame>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
using namespace ClearCase::Internal;
|
||||
|
||||
ClearCaseSubmitEditorWidget::ClearCaseSubmitEditorWidget(QWidget *parent) :
|
||||
Utils::SubmitEditorWidget(parent)
|
||||
{
|
||||
setDescriptionMandatory(false);
|
||||
QWidget *checkInWidget = new QWidget(this);
|
||||
|
||||
QVBoxLayout *verticalLayout = new QVBoxLayout(checkInWidget);
|
||||
m_actSelector = new ActivitySelector;
|
||||
verticalLayout->addWidget(m_actSelector);
|
||||
|
||||
QFrame *line = new QFrame;
|
||||
line->setFrameShape(QFrame::HLine);
|
||||
line->setFrameShadow(QFrame::Sunken);
|
||||
verticalLayout->addWidget(line);
|
||||
|
||||
m_chkIdentical = new QCheckBox(tr("Chec&k in even if identical to previous version"));
|
||||
verticalLayout->addWidget(m_chkIdentical);
|
||||
|
||||
m_chkPTime = new QCheckBox(tr("&Preserve file modification time"));
|
||||
verticalLayout->addWidget(m_chkPTime);
|
||||
|
||||
insertTopWidget(checkInWidget);
|
||||
}
|
||||
|
||||
QString ClearCaseSubmitEditorWidget::activity() const
|
||||
{
|
||||
return m_actSelector->activity();
|
||||
}
|
||||
|
||||
bool ClearCaseSubmitEditorWidget::isIdentical() const
|
||||
{
|
||||
return m_chkIdentical->isChecked();
|
||||
}
|
||||
|
||||
bool ClearCaseSubmitEditorWidget::isPreserve() const
|
||||
{
|
||||
return m_chkPTime->isChecked();
|
||||
}
|
||||
|
||||
void ClearCaseSubmitEditorWidget::setActivity(const QString &act)
|
||||
{
|
||||
m_actSelector->setActivity(act);
|
||||
}
|
||||
|
||||
bool ClearCaseSubmitEditorWidget::activityChanged() const
|
||||
{
|
||||
return m_actSelector->changed();
|
||||
}
|
||||
|
||||
void ClearCaseSubmitEditorWidget::addKeep()
|
||||
{
|
||||
m_actSelector->addKeep();
|
||||
}
|
||||
|
||||
QString ClearCaseSubmitEditorWidget::commitName() const
|
||||
{
|
||||
return tr("&Check In");
|
||||
}
|
||||
72
src/plugins/clearcase/clearcasesubmiteditorwidget.h
Normal file
72
src/plugins/clearcase/clearcasesubmiteditorwidget.h
Normal file
@@ -0,0 +1,72 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef CLEARCASESUBMITEDITORWIDGET_H
|
||||
#define CLEARCASESUBMITEDITORWIDGET_H
|
||||
|
||||
#include <utils/submiteditorwidget.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QCheckBox;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Internal {
|
||||
|
||||
class ActivitySelector;
|
||||
|
||||
class ClearCaseSubmitEditorWidget : public Utils::SubmitEditorWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ClearCaseSubmitEditorWidget(QWidget *parent = 0);
|
||||
QString activity() const;
|
||||
bool isIdentical() const;
|
||||
bool isPreserve() const;
|
||||
void setActivity(const QString &act);
|
||||
bool activityChanged() const;
|
||||
void addKeep();
|
||||
|
||||
protected:
|
||||
QString commitName() const;
|
||||
|
||||
private:
|
||||
ActivitySelector *m_actSelector;
|
||||
QCheckBox *m_chkIdentical;
|
||||
QCheckBox *m_chkPTime;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClearCase
|
||||
|
||||
#endif // CLEARCASESUBMITEDITORWIDGET_H
|
||||
142
src/plugins/clearcase/settingspage.cpp
Normal file
142
src/plugins/clearcase/settingspage.cpp
Normal file
@@ -0,0 +1,142 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "clearcaseconstants.h"
|
||||
#include "clearcasesettings.h"
|
||||
#include "clearcaseplugin.h"
|
||||
#include "settingspage.h"
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
#include <extensionsystem/pluginmanager.h>
|
||||
#include <utils/pathchooser.h>
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QFileDialog>
|
||||
#include <QTextStream>
|
||||
|
||||
using namespace ClearCase::Internal;
|
||||
using namespace Utils;
|
||||
|
||||
SettingsPageWidget::SettingsPageWidget(QWidget *parent) :
|
||||
QWidget(parent)
|
||||
{
|
||||
m_ui.setupUi(this);
|
||||
m_ui.commandPathChooser->setPromptDialogTitle(tr("ClearCase Command"));
|
||||
m_ui.commandPathChooser->setExpectedKind(PathChooser::ExistingCommand);
|
||||
}
|
||||
|
||||
ClearCaseSettings SettingsPageWidget::settings() const
|
||||
{
|
||||
ClearCaseSettings rc;
|
||||
rc.ccCommand = m_ui.commandPathChooser->path();
|
||||
rc.timeOutS = m_ui.timeOutSpinBox->value();
|
||||
rc.autoCheckOut = m_ui.autoCheckOutCheckBox->isChecked();
|
||||
if (m_ui.graphicalDiffRadioButton->isChecked())
|
||||
rc.diffType = GraphicalDiff;
|
||||
else if (m_ui.externalDiffRadioButton->isChecked())
|
||||
rc.diffType = ExternalDiff;
|
||||
rc.autoAssignActivityName = m_ui.autoAssignActivityCheckBox->isChecked();
|
||||
rc.historyCount = m_ui.historyCountSpinBox->value();
|
||||
rc.promptToCheckIn = m_ui.promptCheckBox->isChecked();
|
||||
rc.disableIndexer = m_ui.disableIndexerCheckBox->isChecked();
|
||||
rc.diffArgs = m_ui.diffArgsEdit->text();
|
||||
rc.indexOnlyVOBs = m_ui.indexOnlyVOBsEdit->text();
|
||||
return rc;
|
||||
}
|
||||
|
||||
void SettingsPageWidget::setSettings(const ClearCaseSettings &s)
|
||||
{
|
||||
m_ui.commandPathChooser->setPath(s.ccCommand);
|
||||
m_ui.timeOutSpinBox->setValue(s.timeOutS);
|
||||
m_ui.autoCheckOutCheckBox->setChecked(s.autoCheckOut);
|
||||
switch (s.diffType) {
|
||||
case GraphicalDiff:
|
||||
m_ui.graphicalDiffRadioButton->setChecked(true);
|
||||
m_ui.diffWidget->setEnabled(false);
|
||||
break;
|
||||
case ExternalDiff:
|
||||
m_ui.externalDiffRadioButton->setChecked(true);
|
||||
m_ui.diffWidget->setEnabled(true);
|
||||
break;
|
||||
}
|
||||
m_ui.autoAssignActivityCheckBox->setChecked(s.autoAssignActivityName);
|
||||
m_ui.historyCountSpinBox->setValue(s.historyCount);
|
||||
m_ui.promptCheckBox->setChecked(s.promptToCheckIn);
|
||||
m_ui.disableIndexerCheckBox->setChecked(s.disableIndexer);
|
||||
m_ui.diffArgsEdit->setText(s.diffArgs);
|
||||
m_ui.indexOnlyVOBsEdit->setText(s.indexOnlyVOBs);
|
||||
}
|
||||
|
||||
QString SettingsPageWidget::searchKeywords() const
|
||||
{
|
||||
QString rc;
|
||||
QLatin1Char sep(' ');
|
||||
QTextStream(&rc) << m_ui.commandLabel->text()
|
||||
<< sep << m_ui.autoCheckOutCheckBox->text()
|
||||
<< sep << m_ui.externalDiffRadioButton->text()
|
||||
<< sep << m_ui.graphicalDiffRadioButton->text()
|
||||
<< sep << m_ui.diffArgsLabel->text()
|
||||
<< sep << m_ui.historyCountLabel->text()
|
||||
<< sep << m_ui.promptCheckBox->text()
|
||||
<< sep << m_ui.disableIndexerCheckBox->text()
|
||||
<< sep << m_ui.timeOutLabel->text()
|
||||
<< sep << m_ui.indexOnlyVOBsLabel->text()
|
||||
;
|
||||
rc.remove(QLatin1Char('&'));
|
||||
return rc;
|
||||
}
|
||||
|
||||
SettingsPage::SettingsPage() :
|
||||
m_widget(0)
|
||||
{
|
||||
setId(QLatin1String(ClearCase::Constants::VCS_ID_CLEARCASE));
|
||||
setDisplayName(tr("ClearCase"));
|
||||
}
|
||||
|
||||
QWidget *SettingsPage::createPage(QWidget *parent)
|
||||
{
|
||||
m_widget = new SettingsPageWidget(parent);
|
||||
m_widget->setSettings(ClearCasePlugin::instance()->settings());
|
||||
if (m_searchKeywords.isEmpty())
|
||||
m_searchKeywords = m_widget->searchKeywords();
|
||||
return m_widget;
|
||||
}
|
||||
|
||||
void SettingsPage::apply()
|
||||
{
|
||||
ClearCasePlugin::instance()->setSettings(m_widget->settings());
|
||||
}
|
||||
|
||||
bool SettingsPage::matches(const QString &s) const
|
||||
{
|
||||
return m_searchKeywords.contains(s, Qt::CaseInsensitive);
|
||||
}
|
||||
90
src/plugins/clearcase/settingspage.h
Normal file
90
src/plugins/clearcase/settingspage.h
Normal file
@@ -0,0 +1,90 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef SETTINGSPAGE_H
|
||||
#define SETTINGSPAGE_H
|
||||
|
||||
#include "ui_settingspage.h"
|
||||
|
||||
#include <vcsbase/vcsbaseoptionspage.h>
|
||||
|
||||
#include <QPointer>
|
||||
#include <QString>
|
||||
#include <QWidget>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QSettings;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Internal {
|
||||
|
||||
class ClearCaseSettings;
|
||||
|
||||
class SettingsPageWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SettingsPageWidget(QWidget *parent = 0);
|
||||
|
||||
ClearCaseSettings settings() const;
|
||||
void setSettings(const ClearCaseSettings &);
|
||||
|
||||
QString searchKeywords() const;
|
||||
|
||||
private:
|
||||
Ui::SettingsPage m_ui;
|
||||
};
|
||||
|
||||
|
||||
class SettingsPage : public VcsBase::VcsBaseOptionsPage
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SettingsPage();
|
||||
|
||||
QWidget *createPage(QWidget *parent);
|
||||
void apply();
|
||||
void finish() { }
|
||||
bool matches(const QString &) const;
|
||||
|
||||
private:
|
||||
QString m_searchKeywords;
|
||||
SettingsPageWidget* m_widget;
|
||||
};
|
||||
|
||||
} // namespace ClearCase
|
||||
} // namespace Internal
|
||||
|
||||
#endif // SETTINGSPAGE_H
|
||||
236
src/plugins/clearcase/settingspage.ui
Normal file
236
src/plugins/clearcase/settingspage.ui
Normal file
@@ -0,0 +1,236 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ClearCase::Internal::SettingsPage</class>
|
||||
<widget class="QWidget" name="ClearCase::Internal::SettingsPage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>363</width>
|
||||
<height>384</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="generalGroupBox">
|
||||
<property name="title">
|
||||
<string>Configuration</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_3">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="commandLabel">
|
||||
<property name="text">
|
||||
<string>&Command:</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>commandPathChooser</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="Utils::PathChooser" name="commandPathChooser" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Diff</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QRadioButton" name="graphicalDiffRadioButton">
|
||||
<property name="text">
|
||||
<string>&Graphical (Single file only)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QRadioButton" name="externalDiffRadioButton">
|
||||
<property name="text">
|
||||
<string>&External</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QWidget" name="diffWidget" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="diffArgsLabel">
|
||||
<property name="text">
|
||||
<string>Arg&uments:</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>diffArgsEdit</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="diffArgsEdit"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="miscGroupBox">
|
||||
<property name="title">
|
||||
<string>Miscellaneous</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<property name="fieldGrowthPolicy">
|
||||
<enum>QFormLayout::ExpandingFieldsGrow</enum>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="historyCountLabel">
|
||||
<property name="text">
|
||||
<string>&History count:</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>historyCountSpinBox</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSpinBox" name="historyCountSpinBox">
|
||||
<property name="maximum">
|
||||
<number>10000</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="timeOutLabel">
|
||||
<property name="text">
|
||||
<string>&Timeout:</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>timeOutSpinBox</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QSpinBox" name="timeOutSpinBox">
|
||||
<property name="suffix">
|
||||
<string>s</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>360</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="autoCheckOutCheckBox">
|
||||
<property name="text">
|
||||
<string>&Automatically check out files on edit</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QCheckBox" name="autoAssignActivityCheckBox">
|
||||
<property name="toolTip">
|
||||
<string>Check this if you have a trigger that renames the activity automatically. You will not be prompted for activity name</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Aut&o assign activity names</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QCheckBox" name="promptCheckBox">
|
||||
<property name="text">
|
||||
<string>&Prompt on check-in</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<widget class="QCheckBox" name="disableIndexerCheckBox">
|
||||
<property name="text">
|
||||
<string>Di&sable indexer</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="indexOnlyVOBsLabel">
|
||||
<property name="text">
|
||||
<string>&Index only VOBs:</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>indexOnlyVOBsEdit</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<widget class="QLineEdit" name="indexOnlyVOBsEdit">
|
||||
<property name="toolTip">
|
||||
<string>VOBs list, separated by comma. Indexer will only traverse the specified VOBs. If left blank, all active VOBs will be indexed</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>Utils::PathChooser</class>
|
||||
<extends>QWidget</extends>
|
||||
<header location="global">utils/pathchooser.h</header>
|
||||
<container>1</container>
|
||||
<slots>
|
||||
<signal>editingFinished()</signal>
|
||||
<signal>browsingFinished()</signal>
|
||||
</slots>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>graphicalDiffRadioButton</tabstop>
|
||||
<tabstop>externalDiffRadioButton</tabstop>
|
||||
<tabstop>historyCountSpinBox</tabstop>
|
||||
<tabstop>timeOutSpinBox</tabstop>
|
||||
<tabstop>autoCheckOutCheckBox</tabstop>
|
||||
<tabstop>autoAssignActivityCheckBox</tabstop>
|
||||
<tabstop>indexOnlyVOBsEdit</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>externalDiffRadioButton</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>diffWidget</receiver>
|
||||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>83</x>
|
||||
<y>122</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>203</x>
|
||||
<y>140</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
127
src/plugins/clearcase/undocheckout.ui
Normal file
127
src/plugins/clearcase/undocheckout.ui
Normal file
@@ -0,0 +1,127 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ClearCase::Internal::UndoCheckOut</class>
|
||||
<widget class="QDialog" name="ClearCase::Internal::UndoCheckOut">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>323</width>
|
||||
<height>105</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="lblMessage"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lblModified">
|
||||
<property name="palette">
|
||||
<palette>
|
||||
<active>
|
||||
<colorrole role="WindowText">
|
||||
<brush brushstyle="SolidPattern">
|
||||
<color alpha="255">
|
||||
<red>255</red>
|
||||
<green>0</green>
|
||||
<blue>0</blue>
|
||||
</color>
|
||||
</brush>
|
||||
</colorrole>
|
||||
</active>
|
||||
<inactive>
|
||||
<colorrole role="WindowText">
|
||||
<brush brushstyle="SolidPattern">
|
||||
<color alpha="255">
|
||||
<red>255</red>
|
||||
<green>0</green>
|
||||
<blue>0</blue>
|
||||
</color>
|
||||
</brush>
|
||||
</colorrole>
|
||||
</inactive>
|
||||
<disabled>
|
||||
<colorrole role="WindowText">
|
||||
<brush brushstyle="SolidPattern">
|
||||
<color alpha="255">
|
||||
<red>68</red>
|
||||
<green>96</green>
|
||||
<blue>92</blue>
|
||||
</color>
|
||||
</brush>
|
||||
</colorrole>
|
||||
</disabled>
|
||||
</palette>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>The file was changed!</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="chkKeep">
|
||||
<property name="text">
|
||||
<string>&Save copy of the file with a '.keep' extension</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::No|QDialogButtonBox::Yes</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>ClearCase::Internal::UndoCheckOut</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>ClearCase::Internal::UndoCheckOut</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
110
src/plugins/clearcase/versionselector.cpp
Normal file
110
src/plugins/clearcase/versionselector.cpp
Normal file
@@ -0,0 +1,110 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "versionselector.h"
|
||||
#include "ui_versionselector.h"
|
||||
|
||||
#include <QRegExp>
|
||||
#include <QTextStream>
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Internal {
|
||||
|
||||
VersionSelector::VersionSelector(const QString &fileName, const QString &message, QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::VersionSelector)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->headerLabel->setText(ui->headerLabel->text().arg(fileName));
|
||||
m_stream = new QTextStream(message.toLocal8Bit(), QIODevice::ReadOnly | QIODevice::Text);
|
||||
QString line;
|
||||
while (!m_stream->atEnd() && !line.contains(QLatin1String("1) Loaded version")))
|
||||
line = m_stream->readLine();
|
||||
if (!readValues())
|
||||
return;
|
||||
ui->loadedLabel->setText(m_versionID);
|
||||
ui->loadedCreatedByLabel->setText(m_createdBy);
|
||||
ui->loadedCreatedOnLabel->setText(m_createdOn);
|
||||
ui->loadedText->insertPlainText(m_message + QLatin1Char(' '));
|
||||
|
||||
line = m_stream->readLine(); // 2) Version after update
|
||||
if (!readValues())
|
||||
return;
|
||||
ui->updatedLabel->setText(m_versionID);
|
||||
ui->updatedCreatedByLabel->setText(m_createdBy);
|
||||
ui->updatedCreatedOnLabel->setText(m_createdOn);
|
||||
ui->updatedText->setPlainText(m_message);
|
||||
}
|
||||
|
||||
VersionSelector::~VersionSelector()
|
||||
{
|
||||
delete m_stream;
|
||||
delete ui;
|
||||
}
|
||||
|
||||
bool VersionSelector::readValues()
|
||||
{
|
||||
QString line;
|
||||
line = m_stream->readLine();
|
||||
QRegExp id(QLatin1String("Version ID: (.*)"));
|
||||
if (id.indexIn(line) == -1)
|
||||
return false;
|
||||
m_versionID = id.cap(1);
|
||||
line = m_stream->readLine();
|
||||
QRegExp owner(QLatin1String("Created by: (.*)"));
|
||||
if (owner.indexIn(line) == -1)
|
||||
return false;
|
||||
m_createdBy = owner.cap(1);
|
||||
line = m_stream->readLine();
|
||||
QRegExp dateTimeRE(QLatin1String("Created on: (.*)"));
|
||||
if (dateTimeRE.indexIn(line) == -1)
|
||||
return false;
|
||||
m_createdOn = dateTimeRE.cap(1);
|
||||
QStringList messageLines;
|
||||
do
|
||||
{
|
||||
line = m_stream->readLine().trimmed();
|
||||
if (line.isEmpty())
|
||||
break;
|
||||
messageLines << line;
|
||||
} while (!m_stream->atEnd());
|
||||
m_message = messageLines.join(QLatin1String(" "));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool VersionSelector::isUpdate() const
|
||||
{
|
||||
return (ui->updatedRadioButton->isChecked());
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClearCase
|
||||
70
src/plugins/clearcase/versionselector.h
Normal file
70
src/plugins/clearcase/versionselector.h
Normal file
@@ -0,0 +1,70 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 AudioCodes Ltd.
|
||||
**
|
||||
** Author: Orgad Shaneh <orgad.shaneh@audiocodes.com>
|
||||
**
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef VERSIONSELECTOR_H
|
||||
#define VERSIONSELECTOR_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QDateTime>
|
||||
#include <QString>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QTextStream;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace ClearCase {
|
||||
namespace Internal {
|
||||
|
||||
namespace Ui {
|
||||
class VersionSelector;
|
||||
}
|
||||
|
||||
class VersionSelector : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit VersionSelector(const QString &fileName, const QString &message, QWidget *parent = 0);
|
||||
~VersionSelector();
|
||||
bool isUpdate() const;
|
||||
|
||||
private:
|
||||
Ui::VersionSelector *ui;
|
||||
QTextStream *m_stream;
|
||||
QString m_versionID, m_createdBy, m_createdOn, m_message;
|
||||
bool readValues();
|
||||
};
|
||||
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClearCase
|
||||
#endif // VERSIONSELECTOR_H
|
||||
190
src/plugins/clearcase/versionselector.ui
Normal file
190
src/plugins/clearcase/versionselector.ui
Normal file
@@ -0,0 +1,190 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ClearCase::Internal::VersionSelector</class>
|
||||
<widget class="QDialog" name="ClearCase::Internal::VersionSelector">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>413</width>
|
||||
<height>435</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Confirm Version to Check Out</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="headerLabel">
|
||||
<property name="text">
|
||||
<string>There are multiple versions of '%1' which can be considered for checkout. Please select version to checkout:</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QFormLayout" name="loadedLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QRadioButton" name="loadedRadioButton">
|
||||
<property name="text">
|
||||
<string>&Loaded Version</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="loadedLabel">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="loadedCreatedByHeaderLabel">
|
||||
<property name="text">
|
||||
<string>Created By:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="loadedCreatedByLabel">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="loadedCreatedOnHeaderLabel">
|
||||
<property name="text">
|
||||
<string>Created On:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLabel" name="loadedCreatedOnLabel">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="QTextEdit" name="loadedText">
|
||||
<property name="html">
|
||||
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">NOTE: You will not be able to check in this file without merging the changes (not supported by the plugin)</span></p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QFormLayout" name="updatedLayout">
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="updatedLabel">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="updatedCreatedByHeaderLabel">
|
||||
<property name="text">
|
||||
<string>Created By:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="updatedCreatedByLabel">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="updatedCreatedOnHeaderLabel">
|
||||
<property name="text">
|
||||
<string>Created On:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLabel" name="updatedCreatedOnLabel">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="QPlainTextEdit" name="updatedText">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QRadioButton" name="updatedRadioButton">
|
||||
<property name="text">
|
||||
<string>Version after &update</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>ClearCase::Internal::VersionSelector</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>ClearCase::Internal::VersionSelector</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
@@ -57,6 +57,7 @@ isEmpty(IDE_PACKAGE_MODE) {
|
||||
linux-* {
|
||||
SUBDIRS += debugger/ptracepreload.pro
|
||||
}
|
||||
!macx:SUBDIRS += plugin_clearcase
|
||||
|
||||
include(../../qtcreator.pri)
|
||||
|
||||
@@ -331,3 +332,7 @@ plugin_qnx.depends = plugin_remotelinux
|
||||
plugin_qnx.depends += plugin_qt4projectmanager
|
||||
plugin_qnx.depends += plugin_coreplugin
|
||||
|
||||
plugin_clearcase.subdir = clearcase
|
||||
plugin_clearcase.depends = plugin_vcsbase
|
||||
plugin_clearcase.depends += plugin_projectexplorer
|
||||
plugin_clearcase.depends += plugin_coreplugin
|
||||
|
||||
Reference in New Issue
Block a user