00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00026
00027
00028
00029
00030
00031 #include <liberipc/eripc.h>
00032 #include <liberipc/eripctoolbar.h>
00033 #include <liberipc/eripcviewer.h>
00034 #include <liberipc/eripcicons.h>
00035 #include "browserTypes.h"
00036 #include "toolbar.h"
00037 #include "pagebar.h"
00038 #include "browserSettings.h"
00039 #include "mozilla_api.h"
00040 #include "find.h"
00041 #include "browserLog.h"
00042 #include "displayUpdate.h"
00043 #include "erbusy.h"
00044
00045 static erClientChannel_t toolbarChannel;
00046
00047 void toolbar_init()
00048 {
00049 int returnValue;
00050
00051
00052
00053
00054 BR_IPCPRINTF("entry");
00055
00056
00057 returnValue = erIpcStartClient(ER_TOOLBAR_CHANNEL, &toolbarChannel);
00058
00059 if (returnValue != 0)
00060 {
00061 BR_WARNPRINTF("erIpcStartClient returned %d", returnValue);
00062 return;
00063 }
00064
00065
00066 tbSelectIconSet(toolbarChannel, ER_XHTML_VIEWER_UA_ID);
00067
00068
00069 tbClearIconSet(toolbarChannel, ER_XHTML_VIEWER_UA_ID);
00070
00071
00072 tbAppendPlatformIcon(toolbarChannel, ER_XHTML_VIEWER_UA_ID, iconID_fontlarger, ccVwrToolbar);
00073 tbAppendPlatformIcon(toolbarChannel, ER_XHTML_VIEWER_UA_ID, iconID_fontsmaller, ccVwrToolbar);
00074
00075
00076
00077
00078
00079 tbSetStatePlatformIcon(toolbarChannel, ER_XHTML_VIEWER_UA_ID, iconID_keyboard, iconState_normal);
00080
00081 }
00082
00083
00084 void toolbar_key_selected(int iconID, int iconState, Ereader * browser)
00085 {
00086 float zoomSize;
00087 gint offset;
00088
00089 BR_IPCPRINTF("iconID %d - iconState %d - browser 0x%x \n", iconID, iconState, browser);
00090
00091
00092 erbusy_blink();
00093
00094 switch (iconID)
00095 {
00096 case iconID_fontlarger:
00097 zoomSize = browser_settings_get_zoom_factor();
00098 BR_IPCPRINTF("ZOOM IN %f + 0,1", zoomSize);
00099 zoomSize = zoomSize + ZOOM_STEPSIZE;
00100
00101 if (zoomSize <= MAX_ZOOM_IN)
00102 {
00103 if (zoomSize + ZOOM_STEPSIZE > MAX_ZOOM_IN)
00104 {
00105 tbSetStatePlatformIcon(toolbarChannel, ER_XHTML_VIEWER_UA_ID, iconID_fontlarger, iconState_grey);
00106 }
00107 tbSetStatePlatformIcon(toolbarChannel, ER_XHTML_VIEWER_UA_ID, iconID_fontsmaller, iconState_normal);
00108
00109 mozilla_zoom(GTK_MOZ_EMBED(browser->mozEmbed), zoomSize);
00110
00111
00112 offset = mozilla_determine_page_offset(GTK_MOZ_EMBED(browser->mozEmbed));
00113 pagebar_set_offset(offset);
00114 pagebar_redraw();
00115
00116 display_update_request_screen_refresh(MOZEMBED_UPDATE_LEVEL, NULL);
00117 browser_settings_set_zoom_factor(zoomSize);
00118 }
00119 else
00120 {
00121 BR_IPCPRINTF("new zoom size %f > %f", zoomSize, MAX_ZOOM_IN);
00122 erbusy_off();
00123 }
00124 break;
00125
00126 case iconID_fontsmaller:
00127 zoomSize = browser_settings_get_zoom_factor();
00128 BR_IPCPRINTF("ZOOM OUT %f - 0,1", zoomSize);
00129 zoomSize = zoomSize - ZOOM_STEPSIZE;
00130
00131 if (zoomSize > MAX_ZOOM_OUT)
00132 {
00133 if (zoomSize - ZOOM_STEPSIZE <= MAX_ZOOM_OUT)
00134 {
00135 tbSetStatePlatformIcon(toolbarChannel, ER_XHTML_VIEWER_UA_ID, iconID_fontsmaller, iconState_grey);
00136 }
00137 tbSetStatePlatformIcon(toolbarChannel, ER_XHTML_VIEWER_UA_ID, iconID_fontlarger, iconState_normal);
00138
00139 mozilla_zoom(GTK_MOZ_EMBED(browser->mozEmbed), zoomSize);
00140 if (mozilla_scrollable(pageDown_t, GTK_MOZ_EMBED(browser->mozEmbed)) == false)
00141 {
00142
00143
00144 mozilla_scroll(1, GTK_MOZ_EMBED(browser->mozEmbed));
00145 }
00146
00147
00148 offset = mozilla_determine_page_offset(GTK_MOZ_EMBED(browser->mozEmbed));
00149 pagebar_set_offset(offset);
00150 pagebar_redraw();
00151
00152 display_update_request_screen_refresh(MOZEMBED_UPDATE_LEVEL, NULL);
00153 browser_settings_set_zoom_factor(zoomSize);
00154 }
00155 else
00156 {
00157 BR_IPCPRINTF("new zoom size %f < %f", zoomSize, MAX_ZOOM_OUT);
00158 erbusy_off();
00159 }
00160 break;
00161
00169 default:
00170 BR_IPCPRINTF("Unknown iconID [%d]", iconID);
00171 erbusy_off();
00172 break;
00173 }
00174
00175 return;
00176 }