+++ /dev/null
-#ifndef _DBWINDOW_H_
-#define _DBWINDOW_H_
-
-#include "canvas.h"
-#include "condition.h"
-#include "garbage.h"
-#include "linklist.h"
-#include "mutex.h"
-#include "commercials.inc"
-#include "dbwindow.inc"
-#include "guicast.h"
-#include "mediadb.h"
-#include "mwindow.inc"
-#include "vicon.h"
-
-enum {
- col_vicon, col_id, col_length, col_source,
- col_title, col_start_time, col_access_time,
- col_access_count, sizeof_col
-};
-
-class DbSearchItem : public BC_ListBoxItem {
-public:
- DbWindowVIcon *vicon;
-
- DbSearchItem(const char *text, int color=-1);
- ~DbSearchItem();
-};
-
-class DbWindow : public Thread
-{
-public:
- MWindow *mwindow;
- DbWindowGUI *gui;
- Mutex *window_lock;
- Mutex *db_lock;
- class MDb : public Garbage, public MediaDb {
- DbWindow *dwin;
- public:
- int attach_rd() { dwin->db_lock->lock(); attachDb(0); return 0; }
- int attach_wr() { dwin->db_lock->lock(); attachDb(1); return 0; }
- int detach() { dwin->db_lock->unlock(); detachDb(); return 0; }
-
- MDb(DbWindow *d);
- ~MDb();
- } *mdb;
-
- void start();
- void stop();
- void run();
-
- DbWindow(MWindow *mwindow);
- ~DbWindow();
-};
-
-class DbWindowGUI : public BC_Window
-{
-public:
- DbWindow *dwindow;
-
- DbWindowText *search_text;
- DbWindowTitleText *title_text;
- DbWindowInfoText *info_text;
- DbWindowMatchCase *match_case;
- DbWindowStart *search_start;
- DbWindowDeleteItems *del_items;
- DbWindowCancel *cancel;
- DbWindowList *search_list;
- DbWindowCanvas *canvas;
- DbWindowVIconThread *vicon_thread;
-
- int title_text_enable;
- int info_text_enable;
- int match_case_enable;
-
- int search_x, search_y, text_x, text_y;
- int del_items_x, del_items_y;
- int cancel_x, cancel_y, cancel_w, cancel_h;
- int canvas_x, canvas_y, canvas_w, canvas_h;
- int list_x, list_y, list_w, list_h;
- int sort_column, sort_order;
-
- const char *search_column_titles[sizeof_col];
- int search_column_widths[sizeof_col];
- int search_columns[sizeof_col];
- ArrayList<DbSearchItem*> search_items[sizeof_col];
- ArrayList<DbWindowItem*> search_results;
-
- void create_objects();
- void search(int n, const char *text);
- void delete_items();
- int close_event();
- int resize_event(int x, int y);
- int stop_drawing();
- int start_drawing(int update=1);
- void update();
- static int cmpr_id_dn(const void *a, const void *b);
- static int cmpr_id_up(const void *a, const void *b);
- static int cmpr_length_dn(const void *a, const void *b);
- static int cmpr_length_up(const void *a, const void *b);
- static int cmpr_source_dn(const void *a, const void *b);
- static int cmpr_source_up(const void *a, const void *b);
- static int cmpr_Source_dn(const void *a, const void *b);
- static int cmpr_Source_up(const void *a, const void *b);
- static int cmpr_Title_dn(const void *a, const void *b);
- static int cmpr_Title_up(const void *a, const void *b);
- static int cmpr_title_dn(const void *a, const void *b);
- static int cmpr_title_up(const void *a, const void *b);
- static int cmpr_start_time_dn(const void *a, const void *b);
- static int cmpr_start_time_up(const void *a, const void *b);
- static int cmpr_access_time_dn(const void *a, const void *b);
- static int cmpr_access_time_up(const void *a, const void *b);
- static int cmpr_access_count_dn(const void *a, const void *b);
- static int cmpr_access_count_up(const void *a, const void *b);
- void sort_events(int column, int order);
- void move_column(int src, int dst);
-
- DbWindowGUI(DbWindow *dwindow);
- ~DbWindowGUI();
-private:
- int search_string(const char *text, const char *sp);
- void search_clips(MediaDb *mdb, int n, const char *text);
- int delete_selection(MediaDb *mdb);
-};
-
-class DbWindowInfoText : public BC_CheckBox
-{
-public:
- DbWindowGUI *gui;
-
- int handle_event();
- void update(int v) { set_value(gui->info_text_enable = v); }
-
- DbWindowInfoText(DbWindowGUI *gui, int x, int y);
- ~DbWindowInfoText();
-};
-
-class DbWindowTitleText : public BC_CheckBox
-{
-public:
- DbWindowGUI *gui;
-
- int handle_event();
- void update(int v) { set_value(gui->title_text_enable = v); }
-
- DbWindowTitleText(DbWindowGUI *gui, int x, int y);
- ~DbWindowTitleText();
-};
-
-class DbWindowMatchCase : public BC_CheckBox
-{
-public:
- DbWindowGUI *gui;
-
- int handle_event();
-
- DbWindowMatchCase(DbWindowGUI *gui, int x, int y);
- ~DbWindowMatchCase();
-};
-
-class DbWindowText : public BC_TextBox
-{
-public:
- DbWindowGUI *gui;
-
- int handle_event();
- int keypress_event();
-
- DbWindowText(DbWindowGUI *gui, int x, int y, int w);
- ~DbWindowText();
-};
-
-class DbWindowStart : public BC_GenericButton
-{
-public:
- DbWindowGUI *gui;
-
- int handle_event();
-
- DbWindowStart(DbWindowGUI *gui, int x, int y);
- ~DbWindowStart();
-};
-
-class DbWindowCancel : public BC_CancelButton
-{
-public:
- DbWindowGUI *gui;
-
- int handle_event();
-
- DbWindowCancel(DbWindowGUI *gui, int x, int y);
- ~DbWindowCancel();
-};
-
-class DbWindowDeleteItems : public BC_GenericButton
-{
-public:
- DbWindowGUI *gui;
-
- int handle_event();
-
- DbWindowDeleteItems(DbWindowGUI *gui, int x, int y);
- ~DbWindowDeleteItems();
-};
-
-class DbWindowList : public BC_ListBox
-{
-public:
- DbWindowGUI *gui;
-
- int handle_event();
- int sort_order_event();
- int keypress_event();
- int move_column_event();
- int selection_changed();
- void set_view_popup(DbWindowVIcon *vicon);
-
- int update_images();
- int update();
-
- DbWindowList(DbWindowGUI *gui, int x, int y, int w, int h);
- ~DbWindowList();
-};
-
-class DbWindowCanvas : public Canvas
-{
-public:
- DbWindowGUI *gui;
- int is_fullscreen;
-
- DbWindowCanvas(DbWindowGUI *gui, int x, int y, int w, int h);
- ~DbWindowCanvas();
- void flash_canvas();
- void draw_frame(VFrame *frame, int x, int y, int w, int h);
- int button_press_event() { return 0; }
- int keypress_event() { return 0; }
- int get_fullscreen() { return is_fullscreen; }
- void set_fullscreen(int value) { is_fullscreen = value; }
-};
-
-class DbWindowVIcon : public VIcon
-{
-public:
- DbWindowList *lbox;
- DbSearchItem *item;
-
- int clip_id, clip_size;
- int frame_id, frames;
- int prefix_size, suffix_offset;
-
- VFrame *frame();
- int64_t set_seq_no(int64_t no);
- void load_frames(DbWindow::MDb *mdb);
- void read_frames(DbWindow::MDb *mdb);
-
- int get_vx();
- int get_vy();
-
- void update_image(DbWindowGUI *gui, int clip_id);
- DbWindowVIcon();
- ~DbWindowVIcon();
-};
-
-class DbWindowVIconThread : public VIconThread {
-public:
- DbWindowGUI *gui;
- int list_update;
-
- ArrayList <DbWindowVIcon *> vicons;
- DbWindowVIcon *get_vicon(int i, DbSearchItem *item);
- void drawing_started();
-
- DbWindowVIconThread(DbWindowGUI *gui);
- ~DbWindowVIconThread();
-};
-
-class DbWindowItem
-{
-public:
- int no, id, access_count;
- char *source, *title;
- double length, start_time, access_time;
-
- DbWindowItem(int id, const char *source, const char *title,
- double length, double start_time, double access_time,
- int access_count);
- ~DbWindowItem();
-};
-
-class DbWindowScan : public BC_MenuItem
-{
-public:
- MWindow *mwindow;
- int handle_event();
-
- DbWindowScan(MWindow *mwindow);
- ~DbWindowScan();
-};
-
-
-#endif