📄 gtkview.c
字号:
model->speakerphoneCallNumber(callNmbr); } else if(item == "Hangup Call") { model->hangUp(); } else if(item == "Test Answer") { model->answerCall(); }}#endif#ifdef VOICE/* void GtkView::voicePlayCallback()*/void GtkView::voicePlayCallback(String where){ if(where == "Modem") { model->playGreeting(); } else if(where == "Soundcard") { String greetWav = String(getenv("HOME")) + "/.messages/greeting.wav"; speaker->playWav(greetWav); }}#endif#ifdef VOICE/* void GtkView::voiceRecordCallback()*/void GtkView::voiceRecordCallback(){ model->recordGreeting();}#endif#ifdef VOICE/* void GtkView::voiceMessageCallback()*/void GtkView::voiceMessageCallback(String where){ if(rowSelect == -1) return; //char* num; _gtk_string haveMessage; callList->get_text(rowSelect,5,&haveMessage); if(haveMessage == "No") { return; } _gtk_string gtkCallID; callList->get_text(rowSelect,0,>kCallID); String callID(gtkCallID); Call call(model->getDbase(), callID); Message message(model->getDbase(), call.get("MessageID")); String messageFile(message.get("MessageFile")); if(where == "Modem") { model->playMessage(messageFile); } else if(where == "Soundcard") { speaker->playWav(messageFile+".wav"); } }#endif#ifdef VOICE/* void GtkView::voiceMessageDeleteCallback()*/void GtkView::voiceMessageDeleteCallback(){ if(rowSelect == -1) return; //char* num; _gtk_string haveMessage; callList->get_text(rowSelect,5,&haveMessage); if(haveMessage == "No") { return; } _gtk_string gtkCallID; callList->get_text(rowSelect,0,>kCallID); String callID(gtkCallID); Call call(model->getDbase(), callID); Message message(model->getDbase(), call.get("MessageID")); String messageFile(message.get("MessageFile")); call.set("MessageID", "0"); call.update(); message.remove(); unlink(messageFile.cstr()); resetList();}#endif/* void GtkView::editCallback(string item)*/void GtkView::editCallback(string item){ if(item == "Edit Name") { editNameCallback(); } else if(item == "Edit Tag") { editTagCallback(); } else if(item == "Play Tag") { editPlayCallback(); } else if(item == "Record Tag") { editRecordCallback(); }}/* void GtkView::searchCallback(string item)*/void GtkView::searchCallback(string item){ Gtk_Dialog* aboutd; Gtk_Button* okbutton; Gtk_Button* cabutton; Gtk_Entry* name_entry; Gtk_HBox* hbox; hbox = new Gtk_HBox(TRUE,0); okbutton = new Gtk_Button("Ok"); cabutton = new Gtk_Button("Cancel"); aboutd = new Gtk_Dialog(); aboutd->set_title(item.c_str()); aboutd->set_position(GTK_WIN_POS_CENTER); name_entry = new Gtk_Entry(); hbox->pack_start(*name_entry, FALSE, TRUE, 20); aboutd->get_vbox()->pack_start(*hbox, TRUE, TRUE, 10); aboutd->get_action_area()->pack_start(*okbutton, TRUE, TRUE, 25); aboutd->get_action_area()->pack_start(*cabutton, TRUE, TRUE, 25); if(item == "Search by Date") { time_t now=time(NULL); String temp = model->getDate(now); name_entry->set_text(temp.cstr()); connect_to_method(okbutton->clicked, this, &searchDateUpdate, (Gtk_Entry*)name_entry); connect_to_method(name_entry->activate, this, &searchDateUpdate, (Gtk_Entry*)name_entry); } else if(item == "Search by Name") { connect_to_method(okbutton->clicked, this, &searchNameUpdate, (Gtk_Entry*)name_entry); connect_to_method(name_entry->activate, this, &searchNameUpdate, (Gtk_Entry*)name_entry); } else if(item == "Search by Number") { connect_to_method(okbutton->clicked, this, &searchNumbUpdate, (Gtk_Entry*)name_entry); connect_to_method(name_entry->activate, this, &searchNumbUpdate, (Gtk_Entry*)name_entry); } connect_to_method(okbutton->clicked, this, &killWidget, (Gtk_Widget*)aboutd); connect_to_method(name_entry->activate, this, &killWidget, (Gtk_Widget*)aboutd); connect_to_method(cabutton->clicked, this, &killWidget, (Gtk_Widget*)aboutd); aboutd->show_all(); }/* void GtkView::daemonCallback(string item)*/void GtkView::daemonCallback(string item){ if(item == "Start Daemon") { model->startModel(); updateModemStatus(); handleEvents(); } else if(item == "Stop Daemon") { model->stopModel(); updateModemStatus(); handleEvents(); }}void GtkView::updateModemStatus(){ char statusText[255]; strcpy(statusText, " Modem status: "); if(model->modemOpen()) { strcat(statusText,"open, "); } else { strcat(statusText,"NOT open, " ); } if(model->modemLock()) { strcat(statusText,"locked "); } else { strcat(statusText,"NOT locked "); } statusBar->set_text(statusText);}/* void GtkView::helpCallback(string item)*/void GtkView::helpCallback(string item){ if(item == "About") { displayAbout(); }}void GtkView::searchDateUpdate(Gtk_Entry* data){ oldField = "CallDate"; oldValue = String(data->get_text()); resetList();}/* searchNameUpdate() */void GtkView::searchNameUpdate(Gtk_Entry* data){ oldField = "CallerName"; oldValue = String(data->get_text()); resetList();}/* searchNumbUpdate() */void GtkView::searchNumbUpdate(Gtk_Entry* data){ oldField = "CallerNumber"; oldValue = String(data->get_text()); resetList();}void GtkView::updateView(){ String today; time_t now = time(NULL); today = model->getDate(now); Call call(model->getDbase()); call.set("CallDate", today); ResultSet* res = call.select(); callList->freeze(); while(numRows>0) { callList->remove_row(0); numRows--; } int n=0; while(res->next()) { Caller caller(model->getDbase(), res->getString("CallerID")); String callerNumber = caller.get("CallerNumber"), callerName = caller.get("CallerName"), callDate = res->getString("CallDate"), callTime = res->getString("CallTime"), callID = res->getString("CallID"); String messageID; if(res->getString("MessageID") == "0") { messageID = "No"; } else { messageID = "Yes"; } gchar* cdata[] = { callID.cstr(), callerNumber.cstr(), callerName.cstr(), callDate.cstr(), callTime.cstr(), messageID.cstr() }; callList->append((const gchar**)cdata); //delete [] cdata; n++; } numRows=n; rowSelect = -1; callList->thaw(); oldField = "CallDate"; oldValue = today; delete res;}void GtkView::resetList(){ ResultSet* res; Call call(model->getDbase()); if(oldField == "CallDate") { call.set("CallDate", oldValue); } else if(oldField == "CallerName" || oldField == "CallerNumber") { Caller caller(model->getDbase()); caller.set(oldField, oldValue); caller.fill(); call.set("CallerID", caller.get("CallerID")); } res = call.select(); callList->freeze(); while(numRows>0) { callList->remove_row(0); numRows--; } int n=0; while(res->next()) { Caller caller(model->getDbase(), res->getString("CallerID")); String callerNumber = caller.get("CallerNumber"), callerName = caller.get("CallerName"), callDate = res->getString("CallDate"), callTime = res->getString("CallTime"), callID = res->getString("CallID"); String messageID; if(res->getString("MessageID") == "0") { messageID = "No"; } else { messageID = "Yes"; } gchar* cdata[] = { callID.cstr(), callerNumber.cstr(), callerName.cstr(), callDate.cstr(), callTime.cstr(), messageID.cstr() }; callList->append((const gchar**)cdata); //delete [] cdata; n++; } numRows=n; rowSelect = -1; callList->thaw(); delete res;}void GtkView::selectionMade(gint row, gint column, GdkEvent* button){ rowSelect = row;}void GtkView::selectionLost(gint row, gint column, GdkEvent* button){ rowSelect = -1;}void GtkView::handleEvents(){ while (gtk_events_pending()) gtk_main_iteration();}void GtkView::display(String msg1, String msg2, bool isMsg, double pause){ GtkMessageWin* m; StringVector s; s.push_back(msg1); s.push_back(msg2); if(pause > 0) { m = new GtkMessageWin(s,(int)pause); } else { m = new GtkMessageWin(s); }}void GtkView::killWidget(Gtk_Widget* data){ data->delete_self();}int GtkView::killWidgetCallback(Gtk_Widget* data){ killWidget(data); return 0;}bool GtkView::getRecOn(){ return recOn;}void GtkView::setRecOn(bool on){ recOn = on;}void GtkView::setModel(GtkModel* m){ model = m;}gint GtkView::delete_event_impl(GdkEventAny *){ model->quitModel(); return 0;}void GtkView::speakWav(String wav){ speaker->playWav(wav);}void GtkView::killString(String* ptr){ delete ptr;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -