00001 #ifndef ADEVICEPREFS_H
00002 #define ADEVICEPREFS_H
00003
00004
00005 #ifndef MODEPLAY
00006 #define MODEPLAY 0
00007 #define MODERECORD 1
00008 #define MODEDUPLEX 2
00009 #endif
00010
00011 class OSSEnable;
00012 class ALSADevice;
00013
00014 #include "bitspopup.inc"
00015 #include "guicast.h"
00016 #include "playbackconfig.inc"
00017 #include "preferencesthread.inc"
00018 #include "recordconfig.inc"
00019
00020 class ADriverMenu;
00021 class ADeviceTextBox;
00022 class ADeviceIntBox;
00023
00024 class ADevicePrefs
00025 {
00026 public:
00027 ADevicePrefs(int x,
00028 int y,
00029 PreferencesWindow *pwindow,
00030 PreferencesDialog *dialog,
00031 AudioOutConfig *out_config,
00032 AudioInConfig *in_config,
00033 int mode);
00034 ~ADevicePrefs();
00035
00036 void reset();
00037 static int get_h();
00038 int update(AudioOutConfig *out_config);
00039 int initialize();
00040 int delete_objects();
00041
00042 PreferencesWindow *pwindow;
00043
00044 private:
00045 int create_oss_objs();
00046 int create_esound_objs();
00047 int create_firewire_objs();
00048 int create_alsa_objs();
00049
00050 int delete_oss_objs();
00051 int delete_esound_objs();
00052 int delete_firewire_objs();
00053 int delete_alsa_objs();
00054
00055
00056 AudioOutConfig *out_config;
00057 AudioInConfig *in_config;
00058 PreferencesDialog *dialog;
00059 int driver, mode;
00060 int x;
00061 int y;
00062 ADriverMenu *menu;
00063 BC_Title *driver_title, *path_title, *bits_title, *channels_title;
00064 BC_Title *server_title, *port_title, *channel_title, *syt_title;
00065 OSSEnable *oss_enable[MAXDEVICES];
00066 ADeviceTextBox *oss_path[MAXDEVICES];
00067 BitsPopup *oss_bits;
00068 ADeviceIntBox *oss_channels[MAXDEVICES];
00069 ADeviceTextBox *esound_server;
00070 ADeviceIntBox *esound_port;
00071 ADeviceIntBox *firewire_port;
00072 ADeviceIntBox *firewire_channel;
00073 ADeviceIntBox *firewire_channels;
00074 ADeviceTextBox *firewire_path;
00075 ADeviceIntBox *firewire_syt;
00076
00077
00078 ALSADevice *alsa_device;
00079 BitsPopup *alsa_bits;
00080 ADeviceIntBox *alsa_channels;
00081 BC_CheckBox *alsa_workaround;
00082
00083 ArrayList<BC_ListBoxItem*> *alsa_drivers;
00084 };
00085
00086 class ADriverMenu : public BC_PopupMenu
00087 {
00088 public:
00089 ADriverMenu(int x,
00090 int y,
00091 ADevicePrefs *device_prefs,
00092 int do_input,
00093 int *output);
00094 ~ADriverMenu();
00095
00096 void create_objects();
00097 char* adriver_to_string(int driver);
00098
00099 int do_input;
00100 int *output;
00101 ADevicePrefs *device_prefs;
00102 char string[BCTEXTLEN];
00103 };
00104
00105 class ADriverItem : public BC_MenuItem
00106 {
00107 public:
00108 ADriverItem(ADriverMenu *popup, char *text, int driver);
00109 ~ADriverItem();
00110 int handle_event();
00111 ADriverMenu *popup;
00112 int driver;
00113 };
00114
00115 class OSSEnable : public BC_CheckBox
00116 {
00117 public:
00118 OSSEnable(int x, int y, int *output);
00119 int handle_event();
00120 int *output;
00121 };
00122
00123
00124
00125 class ADeviceTextBox : public BC_TextBox
00126 {
00127 public:
00128 ADeviceTextBox(int x, int y, char *output);
00129 int handle_event();
00130 char *output;
00131 };
00132
00133 class ADeviceIntBox : public BC_TextBox
00134 {
00135 public:
00136 ADeviceIntBox(int x, int y, int *output);
00137 int handle_event();
00138 int *output;
00139 };
00140
00141 class ALSADevice : public BC_PopupTextBox
00142 {
00143 public:
00144 ALSADevice(PreferencesDialog *dialog,
00145 int x,
00146 int y,
00147 char *output,
00148 ArrayList<BC_ListBoxItem*> *devices);
00149 ~ALSADevice();
00150
00151 int handle_event();
00152 char *output;
00153 };
00154
00155 #endif