[mythtv] [PATCH] View log entries in System Status (Update1)
Kevin Kuphal
kuphal at dls.net
Thu Aug 26 23:17:19 EDT 2004
Mark Kendall wrote:
> Looks fine here. Pressing left on any of the menu items brings up the
> Log Entries output however - and in some cases this overwrites
> existing text.
>
> The only other suggestion would be to include log entries and dvb
> status only if these have been enabled. These changes work for me:-
Attached patch should address these issues
Kevin
-------------- next part --------------
Index: mythtv/libs/libmyth/uitypes.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmyth/uitypes.h,v
retrieving revision 1.57
diff -n -u -r1.57 uitypes.h
--- mythtv/libs/libmyth/uitypes.h 19 Aug 2004 10:19:15 -0000 1.57
+++ mythtv/libs/libmyth/uitypes.h 27 Aug 2004 03:14:27 -0000
@@ -381,6 +381,7 @@
void Draw(QPainter *, int drawlayer, int);
bool ShowSelAlways() const { return m_showSelAlways; }
void ShowSelAlways(bool bnew) { m_showSelAlways = bnew; }
+ bool isActive() { return m_active; }
private:
//QString cutDown(QString, QFont *, int);
int m_selheight;
Index: mythtv/programs/mythfrontend/statusbox.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythfrontend/statusbox.cpp,v
retrieving revision 1.1
diff -n -u -r1.1 statusbox.cpp
--- mythtv/programs/mythfrontend/statusbox.cpp 19 Aug 2004 01:23:04 -0000 1.1
+++ mythtv/programs/mythfrontend/statusbox.cpp 27 Aug 2004 03:14:29 -0000
@@ -19,19 +19,29 @@
StatusBox::StatusBox(MythMainWindow *parent, const char *name)
: MythDialog(parent, name)
{
- // Set this value to the number of items in icon_list
- // to prevent scrolling off the bottom
- max_icons = 3;
+ int item_count = 0;
+ dateFormat = gContext->GetSetting("ShortDateFormat", "M/d");
+ timeFormat = gContext->GetSetting("TimeFormat", "h:mm AP");
setNoErase();
LoadTheme();
- icon_list->SetItemText(0, "Listings Status");
- icon_list->SetItemText(1, "Tuner Status");
- icon_list->SetItemText(2, "DVB Status");
- // icon_list->SetItemText(3, "Log Entries");
+ icon_list->SetItemText(item_count++, "Listings Status");
+ icon_list->SetItemText(item_count++, "Tuner Status");
+#ifdef USING_DVB
+ if (gContext->GetNumSetting("DVBMonitorInterval", 0))
+ icon_list->SetItemText(item_count++, "DVB Status");
+#endif
+ if (gContext->GetNumSetting("LogEnabled", 0))
+ icon_list->SetItemText(item_count++, "Log Entries");
icon_list->SetItemCurrent(0);
icon_list->SetActive(true);
+
+ max_icons = item_count;
+ log_offset = 0;
+ log_query = NULL;
+ min_level = gContext->GetNumSetting("LogDefaultView",1);
+ my_parent = parent;
}
void StatusBox::paintEvent(QPaintEvent *e)
@@ -200,6 +210,85 @@
}
}
+void StatusBox::cursorUp()
+{
+ int i = 0;
+
+ if (icon_list->isActive())
+ {
+ if (icon_list->GetCurrentItem() > 0)
+ icon_list->SetItemCurrent(icon_list->GetCurrentItem()-1);
+ setHelpText();
+ update(SelectRect);
+ clicked();
+ }
+ if (list_area->isActive())
+ {
+ if (log_query->at() > 0)
+ log_query->prev();
+ int current_pos = log_query->at();
+
+ if (current_pos > 5)
+ {
+ if (log_offset > 6)
+ {
+ log_offset--;
+ } else {
+ log_query->seek(current_pos - log_offset - 1);
+ while(log_query->next())
+ list_area->SetItemText(i++,
+ QString("%1").arg(log_query->value(5).toString()));
+ log_query->seek(current_pos);
+ }
+ } else {
+ if (log_offset > 0)
+ log_offset--;
+ }
+
+ list_area->SetItemCurrent(log_offset);
+ setHelpText();
+ update(ContentRect);
+ }
+}
+
+void StatusBox::cursorDown()
+{
+ if (icon_list->isActive())
+ {
+ if (icon_list->GetCurrentItem() < (max_icons - 1))
+ icon_list->SetItemCurrent(icon_list->GetCurrentItem()+1);
+ setHelpText();
+ update(SelectRect);
+ clicked();
+ }
+ if (list_area->isActive())
+ {
+ if (log_query->at() < (log_query->size() - 1))
+ {
+ if ((log_offset < 6) || (log_query->size() - log_query->at() < 7))
+ log_offset++;
+
+ log_query->next();
+
+ int current_pos = log_query->at();
+ int i = 0;
+
+ if (current_pos > 6)
+ {
+ log_query->seek(current_pos - log_offset - 1);
+ while(log_query->next())
+ list_area->SetItemText(i++,
+ QString("%1").arg(log_query->value(5).toString()));
+ }
+ log_query->seek(current_pos);
+ list_area->SetItemCurrent(log_offset);
+ }
+
+ setHelpText();
+ update(ContentRect);
+ }
+}
+
void StatusBox::keyPressEvent(QKeyEvent *e)
{
bool handled = false;
@@ -215,21 +304,119 @@
{
clicked();
}
+ else if (action == "MENU")
+ {
+ if (list_area->isActive())
+ {
+ int retval = MythPopupBox::show2ButtonPopup(my_parent, QString("AckLogEntry"),
+ QString("Acknowledge all log entries at this priority level or lower?"), QString("Yes"),
+ QString("No"), 0);
+ if (retval == 0)
+ {
+ QString query = QString("UPDATE mythlog SET acknowledged = 1 where priority <= %1").arg(min_level);
+ QSqlDatabase *db = QSqlDatabase::database();
+ db->exec(query);
+ doLogEntries();
+ }
+ }
+ }
+ else if (action == "LEFT")
+ {
+ if (list_area->isActive())
+ {
+ icon_list->SetActive(true);
+ list_area->SetActive(false);
+ doLogEntries();
+ update(SelectRect);
+ update(ContentRect);
+ }
+ }
+ else if (action == "RIGHT")
+ {
+ QString current_item = icon_list->GetItemText(icon_list->GetCurrentItem());
+
+ if ((current_item == "Log Entries") && (log_query->isActive() && log_query->isValid()))
+ {
+ icon_list->SetActive(false);
+ list_area->SetActive(true);
+ list_area->SetItemCurrent(0);
+ setHelpText();
+ update(ContentRect);
+ update(SelectRect);
+ }
+ }
else if (action == "UP")
{
- if (icon_list->GetCurrentItem() > 0)
- icon_list->SetItemCurrent(icon_list->GetCurrentItem()-1);
- setHelpText();
- update(SelectRect);
+ cursorUp();
}
else if (action == "DOWN")
{
- if (icon_list->GetCurrentItem() < (max_icons - 1))
- icon_list->SetItemCurrent(icon_list->GetCurrentItem()+1);
- setHelpText();
- update(SelectRect);
- }
- else
+ cursorDown();
+ }
+ else if (action == "1")
+ {
+ if ((list_area->isActive()) || (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries"))
+ {
+ min_level = 1;
+ doLogEntries();
+ }
+ }
+ else if (action == "2")
+ {
+ if ((list_area->isActive()) || (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries"))
+ {
+ min_level = 2;
+ doLogEntries();
+ }
+ }
+ else if (action == "3")
+ {
+ if ((list_area->isActive()) || (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries"))
+ {
+ min_level = 3;
+ doLogEntries();
+ }
+ }
+ else if (action == "4")
+ {
+ if ((list_area->isActive()) || (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries"))
+ {
+ min_level = 4;
+ doLogEntries();
+ }
+ }
+ else if (action == "5")
+ {
+ if ((list_area->isActive()) || (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries"))
+ {
+ min_level = 5;
+ doLogEntries();
+ }
+ }
+ else if (action == "6")
+ {
+ if ((list_area->isActive()) || (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries"))
+ {
+ min_level = 6;
+ doLogEntries();
+ }
+ }
+ else if (action == "7")
+ {
+ if ((list_area->isActive()) || (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries"))
+ {
+ min_level = 7;
+ doLogEntries();
+ }
+ }
+ else if (action == "8")
+ {
+ if ((list_area->isActive()) || (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries"))
+ {
+ min_level = 8;
+ doLogEntries();
+ }
+ } else
handled = false;
}
@@ -239,46 +426,88 @@
void StatusBox::setHelpText()
{
- topbar->ClearAllText();
- switch (icon_list->GetCurrentItem())
+ if (icon_list->isActive())
{
- case 0:
+ topbar->ClearAllText();
+ QString current_item = icon_list->GetItemText(icon_list->GetCurrentItem());
+
+ if (current_item == "Listings Status")
helptext->SetText("Listings Status shows the latest status information from mythfilldatabase");
- break;
- case 1:
+
+ if (current_item == "Tuner Status")
helptext->SetText("Tuner Status shows the current information about the state of backend tuner cards");
- break;
- case 2:
+
+#ifdef USING_DVB
+ if (current_item == "DVB Status")
helptext->SetText("DVB Status shows the quality statistics of all DVB cards, if present");
- break;
- case 3:
+#endif
+
+ if (current_item == "Log Entries")
helptext->SetText("Log Entries shows any unread log entries from the system if you have logging enabled");
- break;
}
+
+ if (list_area->isActive())
+ {
+ if (log_query->value(6).toString() != "")
+ helptext->SetText(QString("On %1 %2 from %3.%4\n%5\n%6")
+ .arg(log_query->value(3).toDateTime().toString(dateFormat))
+ .arg(log_query->value(3).toDateTime().toString(timeFormat))
+ .arg(log_query->value(4).toString())
+ .arg(log_query->value(1).toString())
+ .arg(log_query->value(5).toString())
+ .arg(log_query->value(6).toString()));
+ else helptext->SetText(QString("On %1 %2 from %3.%4\n%5\nNo other details")
+ .arg(log_query->value(3).toDateTime().toString(dateFormat))
+ .arg(log_query->value(3).toDateTime().toString(timeFormat))
+ .arg(log_query->value(4).toString())
+ .arg(log_query->value(1).toString())
+ .arg(log_query->value(5).toString()));
+ }
+
update(TopRect);
}
void StatusBox::clicked()
{
- // Clear all visible content elements here
- // I'm sure there's a better way to do this but I can't find it
- content->ClearAllText();
- list_area->ResetList();
-
- switch (icon_list->GetCurrentItem())
+ if (icon_list->isActive())
{
- case 0:
+ // Clear all visible content elements here
+ content->ClearAllText();
+ list_area->ResetList();
+
+ QString current_item = icon_list->GetItemText(icon_list->GetCurrentItem());
+
+ if (current_item == "Listings Status")
doListingsStatus();
- break;
- case 1:
+
+ if (current_item == "Tuner Status")
doTunerStatus();
- break;
- case 2:
+
+#ifdef USING_DVB
+ if (current_item == "DVB Status")
doDVBStatus();
- break;
- case 3:
+#endif
+
+ if (current_item == "Log Entries")
doLogEntries();
- break;
+ }
+
+ if (list_area->isActive())
+ {
+ int retval = MythPopupBox::show2ButtonPopup(my_parent, QString("AckLogEntry"),
+ QString("Acknowledge this log entry?"), QString("Yes"),
+ QString("No"), 0);
+ if (retval == 0)
+ {
+ if (log_query->isValid())
+ {
+ QString query = QString("UPDATE mythlog SET acknowledged = 1 where logid = %1")
+ .arg(log_query->value(0).toString());
+ QSqlDatabase *db = QSqlDatabase::database();
+ db->exec(query);
+ doLogEntries();
+ }
+ }
}
}
@@ -423,6 +652,7 @@
update(ContentRect);
}
+#ifdef USING_DVB
void StatusBox::doDVBStatus(void)
{
QString querytext;
@@ -495,23 +725,30 @@
text_area->SetText(Status);
update(ContentRect);
}
+#endif
void StatusBox::doLogEntries(void)
{
-/*
- // int minlevel = gContext->GetNumSetting("LogDefaultView",0);
- int minlevel = 8;
+ list_area->ResetList();
+ log_offset = 0;
- log_list->clear();
QSqlDatabase *db = QSqlDatabase::database();
QString thequery = QString("SELECT logid, module, priority, logdate, host, message, "
"details FROM mythlog WHERE acknowledged = 0 and priority <= %1 "
- "order by logdate").arg(minlevel);
- QSqlQuery query = db->exec(thequery);
- if (query.isActive())
- while (query.next())
- log_list->insertItem(QString("%1 %2").arg(query.value(3).toString()).arg(query.value(5).toString()));
-*/
+ "order by logdate").arg(min_level);
+ log_query = new QSqlQuery(db->exec(thequery));
+
+ if (log_query->isActive())
+ while (log_query->next())
+ list_area->SetItemText(log_query->at(),
+ QString("%1").arg(log_query->value(5).toString()));
+
+ list_area->SetItemCurrent(0);
+ if (log_query->first() == false)
+ list_area->SetItemText(0,"No items found at this priority level or lower");
+ helptext->SetText(QString("Listing priority %1 items").arg(min_level));
+ update(TopRect);
+ update(ContentRect);
}
StatusBox::~StatusBox(void)
Index: mythtv/programs/mythfrontend/statusbox.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythfrontend/statusbox.h,v
retrieving revision 1.1
diff -n -u -r1.1 statusbox.h
--- mythtv/programs/mythfrontend/statusbox.h 19 Aug 2004 01:23:04 -0000 1.1
+++ mythtv/programs/mythfrontend/statusbox.h 27 Aug 2004 03:14:29 -0000
@@ -32,6 +32,8 @@
void doLogEntries();
void clicked();
void setHelpText();
+ void cursorUp();
+ void cursorDown();
XMLParse *theme;
QDomElement xmldata;
@@ -39,8 +41,12 @@
UITextType *heading, *helptext, *text_area;
UIListType *icon_list, *list_area;
LayerSet *selector, *topbar, *content;
+ QSqlQuery *log_query;
- int max_icons;
+ int max_icons, log_offset, min_level;
+ QString dateFormat, timeFormat;
+
+ MythMainWindow *my_parent;
};
#endif
Index: mythtv/themes/default/status-ui.xml
===================================================================
RCS file: /var/lib/mythcvs/mythtv/themes/default/status-ui.xml,v
retrieving revision 1.1
diff -n -u -r1.1 status-ui.xml
--- mythtv/themes/default/status-ui.xml 19 Aug 2004 01:23:04 -0000 1.1
+++ mythtv/themes/default/status-ui.xml 27 Aug 2004 03:14:31 -0000
@@ -28,6 +28,12 @@
<bold>yes</bold>
</font>
+ <font name="status_selected" face="Arial">
+ <color>#ffff33</color>
+ <size>16</size>
+ <bold>yes</bold>
+ </font>
+
<container name="topbar">
<area>0,0,800,200</area>
<textarea name="heading" draworder="0">
@@ -36,7 +42,7 @@
<value>System Status - Select a category to view the status</value>
</textarea>
<textarea name="helptext" draworder="0">
- <area>30,60,760,80</area>
+ <area>30,60,760,120</area>
<font>title</font>
<value>This screen show the status of various system components</value>
<multiline>yes</multiline>
@@ -68,10 +74,10 @@
<container name="content">
<area>265,201,535,600</area>
<listarea name="list_area" draworder="2">
- <area>15,20,490,395</area>
+ <area>15,20,490,345</area>
<fcnfont name="status" function="active"></fcnfont>
<fcnfont name="status" function="inactive"></fcnfont>
- <fcnfont name="status" function="selected"></fcnfont>
+ <fcnfont name="status_selected" function="selected"></fcnfont>
<column number="1" width="490" context="-1"></column>
<items>12</items>
</listarea>
More information about the mythtv-dev
mailing list