Further header cleanup.

Introduce some more private classes for the coreplugin,
use header include convention
<QtModule/QClass>, de-qobjectify VariableManager.
This commit is contained in:
Friedemann Kleint
2010-09-16 14:59:05 +02:00
parent 64aeb904bf
commit bb13b69ec0
31 changed files with 397 additions and 240 deletions

View File

@@ -1,10 +1,10 @@
#ifndef PLUGINCOLLECTION_H
#define PLUGINCOLLECTION_H
#include <QList>
#include <QString>
#include "extensionsystem_global.h"
#include <QtCore/QList>
#include <QtCore/QString>
namespace ExtensionSystem {
class PluginSpec;
@@ -26,6 +26,6 @@ private:
};
}
} // namespace ExtensionSystem
#endif // PLUGINCOLLECTION_H

View File

@@ -30,12 +30,13 @@
#include "crumblepath.h"
#include "stylehelper.h"
#include <QHBoxLayout>
#include <QPushButton>
#include <QStyle>
#include <QResizeEvent>
#include <QPainter>
#include <QImage>
#include <QtCore/QList>
#include <QtGui/QHBoxLayout>
#include <QtGui/QPushButton>
#include <QtGui/QStyle>
#include <QtGui/QResizeEvent>
#include <QtGui/QPainter>
#include <QtGui/QImage>
namespace Utils {
@@ -177,31 +178,43 @@ void CrumblePathButton::setSegmentType(int type)
m_textPos.setX(useLeftPadding ? 18 : 4);
}
struct CrumblePathPrivate {
explicit CrumblePathPrivate(CrumblePath *q);
QColor m_baseColor;
QList<CrumblePathButton*> m_buttons;
QWidget *m_background;
};
CrumblePathPrivate::CrumblePathPrivate(CrumblePath *q) :
m_baseColor(StyleHelper::baseColor()),
m_background(new QWidget(q))
{
}
//
// CrumblePath
//
CrumblePath::CrumblePath(QWidget *parent) :
QWidget(parent), m_background(new QWidget(this))
QWidget(parent), d(new CrumblePathPrivate(this))
{
m_baseColor = StyleHelper::baseColor();
setMinimumHeight(25);
setMaximumHeight(25);
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
setBackgroundStyle();
m_background->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
d->m_background->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
}
CrumblePath::~CrumblePath()
{
qDeleteAll(m_buttons);
m_buttons.clear();
qDeleteAll(d->m_buttons);
d->m_buttons.clear();
}
void CrumblePath::setBackgroundStyle()
{
m_background->setStyleSheet("QWidget { background-color:" + m_baseColor.name() + ";}");
d->m_background->setStyleSheet("QWidget { background-color:" + d->m_baseColor.name() + ";}");
}
void CrumblePath::pushElement(const QString &title)
@@ -212,38 +225,38 @@ void CrumblePath::pushElement(const QString &title)
connect(newButton, SIGNAL(customContextMenuRequested(QPoint)), SLOT(mapContextMenuRequestToIndex()));
int segType = CrumblePathButton::MiddleSegment;
if (!m_buttons.isEmpty()) {
if (m_buttons.length() == 1)
if (!d->m_buttons.isEmpty()) {
if (d->m_buttons.length() == 1)
segType = segType | CrumblePathButton::FirstSegment;
m_buttons.last()->setSegmentType(segType);
d->m_buttons.last()->setSegmentType(segType);
} else {
segType = CrumblePathButton::FirstSegment | CrumblePathButton::LastSegment;
newButton->setSegmentType(segType);
}
m_buttons.append(newButton);
d->m_buttons.append(newButton);
resizeButtons();
}
void CrumblePath::popElement()
{
QWidget *last = m_buttons.last();
m_buttons.removeLast();
QWidget *last = d->m_buttons.last();
d->m_buttons.removeLast();
last->setParent(0);
last->deleteLater();
int segType = CrumblePathButton::MiddleSegment | CrumblePathButton::LastSegment;
if (!m_buttons.isEmpty()) {
if (m_buttons.length() == 1)
if (!d->m_buttons.isEmpty()) {
if (d->m_buttons.length() == 1)
segType = CrumblePathButton::FirstSegment | CrumblePathButton::LastSegment;
m_buttons.last()->setSegmentType(segType);
d->m_buttons.last()->setSegmentType(segType);
}
resizeButtons();
}
void CrumblePath::clear()
{
while (!m_buttons.isEmpty()) {
while (!d->m_buttons.isEmpty()) {
popElement();
}
}
@@ -259,21 +272,21 @@ void CrumblePath::resizeButtons()
int buttonMaxWidth = 0;
int totalWidthLeft = width();
if (m_buttons.length() >= 1) {
if (d->m_buttons.length() >= 1) {
QPoint nextElementPosition(0,0);
m_buttons[0]->raise();
d->m_buttons[0]->raise();
// rearrange all items so that the first item is on top (added last).
for(int i = 0; i < m_buttons.length() ; ++i) {
CrumblePathButton *button = m_buttons[i];
for(int i = 0; i < d->m_buttons.length() ; ++i) {
CrumblePathButton *button = d->m_buttons[i];
QFontMetrics fm(button->font());
buttonMinWidth = ArrowBorderSize + fm.width(button->text()) + ArrowBorderSize * 2 ;
buttonMaxWidth = (totalWidthLeft + ArrowBorderSize * (m_buttons.length() - i)) / (m_buttons.length() - i);
buttonMaxWidth = (totalWidthLeft + ArrowBorderSize * (d->m_buttons.length() - i)) / (d->m_buttons.length() - i);
if (buttonMinWidth > buttonMaxWidth && i < m_buttons.length() - 1) {
if (buttonMinWidth > buttonMaxWidth && i < d->m_buttons.length() - 1) {
buttonMinWidth = buttonMaxWidth;
} else if (i > 3 && (i == m_buttons.length() - 1)) {
} else if (i > 3 && (i == d->m_buttons.length() - 1)) {
buttonMinWidth = width() - nextElementPosition.x();
buttonMaxWidth = buttonMinWidth;
}
@@ -287,20 +300,20 @@ void CrumblePath::resizeButtons()
button->show();
if (i > 0)
button->stackUnder(m_buttons[i - 1]);
button->stackUnder(d->m_buttons[i - 1]);
}
}
m_background->setGeometry(0,0, width(), height());
m_background->update();
d->m_background->setGeometry(0,0, width(), height());
d->m_background->update();
}
void CrumblePath::mapClickToIndex()
{
QObject *element = sender();
for (int i = 0; i < m_buttons.length(); ++i) {
if (m_buttons[i] == element) {
for (int i = 0; i < d->m_buttons.length(); ++i) {
if (d->m_buttons[i] == element) {
emit elementClicked(i);
return;
}
@@ -310,8 +323,8 @@ void CrumblePath::mapClickToIndex()
void CrumblePath::mapContextMenuRequestToIndex()
{
QObject *element = sender();
for (int i = 0; i < m_buttons.length(); ++i) {
if (m_buttons[i] == element) {
for (int i = 0; i < d->m_buttons.length(); ++i) {
if (d->m_buttons[i] == element) {
emit elementContextMenuRequested(i);
return;
}
@@ -320,8 +333,8 @@ void CrumblePath::mapContextMenuRequestToIndex()
void CrumblePath::paintEvent(QPaintEvent *event)
{
if (StyleHelper::baseColor() != m_baseColor) {
m_baseColor = StyleHelper::baseColor();
if (StyleHelper::baseColor() != d->m_baseColor) {
d->m_baseColor = StyleHelper::baseColor();
setBackgroundStyle();
}

View File

@@ -30,15 +30,15 @@
#ifndef CRUMBLEPATH_H
#define CRUMBLEPATH_H
#include <QWidget>
#include <QList>
#include "utils_global.h"
#include <QtGui/QWidget>
QT_FORWARD_DECLARE_CLASS(QResizeEvent);
namespace Utils {
class CrumblePathButton;
struct CrumblePathPrivate;
class QTCREATOR_UTILS_EXPORT CrumblePath : public QWidget
{
@@ -69,9 +69,7 @@ private:
void setBackgroundStyle();
private:
QColor m_baseColor;
QList<CrumblePathButton*> m_buttons;
QWidget *m_background;
QScopedPointer<CrumblePathPrivate> d;
};
} // namespace QmlViewer

View File

@@ -1,9 +1,9 @@
#include "debuggerlanguagechooser.h"
#include <QHBoxLayout>
#include <QCheckBox>
#include <QSpinBox>
#include <QLabel>
#include <QtGui/QHBoxLayout>
#include <QtGui/QCheckBox>
#include <QtGui/QSpinBox>
#include <QtGui/QLabel>
namespace Utils {

View File

@@ -1,9 +1,10 @@
#ifndef DEBUGGERLANGUAGECHOOSER_H
#define DEBUGGERLANGUAGECHOOSER_H
#include <QWidget>
#include "utils_global.h"
#include <QtGui/QWidget>
QT_FORWARD_DECLARE_CLASS(QCheckBox);
QT_FORWARD_DECLARE_CLASS(QLabel);
QT_FORWARD_DECLARE_CLASS(QSpinBox);

View File

@@ -31,7 +31,7 @@
#define TREEWIDGETCOLUMNSTRETCHER_H
#include "utils_global.h"
#include <QObject>
#include <QtCore/QObject>
QT_BEGIN_NAMESPACE
class QTreeWidget;

View File

@@ -35,6 +35,7 @@
#include "openwithdialog.h"
#include "filemanager.h"
#include "icore.h"
#include "ieditor.h"
#include "iversioncontrol.h"
#include "mimedatabase.h"
#include "tabpositionindicator.h"
@@ -435,11 +436,7 @@ EditorManager::EditorManager(ICore *core, QWidget *parent) :
connect(m_d->m_openInExternalEditorAction, SIGNAL(triggered()), this, SLOT(openInExternalEditor()));
// Connect to VariableManager for CURRENT_DOCUMENT variable setting
VariableManager *vm = VariableManager::instance();
connect(this, SIGNAL(currentEditorChanged(Core::IEditor *)),
vm, SLOT(updateCurrentDocument(Core::IEditor *)));
VariableManager::initEditorManagerConnections();
// other setup
m_d->m_splitter = new SplitterOrView(m_d->m_editorModel);
m_d->m_view = m_d->m_splitter->view();

View File

@@ -38,21 +38,44 @@ Q_DECLARE_METATYPE(Core::IEditor*)
namespace Core {
OpenEditorsModel::OpenEditorsModel(QObject *parent) :
QAbstractItemModel(parent),
struct OpenEditorsModelPrivate {
OpenEditorsModelPrivate();
const QIcon m_lockedIcon;
const QIcon m_unlockedIcon;
QList<OpenEditorsModel::Entry> m_editors;
QList<IEditor *> m_duplicateEditors;
};
OpenEditorsModelPrivate::OpenEditorsModelPrivate() :
m_lockedIcon(QLatin1String(":/core/images/locked.png")),
m_unlockedIcon(QLatin1String(":/core/images/unlocked.png"))
{
}
OpenEditorsModel::Entry::Entry() :
editor(0)
{
}
OpenEditorsModel::OpenEditorsModel(QObject *parent) :
QAbstractItemModel(parent), d(new OpenEditorsModelPrivate)
{
}
OpenEditorsModel::~OpenEditorsModel()
{
}
QIcon OpenEditorsModel::lockedIcon() const
{
return m_lockedIcon;
return d->m_lockedIcon;
}
QIcon OpenEditorsModel::unlockedIcon() const
{
return m_unlockedIcon;
return d->m_unlockedIcon;
}
QString OpenEditorsModel::Entry::fileName() const {
@@ -77,14 +100,14 @@ int OpenEditorsModel::columnCount(const QModelIndex &parent) const
int OpenEditorsModel::rowCount(const QModelIndex &parent) const
{
if (!parent.isValid())
return m_editors.count();
return d->m_editors.count();
return 0;
}
QList<IEditor *> OpenEditorsModel::editors() const
{
QList<IEditor *> result;
foreach (const Entry &entry, m_editors)
foreach (const Entry &entry, d->m_editors)
if (entry.editor)
result += entry.editor;
return result;
@@ -96,7 +119,7 @@ void OpenEditorsModel::addEditor(IEditor *editor, bool isDuplicate)
return;
if (isDuplicate) {
m_duplicateEditors.append(editor);
d->m_duplicateEditors.append(editor);
return;
}
@@ -116,8 +139,8 @@ void OpenEditorsModel::addRestoredEditor(const QString &fileName, const QString
QModelIndex OpenEditorsModel::firstRestoredEditor() const
{
for (int i = 0; i < m_editors.count(); ++i)
if (!m_editors.at(i).editor)
for (int i = 0; i < d->m_editors.count(); ++i)
if (!d->m_editors.at(i).editor)
return createIndex(i, 0);
return QModelIndex();
}
@@ -128,8 +151,8 @@ void OpenEditorsModel::addEntry(const Entry &entry)
int previousIndex = findFileName(fileName);
if (previousIndex >= 0) {
if (entry.editor && m_editors.at(previousIndex).editor == 0) {
m_editors[previousIndex] = entry;
if (entry.editor && d->m_editors.at(previousIndex).editor == 0) {
d->m_editors[previousIndex] = entry;
connect(entry.editor, SIGNAL(changed()), this, SLOT(itemChanged()));
}
return;
@@ -137,13 +160,13 @@ void OpenEditorsModel::addEntry(const Entry &entry)
int index;
QString displayName = entry.displayName();
for (index = 0; index < m_editors.count(); ++index) {
if (displayName < m_editors.at(index).displayName())
for (index = 0; index < d->m_editors.count(); ++index) {
if (displayName < d->m_editors.at(index).displayName())
break;
}
beginInsertRows(QModelIndex(), index, index);
m_editors.insert(index, entry);
d->m_editors.insert(index, entry);
if (entry.editor)
connect(entry.editor, SIGNAL(changed()), this, SLOT(itemChanged()));
endInsertRows();
@@ -152,8 +175,8 @@ void OpenEditorsModel::addEntry(const Entry &entry)
int OpenEditorsModel::findEditor(IEditor *editor) const
{
for (int i = 0; i < m_editors.count(); ++i)
if (m_editors.at(i).editor == editor)
for (int i = 0; i < d->m_editors.count(); ++i)
if (d->m_editors.at(i).editor == editor)
return i;
return -1;
}
@@ -162,8 +185,8 @@ int OpenEditorsModel::findFileName(const QString &filename) const
{
if (filename.isEmpty())
return -1;
for (int i = 0; i < m_editors.count(); ++i) {
if (m_editors.at(i).fileName() == filename)
for (int i = 0; i < d->m_editors.count(); ++i) {
if (d->m_editors.at(i).fileName() == filename)
return i;
}
return -1;
@@ -171,12 +194,12 @@ int OpenEditorsModel::findFileName(const QString &filename) const
void OpenEditorsModel::removeEditor(IEditor *editor)
{
m_duplicateEditors.removeAll(editor);
d->m_duplicateEditors.removeAll(editor);
int idx = findEditor(editor);
if (idx < 0)
return;
beginRemoveRows(QModelIndex(), idx, idx);
m_editors.removeAt(idx);
d->m_editors.removeAt(idx);
endRemoveRows();
disconnect(editor, SIGNAL(changed()), this, SLOT(itemChanged()));
}
@@ -186,9 +209,9 @@ void OpenEditorsModel::removeEditor(const QModelIndex &index)
int idx = index.row();
if (idx < 0)
return;
IEditor *editor= m_editors.at(idx).editor;
IEditor *editor= d->m_editors.at(idx).editor;
beginRemoveRows(QModelIndex(), idx, idx);
m_editors.removeAt(idx);
d->m_editors.removeAt(idx);
endRemoveRows();
if (editor)
disconnect(editor, SIGNAL(changed()), this, SLOT(itemChanged()));
@@ -196,10 +219,10 @@ void OpenEditorsModel::removeEditor(const QModelIndex &index)
void OpenEditorsModel::removeAllRestoredEditors()
{
for (int i = m_editors.count()-1; i >= 0; --i) {
if (!m_editors.at(i).editor) {
for (int i = d->m_editors.count()-1; i >= 0; --i) {
if (!d->m_editors.at(i).editor) {
beginRemoveRows(QModelIndex(), i, i);
m_editors.removeAt(i);
d->m_editors.removeAt(i);
endRemoveRows();
}
}
@@ -208,9 +231,9 @@ void OpenEditorsModel::removeAllRestoredEditors()
QList<OpenEditorsModel::Entry> OpenEditorsModel::restoredEditors() const
{
QList<Entry> result;
for (int i = m_editors.count()-1; i >= 0; --i) {
if (!m_editors.at(i).editor) {
result.append(m_editors.at(i));
for (int i = d->m_editors.count()-1; i >= 0; --i) {
if (!d->m_editors.at(i).editor) {
result.append(d->m_editors.at(i));
}
}
return result;
@@ -218,13 +241,13 @@ QList<OpenEditorsModel::Entry> OpenEditorsModel::restoredEditors() const
bool OpenEditorsModel::isDuplicate(IEditor *editor) const
{
return editor && m_duplicateEditors.contains(editor);
return editor && d->m_duplicateEditors.contains(editor);
}
IEditor *OpenEditorsModel::originalForDuplicate(IEditor *duplicate) const
{
IFile *file = duplicate->file();
foreach(const Entry &e, m_editors)
foreach(const Entry &e, d->m_editors)
if (e.editor && e.editor->file() == file)
return e.editor;
return 0;
@@ -234,7 +257,7 @@ QList<IEditor *> OpenEditorsModel::duplicatesFor(IEditor *editor) const
{
QList<IEditor *> result;
IFile *file = editor->file();
foreach(IEditor *e, m_duplicateEditors)
foreach(IEditor *e, d->m_duplicateEditors)
if (e->file() == file)
result += e;
return result;
@@ -246,9 +269,9 @@ void OpenEditorsModel::makeOriginal(IEditor *duplicate)
IEditor *original = originalForDuplicate(duplicate);
Q_ASSERT(original);
int i = findEditor(original);
m_editors[i].editor = duplicate;
m_duplicateEditors.removeOne(duplicate);
m_duplicateEditors.append(original);
d->m_editors[i].editor = duplicate;
d->m_duplicateEditors.removeOne(duplicate);
d->m_duplicateEditors.append(original);
disconnect(original, SIGNAL(changed()), this, SLOT(itemChanged()));
connect(duplicate, SIGNAL(changed()), this, SLOT(itemChanged()));
}
@@ -265,7 +288,7 @@ void OpenEditorsModel::emitDataChanged(IEditor *editor)
QModelIndex OpenEditorsModel::index(int row, int column, const QModelIndex &parent) const
{
Q_UNUSED(parent)
if (column < 0 || column > 1 || row < 0 || row >= m_editors.count())
if (column < 0 || column > 1 || row < 0 || row >= d->m_editors.count())
return QModelIndex();
return createIndex(row, column);
}
@@ -274,7 +297,7 @@ QVariant OpenEditorsModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid() || (index.column() != 0 && role < Qt::UserRole))
return QVariant();
Entry e = m_editors.at(index.row());
Entry e = d->m_editors.at(index.row());
switch (role) {
case Qt::DisplayRole:
return (e.editor && e.editor->file()->isModified())
@@ -282,7 +305,7 @@ QVariant OpenEditorsModel::data(const QModelIndex &index, int role) const
: e.displayName();
case Qt::DecorationRole:
return (e.editor && e.editor->file()->isReadOnly())
? m_lockedIcon : QIcon();
? d->m_lockedIcon : QIcon();
case Qt::ToolTipRole:
return e.fileName().isEmpty()
? e.displayName()
@@ -307,9 +330,9 @@ QModelIndex OpenEditorsModel::indexOf(IEditor *editor) const
QString OpenEditorsModel::displayNameForFile(IFile *file) const
{
for (int i = 0; i < m_editors.count(); ++i)
if (m_editors.at(i).editor && m_editors.at(i).editor->file() == file)
return m_editors.at(i).editor->displayName();
for (int i = 0; i < d->m_editors.count(); ++i)
if (d->m_editors.at(i).editor && d->m_editors.at(i).editor->file() == file)
return d->m_editors.at(i).editor->displayName();
return QString();
}
@@ -318,4 +341,14 @@ void OpenEditorsModel::itemChanged()
emitDataChanged(qobject_cast<IEditor*>(sender()));
}
QList<OpenEditorsModel::Entry> OpenEditorsModel::entries() const
{
return d->m_editors;
}
IEditor *OpenEditorsModel::editorAt(int row) const
{
return d->m_editors.at(row).editor;
}
} // namespace Core

View File

@@ -33,10 +33,13 @@
#include "../core_global.h"
#include <QtCore/QAbstractItemModel>
#include <QtGui/QIcon>
#include <QtCore/QScopedPointer>
QT_FORWARD_DECLARE_CLASS(QIcon)
namespace Core {
struct OpenEditorsModelPrivate;
class IEditor;
class IFile;
@@ -45,6 +48,7 @@ class CORE_EXPORT OpenEditorsModel : public QAbstractItemModel
Q_OBJECT
public:
explicit OpenEditorsModel(QObject *parent);
virtual ~OpenEditorsModel();
QIcon lockedIcon() const;
QIcon unlockedIcon() const;
@@ -60,7 +64,7 @@ public:
QModelIndex firstRestoredEditor() const;
struct CORE_EXPORT Entry {
Entry() : editor(0) {}
Entry();
IEditor *editor;
QString fileName() const;
QString displayName() const;
@@ -69,9 +73,9 @@ public:
QString m_displayName;
QString m_id;
};
QList<Entry> entries() const { return m_editors; }
QList<Entry> entries() const;
IEditor *editorAt(int row) const { return m_editors.at(row).editor; }
IEditor *editorAt(int row) const;
void removeEditor(IEditor *editor);
void removeEditor(const QModelIndex &index);
@@ -97,11 +101,7 @@ private:
int findEditor(IEditor *editor) const;
int findFileName(const QString &filename) const;
const QIcon m_lockedIcon;
const QIcon m_unlockedIcon;
QList<Entry> m_editors;
QList<IEditor *> m_duplicateEditors;
QScopedPointer<OpenEditorsModelPrivate> d;
};
} // namespace Core

View File

@@ -161,10 +161,10 @@ private:
class CORE_EXPORT FileChangeBlocker
{
public:
FileChangeBlocker(const QString &fileName);
explicit FileChangeBlocker(const QString &fileName);
~FileChangeBlocker();
private:
QString m_fileName;
const QString m_fileName;
Q_DISABLE_COPY(FileChangeBlocker)
};

View File

@@ -50,6 +50,7 @@
#include "progressview.h"
#include "shortcutsettings.h"
#include "vcsmanager.h"
#include "ieditor.h"
#include "scriptmanager_p.h"
#include "settingsdialog.h"
@@ -130,7 +131,7 @@ MainWindow::MainWindow() :
m_fileManager(new FileManager(this)),
m_progressManager(new ProgressManagerPrivate()),
m_scriptManager(new ScriptManagerPrivate(this)),
m_variableManager(new VariableManager(this)),
m_variableManager(new VariableManager),
m_vcsManager(new VCSManager),
m_statusBarManager(0),
m_modeManager(0),
@@ -1020,7 +1021,7 @@ ScriptManager *MainWindow::scriptManager() const
VariableManager *MainWindow::variableManager() const
{
return m_variableManager;
return m_variableManager.data();
}
ModeManager *MainWindow::modeManager() const

View File

@@ -189,7 +189,7 @@ private:
MessageManager *m_messageManager;
ProgressManagerPrivate *m_progressManager;
ScriptManager *m_scriptManager;
VariableManager *m_variableManager;
QScopedPointer<VariableManager> m_variableManager;
VCSManager *m_vcsManager;
StatusBarManager *m_statusBarManager;
ModeManager *m_modeManager;

View File

@@ -29,29 +29,61 @@
#include "variablemanager.h"
#include "ifile.h"
#include "editormanager/ieditor.h"
#include "editormanager/editormanager.h"
#include <utils/qtcassert.h>
#include <QtCore/QFileInfo>
#include <QtCore/QObject>
#include <QtCore/QMap>
#include <QtCore/QDebug>
using namespace Core;
namespace Core {
VariableManager *VariableManager::m_instance = 0;
VariableManager::VariableManager(QObject *parent) : QObject(parent)
class VariableManagerPrivate : public QObject
{
m_instance = this;
Q_OBJECT
public:
void insert(const QString &variable, const QString &value);
bool remove(const QString &variable);
void insertFileInfo(const QString &tag, const QFileInfo &file);
void removeFileInfo(const QString &tag);
public slots:
void updateCurrentDocument(Core::IEditor *editor);
public:
QMap<QString, QString> m_map;
static VariableManager *m_instance;
};
VariableManager *VariableManagerPrivate::m_instance = 0;
void VariableManagerPrivate::updateCurrentDocument(Core::IEditor *editor)
{
const QString currentDocumentTag = QLatin1String("CURRENT_DOCUMENT");
removeFileInfo(currentDocumentTag);
if (editor) {
if (const Core::IFile *file = editor->file()) {
const QString fileName = file->fileName();
if (!fileName.isEmpty())
insertFileInfo(currentDocumentTag, fileName);
}
}
}
VariableManager::~VariableManager()
{
m_instance = 0;
}
void VariableManager::insert(const QString &variable, const QString &value)
void VariableManagerPrivate::insert(const QString &variable, const QString &value)
{
m_map.insert(variable, value);
}
void VariableManager::insertFileInfo(const QString &tag, const QFileInfo &file)
bool VariableManagerPrivate::remove(const QString &variable)
{
return m_map.remove(variable) > 0;
}
void VariableManagerPrivate::insertFileInfo(const QString &tag, const QFileInfo &file)
{
insert(tag, file.filePath());
insert(tag + QLatin1String(":absoluteFilePath"), file.absoluteFilePath());
@@ -67,7 +99,7 @@ void VariableManager::insertFileInfo(const QString &tag, const QFileInfo &file)
insert(tag + QLatin1String(":suffix"), file.suffix());
}
void VariableManager::removeFileInfo(const QString &tag)
void VariableManagerPrivate::removeFileInfo(const QString &tag)
{
if (remove(tag)) {
remove(tag + QLatin1String(":absoluteFilePath"));
@@ -84,38 +116,38 @@ void VariableManager::removeFileInfo(const QString &tag)
}
}
void VariableManager::updateCurrentDocument(Core::IEditor *editor)
VariableManager::VariableManager() : d(new VariableManagerPrivate)
{
const QString currentDocumentTag = QLatin1String("CURRENT_DOCUMENT");
removeFileInfo(currentDocumentTag);
if (editor) {
if (const Core::IFile *file = editor->file()) {
const QString fileName = file->fileName();
if (!fileName.isEmpty())
insertFileInfo(currentDocumentTag, fileName);
}
}
VariableManagerPrivate::m_instance = this;
}
VariableManager::~VariableManager()
{
VariableManagerPrivate::m_instance = 0;
}
void VariableManager::initEditorManagerConnections()
{
QTC_ASSERT(VariableManagerPrivate::m_instance && Core::EditorManager::instance(), return; )
QObject::connect(Core::EditorManager::instance(), SIGNAL(currentEditorChanged(Core::IEditor*)),
VariableManagerPrivate::m_instance->d.data(), SLOT(updateCurrentDocument(Core::IEditor*)));
}
QString VariableManager::value(const QString &variable) const
{
return m_map.value(variable);
return d->m_map.value(variable);
}
QString VariableManager::value(const QString &variable, const QString &defaultValue) const
{
return m_map.value(variable, defaultValue);
}
bool VariableManager::remove(const QString &variable)
{
return m_map.remove(variable) > 0;
return d->m_map.value(variable, defaultValue);
}
QString VariableManager::resolve(const QString &stringWithVariables) const
{
QString result = stringWithVariables;
QMapIterator<QString, QString> i(m_map);
QMapIterator<QString, QString> i(d->m_map);
while (i.hasNext()) {
i.next();
QString key = QLatin1String("${");
@@ -125,3 +157,31 @@ QString VariableManager::resolve(const QString &stringWithVariables) const
}
return result;
}
void VariableManager::insert(const QString &variable, const QString &value)
{
d->insert(variable, value);
}
void VariableManager::insertFileInfo(const QString &tag, const QFileInfo &file)
{
d->insertFileInfo(tag, file);
}
void VariableManager::removeFileInfo(const QString &tag)
{
d->removeFileInfo(tag);
}
bool VariableManager::remove(const QString &variable)
{
return d->remove(variable);
}
VariableManager* VariableManager::instance()
{
return VariableManagerPrivate::m_instance;
}
} // namespace Core
#include "variablemanager.moc"

View File

@@ -31,10 +31,8 @@
#define VARIABLEMANAGER_H
#include "core_global.h"
#include <coreplugin/editormanager/ieditor.h>
#include <QtCore/QObject>
#include <QtCore/QMap>
#include <QtCore/QScopedPointer>
#include <QtCore/QString>
QT_BEGIN_NAMESPACE
@@ -42,16 +40,17 @@ class QFileInfo;
QT_END_NAMESPACE
namespace Core {
class VariableManagerPrivate;
class CORE_EXPORT VariableManager : public QObject
class CORE_EXPORT VariableManager
{
Q_OBJECT
Q_DISABLE_COPY(VariableManager)
public:
VariableManager(QObject *parent);
VariableManager();
~VariableManager();
static VariableManager* instance() { return m_instance; }
static VariableManager* instance();
static void initEditorManagerConnections();
void insert(const QString &variable, const QString &value);
void insertFileInfo(const QString &tag, const QFileInfo &file);
@@ -61,12 +60,8 @@ public:
bool remove(const QString &variable);
QString resolve(const QString &stringWithVariables) const;
private slots:
void updateCurrentDocument(Core::IEditor *editor);
private:
QMap<QString, QString> m_map;
static VariableManager *m_instance;
QScopedPointer<VariableManagerPrivate> d;
};
} // namespace Core

View File

@@ -30,11 +30,13 @@
#ifndef CPPTOOLSEDITORSUPPORT_H
#define CPPTOOLSEDITORSUPPORT_H
#include <QObject>
#include <QPointer>
#include <QFuture>
#include <QSharedPointer>
#include <QTextCursor>
#include <QtCore/QObject>
#include <QtCore/QPointer>
#include <QtCore/QFuture>
#include <QtCore/QSharedPointer>
#include <QtGui/QTextCursor>
#include <cplusplus/CppDocument.h>
QT_BEGIN_NAMESPACE

View File

@@ -36,11 +36,11 @@
#include <Symbols.h>
#include <SymbolVisitor.h>
#include <QIcon>
#include <QMetaType>
#include <QString>
#include <QSet>
#include <QHash>
#include <QtGui/QIcon>
#include <QtCore/QMetaType>
#include <QtCore/QString>
#include <QtCore/QSet>
#include <QtCore/QHash>
#include <functional>

View File

@@ -31,7 +31,8 @@
#define DESIGNERCONTEXT_H
#include <coreplugin/icontext.h>
#include <QList>
#include <QtCore/QList>
QT_BEGIN_NAMESPACE
class QWidget;

View File

@@ -32,12 +32,28 @@
#include <utils/qtcassert.h>
#include <utils/filesearch.h>
#include <QtCore/QPointer>
#include <QtGui/QTextBlock>
#include <QtGui/QPlainTextEdit>
#include <QtGui/QTextCursor>
using namespace Find;
namespace Find {
BaseTextFind::BaseTextFind(QTextEdit *editor)
struct BaseTextFindPrivate {
explicit BaseTextFindPrivate(QPlainTextEdit *editor);
explicit BaseTextFindPrivate(QTextEdit *editor);
QPointer<QTextEdit> m_editor;
QPointer<QPlainTextEdit> m_plaineditor;
QTextCursor m_findScopeStart;
QTextCursor m_findScopeEnd;
int m_findScopeVerticalBlockSelectionFirstColumn;
int m_findScopeVerticalBlockSelectionLastColumn;
int m_incrementalStartPos;
};
BaseTextFindPrivate::BaseTextFindPrivate(QTextEdit *editor)
: m_editor(editor)
, m_findScopeVerticalBlockSelectionFirstColumn(-1)
, m_findScopeVerticalBlockSelectionLastColumn(-1)
@@ -45,7 +61,7 @@ BaseTextFind::BaseTextFind(QTextEdit *editor)
{
}
BaseTextFind::BaseTextFind(QPlainTextEdit *editor)
BaseTextFindPrivate::BaseTextFindPrivate(QPlainTextEdit *editor)
: m_plaineditor(editor)
, m_findScopeVerticalBlockSelectionFirstColumn(-1)
, m_findScopeVerticalBlockSelectionLastColumn(-1)
@@ -53,29 +69,44 @@ BaseTextFind::BaseTextFind(QPlainTextEdit *editor)
{
}
BaseTextFind::BaseTextFind(QTextEdit *editor)
: d(new BaseTextFindPrivate(editor))
{
}
BaseTextFind::BaseTextFind(QPlainTextEdit *editor)
: d(new BaseTextFindPrivate(editor))
{
}
BaseTextFind::~BaseTextFind()
{
}
QTextCursor BaseTextFind::textCursor() const
{
QTC_ASSERT(m_editor || m_plaineditor, return QTextCursor());
return m_editor ? m_editor->textCursor() : m_plaineditor->textCursor();
QTC_ASSERT(d->m_editor || d->m_plaineditor, return QTextCursor());
return d->m_editor ? d->m_editor->textCursor() : d->m_plaineditor->textCursor();
}
void BaseTextFind::setTextCursor(const QTextCursor& cursor)
{
QTC_ASSERT(m_editor || m_plaineditor, return);
m_editor ? m_editor->setTextCursor(cursor) : m_plaineditor->setTextCursor(cursor);
QTC_ASSERT(d->m_editor || d->m_plaineditor, return);
d->m_editor ? d->m_editor->setTextCursor(cursor) : d->m_plaineditor->setTextCursor(cursor);
}
QTextDocument *BaseTextFind::document() const
{
QTC_ASSERT(m_editor || m_plaineditor, return 0);
return m_editor ? m_editor->document() : m_plaineditor->document();
QTC_ASSERT(d->m_editor || d->m_plaineditor, return 0);
return d->m_editor ? d->m_editor->document() : d->m_plaineditor->document();
}
bool BaseTextFind::isReadOnly() const
{
QTC_ASSERT(m_editor || m_plaineditor, return true);
return m_editor ? m_editor->isReadOnly() : m_plaineditor->isReadOnly();
QTC_ASSERT(d->m_editor || d->m_plaineditor, return true);
return d->m_editor ? d->m_editor->isReadOnly() : d->m_plaineditor->isReadOnly();
}
bool BaseTextFind::supportsReplace() const
@@ -91,7 +122,7 @@ Find::FindFlags BaseTextFind::supportedFindFlags() const
void BaseTextFind::resetIncrementalSearch()
{
m_incrementalStartPos = -1;
d->m_incrementalStartPos = -1;
}
void BaseTextFind::clearResults()
@@ -136,9 +167,9 @@ QString BaseTextFind::completedFindString() const
IFindSupport::Result BaseTextFind::findIncremental(const QString &txt, Find::FindFlags findFlags)
{
QTextCursor cursor = textCursor();
if (m_incrementalStartPos < 0)
m_incrementalStartPos = cursor.selectionStart();
cursor.setPosition(m_incrementalStartPos);
if (d->m_incrementalStartPos < 0)
d->m_incrementalStartPos = cursor.selectionStart();
cursor.setPosition(d->m_incrementalStartPos);
bool found = find(txt, findFlags, cursor);
if (found)
emit highlightAll(txt, findFlags);
@@ -151,7 +182,7 @@ IFindSupport::Result BaseTextFind::findStep(const QString &txt, Find::FindFlags
{
bool found = find(txt, findFlags, textCursor());
if (found)
m_incrementalStartPos = textCursor().selectionStart();
d->m_incrementalStartPos = textCursor().selectionStart();
return found ? Found : NotFound;
}
@@ -192,8 +223,8 @@ int BaseTextFind::replaceAll(const QString &before, const QString &after,
Find::FindFlags findFlags)
{
QTextCursor editCursor = textCursor();
if (!m_findScopeStart.isNull())
editCursor.setPosition(m_findScopeStart.position());
if (!d->m_findScopeStart.isNull())
editCursor.setPosition(d->m_findScopeStart.position());
else
editCursor.movePosition(QTextCursor::Start);
editCursor.beginEditBlock();
@@ -230,14 +261,14 @@ bool BaseTextFind::find(const QString &txt,
regexp.setCaseSensitivity((findFlags&Find::FindCaseSensitively) ? Qt::CaseSensitive : Qt::CaseInsensitive);
QTextCursor found = findOne(regexp, start, Find::textDocumentFlagsForFindFlags(findFlags));
if (!m_findScopeStart.isNull()) {
if (!d->m_findScopeStart.isNull()) {
// scoped
if (found.isNull() || !inScope(found.selectionStart(), found.selectionEnd())) {
if ((findFlags&Find::FindBackward) == 0)
start.setPosition(m_findScopeStart.position());
start.setPosition(d->m_findScopeStart.position());
else
start.setPosition(m_findScopeEnd.position());
start.setPosition(d->m_findScopeEnd.position());
found = findOne(regexp, start, Find::textDocumentFlagsForFindFlags(findFlags));
if (found.isNull() || !inScope(found.selectionStart(), found.selectionEnd()))
return false;
@@ -270,13 +301,13 @@ QTextCursor BaseTextFind::findOne(const QRegExp &expr, const QTextCursor &from,
if (candidate.isNull())
return candidate;
if (m_findScopeVerticalBlockSelectionFirstColumn < 0)
if (d->m_findScopeVerticalBlockSelectionFirstColumn < 0)
return candidate;
forever {
if (!inScope(candidate.selectionStart(), candidate.selectionEnd()))
return candidate;
bool inVerticalFindScope = false;
QMetaObject::invokeMethod(m_plaineditor, "inFindScope", Qt::DirectConnection,
QMetaObject::invokeMethod(d->m_plaineditor, "inFindScope", Qt::DirectConnection,
Q_RETURN_ARG(bool, inVerticalFindScope),
Q_ARG(QTextCursor, candidate));
if (inVerticalFindScope)
@@ -288,32 +319,32 @@ QTextCursor BaseTextFind::findOne(const QRegExp &expr, const QTextCursor &from,
bool BaseTextFind::inScope(int startPosition, int endPosition) const
{
if (m_findScopeStart.isNull())
if (d->m_findScopeStart.isNull())
return true;
return (m_findScopeStart.position() <= startPosition
&& m_findScopeEnd.position() >= endPosition);
return (d->m_findScopeStart.position() <= startPosition
&& d->m_findScopeEnd.position() >= endPosition);
}
void BaseTextFind::defineFindScope()
{
QTextCursor cursor = textCursor();
if (cursor.hasSelection() && cursor.block() != cursor.document()->findBlock(cursor.anchor())) {
m_findScopeStart = QTextCursor(document()->docHandle(), qMax(0, cursor.selectionStart()-1));
m_findScopeEnd = QTextCursor(document()->docHandle(), cursor.selectionEnd());
m_findScopeVerticalBlockSelectionFirstColumn = -1;
m_findScopeVerticalBlockSelectionLastColumn = -1;
d->m_findScopeStart = QTextCursor(document()->docHandle(), qMax(0, cursor.selectionStart()-1));
d->m_findScopeEnd = QTextCursor(document()->docHandle(), cursor.selectionEnd());
d->m_findScopeVerticalBlockSelectionFirstColumn = -1;
d->m_findScopeVerticalBlockSelectionLastColumn = -1;
if (m_plaineditor && m_plaineditor->metaObject()->indexOfProperty("verticalBlockSelectionFirstColumn") >= 0) {
m_findScopeVerticalBlockSelectionFirstColumn
= m_plaineditor->property("verticalBlockSelectionFirstColumn").toInt();
m_findScopeVerticalBlockSelectionLastColumn
= m_plaineditor->property("verticalBlockSelectionLastColumn").toInt();
if (d->m_plaineditor && d->m_plaineditor->metaObject()->indexOfProperty("verticalBlockSelectionFirstColumn") >= 0) {
d->m_findScopeVerticalBlockSelectionFirstColumn
= d->m_plaineditor->property("verticalBlockSelectionFirstColumn").toInt();
d->m_findScopeVerticalBlockSelectionLastColumn
= d->m_plaineditor->property("verticalBlockSelectionLastColumn").toInt();
}
emit findScopeChanged(m_findScopeStart, m_findScopeEnd,
m_findScopeVerticalBlockSelectionFirstColumn,
m_findScopeVerticalBlockSelectionLastColumn);
cursor.setPosition(m_findScopeStart.position()+1);
emit findScopeChanged(d->m_findScopeStart, d->m_findScopeEnd,
d->m_findScopeVerticalBlockSelectionFirstColumn,
d->m_findScopeVerticalBlockSelectionLastColumn);
cursor.setPosition(d->m_findScopeStart.position()+1);
setTextCursor(cursor);
} else {
clearFindScope();
@@ -322,11 +353,13 @@ void BaseTextFind::defineFindScope()
void BaseTextFind::clearFindScope()
{
m_findScopeStart = QTextCursor();
m_findScopeEnd = QTextCursor();
m_findScopeVerticalBlockSelectionFirstColumn = -1;
m_findScopeVerticalBlockSelectionLastColumn = -1;
emit findScopeChanged(m_findScopeStart, m_findScopeEnd,
m_findScopeVerticalBlockSelectionFirstColumn,
m_findScopeVerticalBlockSelectionLastColumn);
d->m_findScopeStart = QTextCursor();
d->m_findScopeEnd = QTextCursor();
d->m_findScopeVerticalBlockSelectionFirstColumn = -1;
d->m_findScopeVerticalBlockSelectionLastColumn = -1;
emit findScopeChanged(d->m_findScopeStart, d->m_findScopeEnd,
d->m_findScopeVerticalBlockSelectionFirstColumn,
d->m_findScopeVerticalBlockSelectionLastColumn);
}
} // namespace Find

View File

@@ -33,23 +33,25 @@
#include "find_global.h"
#include "ifindsupport.h"
#include <QtCore/QPointer>
#include <QtGui/QTextCursor>
#include <QtCore/QScopedPointer>
QT_BEGIN_NAMESPACE
class QPlainTextEdit;
class QTextEdit;
class QTextCursor;
QT_END_NAMESPACE
namespace Find {
struct BaseTextFindPrivate;
class FIND_EXPORT BaseTextFind : public Find::IFindSupport
{
Q_OBJECT
public:
BaseTextFind(QPlainTextEdit *editor);
BaseTextFind(QTextEdit *editor);
explicit BaseTextFind(QPlainTextEdit *editor);
explicit BaseTextFind(QTextEdit *editor);
virtual ~BaseTextFind();
bool supportsReplace() const;
Find::FindFlags supportedFindFlags() const;
@@ -87,15 +89,10 @@ private:
void setTextCursor(const QTextCursor&);
QTextDocument *document() const;
bool isReadOnly() const;
QPointer<QTextEdit> m_editor;
QPointer<QPlainTextEdit> m_plaineditor;
QTextCursor m_findScopeStart;
QTextCursor m_findScopeEnd;
int m_findScopeVerticalBlockSelectionFirstColumn;
int m_findScopeVerticalBlockSelectionLastColumn;
bool inScope(int startPosition, int endPosition) const;
QTextCursor findOne(const QRegExp &expr, const QTextCursor &from, QTextDocument::FindFlags options) const;
int m_incrementalStartPos;
QScopedPointer<BaseTextFindPrivate> d;
};
} // namespace Find

View File

@@ -41,8 +41,8 @@
#include <projectexplorer/toolchain.h>
#include <projectexplorer/buildconfiguration.h>
#include <coreplugin/ifile.h>
#include <QFuture>
#include <QtGui/QLineEdit>
#include <QtCore/QFuture>
namespace Utils {
class PathChooser;

View File

@@ -32,8 +32,8 @@
#include <projectexplorer/projectnodes.h>
#include <QStringList>
#include <QHash>
#include <QtCore/QStringList>
#include <QtCore/QHash>
namespace Core {
class IFile;

View File

@@ -30,8 +30,8 @@
#ifndef PKGCONFIGTOOL_H
#define PKGCONFIGTOOL_H
#include <QObject>
#include <QStringList>
#include <QtCore/QObject>
#include <QtCore/QStringList>
namespace GenericProjectManager {
namespace Internal {

View File

@@ -3,8 +3,6 @@
#include "targetselector.h"
#include <QWidget>
QT_BEGIN_NAMESPACE
class QMenu;
QT_END_NAMESPACE

View File

@@ -133,7 +133,7 @@ bool QmlStateNodeInstance::updateStateBinding(const NodeInstance &target, const
return stateObject()->changeValueInRevertList(target.internalObject(), propertyName.toLatin1(), expression);
}
bool QmlStateNodeInstance::resetStateProperty(const NodeInstance &target, const QString &propertyName, const QVariant &resetValue)
bool QmlStateNodeInstance::resetStateProperty(const NodeInstance &target, const QString &propertyName, const QVariant & /* resetValue */)
{
return stateObject()->removeEntryFromRevertList(target.internalObject(), propertyName.toLatin1());
}

View File

@@ -34,7 +34,7 @@
#include <projectexplorer/abstractprocessstep.h>
#include <QStringList>
#include <QtCore/QStringList>
namespace ProjectExplorer {
class BuildStep;

View File

@@ -34,7 +34,7 @@
#ifndef MAEMOCONSTANTS_H
#define MAEMOCONSTANTS_H
#include <QLatin1String>
#include <QtCore/QLatin1String>
namespace Qt4ProjectManager {
namespace Internal {

View File

@@ -2,9 +2,9 @@
#define REFACTOROVERLAY_H
#include "basetexteditor.h"
#include <QTextCursor>
#include <QObject>
#include <QIcon>
#include <QtGui/QTextCursor>
#include <QtGui/QIcon>
namespace TextEditor {
namespace Internal {

View File

@@ -181,6 +181,11 @@ QToolButton *WelcomeMode::addPageToolButton(Utils::IWelcomePage *plugin, int pos
return btn;
}
QString WelcomeMode::contextHelpId() const
{
return QLatin1String("Qt Creator Manual");
}
void WelcomeMode::initPlugins()
{
m_d->buttonLayout = new QHBoxLayout(m_d->ui.navFrame);

View File

@@ -63,7 +63,7 @@ public:
QString type() const;
Core::Context context() const;
void activated();
QString contextHelpId() const { return QLatin1String("Qt Creator Manual"); }
QString contextHelpId() const;
void initPlugins();
private slots:

View File

@@ -269,6 +269,18 @@ WelcomeModeLabel_CW::WelcomeModeLabel_CW(QObject *parent) :
{
}
CrumblePath_CW::CrumblePath_CW(QObject *parent) :
QObject(parent),
CustomWidget<Utils::CrumblePath>
(QLatin1String("<utils/crumblepath.h>"),
false,
QLatin1String(groupC),
QIcon(),
QLatin1String("Crumble Path"))
{
};
DetailsWidget_CW::DetailsWidget_CW(QObject *parent) :
QObject(parent),
CustomWidget<Utils::DetailsWidget>
@@ -397,6 +409,7 @@ WidgetCollection::WidgetCollection(QObject *parent) :
m_plugins.push_back(new Wizard_CW(this));
m_plugins.push_back(new WelcomePageWidget_CW(this));
m_plugins.push_back(new WelcomeModeLabel_CW(this));
m_plugins.push_back(new CrumblePath_CW(this));
}
QList<QDesignerCustomWidgetInterface*> WidgetCollection::customWidgets() const

View File

@@ -48,6 +48,7 @@
#include <utils/styledbar.h>
#include <utils/wizard.h>
#include <utils/welcomemodetreewidget.h>
#include <utils/crumblepath.h>
#include <QtDesigner/QDesignerCustomWidgetCollectionInterface>
#include <QtDesigner/QDesignerContainerExtension>
@@ -255,6 +256,15 @@ public:
explicit WelcomeModeLabel_CW(QObject *parent = 0);
};
class CrumblePath_CW :
public QObject,
public CustomWidget<Utils::CrumblePath>
{
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
explicit CrumblePath_CW(QObject *parent = 0);
};
// Details Widget: plugin + simple, hacky container extension that
// accepts only one page.