////////////////////////////////////////////////// // Blabber [GenericFunctions.cpp] ////////////////////////////////////////////////// #ifndef GENERIC_FUNCTIONS_H #include "GenericFunctions.h" #endif #ifndef __CSTDIO__ #include #endif #ifndef __CSTDLIB__ #include #endif #ifndef _UNI_STD_H #include #endif #ifndef __STRING__ #include #endif #ifndef _RECT_H #include #endif #ifndef _SCREEN_H #include #endif BRect GenericFunctions::CenteredFrame(float window_width, float window_height) { // position return rectangle based on screen coordinates BScreen screen; float screen_width = screen.Frame().Width(); float screen_height = screen.Frame().Height(); float frame_width = screen_width - window_width; float frame_height = screen_height - window_height; float frame_start_x = frame_width / 2; float frame_start_y = frame_height / 2; float frame_end_x = frame_start_x + window_width; float frame_end_y = frame_start_y + window_height; // assemble window frame size return BRect(frame_start_x, frame_start_y, frame_end_x, frame_end_y); } std::string GenericFunctions::TimeStamp() { // get current time in seconds time_t t = time(NULL); // format time std::string time_string = ctime(&t); // chop off trailing newline if (time_string[time_string.size() - 1] == '\n') { time_string.erase(time_string.size() - 1); } return time_string; } std::string GenericFunctions::GenerateNick(std::string username) { std::string nick = username; // strip out everything after @ std::string::size_type at_pos = nick.find("@"); if (at_pos != std::string::npos) { nick = nick.substr(0, at_pos); } return nick; } std::string GenericFunctions::CrushOutWhitespace(std::string text) { std::string::size_type pos; while(text.find(" ") != std::string::npos) { pos = text.find(" "); text.erase(pos, 1); } while(text.find("\t") != std::string::npos) { pos = text.find("\t"); text.erase(pos, 1); } while(text.find("\r") != std::string::npos) { pos = text.find("\r"); text.erase(pos, 1); } while(text.find("\n") != std::string::npos) { pos = text.find("\n"); text.erase(pos, 1); } return text; } int GenericFunctions::SeparateGroupSpecifiers(std::string text, std::string &room, std::string &server, std::string &user) { // separate room and server std::string::size_type at_pos = text.find("@"); if (at_pos != std::string::npos) { // get group room room = text.substr(0, at_pos); // clear out text text = text.substr(at_pos + 1); // now pare out server and username std::string::size_type slash_pos = text.find("/"); if (slash_pos != std::string::npos) { // get server server = text.substr(0, slash_pos); // clear out text user = text.substr(slash_pos + 1); return 3; } else { // get server server = text.substr(0, slash_pos); return 2; } } else { return 0; } }