void Application::initQML() { /** A QML-Cpp kommunikációhoz használt QMLData obejktumokat létre kell * hozni a QML felület számára.*/ QMap<QString,QMLData>::iterator iter; for(iter = qmlDataMap.begin(); iter != qmlDataMap.end(); ++iter) { engine.rootContext()->setContextProperty(iter.key(), &iter.value()); } engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); auto rootObjects = engine.rootObjects(); if (rootObjects.size() == 0) { qWarning() << "HIBA: Nem sikerült létrehozni a QML környezetet."; } rootObject = rootObjects.first(); customPlotPtr = (QCustomPlot*)rootObject->findChild<QObject*>("customPlot"); auto mainWindowPtr = rootObject->findChild<QObject*>("MainWindow"); eventhandler.setMainWindowPtr(mainWindowPtr); QObject::connect(rootObject, SIGNAL(connectCommandCpp()), &eventhandler, SLOT(connectCommand())); QObject::connect(rootObject, SIGNAL(connectCommandCpp()), this, SLOT(connectToServer())); QObject::connect(rootObject, SIGNAL(hvEnableCommandCpp()), &eventhandler, SLOT(hvEnableCommand())); QObject::connect(rootObject, SIGNAL(hvEnableCommandCpp()), this, SLOT(hvenCommand())); QObject::connect(rootObject, SIGNAL(driveEnableCommandCpp()), &eventhandler, SLOT(driveEnableCommand())); QObject::connect(rootObject, SIGNAL(driveEnableCommandCpp()), this, SLOT(drenCommand())); QObject::connect(rootObject, SIGNAL(stopCommandCpp()), &eventhandler, SLOT(stopCommand())); QObject::connect(rootObject, SIGNAL(stopCommandCpp()), this, SLOT(stopCommand())); QObject::connect(rootObject, SIGNAL(testCommandCpp()), this, SLOT(testCommand())); QObject::connect(rootObject, SIGNAL(vdemandSliderChanged(QVariant )), this, SLOT(vdemandChanged(QVariant ))); }
/************************************************************************************************ handleComands() Arguments: myUser - struct with 'my' information saAddr - IP address of the SA saPortChar - port of SA Description: The messages typed by the user in the terminal are handled in this function. The commands permitted are join, leave, find, connect, message, disconnect, exit, lst. *************************************************************************************************/ int handleComands(user myUser, char * saAddr, char * saPortChar){ char command[256]; char * parseCommand; int retval, saPort, i=0; saPort = atoi(saPortChar); /*retrieves comand and stores to string command*/ memset(command, '\0', 256); fgets(command, 256, stdin); for(i = 0; i < 256; i++){ if(command[i] == '\n'){ parseCommand = (char *) malloc((i+2)*sizeof(char)); break; } if(command[i] == ' '){ parseCommand = (char *) malloc((i+2)*sizeof(char)); break; } } if(parseCommand == NULL){ printf("\n>Malloc on ParseCommand not succecefull\n"); fflush(stdout); free(parseCommand); exit(EXIT_FAILURE); } memset(parseCommand, '\0', (i+2)); retval = sscanf(command, "%s", parseCommand); if(retval != 1){ printf("\n>Error parsing command, please retry\n"); free(parseCommand); return 1; } /*Switch Commands*/ /*Join*/ if(strcmp("join", parseCommand) == 0){ if(joinCommand(myUser,saAddr, saPort) < 0){ fprintf(stderr, "Join Error"); free(parseCommand); exit(EXIT_FAILURE); } printf("\n>You have started a session\n"); inSession = 1; } /*Leave*/ else if(strcmp(parseCommand, "leave") == 0){ if(leaveCommand(myUser, saAddr, saPort) < 0){ fprintf(stderr, "\n>Leave Error>"); free(parseCommand); return 0; } terminateLeave(); inSession = 0; } else if(strcmp(parseCommand, "find") == 0){ if(findCommand(command, saAddr, saPort) < 0){ fprintf(stderr, "\n>Leave Error\n"); free(parseCommand); return 0; } } else if(strcmp(parseCommand, "connect") == 0){ if(connectCommand(command, saAddr, saPort) <= 0){ fprintf(stderr, "\n>connect Error\n"); free(parseCommand); return 0; } } else if(strcmp(parseCommand, "message") == 0){ if(chatCommand(command) <= 0){ fprintf(stderr, "\n>message Error\n"); free(parseCommand); return 0; } } else if(strcmp(parseCommand, "disconnect") == 0){ if(disconnectCommand() <= 0){ fprintf(stderr, "\n>disconnect Error\n"); free(parseCommand); return 0; } } /*Exit*/ else if(strcmp(parseCommand, "exit") == 0){ if(exitCommand() <= 0){ fprintf(stderr, "\n>Exit Error>"); free(parseCommand); return 0; } } else if(strcmp(parseCommand, "lst") == 0){ if(lst() < 0){ fprintf(stderr, "\n>lst Error>"); free(parseCommand); return 0; } } free(parseCommand); return 1; }
int commonInterface::runCommand(string command) { char commandStr[MAX_COMMAND_LEN]; memset(commandStr,0, MAX_COMMAND_LEN); sscanf(command.c_str(), "%s", commandStr); if(strlen(commandStr)<=0) return ERROR; string upperCaseCommand = commandStr; for(int i=0;i<upperCaseCommand.length();i++) { upperCaseCommand[i] = toupper(upperCaseCommand[i]); } if(strcmp(upperCaseCommand.c_str(), "CREATOR") == 0) { mWindow->displayCreator(); } else if(strcmp(upperCaseCommand.c_str(), "HELP") == 0) { mWindow->displayHelpMenu(); } else if(strcmp(upperCaseCommand.c_str(), "MYIP") == 0) { mWindow->displayMyIP(mMyIP); } else if(strcmp(upperCaseCommand.c_str(), "MYPORT") == 0) { mWindow->displayMyPort(mPort); } else if(strcmp(upperCaseCommand.c_str(), "REGISTER") == 0) { if(mMode == SERVER) { cout<<"\n Register command not available in server mode"<<endl; return true; } registerCommand(command); } else if(strcmp(upperCaseCommand.c_str(), "CONNECT") == 0) { connectCommand(command); return 1; } else if(strcmp(upperCaseCommand.c_str(), "LIST") == 0) { listCommand(); } else if(strcmp(upperCaseCommand.c_str(), "TERMINATE") == 0) { terminateCommand(command); } else if(strcmp(upperCaseCommand.c_str(), "EXIT") == 0) { exitCommand(); return EXIT_PROGRAM; } else if(strcmp(upperCaseCommand.c_str(), "UPLOAD") == 0) { uploadCommand(command); } else if(strcmp(upperCaseCommand.c_str(), "DOWNLOAD") == 0) { downloadCommand(command); } else if(strcmp(upperCaseCommand.c_str(), "STATISTICS") == 0) { statCommand(); } else { //Wrong command enter cout<<"\n Command not found. Please note the commands are case sensetive\n"; return ERROR; } }