Initial release.
[dorian] / bookmarkinfodialog.cpp
index 83b6568..18c16f7 100644 (file)
@@ -4,26 +4,31 @@
 #include "book.h"
 
 BookmarkInfoDialog::BookmarkInfoDialog(Book *b, int i, QWidget *parent):
-    Dialog(parent),
+    Dyalog(parent, true),
     book(b),
     index(i)
 {
-    setWindowTitle(tr("Bookmark Details"));
+    setWindowTitle(tr("Bookmark details"));
 
     Book::Bookmark bookmark = book->bookmarks()[index];
-    QString contentId = book->toc[bookmark.chapter];
-    QString contentTitle = book->content[contentId].name;
-    QLabel *info = new QLabel(contentTitle + "\nAt " +
-        QString::number((int)(bookmark.pos*100)) + "%", this);
+    QString label("At ");
+    label += QString::number((int)(100 * book->
+        getProgress(bookmark.part, bookmark.pos))) + "%";
+    if (!bookmark.note.isEmpty()) {
+        label += ": " + bookmark.note;
+    }
+    label += "\n";
+    int chapterIndex = book->chapterFromPart(bookmark.part);
+    if (chapterIndex != -1) {
+        QString chapterId = book->chapters[chapterIndex];
+        label += "In\"" + book->content[chapterId].name + "\"";
+    }
+    QLabel *info = new QLabel(label, this);
     addWidget(info);
     addStretch();
-
-    QPushButton *read = new QPushButton(tr("Go to"), this);
-    QPushButton *remove = new QPushButton(tr("Delete"), this);
-    connect(read, SIGNAL(clicked()), this, SLOT(onRead()));
-    connect(remove, SIGNAL(clicked()), this, SLOT(onRemove()));
-    addButton(read, QDialogButtonBox::ActionRole);
-    addButton(remove, QDialogButtonBox::ActionRole);
+    addButton(tr("Go to"), this, SLOT(onRead()), QDialogButtonBox::ActionRole);
+    addButton(tr("Delete"), this, SLOT(onRemove()),
+              QDialogButtonBox::DestructiveRole);
 }
 
 void BookmarkInfoDialog::onRead()
@@ -33,5 +38,10 @@ void BookmarkInfoDialog::onRead()
 
 void BookmarkInfoDialog::onRemove()
 {
-    done(Delete);
+    if (QMessageBox::Yes ==
+        QMessageBox::question(this, tr("Delete bookmark"),
+                              tr("Delete bookmark?"),
+                              QMessageBox::Yes | QMessageBox::No)) {
+        done(Delete);
+    }
 }