mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-17 17:12:39 -05:00
puzzles: full help system
- embeds the upstream halibut documentation for plugin use - currently every plugin has a copy of the help text, but in the future a centralized system using overlays might be better Change-Id: Idb6eb9accc2fa786a4c6bc2b704e7cf5fd3f78dd
This commit is contained in:
parent
7482b82175
commit
001860ce78
6 changed files with 2879 additions and 15 deletions
48
apps/plugins/puzzles/help.c
Normal file
48
apps/plugins/puzzles/help.c
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
#include "help.h"
|
||||
#include "lib/simple_viewer.h"
|
||||
|
||||
void full_help(const char *name)
|
||||
{
|
||||
int ch_num = -1;
|
||||
/* search the help text for a chapter with this name */
|
||||
for(int ch = 0; ch < help_numchapters; ++ch)
|
||||
{
|
||||
char *str = help_text + help_chapteroffsets[ch];
|
||||
char *ptr = strchr(str, ':') + 1;
|
||||
const char *namep = name;
|
||||
if(*ptr++ != ' ')
|
||||
continue;
|
||||
|
||||
while(*ptr == *namep && *ptr && *namep)
|
||||
{
|
||||
ptr++;
|
||||
namep++;
|
||||
}
|
||||
if(*namep == '\0' && (*ptr == '\n' || *ptr == ' ')) /* full match */
|
||||
{
|
||||
ch_num = ch;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(ch_num < 0)
|
||||
{
|
||||
rb->splashf(HZ * 2, "No topic found for `%s' (REPORT ME!)", name);
|
||||
return;
|
||||
}
|
||||
char *buf = smalloc(help_maxlen + 1);
|
||||
rb->memset(buf, 0, help_maxlen + 1);
|
||||
if(ch_num < help_numchapters - 1)
|
||||
{
|
||||
/* safe to look ahead */
|
||||
memcpy(buf, help_text + help_chapteroffsets[ch_num], help_chapteroffsets[ch_num + 1] - help_chapteroffsets[ch_num]);
|
||||
}
|
||||
else
|
||||
rb->strlcpy(buf, help_text + help_chapteroffsets[ch_num], help_maxlen + 1);
|
||||
|
||||
rb->lcd_set_foreground(LCD_WHITE);
|
||||
unsigned old_bg = rb->lcd_get_background();
|
||||
rb->lcd_set_background(LCD_BLACK);
|
||||
view_text(name, buf);
|
||||
rb->lcd_set_background(old_bg);
|
||||
sfree(buf);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue