Index: libs/libmyth/uilistbtntype.h
===================================================================
--- libs/libmyth/uilistbtntype.h	(revision 14936)
+++ libs/libmyth/uilistbtntype.h	(working copy)
@@ -176,6 +176,7 @@
     void  SetMargin(int margin);
     void  SetItemRegColor(const QColor& beg, const QColor& end, uint alpha);
     void  SetItemSelColor(const QColor& beg, const QColor& end, uint alpha);
+    void  SetJustification(int justification) { m_justify = justification; }
     
     void  Draw(QPainter *p, int order, int context);
     void  Draw(QPainter *p, int order, int context, bool active_on);
@@ -238,6 +239,8 @@
     int   m_itemMargin;
     uint  m_itemsVisible;
 
+    int   m_justify;
+
     bool  m_active;
     bool  m_visible;
     bool  m_showScrollArrows;
@@ -334,6 +337,9 @@
     void setOverrideInactive(bool flag);
     bool getOverrideInactive(void);
 
+    void setJustification(int justification) { m_justify = justification; }
+    int  getJustification(void) const { return m_justify; }
+
     bool moveUpDown(bool flag);
     
     void paint(QPainter *p, fontProp *font, int x, int y, bool active_on);
@@ -356,6 +362,7 @@
     bool           m_showArrow;
 
     bool           m_overrideInactive;
+    int            m_justify;
 
     friend class UIListBtnType;
 };
Index: libs/libmyth/uilistbtntype.cpp
===================================================================
--- libs/libmyth/uilistbtntype.cpp	(revision 14936)
+++ libs/libmyth/uilistbtntype.cpp	(working copy)
@@ -1705,6 +1705,7 @@
             font = m_fontInactive;
             p->setFont(font->face);
             p->setPen(font->color);
+            it.current()->setJustification(m_justify);
             it.current()->paint(p, font, x, y, active_on);
             font = m_active ? m_fontActive : m_fontInactive;;
             p->setFont(font->face);
@@ -1712,6 +1713,7 @@
         }
         else
         {
+            it.current()->setJustification(m_justify);
             it.current()->paint(p, font, x, y, active_on);
         }
 
@@ -1923,19 +1925,21 @@
 
 //////////////////////////////////////////////////////////////////////////////
 
-UIListBtnTypeItem::UIListBtnTypeItem(UIListBtnType* lbtype, const QString& text,
-                                     QPixmap *pixmap, bool checkable,
-                                     CheckState state, bool showArrow)
+UIListBtnTypeItem::UIListBtnTypeItem(
+    UIListBtnType *parent, const QString &text,
+    QPixmap *pixmap, bool checkable,
+    CheckState state, bool showArrow) :
+    m_parent(parent), m_text(QDeepCopy<QString>(text)), m_pixmap(pixmap),
+    m_checkable(checkable), m_state(state), m_data(NULL),
+
+    m_checkRect(0,0,0,0), m_pixmapRect(0,0,0,0),
+    m_textRect(0,0,0,0), m_arrowRect(0,0,0,0),
+
+    m_showArrow(showArrow),
+
+    m_overrideInactive(false),
+    m_justify(Qt::AlignLeft | Qt::AlignVCenter)
 {
-    m_parent    = lbtype;
-    m_text      = text;
-    m_pixmap    = pixmap;
-    m_checkable = checkable;
-    m_state     = state;
-    m_showArrow = showArrow;
-    m_data      = 0;
-    m_overrideInactive = false;
-
     if (state >= NotChecked)
         m_checkable = true;
 
@@ -2153,6 +2157,6 @@
     tr.moveBy(x,y);
     QString text = m_parent->cutDown(m_text, &(font->face), false,
                                      tr.width(), tr.height());
-    p->drawText(tr, Qt::AlignLeft|Qt::AlignVCenter, text);    
+    p->drawText(tr, m_justify, text);    
 }
 
Index: libs/libmyth/xmlparse.cpp
===================================================================
--- libs/libmyth/xmlparse.cpp	(revision 14936)
+++ libs/libmyth/xmlparse.cpp	(working copy)
@@ -3447,6 +3447,7 @@
     QRect   area = QRect(0,0,0,0);
     QString fontActive;
     QString fontInactive;
+    QString align = QString::null;
     bool    showArrow = true;
     bool    showScrollArrows = false;
     int     draworder = 0;
@@ -3507,6 +3508,10 @@
                 if (getFirstText(info).lower() == "no")
                     showArrow = false;
             }
+            else if (info.tagName() == "align")
+            {
+                align = getFirstText(info);
+            }
             else if (info.tagName() == "showscrollarrows") {
                 if (getFirstText(info).lower() == "yes")
                     showScrollArrows = true;
@@ -3558,6 +3563,18 @@
         }
     }
 
+    int jst = Qt::AlignLeft | Qt::AlignVCenter;
+
+    if (!align.isEmpty())
+    {
+        if (align.lower() == "center")
+            jst = Qt::AlignCenter | Qt::AlignVCenter;
+        else if (align.lower() == "right")
+            jst = Qt::AlignRight  | Qt::AlignVCenter;
+    	else if (align.lower() == "left")
+            jst = Qt::AlignLeft   | Qt::AlignVCenter;
+    }
+
     fontProp *fpActive = GetFont(fontActive);
     if (!fpActive)
     {
@@ -3580,6 +3597,7 @@
     l->SetScreen(wmult, hmult);
     l->SetFontActive(fpActive);
     l->SetFontInactive(fpInactive);
+    l->SetJustification(jst);
     l->SetItemRegColor(grUnselectedBeg, grUnselectedEnd, grUnselectedAlpha);
     l->SetItemSelColor(grSelectedBeg, grSelectedEnd, grSelectedAlpha);
     l->SetSpacing((int)(spacing*hmult));
Index: libs/libmyth/mythcontext.h
===================================================================
--- libs/libmyth/mythcontext.h	(revision 14936)
+++ libs/libmyth/mythcontext.h	(working copy)
@@ -209,7 +209,7 @@
 
 /// Update this whenever the plug-in API changes.
 /// Including changes in the libmythtv class methods used by plug-ins.
-#define MYTH_BINARY_VERSION "0.21.20071122-1"
+#define MYTH_BINARY_VERSION "0.21.20071123-1"
 
 /** \brief Increment this whenever the MythTV network protocol changes.
  *
