evas_object_show(disk);
evas_object_smart_callback_add(disk, "selected", _print_disk_info_cb, NULL);
+ disk = elm_diskselector_add(win);
+ ic = elm_icon_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_scale_set(ic, 1, 1);
+ elm_diskselector_item_append(disk, "머리스타일", ic, NULL, NULL);
+ elm_diskselector_item_append(disk, "プロが伝授する", NULL, NULL, NULL);
+ elm_diskselector_item_append(disk, "生上访要求政府", NULL, NULL, NULL);
+ elm_diskselector_item_append(disk, "English", NULL, NULL, NULL);
+ elm_diskselector_item_append(disk, "والشريعة", NULL, NULL, NULL);
+ elm_diskselector_item_append(disk, "עִבְרִית", NULL, NULL, NULL);
+ elm_diskselector_item_append(disk, "Grüßen", NULL, NULL, NULL);
+ elm_diskselector_round_set(disk, EINA_TRUE);
+ evas_object_size_hint_weight_set(disk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(disk, EVAS_HINT_FILL, 0.5);
+ elm_box_pack_end(bx, disk);
+ evas_object_show(disk);
+ evas_object_smart_callback_add(disk, "selected", _print_disk_info_cb, NULL);
+
// displayed item number setting example
disk = elm_diskselector_add(win);
elm_diskselector_display_item_num_set(disk, 5);
}
static int
+_count_letter(const char *str)
+{
+ int pos = 0;
+ int code = 0, chnum;
+
+ for (chnum = 0; ; chnum++)
+ {
+ pos = evas_string_char_next_get(str, pos, &code);
+ if (code == 0) break;
+ }
+ return chnum;
+}
+
+static int
_check_letter(const char *str, int length)
{
- int code = str[length];
-
- if (code == '\0')
- return length; // null string
- else if (((code >= 65) && (code <= 90)) || ((code >= 97) && (code <= 122)))
- return length; // alphabet
- else if ((48 <= code) && (code < 58))
- return length; // number
- else if (((33 <= code) && (code < 47)) || ((58 <= code) && (code < 64))
- || ((91 <= code) && (code < 96)) || ((123 <= code) && (code < 126)))
- return length; // special letter
- return length - 1;
+ int pos = 0;
+ int code = 0, chnum;
+
+ for (chnum = 0; ; chnum++)
+ {
+ if (chnum == length) break;
+ pos = evas_string_char_next_get(str, pos, &code);
+ if (code == 0) break;
+ }
+ return pos;
}
static Eina_Bool
if ((x + w <= ox) || (x >= ox + ow))
continue;
- len = eina_stringshare_strlen(it->label);
+ len = _count_letter(it->label);
+// // FIXME: len should be # of ut8f letters. ie count using utf8 string walk, not stringshare len
+// len = eina_stringshare_strlen(it->label);
if (x <= ox + 5)
edje_object_signal_emit(it->base.view, "elm,state,left_side",
"elm");
}
+ // if len is les that the limit len, skip anyway
if (len <= wd->len_side)
continue;
length = len - (int)(diff * steps / (ow / 3));
length = MAX(length, wd->len_side);
+ // limit string len to "length" ut8f chars
length = _check_letter(it->label, length);
+ // cut it off at byte mark returned form _check_letter
strncpy(buf, it->label, length);
buf[length] = '\0';
edje_object_part_text_set(it->base.view, "elm.text", buf);