forked from qt-creator/qt-creator
VcsBase: Re-organize BaseVcsEditorFactory interface
Less code now. Change-Id: I5abdd0bb56ecb940bb606111461b521a54ecaf21 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
@@ -51,21 +51,20 @@ namespace Internal {
|
|||||||
class BaseVcsEditorFactoryPrivate
|
class BaseVcsEditorFactoryPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BaseVcsEditorFactoryPrivate(const VcsBaseEditorParameters *t);
|
|
||||||
|
|
||||||
const VcsBaseEditorParameters *m_type;
|
const VcsBaseEditorParameters *m_type;
|
||||||
|
QObject *m_describeReceiver;
|
||||||
|
const char *m_describeSlot;
|
||||||
};
|
};
|
||||||
|
|
||||||
BaseVcsEditorFactoryPrivate::BaseVcsEditorFactoryPrivate(const VcsBaseEditorParameters *t) :
|
|
||||||
m_type(t)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|
||||||
BaseVcsEditorFactory::BaseVcsEditorFactory(const VcsBaseEditorParameters *t)
|
BaseVcsEditorFactory::BaseVcsEditorFactory(const VcsBaseEditorParameters *t,
|
||||||
: d(new Internal::BaseVcsEditorFactoryPrivate(t))
|
QObject *describeReceiver, const char *describeSlot)
|
||||||
|
: d(new Internal::BaseVcsEditorFactoryPrivate)
|
||||||
{
|
{
|
||||||
|
d->m_type = t;
|
||||||
|
d->m_describeReceiver = describeReceiver;
|
||||||
|
d->m_describeSlot = describeSlot;
|
||||||
setId(t->id);
|
setId(t->id);
|
||||||
setDisplayName(QCoreApplication::translate("VCS", t->displayName));
|
setDisplayName(QCoreApplication::translate("VCS", t->displayName));
|
||||||
addMimeType(t->mimeType);
|
addMimeType(t->mimeType);
|
||||||
@@ -81,6 +80,10 @@ Core::IEditor *BaseVcsEditorFactory::createEditor()
|
|||||||
{
|
{
|
||||||
VcsBaseEditorWidget *vcsEditor = createVcsBaseEditor(d->m_type);
|
VcsBaseEditorWidget *vcsEditor = createVcsBaseEditor(d->m_type);
|
||||||
|
|
||||||
|
vcsEditor->init();
|
||||||
|
if (d->m_describeReceiver)
|
||||||
|
connect(vcsEditor, SIGNAL(describeRequested(QString,QString)), d->m_describeReceiver, d->m_describeSlot);
|
||||||
|
|
||||||
vcsEditor->baseTextDocument()->setMimeType(mimeTypes().front());
|
vcsEditor->baseTextDocument()->setMimeType(mimeTypes().front());
|
||||||
|
|
||||||
TextEditor::TextEditorSettings::initializeEditor(vcsEditor);
|
TextEditor::TextEditorSettings::initializeEditor(vcsEditor);
|
||||||
|
|||||||
@@ -43,16 +43,16 @@ class VCSBASE_EXPORT BaseVcsEditorFactory : public Core::IEditorFactory
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit BaseVcsEditorFactory(const VcsBaseEditorParameters *type);
|
explicit BaseVcsEditorFactory(const VcsBaseEditorParameters *type,
|
||||||
|
QObject *describeReceiver,
|
||||||
|
const char *describeSlot);
|
||||||
~BaseVcsEditorFactory();
|
~BaseVcsEditorFactory();
|
||||||
|
|
||||||
Core::IEditor *createEditor();
|
Core::IEditor *createEditor();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Implement to create and initialize (call init()) a
|
// Implement to create and initialize (call init()) a VcsBaseEditor subclass.
|
||||||
// VcsBaseEditor subclass
|
virtual VcsBaseEditorWidget *createVcsBaseEditor(const VcsBaseEditorParameters *type) = 0;
|
||||||
virtual VcsBaseEditorWidget *createVcsBaseEditor(const VcsBaseEditorParameters *type,
|
|
||||||
QWidget *parent = 0) = 0;
|
|
||||||
|
|
||||||
Internal::BaseVcsEditorFactoryPrivate *const d;
|
Internal::BaseVcsEditorFactoryPrivate *const d;
|
||||||
};
|
};
|
||||||
@@ -64,37 +64,18 @@ class VcsEditorFactory : public BaseVcsEditorFactory
|
|||||||
public:
|
public:
|
||||||
explicit VcsEditorFactory(const VcsBaseEditorParameters *type,
|
explicit VcsEditorFactory(const VcsBaseEditorParameters *type,
|
||||||
QObject *describeReceiver = 0,
|
QObject *describeReceiver = 0,
|
||||||
const char *describeSlot = 0);
|
const char *describeSlot = 0)
|
||||||
|
: BaseVcsEditorFactory(type, describeReceiver, describeSlot)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
VcsBaseEditorWidget *createVcsBaseEditor(const VcsBaseEditorParameters *type,
|
VcsBaseEditorWidget *createVcsBaseEditor(const VcsBaseEditorParameters *type)
|
||||||
QWidget *parent = 0);
|
{
|
||||||
QObject *m_describeReceiver;
|
return new Editor(type, 0);
|
||||||
const char *m_describeSlot;
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class Editor>
|
|
||||||
VcsEditorFactory<Editor>::VcsEditorFactory(const VcsBaseEditorParameters *type,
|
|
||||||
QObject *describeReceiver,
|
|
||||||
const char *describeSlot) :
|
|
||||||
BaseVcsEditorFactory(type),
|
|
||||||
m_describeReceiver(describeReceiver),
|
|
||||||
m_describeSlot(describeSlot)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class Editor>
|
|
||||||
VcsBaseEditorWidget *VcsEditorFactory<Editor>::createVcsBaseEditor(const VcsBaseEditorParameters *type,
|
|
||||||
QWidget *parent)
|
|
||||||
{
|
|
||||||
VcsBaseEditorWidget *rc = new Editor(type, parent);
|
|
||||||
rc->init();
|
|
||||||
if (m_describeReceiver)
|
|
||||||
connect(rc, SIGNAL(describeRequested(QString,QString)), m_describeReceiver, m_describeSlot);
|
|
||||||
return rc;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace VcsBase
|
} // namespace VcsBase
|
||||||
|
|
||||||
#endif // BASEVCSEDITORFACTORY_H
|
#endif // BASEVCSEDITORFACTORY_H
|
||||||
|
|||||||
Reference in New Issue
Block a user