Skip to content

Commit

Permalink
Merge branch 'master' of code.mythtv.org:mythtv
Browse files Browse the repository at this point in the history
  • Loading branch information
Nicolas Riendeau committed Jul 15, 2013
2 parents f0212e0 + 11ab3b5 commit 803b021
Show file tree
Hide file tree
Showing 8 changed files with 213 additions and 101 deletions.
4 changes: 2 additions & 2 deletions mythplugins/mythmusic/mythmusic/main.cpp
Expand Up @@ -196,9 +196,9 @@ static void startRipper(void)
delete rip;

#else
ShowOkPopup(qApp->translate("(MythMusicMain)",
ShowOkPopup(qApp->translate("(MythMusicMain)",
"MythMusic hasn't been built with libcdio "
"support so ripping CD's is not possible"));
"support so ripping CDs is not possible"));
#endif
}

Expand Down
142 changes: 71 additions & 71 deletions mythtv/libs/libmythtv/AirPlay/mythraopconnection.cpp

Large diffs are not rendered by default.

29 changes: 26 additions & 3 deletions mythtv/libs/libmythui/mythuinotificationcenter.cpp
Expand Up @@ -46,7 +46,8 @@ MythUINotificationScreen::MythUINotificationScreen(MythScreenStack *stack,
m_created(false), m_content(kNone), m_update(kAll),
m_artworkImage(NULL), m_titleText(NULL), m_originText(NULL),
m_descriptionText(NULL), m_extraText(NULL), m_progresstextText(NULL),
m_progressBar(NULL), m_errorState(NULL), m_index(0),
m_progressBar(NULL), m_errorState(NULL), m_mediaState(NULL),
m_index(0),
m_timer(new QTimer(this)),
m_visibility(MythNotification::kAll),
m_priority(MythNotification::kDefault)
Expand All @@ -65,7 +66,8 @@ MythUINotificationScreen::MythUINotificationScreen(MythScreenStack *stack,
m_update(kAll),
m_artworkImage(NULL), m_titleText(NULL), m_originText(NULL),
m_descriptionText(NULL), m_extraText(NULL), m_progresstextText(NULL),
m_progressBar(NULL), m_errorState(NULL), m_index(0),
m_progressBar(NULL), m_errorState(NULL), m_mediaState(NULL),
m_index(0),
m_timer(new QTimer(this)),
m_visibility(MythNotification::kAll),
m_priority(MythNotification::kDefault)
Expand All @@ -82,7 +84,7 @@ MythUINotificationScreen::MythUINotificationScreen(MythScreenStack *stack,
m_created(false), m_content(kNone), m_update(kAll),
m_artworkImage(NULL), m_titleText(NULL), m_originText(NULL),
m_descriptionText(NULL), m_extraText(NULL), m_progresstextText(NULL),
m_progressBar(NULL), m_errorState(NULL),
m_progressBar(NULL), m_errorState(NULL), m_mediaState(NULL),
m_timer(new QTimer(this)),
m_visibility(MythNotification::kAll),
m_priority(MythNotification::kDefault)
Expand Down Expand Up @@ -140,6 +142,13 @@ void MythUINotificationScreen::SetNotification(MythNotification &notification)
m_update |= kDuration;
}

MythMediaNotification *media =
dynamic_cast<MythMediaNotification*>(&notification);
if (media && m_imagePath.isEmpty() && m_image.isNull())
{
m_update |= kNoArtwork;
}

if (!notification.GetMetaData().isEmpty())
{
UpdateMetaData(notification.GetMetaData());
Expand Down Expand Up @@ -215,6 +224,16 @@ bool MythUINotificationScreen::Create(void)
m_progresstextText = dynamic_cast<MythUIText*>(GetChild("progress_text"));
m_progressBar = dynamic_cast<MythUIProgressBar*>(GetChild("progress"));
m_errorState = dynamic_cast<MythUIStateType*>(GetChild("errorstate"));
m_mediaState = dynamic_cast<MythUIStateType*>(GetChild("mediastate"));

if (m_errorState)
{
m_errorState->DisplayState(m_content & kError ? "error" : "ok");
}
if (m_mediaState && (m_update & kImage))
{
m_mediaState->DisplayState(m_content & kNoArtwork ? "noartwork" : "ok");
}

// store original position
m_position = GetPosition();
Expand Down Expand Up @@ -334,6 +353,10 @@ void MythUINotificationScreen::Init(void)
{
m_errorState->DisplayState(m_update & kError ? "error" : "ok");
}
if (m_mediaState && (m_update & kImage))
{
m_mediaState->DisplayState(m_update & kNoArtwork ? "noartwork" : "ok");
}

// No field will be refreshed the next time unless specified otherwise
m_update = kNone;
Expand Down
2 changes: 2 additions & 0 deletions mythtv/libs/libmythui/mythuinotificationcenter_private.h
Expand Up @@ -185,6 +185,7 @@ class MythUINotificationScreen : public MythScreenType
kMetaData = 1 << 2,
kStyle = 1 << 3,
kError = 1 << 4,
kNoArtwork = 1 << 5,
kAll = ~kNone,
};

Expand Down Expand Up @@ -220,6 +221,7 @@ public slots:
MythUIText *m_progresstextText;
MythUIProgressBar *m_progressBar;
MythUIStateType *m_errorState;
MythUIStateType *m_mediaState;
QDateTime m_creation, m_expiry;
int m_index;
MythPoint m_position;
Expand Down
111 changes: 89 additions & 22 deletions mythtv/libs/libmythui/mythuitype.cpp
Expand Up @@ -47,7 +47,6 @@ MythUIType::MythUIType(QObject *parent, const QString &name)
m_XYSpeed = QPoint(0, 0);
m_deferload = false;
m_IsDependDefault = false;
m_ReverseDepend = false;

m_Parent = NULL;

Expand Down Expand Up @@ -1037,13 +1036,52 @@ void MythUIType::Refresh(void)
SetRedraw();
}

void MythUIType::UpdateDependState(bool isDefault)
void MythUIType::UpdateDependState(MythUIType *dependee, bool isDefault)
{
m_IsDependDefault = m_ReverseDepend ? !isDefault : isDefault;
bool visible;

if (dependee)
{
bool reverse = m_ReverseDepend[dependee];
visible = reverse ? !isDefault : isDefault;
for (int i = 0; i < m_dependsValue.size(); i++)
{
if (m_dependsValue[i].first != dependee)
continue;
m_dependsValue[i].second = visible;
break;
}
}

visible = m_dependsValue[0].second;
for (int i = 1; i < m_dependsValue.size(); i++)
{
bool v = m_dependsValue[i].second;

if (m_dependOperator[i-1] == 1)
{
// OR operator
visible = visible && v;
}
else
{
// AND operator
visible = visible || v;
}
}

m_IsDependDefault = visible;

SetVisible(!m_IsDependDefault);
}

void MythUIType::UpdateDependState(bool isDefault)
{
MythUIType *dependee = static_cast<MythUIType*>(sender());

UpdateDependState(dependee, isDefault);
}

void MythUIType::SetVisible(bool visible)
{
if (visible == m_Visible)
Expand Down Expand Up @@ -1159,7 +1197,6 @@ void MythUIType::CopyFrom(MythUIType *base)
}

m_dependsMap = base->m_dependsMap;
m_ReverseDepend = base->m_ReverseDepend;

SetMinArea(base->m_MinArea);
}
Expand Down Expand Up @@ -1372,34 +1409,64 @@ void MythUIType::SetDependsMap(QMap<QString, QString> dependsMap)
m_dependsMap = dependsMap;
}

