/*virtual*/ void gui_filterbar_c::created() { set_theme_rect(CONSTASTR("filter"), false); filtereditheight = gui->theme().conf().get_int(CONSTASTR("filtereditheight"), 25); if (prf().get_options().is(UIOPT_SHOW_SEARCH_BAR)) { gui_textfield_c &e = (MAKE_CHILD<gui_textfield_c>(getrid(), L"", MAX_PATH, 0, false) << (gui_textedit_c::TEXTCHECKFUNC)DELEGATE(this, update_filter)); edit = &e; e.set_placeholder(TOOLTIP(TTT("Search", 277)), get_default_text_color(COL_PLACEHOLDER)); e.register_kbd_callback(DELEGATE(this, cancel_filter), SSK_ESC, false); } if (prf().get_options().is(UIOPT_TAGFILETR_BAR)) { fill_tags(); } search_in_messages = prf().is_loaded() && prf().get_options().is(MSGOP_FULL_SEARCH); if (!is_all()) refresh_list(); __super::created(); }
void gui_filterbar_c::show_options(bool show) { if (show && option1 != nullptr) return; if (!show && option1 == nullptr) return; if (show) { int tag = gui->get_free_tag(); gui_button_c &o1 = MAKE_VISIBLE_CHILD<gui_button_c>(getrid()); o1.set_check(tag); o1.set_handler(DELEGATE(this, option_handler), as_param(1)); o1.set_face_getter(BUTTON_FACE(check)); o1.set_text(TTT("Search in messages",337)); if (search_in_messages) o1.mark(); option1 = &o1; } else { TSDEL( option1 ); } HOLD( getparent() ).as<gui_contactlist_c>().update_filter_pos(); }
void pingpong(int n) { int i; unsigned int s; struct timeval tv; mfile *m = mfins(MFSEND); mping *p = NULL; char buff[MAKUO_HOSTNAME_MAX + 1]; if(!m){ lprintf(0, "[error] %s: out of memmory\r\n", __func__); return; } m->mdata.head.reqid = getrid(); m->mdata.head.seqno = 0; m->mdata.head.szdata = 0; m->sendwait = 0; if(gethostname(buff, sizeof(buff)) == -1){ buff[0] = 0; } p = (mping *)(m->mdata.data); p->hostnamelen = strlen(buff); p->versionlen = strlen(PACKAGE_VERSION); m->mdata.head.szdata = sizeof(mping) + p->hostnamelen + p->versionlen; m->mdata.p = p->data; memcpy(m->mdata.p, buff, p->hostnamelen); m->mdata.p += p->hostnamelen; memcpy(m->mdata.p, PACKAGE_VERSION, p->versionlen); m->mdata.p += p->versionlen; p->hostnamelen = htons(p->hostnamelen); p->versionlen = htons(p->versionlen); gettimeofday(&lastpong, NULL); switch(n){ case 0: for(i=0;buff[i];i++){ s += buff[i]; } gettimeofday(&tv,NULL); s += tv.tv_usec; srand(s); m->mdata.head.opcode = MAKUO_OP_PING; break; case 1: m->mdata.head.opcode = MAKUO_OP_PING; m->mdata.head.flags |= MAKUO_FLAG_ACK; break; case 2: m->mdata.head.opcode = MAKUO_OP_EXIT; msend(m); break; } }
void gui_filterbar_c::ctx_rename_tag(const ts::str_c &tis) { int ti = tis.as_int(); ts::wstr_c hint = TTT("Rename tag $", 218) / ts::wstr_c(CONSTWSTR("<b>")).append(tagname(ti)).append(CONSTWSTR("</b>")); if (ti < BIT_count) hint.append(CONSTWSTR("<br>")).append( TTT("Empty - set default",249) ); SUMMON_DIALOG<dialog_entertext_c>(UD_RENTAG, dialog_entertext_c::params( UD_RENTAG, gui_isodialog_c::title(title_rentag), hint, tagname(ti), tis, DELEGATE(this, renamed), nullptr, ti < BIT_count ? check_always_ok : check_always_ok_except_empty, getrid())); }
static void msend_req_del_stat_read(int s, mfile *m) { int r; mfile *d; uint16_t len; for(d=mftop[MFSEND];d;d=d->next){ if(d->link == m){ if(d->mdata.head.nstate == MAKUO_SENDSTATE_WAIT){ break; } } } if(!d){ d = mkreq(&(m->mdata), &(m->addr), MAKUO_SENDSTATE_WAIT); d->mdata.head.flags = m->mdata.head.flags; d->mdata.head.reqid = getrid(); d->initstate = 1; d->sendwait = 0; d->sendto = 1; d->dryrun = m->dryrun; d->recurs = m->recurs; d->link = m; d->mdata.p = d->mdata.data; } if(m->len >= sizeof(m->mod)){ len = m->len - sizeof(m->mod); data_safeset16(&(d->mdata), m->len); data_safeset32(&(d->mdata), m->mod); data_safeset(&(d->mdata), m->tn, len); m->len = 0; } while(1){ if((r = atomic_read(m->pipe, &(m->len), sizeof(m->len), 1))){ if(r == -1){ if(errno == EAGAIN){ return; }else{ lprintf(0, "[error] %s: length read error\n", __func__); } } break; } if(m->len <= sizeof(m->mod)){ lprintf(0, "[error] %s: length error\n", __func__); break; } len = m->len - sizeof(m->mod); if(atomic_read(m->pipe, &(m->mod), sizeof(m->mod), 0)){ lprintf(0, "[error] %s: filemode read error\n", __func__); break; } if(atomic_read(m->pipe, m->tn, len, 0)){ lprintf(0, "[error] %s: filename read error\n", __func__); break; } m->tn[len] = 0; if(lstat(m->tn, &(m->fs)) == -1){ if(errno == ENOENT){ m->len = 0; continue; } } if(msend_req_del_stat_read_pathcmp(s, m)){ m->len = 0; continue; } if(d->mdata.head.szdata + sizeof(m->len) + m->len > MAKUO_BUFFER_SIZE){ d->mdata.head.nstate = MAKUO_SENDSTATE_OPEN; }else{ strcpy(d->fn, m->tn); data_safeset16(&(d->mdata), m->len); data_safeset32(&(d->mdata), m->mod); data_safeset(&(d->mdata), m->tn, len); m->len = 0; } return; } d->mdata.head.nstate = MAKUO_SENDSTATE_OPEN; close(m->pipe); m->pipe = -1; m->initstate = 1; m->sendwait = 0; }
/*virtual*/ bool gui_filterbar_c::sq_evt(system_query_e qp, RID rid, evt_data_s &data) { switch(qp) { case SQ_RECT_CHANGED: { ts::irect cla = get_client_area(); fake_margin.x = 5; fake_margin.y = 0; if (prf().get_options().is(UIOPT_TAGFILETR_BAR)) { if (!textrect.get_text().is_empty()) { ts::ivec2 sz = textrect.calc_text_size(cla.width() - 10, custom_tag_parser_delegate()); sz.y += 3; textrect.set_size(sz); } } if (edit) { MODIFY(*edit).pos(cla.lt).size(cla.width(), filtereditheight); fake_margin.y += filtereditheight; } if (option1) { int omy = option1->get_min_size().y; MODIFY( *option1 ).pos( cla.lt + ts::ivec2(0,filtereditheight) ).size( cla.width(), omy ); fake_margin.y += omy; } } return true; case SQ_MOUSE_LUP: if (overlink == clicklink && clicklink >= 0) do_tag_click(clicklink); clicklink = -1; break; case SQ_MOUSE_LDOWN: if (overlink >= 0) clicklink = overlink; break; case SQ_MOUSE_RUP: if (overlink == rclicklink && rclicklink >= 0) do_tag_rclick(rclicklink); rclicklink = -1; break; case SQ_MOUSE_RDOWN: if (overlink >= 0) rclicklink = overlink; break; case SQ_DRAW: if (rid == getrid()) { if (prf().get_options().is(UIOPT_TAGFILETR_BAR)) { ts::irect ca = get_client_area(); draw_data_s &dd = getengine().begin_draw(); dd.offset += ca.lt; dd.offset.x += 5; dd.size = ca.size(); dd.size.x -= 10; if (edit) dd.offset.y += edit->getprops().size().y; if (option1) dd.offset.y += option1->get_min_size().y; text_draw_params_s tdp; tdp.rectupdate = updaterect; draw(dd, tdp); getengine().end_draw(); } return gui_control_c::sq_evt(qp,rid,data); } break; } return __super::sq_evt(qp,rid,data); }