int dt_film_open(const int32_t id) { sqlite3_stmt *stmt; DT_DEBUG_SQLITE3_PREPARE_V2(dt_database_get(darktable.db), "SELECT id, folder FROM main.film_rolls WHERE id = ?1", -1, &stmt, NULL); DT_DEBUG_SQLITE3_BIND_INT(stmt, 1, id); if(sqlite3_step(stmt) == SQLITE_ROW) { sqlite3_finalize(stmt); char datetime[20]; dt_gettime(datetime, sizeof(datetime)); DT_DEBUG_SQLITE3_PREPARE_V2(dt_database_get(darktable.db), "UPDATE main.film_rolls SET datetime_accessed = ?1 WHERE id = ?2", -1, &stmt, NULL); DT_DEBUG_SQLITE3_BIND_TEXT(stmt, 1, datetime, -1, SQLITE_STATIC); DT_DEBUG_SQLITE3_BIND_INT(stmt, 2, id); sqlite3_step(stmt); } sqlite3_finalize(stmt); // TODO: prefetch to cache using image_open dt_film_set_query(id); dt_control_queue_redraw_center(); dt_view_manager_reset(darktable.view_manager); return 0; }
int dt_film_open(const int32_t id) { sqlite3_stmt *stmt; DT_DEBUG_SQLITE3_PREPARE_V2(dt_database_get(darktable.db), "select id, folder from film_rolls where id = ?1", -1, &stmt, NULL); DT_DEBUG_SQLITE3_BIND_INT(stmt, 1, id); if(sqlite3_step(stmt) == SQLITE_ROW) { sqlite3_finalize(stmt); char datetime[20]; dt_gettime(datetime); DT_DEBUG_SQLITE3_PREPARE_V2(dt_database_get(darktable.db), "update film_rolls set datetime_accessed = ?1 where id = ?2", -1, &stmt, NULL); DT_DEBUG_SQLITE3_BIND_TEXT(stmt, 1, datetime, strlen(datetime), SQLITE_STATIC); DT_DEBUG_SQLITE3_BIND_INT(stmt, 2, id); sqlite3_step(stmt); } sqlite3_finalize(stmt); // TODO: prefetch to cache using image_open dt_film_set_query(id); dt_control_queue_redraw_center(); dt_view_manager_reset(darktable.view_manager); return 0; }
/** open film with given id. */ int dt_film_open2 (dt_film_t *film) { /* check if we got a decent film id */ if(film->id<0) return 1; /* query database for id and folder */ sqlite3_stmt *stmt; DT_DEBUG_SQLITE3_PREPARE_V2(dt_database_get(darktable.db), "select id, folder from film_rolls where id = ?1", -1, &stmt, NULL); DT_DEBUG_SQLITE3_BIND_INT(stmt, 1, film->id); if(sqlite3_step(stmt) == SQLITE_ROW) { /* fill out the film dirname */ sprintf (film->dirname,"%s",(gchar *)sqlite3_column_text (stmt, 1)); sqlite3_finalize (stmt); char datetime[20]; dt_gettime (datetime); DT_DEBUG_SQLITE3_PREPARE_V2(dt_database_get(darktable.db), "update film_rolls set datetime_accessed = ?1 where id = ?2", -1, &stmt, NULL); DT_DEBUG_SQLITE3_BIND_TEXT(stmt, 1, datetime, strlen(datetime), SQLITE_STATIC); DT_DEBUG_SQLITE3_BIND_INT(stmt, 2, film->id); sqlite3_step (stmt); sqlite3_finalize (stmt); dt_film_set_query (film->id); dt_control_queue_redraw_center (); dt_view_manager_reset (darktable.view_manager); return 0; } else sqlite3_finalize (stmt); /* failure */ return 1; }