~torios-dev/+junk/fltk-volume

« back to all changes in this revision

Viewing changes to src/fltk-indicator.h

  • Committer: Israel Dahl
  • Date: 2018-08-04 00:21:34 UTC
  • Revision ID: israeldahl@gmail.com-20180804002134-ox20nfa270vg7275
changed everything to support both volume and battery
working indicator that does volume OR battery... mostly

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// generated by Fast Light User Interface Designer (fluid) version 1.0303
 
2
 
 
3
#ifndef fltk_indicator_h
 
4
#define fltk_indicator_h
 
5
#include <FL/Fl.H>
 
6
#include <FL/Fl_JPEG_Image.H>
 
7
#include <FL/Fl_PNG_Image.H>
 
8
#include <FL/Fl_XBM_Image.H>
 
9
#include <FL/Fl_XPM_Image.H>
 
10
#include <FL/Fl_GIF_Image.H>
 
11
#include <stdexcept>
 
12
#include <string>
 
13
#include <iostream>
 
14
#include <fstream>
 
15
#include <vector>
 
16
#include <sys/stat.h>
 
17
#include <sys/types.h>
 
18
#include <fcntl.h>
 
19
#include <sys/sendfile.h>  // sendfile
 
20
#include <algorithm>
 
21
#include <float.h>
 
22
#include <sstream>
 
23
#include <float.h>
 
24
#include <dirent.h>
 
25
#include <sys/stat.h>
 
26
#include <langinfo.h>
 
27
#include <stdlib.h>
 
28
#include <stdio.h>
 
29
#include <cstdlib>
 
30
#include <fstream>
 
31
#include <sstream>
 
32
#include <errno.h>
 
33
#include <locale.h>
 
34
#include <unistd.h>
 
35
#include <signal.h>
 
36
#include <string>
 
37
#include <X11/Xlib.h>
 
38
#include <vector>
 
39
#include <alsa/asoundlib.h>
 
40
#include <FL/x.h>
 
41
#include <pthread.h>
 
42
 
 
43
class FltkVolume {
 
44
public:
 
45
  typedef enum
 
46
                {
 
47
                        AUDIO_VOLUME_SET,
 
48
                        AUDIO_VOLUME_GET,
 
49
                }audio_volume_action;
 
50
  int GetVolume();
 
51
  int ChangeVolume(long volume);
 
52
  bool isMuted();
 
53
  int AlsaMute(FltkVolume::audio_volume_action action, bool mute=false, snd_mixer_selem_channel_id_t channel = SND_MIXER_SCHN_FRONT_LEFT);
 
54
  int AlsaMasterVolume(FltkVolume::audio_volume_action action, long *volume, snd_mixer_selem_channel_id_t channel = SND_MIXER_SCHN_FRONT_LEFT);
 
55
};
 
56
#include <FL/Fl_Double_Window.H>
 
57
#include <FL/Fl_Text_Display.H>
 
58
#include <FL/Fl_Button.H>
 
59
#include <FL/Fl_Input.H>
 
60
#include <FL/Fl_Slider.H>
 
61
#include <FL/Fl_Box.H>
 
