mirror of
https://github.com/djcb/mu.git
synced 2024-06-29 07:51:04 +02:00
* mu-flags: add MU_FLAG_LIST, clean-up code a bit
This commit is contained in:
parent
81eeff1c13
commit
81c3e11c48
100
lib/mu-flags.c
100
lib/mu-flags.c
|
@ -45,51 +45,38 @@ static const FlagInfo FLAG_INFO[] = {
|
||||||
{ MU_FLAG_SIGNED, 'z', "signed", MU_FLAG_TYPE_CONTENT },
|
{ MU_FLAG_SIGNED, 'z', "signed", MU_FLAG_TYPE_CONTENT },
|
||||||
{ MU_FLAG_ENCRYPTED, 'x', "encrypted", MU_FLAG_TYPE_CONTENT },
|
{ MU_FLAG_ENCRYPTED, 'x', "encrypted", MU_FLAG_TYPE_CONTENT },
|
||||||
{ MU_FLAG_HAS_ATTACH, 'a', "attach", MU_FLAG_TYPE_CONTENT },
|
{ MU_FLAG_HAS_ATTACH, 'a', "attach", MU_FLAG_TYPE_CONTENT },
|
||||||
|
{ MU_FLAG_LIST, 'l', "list", MU_FLAG_TYPE_CONTENT },
|
||||||
|
|
||||||
|
|
||||||
{ MU_FLAG_UNREAD, 'u', "unread", MU_FLAG_TYPE_PSEUDO }
|
{ MU_FLAG_UNREAD, 'u', "unread", MU_FLAG_TYPE_PSEUDO }
|
||||||
};
|
};
|
||||||
|
|
||||||
/* does not use FLAG_INFO, optimized */
|
|
||||||
MuFlagType
|
MuFlagType
|
||||||
mu_flag_type (MuFlags flag)
|
mu_flag_type (MuFlags flag)
|
||||||
{
|
{
|
||||||
if (flag >= MU_FLAG_DRAFT && flag <= MU_FLAG_TRASHED)
|
unsigned u;
|
||||||
return MU_FLAG_TYPE_MAILFILE;
|
|
||||||
if (flag == MU_FLAG_NEW)
|
|
||||||
return MU_FLAG_TYPE_MAILDIR;
|
|
||||||
if (flag == MU_FLAG_UNREAD)
|
|
||||||
return MU_FLAG_TYPE_PSEUDO;
|
|
||||||
if (flag >= MU_FLAG_SIGNED && flag <= MU_FLAG_HAS_ATTACH)
|
|
||||||
return MU_FLAG_TYPE_CONTENT;
|
|
||||||
|
|
||||||
|
for (u = 0; u != G_N_ELEMENTS (FLAG_INFO); ++u)
|
||||||
|
if (FLAG_INFO[u].flag == flag)
|
||||||
|
return FLAG_INFO[u].flag_type;
|
||||||
|
|
||||||
|
g_warning ("%s: invalid flag %u", __FUNCTION__, flag);
|
||||||
return MU_FLAG_TYPE_INVALID;
|
return MU_FLAG_TYPE_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* does not use FLAG_INFO, optimized */
|
|
||||||
char
|
char
|
||||||
mu_flag_char (MuFlags flag)
|
mu_flag_char (MuFlags flag)
|
||||||
{
|
{
|
||||||
switch (flag) {
|
unsigned u;
|
||||||
|
|
||||||
case MU_FLAG_DRAFT: return 'D';
|
for (u = 0; u != G_N_ELEMENTS (FLAG_INFO); ++u)
|
||||||
case MU_FLAG_FLAGGED: return 'F';
|
if (FLAG_INFO[u].flag == flag)
|
||||||
case MU_FLAG_PASSED: return 'P';
|
return FLAG_INFO[u].kar;
|
||||||
case MU_FLAG_REPLIED: return 'R';
|
|
||||||
case MU_FLAG_SEEN: return 'S';
|
|
||||||
case MU_FLAG_TRASHED: return 'T';
|
|
||||||
|
|
||||||
case MU_FLAG_NEW: return 'N';
|
g_warning ("%s: invalid flag %u", __FUNCTION__, flag);
|
||||||
|
return 0;
|
||||||
case MU_FLAG_SIGNED: return 'z';
|
|
||||||
case MU_FLAG_ENCRYPTED: return 'x';
|
|
||||||
case MU_FLAG_HAS_ATTACH: return 'a';
|
|
||||||
|
|
||||||
case MU_FLAG_UNREAD: return 'u';
|
|
||||||
|
|
||||||
default:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,52 +84,28 @@ mu_flag_char (MuFlags flag)
|
||||||
static MuFlags
|
static MuFlags
|
||||||
mu_flag_from_char (char kar)
|
mu_flag_from_char (char kar)
|
||||||
{
|
{
|
||||||
switch (kar) {
|
unsigned u;
|
||||||
|
|
||||||
case 'D': return MU_FLAG_DRAFT;
|
for (u = 0; u != G_N_ELEMENTS (FLAG_INFO); ++u)
|
||||||
case 'F': return MU_FLAG_FLAGGED;
|
if (FLAG_INFO[u].kar == kar)
|
||||||
case 'P': return MU_FLAG_PASSED;
|
return FLAG_INFO[u].flag;
|
||||||
case 'R': return MU_FLAG_REPLIED;
|
|
||||||
case 'S': return MU_FLAG_SEEN;
|
|
||||||
case 'T': return MU_FLAG_TRASHED;
|
|
||||||
|
|
||||||
case 'N': return MU_FLAG_NEW;
|
g_warning ("%s: invalid kar %c", __FUNCTION__, kar);
|
||||||
|
return MU_FLAG_INVALID;
|
||||||
case 'z': return MU_FLAG_SIGNED;
|
|
||||||
case 'x': return MU_FLAG_ENCRYPTED;
|
|
||||||
case 'a': return MU_FLAG_HAS_ATTACH;
|
|
||||||
|
|
||||||
case 'u': return MU_FLAG_UNREAD;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return MU_FLAG_INVALID;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* does not use FLAG_INFO, optimized */
|
|
||||||
const char*
|
const char*
|
||||||
mu_flag_name (MuFlags flag)
|
mu_flag_name (MuFlags flag)
|
||||||
{
|
{
|
||||||
switch (flag) {
|
unsigned u;
|
||||||
case MU_FLAG_DRAFT: return "draft";
|
|
||||||
case MU_FLAG_FLAGGED: return "flagged";
|
|
||||||
case MU_FLAG_PASSED: return "passed";
|
|
||||||
case MU_FLAG_REPLIED: return "replied";
|
|
||||||
case MU_FLAG_SEEN: return "seen";
|
|
||||||
case MU_FLAG_TRASHED: return "trashed";
|
|
||||||
|
|
||||||
case MU_FLAG_NEW: return "new";
|
for (u = 0; u != G_N_ELEMENTS (FLAG_INFO); ++u)
|
||||||
|
if (FLAG_INFO[u].flag == flag)
|
||||||
|
return FLAG_INFO[u].name;
|
||||||
|
|
||||||
case MU_FLAG_SIGNED: return "signed";
|
g_warning ("%s: invalid flags %u", __FUNCTION__, flag);
|
||||||
case MU_FLAG_ENCRYPTED: return "encrypted";
|
return NULL;
|
||||||
case MU_FLAG_HAS_ATTACH: return "attach";
|
|
||||||
|
|
||||||
case MU_FLAG_UNREAD: return "unread";
|
|
||||||
|
|
||||||
default:
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -162,13 +125,12 @@ mu_flags_to_str_s (MuFlags flags, MuFlagType types)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MuFlags
|
MuFlags
|
||||||
mu_flags_from_str (const char *str, MuFlagType types,
|
mu_flags_from_str (const char *str, MuFlagType types,
|
||||||
gboolean ignore_invalid)
|
gboolean ignore_invalid)
|
||||||
{
|
{
|
||||||
const char *cur;
|
const char *cur;
|
||||||
MuFlags flag;
|
MuFlags flag;
|
||||||
|
|
||||||
g_return_val_if_fail (str, MU_FLAG_INVALID);
|
g_return_val_if_fail (str, MU_FLAG_INVALID);
|
||||||
|
|
||||||
|
@ -239,8 +201,8 @@ MuFlags
|
||||||
mu_flags_from_str_delta (const char *str, MuFlags oldflags,
|
mu_flags_from_str_delta (const char *str, MuFlags oldflags,
|
||||||
MuFlagType types)
|
MuFlagType types)
|
||||||
{
|
{
|
||||||
const char *cur;
|
const char *cur;
|
||||||
MuFlags newflags;
|
MuFlags newflags;
|
||||||
|
|
||||||
g_return_val_if_fail (str, MU_FLAG_INVALID);
|
g_return_val_if_fail (str, MU_FLAG_INVALID);
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,10 @@ enum _MuFlags {
|
||||||
/* pseudo-flag, only for queries, so we can search for
|
/* pseudo-flag, only for queries, so we can search for
|
||||||
* flag:unread, which is equivalent to 'flag:new OR NOT
|
* flag:unread, which is equivalent to 'flag:new OR NOT
|
||||||
* flag:seen' */
|
* flag:seen' */
|
||||||
MU_FLAG_UNREAD = 1 << 10
|
MU_FLAG_UNREAD = 1 << 10,
|
||||||
|
|
||||||
|
/* other content flags */
|
||||||
|
MU_FLAG_LIST = 1 << 11
|
||||||
};
|
};
|
||||||
typedef enum _MuFlags MuFlags;
|
typedef enum _MuFlags MuFlags;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user