~audio-recorder/audio-recorder/trunk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#ifndef _WINDOW_H_
#define _WINDOW_H_

#include <glib.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>

// Width of the settings window
#define PREF_WINDOW_WIDTH 300

// Text on the level indicator (GtkLevelBar)
enum LevelTextType {
    LEVEL_TEXT_NONE, // Do not show level value
    LEVEL_TEXT_PERCENT, // show % value
    LEVEL_TEXT_DB // show decibel (dB) value
};

// Settings for main window
typedef struct {
#ifdef APP_HAS_MENU
    GtkUIManager *ui_manager;
#endif
    GtkWidget *window; // Main window
    GdkWindowState state; // Window's state

    GtkWidget *recorder_button; // Button to start/stop/continue recording

    GtkWidget *time_label;
    GtkWidget *size_label;
    GtkWidget *level_bar; // Signal level

    GtkWidget *filename; // Current filename
    GtkWidget *add_to_file; // Add to current file

    GtkWidget *timer_active;  // Timer settings
    GtkWidget *timer_text;
    GtkWidget *timer_save_button;

    GtkWidget *audio_device; // Audio device, audio source combo
    GtkWidget *media_format; // Media format (mp3, ogg, etc.) combo

    GtkWidget *audio_quality; // Bitrate or quality for the selected media_format (NOT YET IMPLEMENTED)

    GtkWidget *error_box; // Show error messages here

    GtkWidget *settings_button; // Additional settings button

    enum LevelTextType level_ttype;

} MainWindow;

void win_create_window();
void win_show_window(gboolean show);
gboolean win_window_is_visible();
void win_close_button_cb(GtkButton *button, gpointer user_data);
void win_timer_save_text_cb(GtkWidget *widget, gpointer user_data);
void win_quit_application();
void win_hide_window();
void win_update_gui();
void win_set_error_text(gchar *error_txt);
void win_show_settings_dialog();

void win_update_level_bar(gdouble peak, gdouble peak_dB);
void win_set_filename(gchar *filename);
void win_set_time_label(gchar *time_txt);
void win_set_size_label(gchar *size_txt);

void win_show_right_click_menu();

GdkWindowState win_get_window_state();

void systray_module_init();
void systray_module_exit();
void systray_icon_setup();
gboolean systray_icon_is_installed();

GtkWidget *systray_create_menu(gboolean for_tray_icon);
void systray_set_menu_items1(gint state);
void systray_set_menu_items2(gboolean show);
const gchar *systray_get_indicator_type();


#endif