texteditor: simplify basetextmark architecture

ITextMark is not abstract anymore and has an icon and a priority.
This means separate breakpoint and location marker classes that
are only "plain" marks with icons and priorities are not needed.

BaseTextMark directly inherits from ITextMark, instead of owning
an ITextMark derived InternalMark.

Also, there is now ITextMark::paint() to make it a bit more flexible
then icon()[->paint()]
This commit is contained in:
hjk
2011-03-21 17:15:02 +01:00
parent e73f43c759
commit a18d0572bd
12 changed files with 114 additions and 223 deletions

View File

@@ -41,13 +41,15 @@
#include <QtCore/QObject>
#include <QtCore/QList>
#include <QtCore/QMap>
#include <QtGui/QIcon>
QT_BEGIN_NAMESPACE
class QMenu;
class QTextBlock;
class QIcon;
class QRect;
class QMenu;
class QPainter;
class QPoint;
class QRect;
class QTextBlock;
QT_END_NAMESPACE
namespace TextEditor {
@@ -61,13 +63,6 @@ public:
ITextMark(QObject *parent = 0) : QObject(parent) {}
virtual ~ITextMark() {}
virtual QIcon icon() const = 0;
virtual void updateLineNumber(int lineNumber) = 0;
virtual void updateBlock(const QTextBlock &block) = 0;
virtual void removedFromEditor() = 0;
virtual void documentClosing() = 0;
// determine order on markers on the same line.
enum Priority
{
@@ -76,7 +71,18 @@ public:
HighPriority // shown on top.
};
virtual Priority priority() const = 0;
virtual void paint(QPainter *painter, const QRect &rect) const;
virtual void updateLineNumber(int lineNumber);
virtual void updateBlock(const QTextBlock &block);
virtual void removedFromEditor();
virtual void documentClosing();
virtual void setIcon(const QIcon &icon);
virtual Priority priority() const;
virtual void setPriority(Priority prioriy);
private:
QIcon m_icon;
Priority m_priority;
};
typedef QList<ITextMark *> TextMarks;