page_reply.h

00001
00002 /***************************************************************************
00003  *  page_reply.h - Web request reply for a normal page
00004  *
00005  *  Created: Thu Oct 23 16:13:48 2008
00006  *  Copyright  2006-2008  Tim Niemueller [www.niemueller.de]
00007  *
00008  ****************************************************************************/
00009
00010 /*  This program is free software; you can redistribute it and/or modify
00011  *  it under the terms of the GNU General Public License as published by
00012  *  the Free Software Foundation; either version 2 of the License, or
00013  *  (at your option) any later version.
00014  *
00015  *  This program is distributed in the hope that it will be useful,
00016  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  *  GNU Library General Public License for more details.
00019  *
00020  *  Read the full text in the LICENSE.GPL file in the doc directory.
00021  */
00022
00023 #ifndef __PLUGINS_WEBVIEW_PAGE_REPLY_H_
00024 #define __PLUGINS_WEBVIEW_PAGE_REPLY_H_
00025 
00026 #include "reply.h"
00027 #include "service_browse_handler.h"
00028
00029 class WebviewThread;
00030 class WebviewServiceBrowseHandler;
00031
00032 class WebPageReply : public StaticWebReply
00033 {
00034   friend class WebRequestDispatcher;
00035   friend class WebviewThread;
00036  public:
00037   WebPageReply(std::string title, std::string page = "");
00038
00039   static std::string html_header(std::string &title);
00040   static std::string html_footer();
00041
00042   virtual const std::string & body();
00043   virtual std::string::size_type body_length();
00044   virtual void pack();
00045
00046  protected:
00047   WebPageReply(response_code_t code);
00048
00049  protected:
00050   /** Title of the page. */
00051   std::string _title;
00052
00053  private:
00054   static void add_nav_entry(std::string baseurl, std::string name);
00055   static void remove_nav_entry(std::string baseurl);
00056   static void set_active_baseurl(std::string baseurl);
00057
00058   static void set_service_browse_handler(WebviewServiceBrowseHandler *service_browse_handler);
00059
00060  private:
00061   static const char *PAGE_HEADER;
00062   static const char *PAGE_FOOTER;
00063
00064   std::string __merged_body;
00065
00066   static std::map<std::string, std::string> __nav_entries;
00067   static std::string __current_baseurl;
00068
00069   static WebviewServiceBrowseHandler *__service_browser;
00070 };
00071
00072 #endif