62
 
 
63
class UserInterface {
 
64
protected:
 
65
  bool NOTIFIEDLOW, CHARGING; 
 
66
  std::vector<std::string> m_themesVector; 
 
67
private:
 
68
  std::string m_gtk_theme; 
 
69
protected:
 
70
  std::vector<std::string> m_ICON_PATHS; 
 
71
private:
 
72
  std::string OLD_ICON; 
 
73
  std::string MIXER_PROGRAM; 
 
74
  FltkVolume m_volumecontrol; 
 
75
public:
 
76
  UserInterface();
 
77
  int action(int event,bool battery=false);
 
78
  const char* batt_info();
 
79
  Fl_Double_Window* batt_info_window();
 
80
  Fl_Double_Window *batt_info_win;
 
81
  Fl_Text_Display *b_info_txt;
 
82
private:
 
83
  inline void cb_Quit_i(Fl_Button*, void*);
 
84
  static void cb_Quit(Fl_Button*, void*);
 
85
public:
 
86
  static void battery_CB(void* myclass);
 
87
  Fl_Double_Window* battery_menu();
 
88
  Fl_Double_Window *batt_menu;
 
89
  Fl_Button *shutdown_button;
 
90
private:
 
91
  inline void cb_shutdown_button_i(Fl_Button*, void*);
 
92
  static void cb_shutdown_button(Fl_Button*, void*);
 
93
public:
 
94
  Fl_Button *info_button;
 
95
private:
 
96
  inline void cb_info_button_i(Fl_Button*, void*);
 
97
  static void cb_info_button(Fl_Button*, void*);
 
98
public:
 
99
  Fl_Button *batt_pref_button;
 
100
private:
 
101
  inline void cb_Quit1_i(Fl_Button*, void*);
 
102
  static void cb_Quit1(Fl_Button*, void*);
 
103
public:
 
104
  void battery_toggle();
 
105
  Fl_Double_Window* battery_window();
 
106
  Fl_Double_Window *battery_win;
 
107
  Fl_Button *battery_icon;
 
108
private:
 
109
  inline void cb_battery_icon_i(Fl_Button*, void*);
 
110
  static void cb_battery_icon(Fl_Button*, void*);
 
111
public:
 
112
  void change_volume(double vol);
 
113
  void changeWidgetIcon(std::string icon_file, Fl_Widget * widget,bool save=true);
 
114
  std::vector<std::string> comma_vector(std::string LINE,std::vector<std::string> Vector);
 
115
  std::string convert_num_to_string(int num);
 
116
  unsigned int convert_string_to_number(std::string num);
 
117
  std::string current_path(int whichPath);
 
118
  std::vector<std::string> delimiter_vector_from_string(std::string string_to_become_vector,std::string delimiter);
 
119
  std::vector<std::string> desktop_dirs();
 
120
  std::string find_xdg_data_dir_subdir(std::string subdir);
 
121
  std::string get_battery();
 
122
  std::string get_default_mixer();
 
123
  std::string get_directory_from_filename(std::string filename);
 
124
  Window get_dock(void);
 
125
  std::string get_equal_value(std::string INTERNAL_LINE);
 
126
  std::vector<std::string> get_file_vector(std::string DIRECTORY,std::string file);
 
127
  unsigned int get_fl_color(XColor *c);
 
128
  std::string get_gtk_icon_theme();
 
129
  std::string get_line_with_delim(std::string filename, std::string line,std::string delim);
 
130
  std::string get_line_with_equal(std::string filename, std::string line);
 
131
  std::string get_mixer();
 
132
  bool get_muted();
 
133
  int getProcIdByName(std::string procName);
 
134
  std::string get_shell_for_C();
 
135
  std::string get_symlinkpath(std::string symlink);
 
136
  int get_volume();
 
137
  bool has_file_extention_at_end(std::string filename,std::string extention);
 
138
  unsigned int items_in_path();
 
139
  std::vector<std::string> IconPaths(int size_to_use=32);
 
140
  std::vector<std::string> IconPathsForTheme(std::string theme,int size_to_use=32);
 
141
  std::vector<std::string> icon_themefiles_vector();
 
142
  void initbatt();
 
143
  void initvol();
 
144
  std::vector<std::string> join_string_vectors(std::vector<std::string> vectorA,std::vector<std::string> vectorB);
 
145
  std::vector<std::string> list_icon_dirs_in_themefile(std::string themefile,int size_to_use);
 
146
  std::string look_for_icon_file(std::string fileWITHOUTpath);
 
147
  std::string look_for_file_in_subdirs(std::string fileWITHOUTpath,std::string dir);
 
148
  std::string look_for_first_file_in_subdirs(std::string fileWITHOUTpath,std::string dir);
 
149
  bool look_for_string_in_vector(std::vector<std::string> vector_to_check,std::string item_to_find);
 
150
  void make_battery();
 
151
  void make_volume();
 
152
  void make_indicator(Fl_Window* client);
 
153
  void make_menu();
 
154
  Fl_Double_Window* make_preferences();
 
155
  Fl_Double_Window *pref_win;
 
156
  Fl_Input *mixer_name;
 
157
private:
 
158
  inline void cb_OK_i(Fl_Button*, void*);
 
159
  static void cb_OK(Fl_Button*, void*);
 
160
  inline void cb_Cancel_i(Fl_Button*, void*);
 
161
  static void cb_Cancel(Fl_Button*, void*);
 
162
public:
 
163
  Fl_Double_Window* make_window();
 
164
  Fl_Double_Window *win;
 
165
  Fl_Button *status_icon;
 
166
private:
 
167
  inline void cb_status_icon_i(Fl_Button*, void*);
 
168
  static void cb_status_icon(Fl_Button*, void*);
 
169
public:
 
170
  Fl_Double_Window* menu_window();
 
171
  Fl_Double_Window *menu_win;
 
172
  Fl_Button *sett_button;
 
173
private:
 
174
  inline void cb_sett_button_i(Fl_Button*, void*);
 
175
  static void cb_sett_button(Fl_Button*, void*);
 
176
public:
 
177
  Fl_Button *mix_button;
 
178
private:
 
179
  inline void cb_mix_button_i(Fl_Button*, void*);
 
180
  static void cb_mix_button(Fl_Button*, void*);
 
181
  inline void cb_Quit2_i(Fl_Button*, void*);
 
182
  static void cb_Quit2(Fl_Button*, void*);
 
183
public:
 
184
  void mixer();
 
185
  bool program_is_running(std::string program_line);
 
186
  std::string remove_cruft(std::string StringInput, std::string CruftToRemove);
 
187
  int run_a_program_in_background(std::string program);
 
188
  int run(std::string program);
 
189
  static void* run_in_bg(void *userdata);
 
190
  std::string sed_i(std::string input, std::string remove, std::string replace);
 
191
  void set_battery_icon(std::string icon);
 
192
  void set_indicator_icon(std::string icon);
 
193
  int shutdown();
 
194
  std::vector<std::string> sort_array(std::vector<std::string> vector_to_sort);
 
195
  bool test_dir(std::string dirToTest);
 
196
  bool test_exec(std::string execToTest);
 
197
  bool test_file(std::string fileWithFullPATH);
 
198
  std::string test_file_in_vector_path(std::string fileWithNOPATH,std::vector<std::string> directories_to_check);
 
199
  std::string term_out(std::string terminal_Command_You_Want_Output_From);
 
200
  static void timer_CB(void* myclass);
 
201
  void toggle_batt_info();
 
202
  void toggle_pref();
 
203
  void toggle_volume();
 
204
  void trap_errors();
 
205
  bool untrap_errors();
 
206
  void update_battery();
 
207
  void update_volume();
 
208
  Fl_Double_Window* volume_window();
 
209
  Fl_Double_Window *volume_slider;
 
210
  Fl_Slider *slide;
 
211
private:
 
212
  inline void cb_slide_i(Fl_Slider*, void*);
 
213
  static void cb_slide(Fl_Slider*, void*);
 
214
public:
 
215
  Fl_Box *zero;
 
216
  Fl_Box *hundred;
 
217
  std::string volumeText();
 
218
};
 
219
int main(int argc, char *argv[]);
 
220
void trace(std::string msg);
 
221
#endif