#ifndef LIBRARY_H
#define LIBRARY_H
-#include <QObject>
+#include <QAbstractListModel>
+#include <QVariant>
#include <QString>
#include <QList>
-#include "book.h"
+class QObject;
+class QModelIndex;
+class Book;
/** Library of books. */
-class Library: public QObject
+class Library: public QAbstractListModel
{
Q_OBJECT
public:
static Library *instance();
static void close();
+ int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ QVariant data(const QModelIndex &index, int role) const;
void save();
- int find(QString path) const;
- int find(const Book *book) const;
- Book *at(int index) const;
- int size() const;
- Book *current() const;
+ QModelIndex find(QString path) const;
+ QModelIndex find(const Book *book) const;
bool add(QString path);
- void remove(int index);
- void setCurrent(int index);
+ void remove(const QModelIndex &index);
+ void setNowReading(const QModelIndex &index);
+ QModelIndex nowReading() const;
+ Book *book(const QModelIndex &index);
signals:
- void bookAdded();
- void bookRemoved(int index);
- void currentBookChanged();
+ void nowReadingChanged();
+
+public slots:
+ void onBookOpened(const QString &path);
private:
- Library();
+ explicit Library(QObject *parent = 0);
~Library();
void load();
void clear();
static Library *mInstance;
QList<Book *> mBooks;
- Book *mCurrent;
+ QModelIndex mNowReading;
};
#endif // LIBRARY_H