Skip to content

Commit

Permalink
Merge pull request #4 from lakinduakash/dev
Browse files Browse the repository at this point in the history
Add functionality to turn off screenpad
  • Loading branch information
lakinduakash authored Oct 7, 2020
2 parents 9d70d4b + 5ca3d69 commit b5998ed
Show file tree
Hide file tree
Showing 4 changed files with 155 additions and 21 deletions.
Binary file modified docs/screenshot1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
71 changes: 70 additions & 1 deletion ui/glade/window.ui
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,75 @@
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
<property name="margin_top">10</property>
<property name="margin_bottom">10</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">3</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Turn off Screenpad</property>
<property name="justify">center</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">2</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">5</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">3</property>
<child>
<object class="GtkSwitch" id="switch_turn_off_screenpad">
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="padding">5</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="error_label">
<property name="visible">True</property>
Expand All @@ -101,7 +170,7 @@
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">5</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
</object>
Expand Down
100 changes: 82 additions & 18 deletions ui/ui.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,13 @@ GtkBuilder *builder;
GObject *window;

GtkScale *scale;
GtkSwitch *switch_turn_off;
GtkLabel *error_label;

GError *error = NULL;

int last_read_range_value = -1;

/**
* Map values 0-100 to 1-255
*/
Expand All @@ -24,6 +27,10 @@ int get_interpolated_value_from_slider(int value){
int get_interpolated_value_from_file(int value){
return (int)(100.0/255*value);
}

/**
* Get brigtness level from file. Returns 0-255
*/
int get_brightness_level(){

FILE* file = fopen (BRIGHTNESS_FILE, "r");
Expand All @@ -35,27 +42,33 @@ int get_brightness_level(){
int i = 255;

fscanf (file, "%d", &i);
fclose (file);
fclose (file);
g_message("Read file %d",i);
return i;
}

void set_brightness_level(int value){
/**
* Set brigtness level to file. Value between 0-255
*/
int set_brightness_level(int value){

FILE * file;
int i= value;
file = fopen (BRIGHTNESS_FILE,"w");

if (file == NULL) {
show_file_open_error();
return;
return -1;
}

fprintf (file, "%d\n",i);
fclose (file);

return 0;
}


/**
* Called when slider value changed
*/
void on_slider_value_changed(GtkRange *range, gpointer data){

int a=gtk_range_get_value((GtkRange *)scale);
Expand All @@ -66,24 +79,50 @@ void on_slider_value_changed(GtkRange *range, gpointer data){
set_brightness_level(brightness);
}

void show_file_open_error(){
gtk_label_set_text(error_label,"Error oprning file /sys/class/leds/asus::screenpad/brightness");

}
void on_turn_off_switch_changed(GtkSwitch *gtk_switch,gboolean state,gpointer data){

if(state){

void setup_ui(){
gtk_range_set_range((GtkRange *)scale,0,100);
gtk_range_set_increments ((GtkRange *)scale,1,1);
last_read_range_value=gtk_range_get_value((GtkRange *)scale);

gtk_label_set_text(error_label,"");
int success = set_brightness_level(0);

int a=get_brightness_level();
int brightness=get_interpolated_value_from_file(a);
if(success==0){
gtk_widget_set_sensitive ((GtkWidget*)scale, FALSE);
}

}
else{

gtk_widget_set_sensitive ((GtkWidget*)scale, FALSE);

if(last_read_range_value !=-1 && last_read_range_value !=0){

int success=set_brightness_level(get_interpolated_value_from_slider(last_read_range_value));

if(success==0){
gtk_range_set_value((GtkRange *)scale,last_read_range_value);
gtk_widget_set_sensitive ((GtkWidget*)scale, TRUE);
}

//g_message("Read %d",brightness);
}
else{

gtk_range_set_value((GtkRange *)scale,brightness);
//Set half brightness
int success= set_brightness_level(128);

if(success==0){
gtk_range_set_value((GtkRange *)scale,get_interpolated_value_from_file(128));
gtk_widget_set_sensitive ((GtkWidget*)scale, TRUE);
}

}
}
}

void show_file_open_error(){
gtk_label_set_text(error_label,"Error oprning file /sys/class/leds/asus::screenpad/brightness");
}

int initUi(int argc, char *argv[]){
Expand All @@ -98,14 +137,39 @@ int initUi(int argc, char *argv[]){
window = gtk_builder_get_object(builder, "window");

scale = (GtkScale *) gtk_builder_get_object(builder, "brightness_controle_scale");
switch_turn_off= (GtkSwitch *) gtk_builder_get_object(builder, "switch_turn_off_screenpad");
error_label = (GtkLabel *) gtk_builder_get_object(builder, "error_label");

//Make sure to call before connecting signals
setup_ui();

g_signal_connect (window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(scale, "value-changed", G_CALLBACK(on_slider_value_changed), NULL);

setup_ui();
g_signal_connect(switch_turn_off, "state-set", G_CALLBACK(on_turn_off_switch_changed), NULL);


gtk_main();

return 0;
}

void setup_ui(){
gtk_range_set_range((GtkRange *)scale,0,100);
gtk_range_set_increments ((GtkRange *)scale,1,1);

gtk_label_set_text(error_label,"");

int a=get_brightness_level();

//g_message("Read %d",a);

if(a==0){
gtk_switch_set_active(switch_turn_off,TRUE);
gtk_widget_set_sensitive ((GtkWidget*)scale, FALSE);
}
else{
int brightness=get_interpolated_value_from_file(a);
gtk_range_set_value((GtkRange *)scale,brightness);
}

}
5 changes: 3 additions & 2 deletions ui/ui.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
int initUi(int argc, char *argv[]);
int get_interpolated_value_from_file(int value);
int get_interpolated_value_from_slider(int value);
int get_brightness_level();
void set_brightness_level(int value);
int get_brightness_level(void);
int set_brightness_level(int value);
void on_slider_value_changed(GtkRange *range, gpointer data);
void show_file_open_error(void);
void setup_ui(void);
void on_turn_off_switch_changed(GtkSwitch *gtk_switch,gboolean state,gpointer data);

#endif //UI_H

0 comments on commit b5998ed

Please sign in to comment.