void linkScreenSetup(LinkScreen *screen, const char *subreddit, const RedditListType listType) { screen->list = redditLinkListNew(); screen->list->subreddit = redditCopyString(subreddit); screen->list->type = listType; redditGetListing(screen->list); screen->displayed = LINES - 1; screen->linkOpenSize = (screen->displayed / 5) * 4; screen->offset = 0; screen->selected = 0; /* Assign help-screen text */ screen->helpText = linkScreenHelp; screen->helpLineCount = sizeof(linkScreenHelp)/sizeof(linkScreenHelp[0]); }
void showSubreddit(const char *subreddit) { LinkScreen *screen; DEBUG_PRINT(L"Loading Subreddit %s\n", subreddit); screen = linkScreenNew(); screen->list = redditLinkListNew(); screen->list->subreddit = redditCopyString(subreddit); screen->list->type = REDDIT_HOT; redditGetListing(screen->list); screen->displayed = LINES - 1; screen->linkOpenSize = (screen->displayed / 5) * 4; screen->offset = 0; screen->selected = 0; /* Assign help-screen text */ screen->helpText = linkScreenHelp; screen->helpLineCount = 19; drawScreen(screen); //And print the screen! int c; while((c = wgetch(stdscr))) { switch(c) { case 'k': case KEY_UP: linkScreenUp(screen); drawScreen(screen); break; case 'j': case KEY_DOWN: linkScreenDown(screen); drawScreen(screen); break; case 'q': if (screen->linkOpen) { linkScreenCloseLink(screen); drawScreen(screen); } else { goto cleanup; } break; case 'u': redditLinkListFreeLinks(screen->list); redditGetListing(screen->list); screen->offset = 0; screen->selected = 0; drawScreen(screen); break; case 'l': case '\n': case KEY_ENTER: if (screen->helpOpen) linkScreenCloseHelp(screen); else linkScreenToggleLink(screen); drawScreen(screen); break; case 'L': redditGetListing(screen->list); drawScreen(screen); break; case 'c': showThread(screen->list->links[screen->selected]); drawScreen(screen); break; case '?': linkScreenToggleHelp(screen); if (screen->helpOpen) linkScreenOpenLink(screen); drawScreen(screen); break; } } cleanup:; redditLinkListFree(screen->list); linkScreenFree(screen); }