File indexing completed on 2024-04-14 15:52:43

0001 /*
0002     This file is part of the Okteta Core library, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2007, 2009 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #ifndef OKTETA_BOOKMARKABLE_HPP
0010 #define OKTETA_BOOKMARKABLE_HPP
0011 
0012 // Qt
0013 #include <QtPlugin>
0014 
0015 template <class T> class QVector;
0016 
0017 namespace Okteta {
0018 
0019 class BookmarksConstIterator;
0020 class Bookmark;
0021 // interface to a list of bookmarks, sorted by the offset
0022 //
0023 class Bookmarkable
0024 {
0025 public:
0026     virtual ~Bookmarkable();
0027 
0028 public: // set/action
0029     virtual void addBookmarks(const QVector<Okteta::Bookmark>& bookmarks) = 0;
0030     virtual void removeBookmarks(const QVector<Okteta::Bookmark>& bookmarks) = 0;
0031     virtual void removeAllBookmarks() = 0;
0032     virtual void setBookmark(unsigned int index, const Okteta::Bookmark& bookmark) = 0;
0033 
0034 public: // get
0035     virtual Okteta::BookmarksConstIterator createBookmarksConstIterator() const = 0;
0036 //     virtual BookmarksMutableIterator createBookmarksMutableIterator() const = 0;
0037     virtual const Okteta::Bookmark& bookmarkAt(unsigned int index) const = 0;
0038     virtual const Okteta::Bookmark& bookmarkFor(int offset) const = 0;
0039     virtual bool containsBookmarkFor(int offset) const = 0;
0040     virtual unsigned int bookmarksCount() const = 0;
0041 
0042 public: // signal
0043     // TODO: use also QVector<int> for added?
0044     virtual void bookmarksAdded(const QVector<Okteta::Bookmark>& bookmarks) = 0;
0045     virtual void bookmarksRemoved(const QVector<Okteta::Bookmark>& bookmarks) = 0;
0046     virtual void bookmarksModified(const QVector<int>& indizes) = 0;
0047     virtual void bookmarksModified(bool modified) = 0;
0048 };
0049 
0050 inline Bookmarkable::~Bookmarkable() = default;
0051 
0052 }
0053 
0054 Q_DECLARE_INTERFACE(Okteta::Bookmarkable, "org.kde.okteta.bookmarkable/1.0")
0055 
0056 #endif