tagging release
[dasher.git] / Src / Gtk2 / dasher_lock_dialogue.cpp
blobc14a7db92fb639710b30104ea9a088f49e62eb2e
1 #include "../../config.h"
3 #include "GtkDasherControl.h"
4 #include "dasher.h"
5 #include "dasher_lock_dialogue.h"
7 #ifdef WITH_MAEMO
8 #include <hildon-widgets/hildon-banner.h>
9 #endif
10 #include <iostream>
12 // TODO: Make this a real class
14 GtkWidget *m_pLockWindow;
15 GtkWidget *m_pLockProgress;
16 GtkWidget *m_pLockMessage;
18 void dasher_lock_dialogue_new(GladeXML *pGladeXML, GtkWindow *pMainWindow) {
19 #ifndef WITH_MAEMO
20 m_pLockWindow = glade_xml_get_widget(pGladeXML, "lock_window");
21 m_pLockProgress = glade_xml_get_widget(pGladeXML, "lock_progress");
22 m_pLockMessage = glade_xml_get_widget(pGladeXML, "lock_message");
24 gtk_widget_hide(m_pLockWindow);
26 dasher_lock_dialogue_set_transient(pMainWindow);
27 #else
28 m_pLockWindow = 0;
29 #endif
32 void dasher_lock_dialogue_set_transient(GtkWindow *pMainWindow) {
33 gtk_window_set_transient_for(GTK_WINDOW(m_pLockWindow), pMainWindow);
36 extern "C" void on_lock_info(GtkDasherControl *pDasherControl, gpointer pLockInfo, gpointer pUserData) {
37 // TODO: signals are connected after the Dasher control is created,
38 // which is too late to receive notification about intial training
39 // etc.
41 DasherLockInfo *pInfo = (DasherLockInfo *)pLockInfo;
43 #ifndef WITH_MAEMO
44 gtk_label_set_text(GTK_LABEL(m_pLockMessage), pInfo->szMessage);
45 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(m_pLockProgress), pInfo->iPercent / 100.0);
47 if(pInfo->bLock)
48 gtk_widget_show(m_pLockWindow);
49 else
50 gtk_widget_hide(m_pLockWindow);
51 #else
52 if(pInfo->bLock) {
53 if(!m_pLockWindow)
54 m_pLockWindow = hildon_banner_show_progress(NULL, NULL, pInfo->szMessage);
56 hildon_banner_set_fraction(HILDON_BANNER(m_pLockWindow), pInfo->iPercent / 100.0);
58 else {
59 if(m_pLockWindow)
60 gtk_widget_destroy(m_pLockWindow);
61 m_pLockWindow = 0;
63 #endif
65 // Keep the GTK interface responsive
66 while(gtk_events_pending())
67 gtk_main_iteration();