Index: mythbrowser/mythbrowser/bookmarkmanager.cpp
===================================================================
--- mythbrowser/mythbrowser/bookmarkmanager.cpp	(Revision 24404)
+++ mythbrowser/mythbrowser/bookmarkmanager.cpp	(Arbeitskopie)
@@ -226,6 +226,8 @@
                     m_bookmarkList, "", "", true, MythUIButtonListItem::NotChecked);
             item->SetText(site->name, "name");
             item->SetText(site->url, "url");
+            if (site->isHomepage)
+                item->DisplayState("yes", "homepage");
             item->SetData(qVariantFromValue(site));
             item->setChecked(site->selected ?
                     MythUIButtonListItem::FullChecked : MythUIButtonListItem::NotChecked);
@@ -279,6 +281,7 @@
 
             m_menuPopup->SetReturnEvent(this, "action");
 
+            m_menuPopup->AddButton(tr("Set Homepage"), SLOT(slotSetHomepage()));
             m_menuPopup->AddButton(tr("Add Bookmark"), SLOT(slotAddBookmark()));
 
             if (m_bookmarkList->GetItemCurrent())
@@ -295,6 +298,7 @@
                 m_menuPopup->AddButton(tr("Clear Marked"), SLOT(slotClearMarked()));
             }
 
+            m_menuPopup->AddButton(tr("Settings"), SLOT(slotSettings()));
             m_menuPopup->AddButton(tr("Cancel"));
 
             popupStack->AddScreen(m_menuPopup);
@@ -455,6 +459,53 @@
     }
 }
 
+void BookmarkManager::slotSettings(void)
+{
+    MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
+    BrowserConfig *config = new BrowserConfig(mainStack, "browserconfig");
+
+    if (config->Create())
+        mainStack->AddScreen(config);
+}
+
+void BookmarkManager::slotSetHomepage(void)
+{
+    // Delete the old bookmark that was set as homepage
+    MythUIButtonListItem *item;
+    Bookmark *site;
+
+    // Search all bookmarks and unset the homepage information
+    // form the one that has is actively set
+    for (int x = 0; x < m_bookmarkList->GetCount(); x++)
+    {
+        item = m_bookmarkList->GetItemAt(x);
+        if (item)
+        {
+            site = qVariantValue<Bookmark*>(item->GetData());
+            if (site && site->isHomepage)
+            {
+                site->isHomepage = false;
+                RemoveFromDB(site);
+                InsertInDB(site);
+            }
+        }
+    }
+
+    // Set the homepage information for selected bookmark
+    item = m_bookmarkList->GetItemCurrent();
+    if (item && item->GetData().isValid())
+    {
+        site = qVariantValue<Bookmark*>(item->GetData());
+        if (site)
+        {
+            site->isHomepage = true;
+            RemoveFromDB(site);
+            InsertInDB(site);
+        }
+    }
+    ReloadBookmarks();
+}
+
 void BookmarkManager::slotAddBookmark(void)
 {
     ShowEditDialog(false);
@@ -514,7 +565,7 @@
     if (GetMarkedCount() == 0)
         return;
 
-     MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
+    MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
 
     QString message = tr("Are you sure you want to delete the marked bookmarks");
 
Index: mythbrowser/mythbrowser/bookmarkeditor.h
===================================================================
--- mythbrowser/mythbrowser/bookmarkeditor.h	(Revision 24404)
+++ mythbrowser/mythbrowser/bookmarkeditor.h	(Arbeitskopie)
@@ -5,6 +5,7 @@
 #include <mythscreentype.h>
 #include <mythdialogbox.h>
 #include <mythuibutton.h>
+#include <mythuicheckbox.h>
 #include <mythuitext.h>
 #include <mythuitextedit.h>
 
@@ -38,6 +39,7 @@
     MythUITextEdit *m_categoryEdit;
     MythUITextEdit *m_nameEdit;
     MythUITextEdit *m_urlEdit;
+    MythUICheckBox *m_isHomepage;
 
     MythUIButton *m_okButton;
     MythUIButton *m_cancelButton;
Index: mythbrowser/mythbrowser/main.cpp
===================================================================
--- mythbrowser/mythbrowser/main.cpp	(Revision 24404)
+++ mythbrowser/mythbrowser/main.cpp	(Arbeitskopie)
@@ -42,6 +42,58 @@
     return 0;
 }
 