void MythUIType::SetReverseDependence(bool reverse)
void MythUIType::SetReverseDependence(MythUIType *dependee, bool reverse)
{
m_ReverseDepend = reverse;
m_ReverseDepend.insert(dependee, reverse);
}

void MythUIType::ConnectDependants(bool recurse)
{

QMapIterator<QString, QString> i(m_dependsMap);
while(i.hasNext())
QMapIterator<QString, QString> it(m_dependsMap);
while(it.hasNext())
{
i.next();
QString dependeeName = i.value();
bool reverse = false;
if (dependeeName.startsWith('!'))
it.next();

// build list of operators and dependeees.
QStringList dependees;
QList<int> operators;
QString name = it.value();
QStringList tmp1 = name.split("&");
for (int i = 0; i < tmp1.size(); i++)
{
reverse = true;
dependeeName.remove(0,1);
QStringList tmp2 = tmp1[i].split("|");

dependees.append(tmp2[0]);
for (int j = 1; j < tmp2.size(); j++)
{
dependees.append(tmp2[j]);
operators.append(1); // 1 is OR
}
operators.append(2); // 2 is AND
}
MythUIType *dependee = GetChild(dependeeName);
MythUIType *dependant = GetChild(i.key());

if (dependee && dependant)
MythUIType *dependant = GetChild(it.key());
if (dependant)
{
QObject::connect(dependee, SIGNAL(DependChanged(bool)),
dependant, SLOT(UpdateDependState(bool)));
dependant->SetReverseDependence(reverse);
dependant->UpdateDependState(true);
dependant->m_dependOperator = operators;
foreach (QString dependeeName, dependees)
{
bool reverse = false;
if (dependeeName.startsWith('!'))
{
reverse = true;
dependeeName.remove(0,1);
}
MythUIType *dependee = GetChild(dependeeName);

if (dependee)
{
QObject::connect(dependee, SIGNAL(DependChanged(bool)),
dependant, SLOT(UpdateDependState(bool)));
dependant->SetReverseDependence(dependee, reverse);
dependant->m_dependsValue.append(QPair<MythUIType *, bool>(dependee, false));
dependant->UpdateDependState(dependee, true);
}
else
{
dependant->m_dependsValue.append(QPair<MythUIType *, bool>(dependee, !reverse));
dependant->UpdateDependState(dependee, reverse);
}
}
}
}

Expand Down
11 changes: 9 additions & 2 deletions mythtv/libs/libmythui/mythuitype.h
Expand Up @@ -6,6 +6,7 @@
#include <QMap>
#include <QHash>
#include <QList>
#include <QPair>
#include <QFont>
#include <QColor>

Expand Down Expand Up @@ -174,7 +175,7 @@ class MUI_PUBLIC MythUIType : public QObject, public XMLParseBase
void SetVerticalZoom(float zoom);
void SetAngle(float angle);
void SetDependIsDefault(bool isDefault);
void SetReverseDependence(bool reverse);
void SetReverseDependence(MythUIType *dependee, bool reverse);
void SetDependsMap(QMap<QString, QString> dependsMap);
QMap<QString, QString> GetDependsMap() const { return m_dependsMap; }

Expand All @@ -190,6 +191,7 @@ class MUI_PUBLIC MythUIType : public QObject, public XMLParseBase
void Show(void);
void Refresh(void);
void UpdateDependState(bool isDefault);
void UpdateDependState(MythUIType *dependee, bool isDefault);

signals:
void RequestUpdate();
Expand Down Expand Up @@ -228,6 +230,11 @@ class MUI_PUBLIC MythUIType : public QObject, public XMLParseBase

QList<MythUIType *> m_ChildrenList;
QMap<QString, QString> m_dependsMap;
// the number of dependencies is assumed to be small (1 or 2 elements on average)
// so we use a QList as we want the element ordered in the order they were defined
// and speed isn't going to be a factor
QList< QPair<MythUIType *, bool> >m_dependsValue;
QList<int> m_dependOperator;

bool m_Visible;
bool m_HasFocus;
Expand All @@ -238,7 +245,7 @@ class MUI_PUBLIC MythUIType : public QObject, public XMLParseBase
bool m_Vanish;
bool m_Vanished;
bool m_IsDependDefault;
bool m_ReverseDepend;
QMap<MythUIType *, bool> m_ReverseDepend;

int m_focusOrder;

Expand Down
Binary file added mythtv/themes/default/noartwork.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 14 additions & 1 deletion mythtv/themes/default/notification-ui.xml
Expand Up @@ -80,6 +80,19 @@
<area>0,0,100%,100%</area>
</shape>

<statetype name="mediastate">
<area>0,0,100%,100%</area>
<state name="ok"/>
<state name="noartwork">
<area>0,0,100%,100%</area>
<imagetype name="imageartwork">
<!-- Artist: Vargas21 http://www.iconarchive.com/show/aquave-metal-icons-by-vargas21/Music-icon.html -->
<filename>noartwork.png</filename>
<area>18,18,144,144</area>
</imagetype>
</state>
</statetype>

<statetype name="errorstate">
<area>0,0,100%,100%</area>
<state name="ok"/>
Expand All @@ -93,7 +106,7 @@
</state>
</statetype>

<imagetype name="image" depends="!errorstate">
<imagetype name="image" depends="!mediastate&amp;!errorstate">
<filename>damaged.png</filename>
<area>18,18,144,144</area>
</imagetype>
Expand Down

0 comments on commit 803b021

Please sign in to comment.