#include "text.h"
#include "container.h"
#include "../common/context.h"
#include "../common/document.h"
UIWIDGET ui_textarea(UiObject *obj, UiText *value) {
QTextDocument *txtdoc = value && value->obj ? (QTextDocument*)value->obj : new QTextDocument();
if(value) {
if(value->value && value->obj) {
QString str = QString::fromUtf8(value->value);
txtdoc->setPlainText(str);
}
value->get = ui_textarea_get;
value->set = ui_textarea_set;
value->getsubstr = ui_textarea_getsubstr;
value->insert = ui_textarea_insert;
value->setposition = ui_textarea_setposition;
value->position = ui_textarea_position;
value->selection = ui_textarea_selection;
value->length = ui_textarea_length;
value->remove = ui_textarea_remove;
value->obj = txtdoc;
value->value =
NULL;
}
UiContainer *ct = uic_get_current_container(obj);
QTextEdit *textedit = new QTextEdit();
textedit->setDocument(txtdoc);
ct->add(textedit, true);
return textedit;
}
UIWIDGET ui_textarea_nv(UiObject *obj,
char *varname) {
UiVar *var = uic_connect_var(obj->ctx, varname,
UI_VAR_TEXT);
if(var) {
UiText *value = (UiText*)var->value;
return ui_textarea(obj, value);
}
else {
}
return NULL;
}
char* ui_textarea_get(UiText *text) {
if(text->value) {
free(text->value);
}
QTextDocument *doc = (QTextDocument*)text->obj;
QString str = doc->toPlainText();
QByteArray array = str.toLocal8Bit();
const char *cstr = array.constData();
if(text->value) {
free(text->value);
}
text->value = strdup(cstr);
return text->value;
}
void ui_textarea_set(UiText *text,
char *str) {
QTextDocument *doc = (QTextDocument*)text->obj;
QString qstr = QString::fromUtf8(str);
doc->setPlainText(qstr);
if(text->value) {
free(text->value);
}
text->value =
NULL;
}
char* ui_textarea_getsubstr(UiText *text,
int begin,
int end) {
QTextDocument *doc = (QTextDocument*)text->obj;
return NULL;
}
void ui_textarea_insert(UiText *text,
int pos,
char *str) {
QTextDocument *doc = (QTextDocument*)text->obj;
}
void ui_textarea_setposition(UiText *text,
int pos) {
}
int ui_textarea_position(UiText *text) {
QTextDocument *doc = (QTextDocument*)text->obj;
return 0;
}
void ui_textarea_selection(UiText *text,
int *begin,
int *end) {
QTextDocument *doc = (QTextDocument*)text->obj;
}
int ui_textarea_length(UiText *text) {
QTextDocument *doc = (QTextDocument*)text->obj;
return 0;
}
void ui_textarea_remove(UiText *text,
int begin,
int end) {
QTextDocument *doc = (QTextDocument*)text->obj;
}
UIWIDGET ui_textfield(UiObject *obj, UiString *value) {
QLineEdit *textfield = new QLineEdit();
UiContainer *ct = uic_get_current_container(obj);
ct->add(textfield, false);
if(value) {
if(value->value) {
QString str = QString::fromUtf8(value->value);
textfield->setText(str);
free(value->value);
value->value =
NULL;
}
value->set = ui_textfield_set;
value->get = ui_textfield_get;
value->obj = textfield;
}
return textfield;
}
UIWIDGET ui_textfield_nv(UiObject *obj,
char *varname) {
UiVar *var = uic_connect_var(obj->ctx, varname,
UI_VAR_STRING);
if(var) {
UiString *value = (UiString*)var->value;
return ui_textfield(obj, value);
}
else {
}
return NULL;
}
char* ui_textfield_get(UiString *str) {
QLineEdit *textfield = (QLineEdit*)str->obj;
QString qstr = textfield->text();
if(str->value) {
free(str->value);
}
QByteArray array = qstr.toLocal8Bit();
const char *cstr = array.constData();
str->value = strdup(cstr);
return str->value;
}
void ui_textfield_set(UiString *str,
char *value) {
QLineEdit *textfield = (QLineEdit*)str->obj;
QString qstr = QString::fromUtf8(value);
textfield->setText(qstr);
if(str->value) {
free(str->value);
}
str->value =
NULL;
}