+void runBookmarkManager()
+{
+    mythplugin_run();
+}
+
+/** \fn runHomepage()
+ *  \brief Loads the specified homepage from the database (the name starts
+           with an underscore) and calls handleMedia() if it exists.
+ *  \return void.
+ */
+void runHomepage()
+{
+    bool homepage = false;
+    QString url = "";
+
+    // Get the homepage from the database. The url
+    // that is set as a homepage starts with a space.
+    MSqlQuery query(MSqlQuery::InitCon());
+
+    if (!query.exec("SELECT homepage,url FROM `websites` WHERE `homepage` = true;"))
+        VERBOSE(VB_IMPORTANT, "Error loading homepage from DB");
+
+    if (query.size() > 0)
+    {
+        while (query.next())
+        {
+            homepage = query.value(0).toBool();
+            url = query.value(1).toString();
+        }
+    }
+
+    if (homepage)
+    {
+        handleMedia( url, "", "", "", "", 0, 0, 0, "");
+    }
+    else
+    {
+        // show a dialog that no homepage is specified
+        QString message = "No homepage was specified.\n"
+                          "If required you can do this in the bookmark manager";
+
+        MythScreenStack *m_popupStack =
+                GetMythMainWindow()->GetStack("popup stack");
+
+        MythConfirmationDialog *okPopup =
+                new MythConfirmationDialog(m_popupStack, message, false);
+
+        if (okPopup->Create())
+            m_popupStack->AddScreen(okPopup);
+    }
+}
+
 void setupKeys(void)
 {
     REG_KEY("Browser", "NEXTTAB", QT_TRANSLATE_NOOP("MythControls",
@@ -49,6 +101,11 @@
     REG_KEY("Browser", "PREVTAB", QT_TRANSLATE_NOOP("MythControls",
         "Move to previous browser tab"), "");
 
+    REG_JUMP("Bookmarks", QT_TRANSLATE_NOOP("MythControls",
+        "Show the bookmark manager"), "", runBookmarkManager);
+    REG_JUMP("Homepage", QT_TRANSLATE_NOOP("MythControls",
+        "Show the webbrowser homepage"), "", runHomepage);
+
     REG_MEDIAPLAYER("WebBrowser", QT_TRANSLATE_NOOP("MythControls",
         "Internal Web Browser"), handleMedia);
 }
Index: mythbrowser/mythbrowser/bookmarkmanager.h
===================================================================
--- mythbrowser/mythbrowser/bookmarkmanager.h	(Revision 24404)
+++ mythbrowser/mythbrowser/bookmarkmanager.h	(Arbeitskopie)
@@ -22,12 +22,14 @@
         category = "";
         name = "";
         url = "";
+        isHomepage = false;
         selected = false;
     }
 
     QString category;
     QString name;
     QString url;
+    bool    isHomepage;
     bool    selected;
 
     inline bool operator == (const Bookmark &b) const
@@ -82,6 +84,8 @@
     void slotDoDeleteMarked(bool doDelete);
     void slotBrowserClosed(void);
 
+    void slotSettings(void);
+    void slotSetHomepage(void);
     void slotAddBookmark(void);
     void slotEditBookmark(void);
     void slotDeleteCurrent(void);
Index: mythbrowser/mythbrowser/browserdbutil.cpp
===================================================================
--- mythbrowser/mythbrowser/browserdbutil.cpp	(Revision 24404)
+++ mythbrowser/mythbrowser/browserdbutil.cpp	(Arbeitskopie)
@@ -9,7 +9,7 @@
 #include "browserdbutil.h"
 #include "bookmarkmanager.h"
 
-const QString currentDatabaseVersion = "1002";
+const QString currentDatabaseVersion = "1003";
 
 static bool UpdateDBVersionNumber(const QString &newnumber)
 {
@@ -110,6 +110,17 @@
             return false;
     }
 
+    if (dbver == "1002")
+    {
+        const QString updates[] =
+        {
+            "ALTER TABLE `websites` ADD `homepage` BOOL NOT NULL;",
+            ""
+        };
+        if (!performActualUpdate(updates, "1003", dbver))
+            return false;
+    }
+
     return true;
 }
 
