⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sync_ui.cxx

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 CXX
📖 第 1 页 / 共 2 页
字号:
	abortButton->hide();	okButton->show();	first_app = true;	printf("STATE -> SYNC_WAIT\n");	pThis->syncState = SYNC_WAIT;	return;      }            printf("STATE -> SYNC_CONNECT\n");      pThis->syncState = SYNC_CONNECT;      break;    case SYNC_CONNECT:      break;                     case SYNC_START: {      char *service = pThis->get_next_app();      printf("~~~ SYNCING [%s] ~~~~\n", service);      if (service) {	pThis->sync(service);	printf("STATE -> SYNC_PENDING\n");	pThis->syncState = SYNC_PENDING;	break;      }      else {	sprintf(msg, "Synchronization complete");	statusMsg->value(msg);	printf("STATE -> SYNC_DISCONNECT\n");	pThis->syncState = SYNC_DISCONNECT;	abortButton->hide();	okButton->show();	first_app = true;	break;      }    }    case SYNC_EXE:      //if (pThis->msgState == SYNC_EXE)      pThis->send_update_status(pThis->cur_app);      timeout = 0.3;      return;    case SYNC_ERROR:      printf("ERROR! ERROR! ERROR!\n");      pThis->sync_error();      printf("STATE -> SYNC_DISCONNECT\n");      pThis->syncState = SYNC_DISCONNECT;      break;    case SYNC_ABORT:      printf("ABORT! ABORT! ABORT!\n");      pThis->sync_abort();      printf("STATE -> SYNC_DISCONNECT\n");      pThis->syncState = SYNC_DISCONNECT;      break;    case SYNC_DONE:      printf("STATE -> SYNC_START\n");      pThis->syncState = SYNC_START;  /* Start the next one */      break;    case SYNC_DISCONNECT:      printf("DISCONNECTING AGENT\n");      pThis->agent_disconnect();      printf("STATE -> SYNC_WAIT\n");      pThis->syncState = SYNC_WAIT;      return;    }    Fl::add_timeout(timeout, timer_callback);}intSync::begin_app(){    char *msg = new char[CL_MAX_MSG_LEN];    strcpy(msg,	   coder.BeginPimSync(((SyncData *) curNode->user_data())->nxAppName).	   c_str());    cur_app = ((SyncData *) curNode->user_data())->nxAppName;    DPRINT("begin_app [%s]\n", cur_app.c_str());    //int ret = Write_Fd(sync_id, msg, strlen(msg));    int ret = 100;    delete[]msg;    msg = 0;    return ret;}intSync::initiate_sync(){  printf("---- initiate_sync() ----\n");  int ret = 0;    ret = start_app();  if (ret <= 0) return -1;      DPRINT("initiate_sync() sync_id [%d]\n", sync_id);      char *msg = new char[CL_MAX_MSG_LEN];  sprintf(msg, "nxsync^INITIATE^0^");  ret = Write_Fd(sync_id, msg, strlen(msg));  if (ret < 0)     do_error("Unable to initiate sync!");  delete[]msg;  msg = 0;  printf(" ---- return %d ----\n", ret);  return ret;}intSync::start_sync(){  printf("---- start_sync() ----\n");  char *msg = new char[CL_MAX_MSG_LEN];  strcpy(msg,	 coder.BeginSync(((SyncData *) curNode->user_data())->nxAppName).	 c_str());    //msgState = SYNC_START;    int ret = Write_Fd(sync_id, msg, strlen(msg));  delete[]msg;  msg = 0;  return ret;}voidSync::sync(char *service){    char msg[255];    int ret = 0;    DPRINT("sync() [%s]\n", service);    if (first_app == false) {	first_app = true;	DPRINT("service [%s]\n", service);	statusMsg->value("Starting Synchronization");	statusMsg->redraw();	//statusSlider->value(0.0);	//statusSlider->redraw();	sprintf(msg, "Synchronizing %s",		((SyncData *) curNode->user_data())->appName);	ret = initiate_sync();	DPRINT("initiate_sync() ret [%d]\n", ret);	if (0 > ret) {	    return;	}	ret = start_sync();	if (0 != ret) {	    DPRINT("Unable to start!\n");	    do_error("Unable to start!");	    return;	};	statusMsg->value(msg);	statusMsg->redraw();	DPRINT("Fisrt app is FALSE\n");	begin_app();    } else {      //statusSlider->value(0.0);      //statusSlider->redraw();	sprintf(msg, "Synchronizing %s",		((SyncData *) curNode->user_data())->appName);	DPRINT("first_app is true\n");	ret = initiate_sync();	DPRINT("initiate_sync() ret [%d]\n", ret);	if (0 > ret) {	    return;	}	ret = start_sync();	if (0 != ret) {	    DPRINT("Unable to start sync!\n");	    do_error("Unable to start sync!");	    return;	};	begin_app();    }}voidSync::sync_abort(){    string msg = coder.Abort();    Write_Fd(sync_id, (char *) msg.c_str(), msg.length());}voidSync::sync_error(){    // recover from error    DPRINT("need to send error to sync agent\n");}intSync::send_update_status(string app_id){    static double s_value = 0;    s_value += 10;    //statusSlider->value(s_value);    if (s_value >= 100)	s_value = 0;    //statusSlider->redraw();}voidSync::update_error(vector < string > &vmessages){    DPRINT("should do update_error!\n");}voidSync::get_update_status(vector < string > &vmessages){    DPRINT("Get Update Status start\n");    //get sync status    double value = 0;    static double slider_value = 0;    string svalue;    char msg[CL_MAX_MSG_LEN];    svalue = vmessages[2];    value = strtod(svalue.c_str(), NULL);    DPRINT("Set value to [%s]\n", svalue.c_str());    slider_value += 25;    //statusSlider->value(slider_value);    if (slider_value >= 100)	slider_value = 0;    //statusSlider->redraw();    if (value >= 100) {	DPRINT("Set syncState SYNC_DONE\n");	//statusSlider->value(value);	//statusSlider->redraw();	printf("STATE -> SYNC_DONE\n");	syncState = SYNC_DONE;	//msgState = SYNC_DONE;	sprintf(msg, "%s Synchronization Complete",		((SyncData *) curNode->user_data())->appName);	statusMsg->value(msg);	//strcpy(msg, coder.EndSync(((SyncData*)curNode->user_data())->nxAppName).c_str());	//ret = Write_Fd(sync_id, msg, strlen(msg));    }}intSync::start_app(){  printf("---- start_app() ----\n");  string msg;    msg = "Synchronizing ";  msg.append(((SyncData *) curNode->user_data())->appName);    statusMsg->value(msg.c_str());  sync_id = StartApp(((SyncData *) curNode->user_data())->nxAppName, 0, 2);  DPRINT("start_app() sync_id [%d]\n", sync_id);    if (sync_id < 0) {    msg = "Unable to start ";    msg.append(((SyncData *) curNode->user_data())->appName);    do_error(msg);  }   printf("---- return %d ----\n", sync_id);  return sync_id;}char *Sync::get_next_app(){    if (NULL == curNode)	curNode = syncTree->traverse_start();    else	curNode = syncTree->traverse_forward();    while (curNode) {	if (true == ((SyncData *) curNode->user_data())->appSync)	    return ((SyncData *) curNode->user_data())->nxAppName;	else	    curNode = syncTree->traverse_forward();    }    return NULL;}voidSync::checkIt_callback(Fl_Widget * fl, void *l){    Fl_Toggle_Node *node = syncTree->selected();    if (node) {	if ((Fl::event_x() >= 17) && (Fl::event_x() <= 29)) {	    syncTree->unselect();	    if (node->pixmap() == echeckPixmap) {		((SyncData *) node->user_data())->appSync = true;		node->pixmap(checkPixmap);	    } else if (node->pixmap() == checkPixmap) {		((SyncData *) node->user_data())->appSync = false;		node->pixmap(echeckPixmap);	    }	}    }    if (syncTree->selection_count() > 0)	syncTree->unselect();}voidSync::exit_callback(Fl_Widget * fl, void *l){    mainWindow->hide();    exit(0);}Fl_Window *Sync::get_main_window(){    if (mainWindow)	return mainWindow;    else	return 0;}voidSync::show_default_window(){    show_window(syncWindow->GetWindowPtr());}voidSync::do_error(string err){  if (err.c_str())     statusMsg->value(err.c_str());    statusMsg->redraw();  abortButton->do_callback();  printf("STATE -> SYNC_ERROR\n");  syncState = SYNC_ERROR;    first_app = false;}voidSync::do_abort(void){  printf("**** ABORTING ****\n");  statusMsg->value("Synchronization aborted");  statusMsg->redraw();  abortButton->do_callback();  printf("STATE -> SYNC_ABORT\n");  syncState = SYNC_ABORT;  first_app = false;}voidSync::add_apps(Fl_Toggle_Tree * syncTree){    int size;    int count, i;    db_handle *db;    char *searchList, *l;    db = db_openDB(db_getDefaultDB(), PAR_DB_MODE_RDONLY);    if (!db) {	printf("Error - Couldn't open the par database %s\n",	       db_getDefaultDB());	return;    }    //FIXME this may need to be changed!    size = par_getCapability(db, "nxsync", (void **) &searchList);    if (size <= 0) {	db_closeDB(db);	return;    }    count = par_getStringListCount(searchList, ' ');    l = searchList;    for (i = 0; i < count; i++) {	Fl_Toggle_Node *appNode;	char title[50];	char *application = par_parseStringList(&l, ' ');	if (par_getAppTitle(db, application, title, sizeof(title)) <= 0)	    continue;	appNode = syncTree->add_next(title, 0, echeckPixmap);	if (appNode) {	    SyncData *data = new SyncData;	    strcpy(data->appName, title);	    strcpy(data->nxAppName, application);	    data->appSync = false;	    appNode->user_data(data);	    syncTree->traverse_up();	}    }    db_closeDB(db);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -