reformating of custom char definition + more TODO
This commit is contained in:
+240
-232
@@ -129,7 +129,8 @@ static void MtxOrb_set_known_char (int car, int type);
|
|||||||
* End of what was in MtxOrb.h
|
* End of what was in MtxOrb.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int
|
// Very private function that clear internal definition.
|
||||||
|
static void
|
||||||
MtxOrb_clear_custom ()
|
MtxOrb_clear_custom ()
|
||||||
{
|
{
|
||||||
int pos;
|
int pos;
|
||||||
@@ -967,7 +968,10 @@ MtxOrb_hbar (int x, int y, int len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Might not work, bignum is untested... an untested with dynamic bar.
|
// TODO: Might not work, bignum is untested... an untested with dynamic bar.
|
||||||
|
//
|
||||||
|
// TODO: Rather than to use the hardware BigNum we should use software
|
||||||
|
// emulation, this will make it work simultaniously as hbar/vbar. GLU
|
||||||
|
//
|
||||||
/////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////
|
||||||
// Sets up for big numbers.
|
// Sets up for big numbers.
|
||||||
//
|
//
|
||||||
@@ -1026,13 +1030,13 @@ MtxOrb_num (int x, int num)
|
|||||||
//
|
//
|
||||||
// TODO: MtxOrb_set_char is doing the job "real-time" as oppose
|
// TODO: MtxOrb_set_char is doing the job "real-time" as oppose
|
||||||
// to at flush time. Call to this function should be done in flush
|
// to at flush time. Call to this function should be done in flush
|
||||||
// this mean in draw_frame.
|
// this mean in draw_frame. GLU
|
||||||
//
|
//
|
||||||
// TODO: _icon should not call this directly, this is why we define
|
// TODO: _icon should not call this directly, this is why we define
|
||||||
// so frequently the heartbeat custom char.
|
// so frequently the heartbeat custom char. GLU
|
||||||
//
|
//
|
||||||
// TODO: We make one 3 bytes write folowed by MtxOrb->cellhgt one byte
|
// TODO: We make one 3 bytes write folowed by MtxOrb->cellhgt one byte
|
||||||
// write. This should be done in one single write.
|
// write. This should be done in one single write. GLU
|
||||||
|
|
||||||
#define MAX_CUSTOM_CHARS 7
|
#define MAX_CUSTOM_CHARS 7
|
||||||
|
|
||||||
@@ -1073,8 +1077,8 @@ MtxOrb_set_char (int n, char *dat)
|
|||||||
// TODO (DONE): All the icon are now define at the end of the custom char
|
// TODO (DONE): All the icon are now define at the end of the custom char
|
||||||
// used for hbar/vbar. GLU
|
// used for hbar/vbar. GLU
|
||||||
//
|
//
|
||||||
// TODO: Don't make direct call to caracter definition if the caracter is
|
// TODO (DONE): Don't make direct call to caracter definition if the caracter is
|
||||||
// already defined.
|
// already defined. GLU
|
||||||
static void
|
static void
|
||||||
MtxOrb_icon (int which, char dest)
|
MtxOrb_icon (int which, char dest)
|
||||||
{
|
{
|
||||||
@@ -1186,6 +1190,10 @@ MtxOrb_draw_frame (char *dat)
|
|||||||
strncpy(old, dat, MtxOrb->wid * MtxOrb->hgt);
|
strncpy(old, dat, MtxOrb->wid * MtxOrb->hgt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Recover the code for I2C connectivity to MtxOrb
|
||||||
|
// and don't query the LCD if it does not support keypad.
|
||||||
|
// Otherwise crash of the LCD and/or I2C bus.
|
||||||
|
//
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
// returns one character from the keypad...
|
// returns one character from the keypad...
|
||||||
// (A-Z) on success, 0 on failure...
|
// (A-Z) on success, 0 on failure...
|
||||||
@@ -1389,231 +1397,231 @@ MtxOrb_set_known_char (int car, int type)
|
|||||||
{
|
{
|
||||||
char all_bar[25][5 * 8] = {
|
char all_bar[25][5 * 8] = {
|
||||||
{
|
{
|
||||||
0, 0, 0, 0, 0, // char u1[] =
|
0, 0, 0, 0, 0, // char u1[] =
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
}, {
|
}, {
|
||||||
0, 0, 0, 0, 0, // char u2[] =
|
0, 0, 0, 0, 0, // char u2[] =
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
}, {
|
}, {
|
||||||
0, 0, 0, 0, 0, // char u3[] =
|
0, 0, 0, 0, 0, // char u3[] =
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
}, {
|
}, {
|
||||||
0, 0, 0, 0, 0, // char u4[] =
|
0, 0, 0, 0, 0, // char u4[] =
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
}, {
|
}, {
|
||||||
0, 0, 0, 0, 0, // char u5[] =
|
0, 0, 0, 0, 0, // char u5[] =
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
}, {
|
}, {
|
||||||
0, 0, 0, 0, 0, // char u6[] =
|
0, 0, 0, 0, 0, // char u6[] =
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
}, {
|
}, {
|
||||||
0, 0, 0, 0, 0, // char u7[] =
|
0, 0, 0, 0, 0, // char u7[] =
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
}, {
|
}, {
|
||||||
1, 1, 1, 1, 1, // char d1[] =
|
1, 1, 1, 1, 1, // char d1[] =
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
}, {
|
}, {
|
||||||
1, 1, 1, 1, 1, // char d2[] =
|
1, 1, 1, 1, 1, // char d2[] =
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
}, {
|
}, {
|
||||||
1, 1, 1, 1, 1, // char d3[] =
|
1, 1, 1, 1, 1, // char d3[] =
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
}, {
|
}, {
|
||||||
1, 1, 1, 1, 1, // char d4[] =
|
1, 1, 1, 1, 1, // char d4[] =
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
}, {
|
}, {
|
||||||
1, 1, 1, 1, 1, // char d5[] =
|
1, 1, 1, 1, 1, // char d5[] =
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
}, {
|
}, {
|
||||||
1, 1, 1, 1, 1, // char d6[] =
|
1, 1, 1, 1, 1, // char d6[] =
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
}, {
|
}, {
|
||||||
1, 1, 1, 1, 1, // char d7[] =
|
1, 1, 1, 1, 1, // char d7[] =
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
}, {
|
}, {
|
||||||
1, 0, 0, 0, 0, // char r1[] =
|
1, 0, 0, 0, 0, // char r1[] =
|
||||||
1, 0, 0, 0, 0,
|
1, 0, 0, 0, 0,
|
||||||
1, 0, 0, 0, 0,
|
1, 0, 0, 0, 0,
|
||||||
1, 0, 0, 0, 0,
|
1, 0, 0, 0, 0,
|
||||||
1, 0, 0, 0, 0,
|
1, 0, 0, 0, 0,
|
||||||
1, 0, 0, 0, 0,
|
1, 0, 0, 0, 0,
|
||||||
1, 0, 0, 0, 0,
|
1, 0, 0, 0, 0,
|
||||||
1, 0, 0, 0, 0,
|
1, 0, 0, 0, 0,
|
||||||
}, {
|
}, {
|
||||||
1, 1, 0, 0, 0, // char r2[] =
|
1, 1, 0, 0, 0, // char r2[] =
|
||||||
1, 1, 0, 0, 0,
|
1, 1, 0, 0, 0,
|
||||||
1, 1, 0, 0, 0,
|
1, 1, 0, 0, 0,
|
||||||
1, 1, 0, 0, 0,
|
1, 1, 0, 0, 0,
|
||||||
1, 1, 0, 0, 0,
|
1, 1, 0, 0, 0,
|
||||||
1, 1, 0, 0, 0,
|
1, 1, 0, 0, 0,
|
||||||
1, 1, 0, 0, 0,
|
1, 1, 0, 0, 0,
|
||||||
1, 1, 0, 0, 0,
|
1, 1, 0, 0, 0,
|
||||||
}, {
|
}, {
|
||||||
1, 1, 1, 0, 0, // char r3[] =
|
1, 1, 1, 0, 0, // char r3[] =
|
||||||
1, 1, 1, 0, 0,
|
1, 1, 1, 0, 0,
|
||||||
1, 1, 1, 0, 0,
|
1, 1, 1, 0, 0,
|
||||||
1, 1, 1, 0, 0,
|
1, 1, 1, 0, 0,
|
||||||
1, 1, 1, 0, 0,
|
1, 1, 1, 0, 0,
|
||||||
1, 1, 1, 0, 0,
|
1, 1, 1, 0, 0,
|
||||||
1, 1, 1, 0, 0,
|
1, 1, 1, 0, 0,
|
||||||
1, 1, 1, 0, 0,
|
1, 1, 1, 0, 0,
|
||||||
}, {
|
}, {
|
||||||
1, 1, 1, 1, 0, // char r4[] =
|
1, 1, 1, 1, 0, // char r4[] =
|
||||||
1, 1, 1, 1, 0,
|
1, 1, 1, 1, 0,
|
||||||
1, 1, 1, 1, 0,
|
1, 1, 1, 1, 0,
|
||||||
1, 1, 1, 1, 0,
|
1, 1, 1, 1, 0,
|
||||||
1, 1, 1, 1, 0,
|
1, 1, 1, 1, 0,
|
||||||
1, 1, 1, 1, 0,
|
1, 1, 1, 1, 0,
|
||||||
1, 1, 1, 1, 0,
|
1, 1, 1, 1, 0,
|
||||||
1, 1, 1, 1, 0,
|
1, 1, 1, 1, 0,
|
||||||
}, {
|
}, {
|
||||||
0, 0, 0, 0, 1, // char l1[] =
|
0, 0, 0, 0, 1, // char l1[] =
|
||||||
0, 0, 0, 0, 1,
|
0, 0, 0, 0, 1,
|
||||||
0, 0, 0, 0, 1,
|
0, 0, 0, 0, 1,
|
||||||
0, 0, 0, 0, 1,
|
0, 0, 0, 0, 1,
|
||||||
0, 0, 0, 0, 1,
|
0, 0, 0, 0, 1,
|
||||||
0, 0, 0, 0, 1,
|
0, 0, 0, 0, 1,
|
||||||
0, 0, 0, 0, 1,
|
0, 0, 0, 0, 1,
|
||||||
0, 0, 0, 0, 1,
|
0, 0, 0, 0, 1,
|
||||||
}, {
|
}, {
|
||||||
0, 0, 0, 1, 1, // char l2[] =
|
0, 0, 0, 1, 1, // char l2[] =
|
||||||
0, 0, 0, 1, 1,
|
0, 0, 0, 1, 1,
|
||||||
0, 0, 0, 1, 1,
|
0, 0, 0, 1, 1,
|
||||||
0, 0, 0, 1, 1,
|
0, 0, 0, 1, 1,
|
||||||
0, 0, 0, 1, 1,
|
0, 0, 0, 1, 1,
|
||||||
0, 0, 0, 1, 1,
|
0, 0, 0, 1, 1,
|
||||||
0, 0, 0, 1, 1,
|
0, 0, 0, 1, 1,
|
||||||
0, 0, 0, 1, 1,
|
0, 0, 0, 1, 1,
|
||||||
}, {
|
}, {
|
||||||
0, 0, 1, 1, 1, // char l3[] =
|
0, 0, 1, 1, 1, // char l3[] =
|
||||||
0, 0, 1, 1, 1,
|
0, 0, 1, 1, 1,
|
||||||
0, 0, 1, 1, 1,
|
0, 0, 1, 1, 1,
|
||||||
0, 0, 1, 1, 1,
|
0, 0, 1, 1, 1,
|
||||||
0, 0, 1, 1, 1,
|
0, 0, 1, 1, 1,
|
||||||
0, 0, 1, 1, 1,
|
0, 0, 1, 1, 1,
|
||||||
0, 0, 1, 1, 1,
|
0, 0, 1, 1, 1,
|
||||||
0, 0, 1, 1, 1,
|
0, 0, 1, 1, 1,
|
||||||
}, {
|
}, {
|
||||||
0, 1, 1, 1, 1, // char l4[] =
|
0, 1, 1, 1, 1, // char l4[] =
|
||||||
0, 1, 1, 1, 1,
|
0, 1, 1, 1, 1,
|
||||||
0, 1, 1, 1, 1,
|
0, 1, 1, 1, 1,
|
||||||
0, 1, 1, 1, 1,
|
0, 1, 1, 1, 1,
|
||||||
0, 1, 1, 1, 1,
|
0, 1, 1, 1, 1,
|
||||||
0, 1, 1, 1, 1,
|
0, 1, 1, 1, 1,
|
||||||
0, 1, 1, 1, 1,
|
0, 1, 1, 1, 1,
|
||||||
0, 1, 1, 1, 1,
|
0, 1, 1, 1, 1,
|
||||||
}, {
|
}, {
|
||||||
1, 1, 1, 1, 1, // Empty Heart
|
1, 1, 1, 1, 1, // Empty Heart
|
||||||
1, 0, 1, 0, 1,
|
1, 0, 1, 0, 1,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
1, 0, 0, 0, 1,
|
1, 0, 0, 0, 1,
|
||||||
1, 1, 0, 1, 1,
|
1, 1, 0, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
}, {
|
}, {
|
||||||
1, 1, 1, 1, 1, // Filled Heart
|
1, 1, 1, 1, 1, // Filled Heart
|
||||||
1, 0, 1, 0, 1,
|
1, 0, 1, 0, 1,
|
||||||
0, 1, 0, 1, 0,
|
0, 1, 0, 1, 0,
|
||||||
0, 1, 1, 1, 0,
|
0, 1, 1, 1, 0,
|
||||||
0, 1, 1, 1, 0,
|
0, 1, 1, 1, 0,
|
||||||
1, 0, 1, 0, 1,
|
1, 0, 1, 0, 1,
|
||||||
1, 1, 0, 1, 1,
|
1, 1, 0, 1, 1,
|
||||||
1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1,
|
||||||
}, {
|
}, {
|
||||||
0, 0, 0, 0, 0, // Ellipsis
|
0, 0, 0, 0, 0, // Ellipsis
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0,
|
||||||
1, 0, 1, 0, 1,
|
1, 0, 1, 0, 1,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
MtxOrb_set_char (car, &all_bar[type][0]);
|
MtxOrb_set_char (car, &all_bar[type][0]);
|
||||||
|
|||||||
Reference in New Issue
Block a user