From adbec94559a01024de93113f18e745ee9397582e Mon Sep 17 00:00:00 2001 From: Nekobit Date: Tue, 19 Sep 2023 22:54:52 -0400 Subject: [PATCH] Display some "statuses" --- src/etc.c | 15 +++++++++++ src/etc.h | 8 ++++++ src/exc_types.h | 14 ++++++++++ src/main.c | 31 ++++++++++++++++++--- src/meson.build | 2 ++ src/status.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++ src/status.h | 8 ++++++ 7 files changed, 145 insertions(+), 4 deletions(-) create mode 100644 src/etc.c create mode 100644 src/exc_types.h create mode 100644 src/status.c create mode 100644 src/status.h diff --git a/src/etc.c b/src/etc.c new file mode 100644 index 0000000..e2e907f --- /dev/null +++ b/src/etc.c @@ -0,0 +1,15 @@ +#include "etc.h" + +Evas_Object* +E_SHOW(Evas_Object* obj) +{ + evas_object_show(obj); + return obj; +} + +void +evas_object_fullsize(Evas_Object* obj) +{ + evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set (obj, EVAS_HINT_FILL, EVAS_HINT_FILL); +} diff --git a/src/etc.h b/src/etc.h index 6c45dd3..c86cda7 100644 --- a/src/etc.h +++ b/src/etc.h @@ -1,5 +1,7 @@ #ifndef ETC_H #define ETC_H +#include +#include "../exclaim_config.h" #define _E_COMMENT(...) do { \ switch ((uintptr_t)__VA_ARGS__) \ @@ -9,4 +11,10 @@ #define E_BEGIN _E_COMMENT #define E_END _E_COMMENT +Evas_Object* +E_SHOW(Evas_Object* obj); + +void +evas_object_fullsize(Evas_Object* obj); + #endif // ETC_H diff --git a/src/exc_types.h b/src/exc_types.h new file mode 100644 index 0000000..839e058 --- /dev/null +++ b/src/exc_types.h @@ -0,0 +1,14 @@ +#ifndef EXC_TYPES_H +#define EXC_TYPES_H + +struct exc_acct +{ +}; + +struct exc_status +{ + char* title; + char* body; +}; + +#endif // EXC_TYPES_H diff --git a/src/main.c b/src/main.c index 4139b79..e0a21d1 100644 --- a/src/main.c +++ b/src/main.c @@ -2,6 +2,7 @@ #include #include "../exclaim_config.h" #include "etc.h" +#include "status.h" EAPI_MAIN int elm_main(int argc, char** argv) @@ -14,11 +15,33 @@ elm_main(int argc, char** argv) Evas_Object* win = elm_win_util_standard_add("exclaim_root", "Exclaim"); E_BEGIN(win); - elm_win_icon_name_set(win, "email-unread"); - elm_win_autodel_set(win, EINA_TRUE); + elm_win_icon_name_set(win, "email-unread"); + elm_win_autodel_set(win, EINA_TRUE); + + Evas_Object* status_scr = E_SHOW(elm_scroller_add(win)); + E_BEGIN(status_scr); + evas_object_fullsize(status_scr); + + Evas_Object* status_content = E_SHOW(elm_box_add(status_scr)); + E_BEGIN(status_content); + evas_object_fullsize(status_content); + elm_object_content_set(status_scr, status_content); + + for (int i = 0; i < 30; ++i) + { + struct exc_status st_test = { + .title = "wow", + }; + Evas_Object* status = E_SHOW(exc_status_add(status_content, st_test)); + + elm_box_pack_end(status_content, status); + } + E_END(status_content); + E_END(status_scr); - evas_object_resize(win, ELM_SCALE_SIZE(700), ELM_SCALE_SIZE(300)); - evas_object_show(win); + evas_object_resize(win, ELM_SCALE_SIZE(700), ELM_SCALE_SIZE(300)); + elm_win_resize_object_add(win, status_scr); + E_SHOW(win); E_END(win); elm_run(); diff --git a/src/meson.build b/src/meson.build index caacc39..58f4db6 100644 --- a/src/meson.build +++ b/src/meson.build @@ -2,6 +2,8 @@ dir = join_paths(dir_bin) inc = include_directories('.') executable('exclaim', [ 'main.c', + 'status.c', + 'etc.c', ], include_directories: inc, dependencies: deps, diff --git a/src/status.c b/src/status.c new file mode 100644 index 0000000..f0a0c19 --- /dev/null +++ b/src/status.c @@ -0,0 +1,71 @@ +#include +#include "status.h" +#include "etc.h" + +#define PFP_ICON_SIZE 48 + +Evas_Object* +exc_status_add(Evas_Object* parent, struct exc_status status) +{ + Evas_Object* st_frame = elm_frame_add(parent); + E_BEGIN(st_frame); + evas_object_size_hint_padding_set(st_frame, 3, 3, 3, 3); + //evas_object_size_hint_min_set(st_frame, 300, 300); + + Evas_Object* st_box = E_SHOW(elm_box_add(st_frame)); + E_BEGIN(st_box); + //evas_object_size_hint_min_set(st_box, 300, 300); + //evas_object_size_hint_weight_set(st_box, 300, 300); + elm_box_horizontal_set(st_box, EINA_TRUE); + + // Add pfp icon + Evas_Object* st_icon = E_SHOW(elm_icon_add(st_box)); + E_BEGIN(st_icon); + evas_object_size_hint_align_set(st_icon, 0.5, 0.0); + evas_object_size_hint_min_set(st_icon, PFP_ICON_SIZE, PFP_ICON_SIZE); + evas_object_size_hint_max_set(st_icon, PFP_ICON_SIZE, PFP_ICON_SIZE); + evas_object_size_hint_padding_set(st_icon, 3, 5, 3, 3); + elm_icon_standard_set(st_icon, "minetest"); + elm_box_pack_end(st_box, st_icon); + E_END(st_icon); + + Evas_Object* st_box_rt = E_SHOW(elm_box_add(st_box)); + E_BEGIN(st_box_rt); + evas_object_size_hint_align_set(st_box_rt, 0.5, 0.0); + + Evas_Object* st_box_rt_info = E_SHOW(elm_box_add(st_box_rt)); + E_BEGIN(st_box_rt_info); + elm_box_horizontal_set(st_box_rt_info, EINA_TRUE); + evas_object_size_hint_padding_set(st_box_rt_info, 3, 3, 3, 3); + Evas_Object* st_username = E_SHOW(elm_label_add(st_box)); + E_BEGIN(st_username); + elm_object_text_set(st_username, "Status"); + + elm_box_pack_end(st_box_rt_info, st_username); + E_END(st_username); + + elm_box_pack_end(st_box_rt, st_box_rt_info); + E_END(st_box_rt_info); + + Evas_Object* st_content = E_SHOW(elm_entry_add(st_box)); + E_BEGIN(st_content); + elm_object_text_set(st_username, "Status"); + + evas_object_size_hint_min_set(st_content, 300, 300); + + //evas_object_size_hint_weight_set(st_content + + elm_entry_editable_set(st_content, EINA_FALSE); + elm_object_text_set(st_content, "Lol, lmao. LOL even"); + elm_box_pack_end(st_box_rt, st_content); + E_END(st_content); + + elm_box_pack_end(st_box, st_box_rt); + E_BEGIN(st_box_rt); + + elm_object_content_set(st_frame, st_box); + E_END(st_box); + + E_END(st_frame); + return st_frame; +} diff --git a/src/status.h b/src/status.h new file mode 100644 index 0000000..460c7fb --- /dev/null +++ b/src/status.h @@ -0,0 +1,8 @@ +#ifndef STATUS_H +#define STATUS_H +#include "exc_types.h" + +Evas_Object* +exc_status_add(Evas_Object* parent, struct exc_status status); + +#endif // STATUS_H