00001
00002
00003 #include <mythmainwindow.h>
00004 #include <mythmiscutil.h>
00005 #include <mythcontext.h>
00006 #include <mythdbcon.h>
00007
00008
00009 #include "bookmarkeditor.h"
00010 #include "bookmarkmanager.h"
00011 #include "browserdbutil.h"
00012
00019 BookmarkEditor::BookmarkEditor(Bookmark *site, bool edit,
00020 MythScreenStack *parent, const char *name)
00021 : MythScreenType (parent, name),
00022 m_site(site), m_siteName(""),
00023 m_siteCategory(), m_editing(edit),
00024 m_titleText(NULL), m_categoryEdit(NULL),
00025 m_nameEdit(NULL), m_urlEdit(NULL),
00026 m_okButton(NULL), m_cancelButton(NULL),
00027 m_findCategoryButton(NULL), m_searchDialog(NULL)
00028 {
00029 if (m_editing)
00030 {
00031 m_siteCategory = m_site->category;
00032 m_siteName = m_site->name;
00033 }
00034 }
00035
00036 BookmarkEditor::~BookmarkEditor()
00037 {
00038 }
00039
00040 bool BookmarkEditor::Create()
00041 {
00042
00043 bool foundtheme = false;
00044
00045
00046 foundtheme = LoadWindowFromXML("browser-ui.xml", "bookmarkeditor", this);
00047
00048 if (!foundtheme)
00049 return false;
00050
00051 m_titleText = dynamic_cast<MythUIText *> (GetChild("title"));
00052
00053 if (m_titleText)
00054 {
00055 if (m_editing)
00056 m_titleText->SetText(tr("Edit Bookmark Details"));
00057 else
00058 m_titleText->SetText(tr("Enter Bookmark Details"));
00059 }
00060
00061 m_categoryEdit = dynamic_cast<MythUITextEdit *> (GetChild("category"));
00062 m_nameEdit = dynamic_cast<MythUITextEdit *> (GetChild("name"));
00063 m_urlEdit = dynamic_cast<MythUITextEdit *> (GetChild("url"));
00064
00065 m_okButton = dynamic_cast<MythUIButton *> (GetChild("ok"));
00066 m_cancelButton = dynamic_cast<MythUIButton *> (GetChild("cancel"));
00067
00068 m_findCategoryButton = dynamic_cast<MythUIButton *> (GetChild("findcategory"));
00069
00070 if (!m_categoryEdit || !m_nameEdit || !m_urlEdit || !m_okButton
00071 || !m_cancelButton || !m_findCategoryButton)
00072 {
00073 LOG(VB_GENERAL, LOG_ERR, "Theme is missing critical theme elements.");
00074 return false;
00075 }
00076
00077 connect(m_okButton, SIGNAL(Clicked()), this, SLOT(Save()));
00078 connect(m_cancelButton, SIGNAL(Clicked()), this, SLOT(Exit()));
00079 connect(m_findCategoryButton, SIGNAL(Clicked()), this, SLOT(slotFindCategory()));
00080
00081 if (m_editing && m_site)
00082 {
00083 m_categoryEdit->SetText(m_site->category);
00084 m_nameEdit->SetText(m_site->name);
00085 m_urlEdit->SetText(m_site->url);
00086 }
00087
00088 BuildFocusList();
00089
00090 SetFocusWidget(m_categoryEdit);
00091
00092 return true;
00093 }
00094
00095 bool BookmarkEditor::keyPressEvent(QKeyEvent *event)
00096 {
00097 if (GetFocusWidget()->keyPressEvent(event))
00098 return true;
00099
00100 bool handled = false;
00101 QStringList actions;
00102 handled = GetMythMainWindow()->TranslateKeyPress("News", event, actions);
00103
00104 if (!handled && MythScreenType::keyPressEvent(event))
00105 handled = true;
00106
00107 return handled;
00108 }
00109
00110 void BookmarkEditor::Exit()
00111 {
00112 Close();
00113 }
00114
00115 void BookmarkEditor::Save()
00116 {
00117 if (m_editing && m_siteCategory != "" && m_siteName != "")
00118 RemoveFromDB(m_siteCategory, m_siteName);
00119
00120 InsertInDB(m_categoryEdit->GetText(), m_nameEdit->GetText(), m_urlEdit->GetText());
00121
00122 if (m_site)
00123 {
00124 m_site->category = m_categoryEdit->GetText();
00125 m_site->name = m_nameEdit->GetText();
00126 m_site->url = m_urlEdit->GetText();
00127 }
00128
00129 Exit();
00130 }
00131
00132 void BookmarkEditor::slotFindCategory(void)
00133 {
00134 QStringList list;
00135
00136 GetCategoryList(list);
00137
00138 QString title = tr("Select a category");
00139
00140 MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
00141
00142 m_searchDialog = new MythUISearchDialog(popupStack, title, list,
00143 true, m_categoryEdit->GetText());
00144
00145 if (!m_searchDialog->Create())
00146 {
00147 delete m_searchDialog;
00148 m_searchDialog = NULL;
00149 return;
00150 }
00151
00152 connect(m_searchDialog, SIGNAL(haveResult(QString)), SLOT(slotCategoryFound(QString)));
00153
00154 popupStack->AddScreen(m_searchDialog);
00155 }
00156
00157 void BookmarkEditor::slotCategoryFound(QString category)
00158 {
00159 m_categoryEdit->SetText(category);
00160 }