QFileInfo info(Platform::dbPath());
if (!info.exists()) {
QDir dbDir;
- dbDir.mkpath(info.absolutePath());
+ if (!dbDir.mkpath(info.absolutePath())) {
+ qCritical() << "Could not create" << info.absolutePath();
+ }
shouldCreate = true;
}
db = QSqlDatabase::addDatabase("QSQLITE");
- db.setDatabaseName(Platform::dbPath());
+ db.setDatabaseName(QDir::toNativeSeparators(Platform::dbPath()));
if (!db.open()) {
- qCritical() << "Could not open" << Platform::dbPath();
+ qCritical() << "Could not open" << Platform::dbPath() << ": Error"
+ << db.lastError().text();
}
if (shouldCreate) {
create();
{
Trace t("BookDb::create");
QSqlQuery query;
- if (!query.exec("create table book (name text primary key, content blob)")) {
- qCritical() << "Failed to create database";
+ if (!query.exec("create table book "
+ "(name text primary key, content blob)")) {
+ qCritical() << "Failed to create database:"
+ << query.lastError().text();
}
}
query.bindValue(0, book);
query.setForwardOnly(true);
if (!query.exec()) {
- qCritical() << "Query failed";
+ qCritical() << "Query failed:" << query.lastError().text();
return ret;
}
while (query.next()) {
query.bindValue(0, book);
query.bindValue(1, bytes);
if (!query.exec()) {
- qCritical() << "Query failed";
+ qCritical() << "Query failed:" << query.lastError().text();
}
}
QSqlQuery query("select name from book");
query.setForwardOnly(true);
if (!query.exec()) {
- qCritical() << "Query failed";
+ qCritical() << "Query failed:" << query.lastError().text();
return ret;
}
while (query.next()) {
* Fix sorting of library
* Fix book view kinetic scrolling on Symbian
+ * Failed attempt to add kinetic scrolling to lists on Symbian
+ * Fix database creation on Symbian
-- Akos Polster <akos@pipacs.com> Sat, 10 Oct 2010 02:00:00 +0200
public:
explicit ListView(QWidget *parent = 0): QListView(parent) {
+#ifndef Q_OS_SYMBIAN
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+#endif
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setUniformItemSizes(true);
setEditTriggers(QAbstractItemView::NoEditTriggers);
#include "listview.h"
#include "platform.h"
+#ifdef Q_OS_SYMBIAN
+#include "flickcharm.h"
+#endif
+
ListWindow::ListWindow(QWidget *parent): QMainWindow(parent), list(0)
{
-#ifdef Q_WS_MAEMO_5
+#if defined(Q_WS_MAEMO_5)
setAttribute(Qt::WA_Maemo5StackedWindow, true);
popup = new QMenu(this);
setCentralWidget(frame);
contentLayout = new QHBoxLayout();
frame->setLayout(contentLayout);
-# ifdef Q_OS_SYMBIAN
+ buttonBox = new QDialogButtonBox(Qt::Vertical, this);
+ contentLayout->addWidget(buttonBox);
+#endif // Q_WS_MAEMO_5
+
+#ifdef Q_OS_SYMBIAN
+ charm = 0;
QAction *closeAction = new QAction(parent? tr("Back"): tr("Exit"), this);
closeAction->setSoftKeyRole(QAction::NegativeSoftKey);
connect(closeAction, SIGNAL(triggered()), this, SLOT(close()));
QMainWindow::addAction(closeAction);
-# else
- buttonBox = new QDialogButtonBox(Qt::Vertical, this);
- contentLayout->addWidget(buttonBox);
-# endif // Q_OS_SYMBIAN
-#endif // Q_WS_MAEMO_5
+#endif // Q_OS_SYMBIAN
#ifdef Q_WS_MAC
addAction(tr("Close"), this, SLOT(close()), QString(),
{
Trace t("ListWindow::addList");
list = listView;
-#ifdef Q_WS_MAEMO_5
+#if defined(Q_WS_MAEMO_5)
list->installEventFilter(this);
list->setMinimumHeight(list->contentsHeight());
contentLayout->addWidget(list);
this, SLOT(onModelChanged()));
#else
contentLayout->insertWidget(0, list);
-#endif
+#endif // Q_WS_MAEMO5
+
+#ifdef Q_OS_SYMBIAN
+ if (!charm) {
+ charm = new FlickCharm(this);
+ }
+ charm->activateOn(list);
+#endif // Q_OS_SYMBIAN
+
connect(list->selectionModel(),
SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
this,
class QItemSelection;
class QEvent;
class ListView;
+class FlickCharm;
/** A window with a list and menu actions (Maemo) or buttons (non-Maemo). */
class ListWindow: public QMainWindow
QDialogButtonBox *buttonBox;
QList<QPushButton *> itemButtons;
#endif // Q_WS_MAEMO_5
+#ifdef Q_OS_SYMBIAN
+ FlickCharm *charm;
+#endif
QBoxLayout *contentLayout;
ListView *list;
};