Library *Library::mInstance = 0;
-Library::Library(QObject *parent): QAbstractListModel(parent), mNowReading(0)
+Library::Library(QObject *parent): QAbstractListModel(parent)
{
load();
}
Book *Library::book(const QModelIndex &index)
{
- if (index.isValid() &&
- (index.row() >= 0) &&
- (index.row() < mBooks.size())) {
- return mBooks[index.row()];
- } else {
- return 0;
+ if (index.isValid()) {
+ if ((index.row() >= 0) && (index.row() < mBooks.size())) {
+ qDebug() << "Library::book:" << index.row() << "is"
+ << mBooks[index.row()]->name();
+ return mBooks[index.row()];
+ } else {
+ qWarning() << "*** Library::book: Bad index" << index.row();
+ }
}
+ return 0;
}
void Library::close()
mBooks.append(book);
}
QString currentPath = settings.value("lib/nowreading").toString();
- QModelIndex index = find(currentPath);
- if (index.isValid()) {
- mNowReading = mBooks[index.row()];
- qDebug() << "Library::load: Now reading" << mNowReading->path();
- }
+ mNowReading = find(currentPath);
}
void Library::save()
QString key = "lib/book" + QString::number(i);
settings.setValue(key, mBooks[i]->path());
}
+ Book *currentBook = book(mNowReading);
settings.setValue("lib/nowreading",
- mNowReading? mNowReading->path(): QString());
+ currentBook? currentBook->path(): QString());
}
bool Library::add(QString path)
mBooks.removeAt(row);
save();
endRemoveRows();
- if (toRemove == mNowReading) {
- mNowReading = 0;
+ if (index == mNowReading) {
+ mNowReading = QModelIndex();
emit nowReadingChanged();
}
delete toRemove;
QModelIndex Library::nowReading() const
{
- return find(mNowReading);
+ qDebug() << "Library::nowReading" << mNowReading.row();
+ return mNowReading;
}
-void Library::setNowReading(const QModelIndex index)
+void Library::setNowReading(const QModelIndex &index)
{
- mNowReading = book(index);
+ mNowReading = index;
save();
emit nowReadingChanged();
}
delete mBooks[i];
}
mBooks.clear();
- mNowReading = 0;
+ mNowReading = QModelIndex();
}
QModelIndex Library::find(QString path) const
QModelIndex Library::find(const Book *book) const
{
- for (int i = 0; i < mBooks.size(); i++) {
- if (book == mBooks[i]) {
- return index(i);
+ if (book) {
+ for (int i = 0; i < mBooks.size(); i++) {
+ if (book == mBooks[i]) {
+ return index(i);
+ }
}
}
return QModelIndex();
QModelIndex find(const Book *book) const;
bool add(QString path);
void remove(const QModelIndex &index);
- void setNowReading(const QModelIndex index);
+ void setNowReading(const QModelIndex &index);
QModelIndex nowReading() const;
Book *book(const QModelIndex &index);
void clear();
static Library *mInstance;
QList<Book *> mBooks;
- Book *mNowReading;
+ QModelIndex mNowReading;
};
#endif // LIBRARY_H
setSizeGripEnabled(true);
#endif
-#if 0 // FIXME
- Book *current = library->current();
- if (library->size() && current) {
- list->setItemSelected(list->item(library->find(current)), true);
- }
-#endif
+ Library *library = Library::instance();
+ QModelIndex current = library->nowReading();
+ list->setCurrentIndex(current);
QHBoxLayout *horizontalLayout = new QHBoxLayout(this);
horizontalLayout->addWidget(list);
void MainWindow::setCurrentBook(const QModelIndex ¤t)
{
mCurrent = current;
- if (current.isValid()) {
- Book *book = Library::instance()->book(current);
- view->setBook(book);
- setWindowTitle(book->name());
- } else {
- view->setBook(0);
- setWindowTitle("Dorian");
- }
+ Book *book = Library::instance()->book(current);
+ view->setBook(book);
+ setWindowTitle(book? book->name(): tr("Dorian"));
}
QAction *MainWindow::addToolBarAction(const QObject *receiver,