@@ -134,11 +145,13 @@
     if (!site)
         return false;
 
-    return InsertInDB(site->category, site->name, site->url);
+    return InsertInDB(site->category, site->name, site->url, site->isHomepage);
 }
 
 bool InsertInDB(const QString &category,
-                const QString &name, const QString &url)
+                const QString &name,
+                const QString &url,
+                const bool &isHomepage)
 {
     if (category.isEmpty() || name.isEmpty() || url.isEmpty())
         return false;
@@ -154,11 +167,12 @@
     _url.replace("&amp;","&");
 
     MSqlQuery query(MSqlQuery::InitCon());
-    query.prepare("INSERT INTO websites (category, name, url) "
-                  "VALUES(:CATEGORY, :NAME, :URL);");
+    query.prepare("INSERT INTO websites (category, name, url, homepage) "
+                  "VALUES(:CATEGORY, :NAME, :URL, :HOMEPAGE);");
     query.bindValue(":CATEGORY", category);
     query.bindValue(":NAME", name);
     query.bindValue(":URL", _url);
+    query.bindValue(":HOMEPAGE", isHomepage);
     if (!query.exec())
     {
         MythDB::DBError("mythbrowser: inserting in DB", query);
@@ -221,7 +235,7 @@
 
     MSqlQuery query(MSqlQuery::InitCon());
 
-    if (!query.exec("SELECT category, name, url FROM websites "
+    if (!query.exec("SELECT category, name, url, homepage FROM websites "
                "ORDER BY category, name"))
     {
         VERBOSE(VB_IMPORTANT, "BookmarkManager: Error in loading from DB");
@@ -234,6 +248,7 @@
             site->category = query.value(0).toString();
             site->name = query.value(1).toString();
             site->url = query.value(2).toString();
+            site->isHomepage = query.value(3).toBool();
             site->selected = false;
             siteList.append(site);
         }
Index: mythbrowser/mythbrowser/bookmarkeditor.cpp
===================================================================
--- mythbrowser/mythbrowser/bookmarkeditor.cpp	(Revision 24404)
+++ mythbrowser/mythbrowser/bookmarkeditor.cpp	(Arbeitskopie)
@@ -23,6 +23,7 @@
       m_siteCategory(),           m_editing(edit),
       m_titleText(NULL),          m_categoryEdit(NULL),
       m_nameEdit(NULL),           m_urlEdit(NULL),
+      m_isHomepage(NULL),
       m_okButton(NULL),           m_cancelButton(NULL),
       m_findCategoryButton(NULL), m_searchDialog(NULL)
 {
@@ -39,7 +40,6 @@
 
 bool BookmarkEditor::Create()
 {
-
     bool foundtheme = false;
 
     // Load the theme for this screen
@@ -61,13 +61,14 @@
     m_categoryEdit = dynamic_cast<MythUITextEdit *> (GetChild("category"));
     m_nameEdit = dynamic_cast<MythUITextEdit *> (GetChild("name"));
     m_urlEdit = dynamic_cast<MythUITextEdit *> (GetChild("url"));
+    m_isHomepage = dynamic_cast<MythUICheckBox *> (GetChild("homepage"));
 
     m_okButton = dynamic_cast<MythUIButton *> (GetChild("ok"));
     m_cancelButton = dynamic_cast<MythUIButton *> (GetChild("cancel"));
 
     m_findCategoryButton = dynamic_cast<MythUIButton *> (GetChild("findcategory"));
 
-    if (!m_categoryEdit || !m_nameEdit || !m_urlEdit ||  !m_okButton
+    if (!m_categoryEdit || !m_nameEdit || !m_urlEdit || !m_isHomepage ||  !m_okButton
         || !m_cancelButton || !m_findCategoryButton)
     {
         VERBOSE(VB_IMPORTANT, "Theme is missing critical theme elements.");
@@ -83,6 +84,9 @@
         m_categoryEdit->SetText(m_site->category);
         m_nameEdit->SetText(m_site->name);
         m_urlEdit->SetText(m_site->url);
+
+        if (m_site->isHomepage)
+            m_isHomepage->SetCheckState(MythUIStateType::Full);
     }
 
     BuildFocusList();
@@ -117,13 +121,24 @@
     if (m_editing && m_siteCategory != "" && m_siteName != "")
         RemoveFromDB(m_siteCategory, m_siteName);
 
-    InsertInDB(m_categoryEdit->GetText(), m_nameEdit->GetText(), m_urlEdit->GetText());
+    bool isHomepage = (m_isHomepage->GetCheckState() == MythUIStateType::Full) ? true : false;
 
+    // reset the homepage flag of all bookmarks
+    if (isHomepage)
+    {
+        MSqlQuery query(MSqlQuery::InitCon());
+        if (!query.exec("UPDATE `websites` SET `homepage` = '0' WHERE `homepage` = '1';"))
+            VERBOSE(VB_IMPORTANT, "Could not reset the homepage flag.");
+    }
+
+    InsertInDB(m_categoryEdit->GetText(), m_nameEdit->GetText(), m_urlEdit->GetText(), isHomepage );
+    
     if (m_site)
     {
         m_site->category = m_categoryEdit->GetText();
         m_site->name = m_nameEdit->GetText();
         m_site->url = m_urlEdit->GetText();
+        m_site->isHomepage = isHomepage;
     }
 
     Exit();
Index: mythbrowser/mythbrowser/browserdbutil.h
===================================================================
--- mythbrowser/mythbrowser/browserdbutil.h	(Revision 24404)
+++ mythbrowser/mythbrowser/browserdbutil.h	(Arbeitskopie)
@@ -9,7 +9,7 @@
 
 bool FindInDB(const QString &category, const QString& name);
 bool InsertInDB(Bookmark *site);
-bool InsertInDB(const QString &category, const QString &name, const QString &url);
+bool InsertInDB(const QString &category, const QString &name, const QString &url, const bool &isHomepage);
 
 bool RemoveFromDB(Bookmark *site);
 bool RemoveFromDB(const QString &category, const QString &name);
Index: mythbrowser/theme/default/browser-ui.xml
===================================================================
--- mythbrowser/theme/default/browser-ui.xml	(Revision 24470)
+++ mythbrowser/theme/default/browser-ui.xml	(Arbeitskopie)
@@ -245,13 +245,23 @@
             <position>195,340</position>
         </textedit>
 
+        <textarea name="homepagelabel" from="basetextarea">
+            <area>80,450,100,30</area>
+            <align>right,vcenter</align>
+            <value>Homepage:</value>
+        </textarea>
+
+        <checkbox name="homepage" from="basecheckbox">
+            <position>195,440</position>
+        </checkbox>
+
         <button name="cancel" from="basebutton">
-            <position>60,480</position>
+            <position>60,530</position>
             <value>Cancel</value>
         </button>
 
         <button name="ok" from="basebutton">
-            <position>590,480</position>
+            <position>590,530</position>
             <value>Ok</value>
         </button>
 
Index: mythbrowser/theme/default-wide/browser-ui.xml
===================================================================
--- mythbrowser/theme/default-wide/browser-ui.xml	(Revision 24470)
+++ mythbrowser/theme/default-wide/browser-ui.xml	(Arbeitskopie)
@@ -248,13 +248,23 @@
             <position>395,340</position>
         </textedit>
 
+        <textarea name="homepagelabel" from="basetextarea">
+            <area>180,450,200,30</area>
+            <align>right,vcenter</align>
+            <value>Homepage:</value>
+        </textarea>
+
+        <checkbox name="homepage" from="basecheckbox">
+            <position>395,440</position>
+        </checkbox>
+
         <button name="cancel" from="basebutton">
-            <position>395,480</position>
+            <position>395,530</position>
             <value>Cancel</value>
         </button>
 
         <button name="ok" from="basebutton">
-            <position>620,480</position>
+            <position>620,530</position>
             <value>Ok</value>
         </button>
 
