Added functions to create virtual entries on the database.

Disabled sqlite setting in config dialog.
This commit is contained in:
codestation
2014-03-22 13:58:39 -04:30
parent ae8657325a
commit 6ed8dd749e
5 changed files with 83 additions and 3 deletions

View File

@@ -37,7 +37,7 @@ void Database::process()
cancel_operation = false; cancel_operation = false;
int count = create(); int count = create();
cancel_operation = false; cancel_operation = false;
qDebug("Added %i entries to the database", count); qDebug("Total entries added to the database: %i", count);
if(count < 0) { if(count < 0) {
clear(); clear();
} }

View File

@@ -283,6 +283,9 @@
</item> </item>
<item row="0" column="1"> <item row="0" column="1">
<widget class="QComboBox" name="databaseSelect"> <widget class="QComboBox" name="databaseSelect">
<property name="enabled">
<bool>false</bool>
</property>
<item> <item>
<property name="text"> <property name="text">
<string>In Memory</string> <string>In Memory</string>

View File

@@ -135,7 +135,7 @@ int QListDB::create()
return -1; return -1;
} }
qDebug("Added %i objects for OHFI %#02X", dir_count, ohfi_array[i]); qDebug("Added objects for OHFI 0x%02X: %i", ohfi_array[i], dir_count);
total_objects += dir_count; total_objects += dir_count;
object_list[ohfi_array[i]] = list; object_list[ohfi_array[i]] = list;

View File

@@ -78,7 +78,6 @@ static const char create_apps[] = "CREATE TABLE IF NOT EXISTS application ("
static const char create_virtual[] = "CREATE TABLE IF NOT EXISTS virtual_nodes (" static const char create_virtual[] = "CREATE TABLE IF NOT EXISTS virtual_nodes ("
"object_id INTEGER PRIMARY KEY REFERENCES object_node(object_id) ON DELETE CASCADE," "object_id INTEGER PRIMARY KEY REFERENCES object_node(object_id) ON DELETE CASCADE,"
"title TEXT NOT NULL CHECK (LENGTH(title) > 0),"
"app_type INTEGER)"; "app_type INTEGER)";
static const char create_photos[] = "CREATE TABLE IF NOT EXISTS photos (" static const char create_photos[] = "CREATE TABLE IF NOT EXISTS photos ("
@@ -265,6 +264,12 @@ int SQLiteDB::create()
int total_objects = 0; int total_objects = 0;
db.transaction(); db.transaction();
if(!insertVirtualEntries()) {
db.rollback();
return -1;
}
for(int i = 0, max = sizeof(ohfi_array) / sizeof(int); i < max; i++) { for(int i = 0, max = sizeof(ohfi_array) / sizeof(int); i < max; i++) {
QString base_path = getBasePath(ohfi_array[i]); QString base_path = getBasePath(ohfi_array[i]);
int dir_count = recursiveScanRootDirectory(base_path, NULL, ohfi_array[i], ohfi_array[i]); int dir_count = recursiveScanRootDirectory(base_path, NULL, ohfi_array[i], ohfi_array[i]);
@@ -1223,3 +1228,73 @@ int SQLiteDB::getRootItems(int root_ohfi, metadata_t **metadata)
return count; return count;
} }
bool SQLiteDB::insertVirtualEntry(int ohfi)
{
QSqlQuery query;
query.prepare("REPLACE INTO virtual_nodes (object_id)"
"VALUES (:object_id)");
query.bindValue(0, ohfi);
bool ret = query.exec();
if(!ret) {
qDebug() << query.lastError();
}
return ret;
}
bool SQLiteDB::insertVirtualEntries()
{
int ohfi;
if((ohfi = insertNodeEntry("Folders", VITA_DIR_TYPE_MASK_REGULAR, Video)) > 0)
insertVirtualEntry(ohfi);
else
return false;
if((ohfi = insertNodeEntry("All", VITA_DIR_TYPE_MASK_ALL, Video)) > 0)
insertVirtualEntry(ohfi);
else
return false;
if((ohfi = insertNodeEntry("Folders", VITA_DIR_TYPE_MASK_REGULAR, Photo)) > 0)
insertVirtualEntry(ohfi);
else
return false;
if((ohfi = insertNodeEntry("Month", VITA_DIR_TYPE_MASK_MONTH, Photo)) > 0)
insertVirtualEntry(ohfi);
else
return false;
if((ohfi = insertNodeEntry("All", VITA_DIR_TYPE_MASK_ALL, Photo)) > 0)
insertVirtualEntry(ohfi);
else
return false;
if((ohfi = insertNodeEntry("Artists", VITA_DIR_TYPE_MASK_ARTISTS, Music)) > 0)
insertVirtualEntry(ohfi);
else
return false;
if((ohfi = insertNodeEntry("Albums", VITA_DIR_TYPE_MASK_ALBUMS, Music)) > 0)
insertVirtualEntry(ohfi);
else
return false;
if((ohfi = insertNodeEntry("Songs", VITA_DIR_TYPE_MASK_SONGS, Music)) > 0)
insertVirtualEntry(ohfi);
else
return false;
if((ohfi = insertNodeEntry("Genres", VITA_DIR_TYPE_MASK_GENRES, Music)) > 0)
insertVirtualEntry(ohfi);
else
return false;
if((ohfi = insertNodeEntry("Playlists", VITA_DIR_TYPE_MASK_PLAYLISTS, Music)) > 0)
insertVirtualEntry(ohfi);
else
return false;
return true;
}

View File

@@ -88,6 +88,8 @@ private:
qint64 getChildenTotalSize(int ohfi); qint64 getChildenTotalSize(int ohfi);
bool updateObjectPath(int ohfi, const QString &name); bool updateObjectPath(int ohfi, const QString &name);
int getRootItems(int root_ohfi, metadata_t **metadata); int getRootItems(int root_ohfi, metadata_t **metadata);
bool insertVirtualEntries();
bool insertVirtualEntry(int ohfi);
QTimer *timer; QTimer *timer;
QThread *thread; QThread *thread;