98 lines
1.4 KiB
C++
98 lines
1.4 KiB
C++
/**
|
|
* Copyright 2014 (c) Anna Schumaker.
|
|
*/
|
|
#include <core/tags/library.h>
|
|
|
|
|
|
static database<Library> library_db("library.db", true);
|
|
|
|
|
|
Library :: Library()
|
|
: _size(0), _enabled(false)
|
|
{
|
|
}
|
|
|
|
Library :: Library(const std::string &path)
|
|
: _size(0), _path(path), _enabled(true)
|
|
{
|
|
}
|
|
|
|
const std::string Library :: primary_key() const
|
|
{
|
|
return _path;
|
|
}
|
|
|
|
void Library :: read(file &file)
|
|
{
|
|
int enabled;
|
|
gchar *path;
|
|
|
|
file_readf(&file, "%d\n", &enabled);
|
|
_enabled = enabled;
|
|
|
|
path = file_readl(&file);
|
|
_path = path;
|
|
g_free(path);
|
|
}
|
|
|
|
void Library :: write(file &file)
|
|
{
|
|
file_writef(&file, "%d %s", _enabled, _path.c_str());
|
|
}
|
|
|
|
const bool Library :: enabled()
|
|
{
|
|
return _enabled;
|
|
}
|
|
|
|
void Library :: set_enabled(bool enabled)
|
|
{
|
|
_enabled = enabled;
|
|
db_save(&library_db);
|
|
}
|
|
|
|
const unsigned int Library :: size()
|
|
{
|
|
return _size;
|
|
}
|
|
|
|
void Library :: inc_size()
|
|
{
|
|
_size++;
|
|
}
|
|
|
|
void Library :: dec_size()
|
|
{
|
|
_size--;
|
|
}
|
|
|
|
|
|
void tags :: init_library_db()
|
|
{
|
|
db_load(&library_db);
|
|
}
|
|
|
|
Library *tags :: get_library(const std::string &path)
|
|
{
|
|
Library *ret = library_db.find(path);
|
|
if (ret)
|
|
return ret;
|
|
return db_insert(&library_db, new Library(path));
|
|
}
|
|
|
|
Library *tags :: get_library(const unsigned int index)
|
|
{
|
|
return library_db.at(index);
|
|
}
|
|
|
|
void tags :: remove_library(Library *library)
|
|
{
|
|
if (library)
|
|
db_remove(&library_db, library);
|
|
}
|
|
|
|
unsigned int tags :: library_size()
|
|
{
|
|
return db_actual_size(&library_db);
|
|
}
|