Fix some buid issues on maemo, Also add some simple usability fixes
authorElias Woods <EliasWoods@gmail.com>
Wed, 5 Jan 2011 22:34:17 +0000 (17:34 -0500)
committerEli Woods <eli@eli-N50Vn.(none)>
Wed, 5 Jan 2011 22:34:17 +0000 (17:34 -0500)
Groove.pro
Makefile
groove.cpp
groove.h
playlist.cpp
playlist.h
plistwin.cpp [new file with mode: 0644]
plistwin.h [new file with mode: 0644]
splayer.cpp
topbar.ui

index bb3e788..b0d0698 100644 (file)
@@ -15,7 +15,7 @@ INCLUDEPATH += /usr/include/qjson /usr/include
 #INCLUDEPATH += ../qjson/src/
 #INCLUDEPATH += ./src/
 #LIBS += -L/usr/lib -lqjson ##Desktop Target
 #INCLUDEPATH += ../qjson/src/
 #INCLUDEPATH += ./src/
 #LIBS += -L/usr/lib -lqjson ##Desktop Target
-LIBS += -L/usr/local/lib -lqjson -lmpg123 -lpulse-simple##Armel Target
+LIBS += -L/usr/local/lib -lqjson -lpulse-simple##Armel Target
 #LIBS += -L~/NokiaQtSDK/Maemo/4.6.2/sysroots/fremantle-arm-sysroot-1014-slim/usr/lib -lqjson ##Armel Target SDK
 #LIBS += -L../qjson/lib -lqjson ##X86 maemo
 QT += network
 #LIBS += -L~/NokiaQtSDK/Maemo/4.6.2/sysroots/fremantle-arm-sysroot-1014-slim/usr/lib -lqjson ##Armel Target SDK
 #LIBS += -L../qjson/lib -lqjson ##X86 maemo
 QT += network
@@ -34,7 +34,8 @@ SOURCES += main.cpp \
     bottombar.cpp \
     vkb.cpp \
     searchresults.cpp \
     bottombar.cpp \
     vkb.cpp \
     searchresults.cpp \
-    mpgplayer.cpp
+##  mpgplayer.cpp
+    plistwin.cpp
 
 HEADERS += \
     groove.h \
 
 HEADERS += \
     groove.h \
@@ -48,7 +49,8 @@ HEADERS += \
     bottombar.h \
     vkb.h \
     searchresults.h \
     bottombar.h \
     vkb.h \
     searchresults.h \
-    mpgplayer.h
+##    mpgplayer.h
+    plistwin.h
 
 maemo5 {
 SOURCES += qmaemo5rotator.cpp
 
 maemo5 {
 SOURCES += qmaemo5rotator.cpp
index ad55042..75253f8 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 #############################################################################
 # Makefile for building: groove
 #############################################################################
 # Makefile for building: groove
-# Generated by qmake (2.01a) (Qt 4.7.0) on: Sun Dec 5 22:41:24 2010
+# Generated by qmake (2.01a) (Qt 4.7.0) on: Wed Jan 5 17:21:15 2011
 # Project:  Groove.pro
 # Template: app
 # Command: /usr/bin/qmake -o Makefile Groove.pro
 # Project:  Groove.pro
 # Template: app
 # Command: /usr/bin/qmake -o Makefile Groove.pro
@@ -16,7 +16,7 @@ CXXFLAGS      = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
 INCPATH       = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/phonon -I/usr/include/qt4 -I. -I/usr/include/qjson -I/usr/include -I/usr/include/qt4/phonon_compat -I. -I.
 LINK          = g++
 LFLAGS        = -Wl,-O1
 INCPATH       = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/phonon -I/usr/include/qt4 -I. -I/usr/include/qjson -I/usr/include -I/usr/include/qt4/phonon_compat -I. -I.
 LINK          = g++
 LFLAGS        = -Wl,-O1
-LIBS          = $(SUBLIBS)  -L/usr/lib -L/usr/local/lib -lqjson -lmpg123 -lpulse-simple -lphonon -lQtGui -lQtNetwork -lQtCore -lpthread 
+LIBS          = $(SUBLIBS)  -L/usr/lib -L/usr/local/lib -lqjson -lpulse-simple -lphonon -lQtGui -lQtNetwork -lQtCore -lpthread 
 AR            = ar cqs
 RANLIB        = 
 QMAKE         = /usr/bin/qmake
 AR            = ar cqs
 RANLIB        = 
 QMAKE         = /usr/bin/qmake
@@ -55,7 +55,7 @@ SOURCES       = main.cpp \
                bottombar.cpp \
                vkb.cpp \
                searchresults.cpp \
                bottombar.cpp \
                vkb.cpp \
                searchresults.cpp \
-               mpgplayer.cpp moc_groove.cpp \
+               plistwin.cpp moc_groove.cpp \
                moc_gscom.cpp \
                moc_splayer.cpp \
                moc_streamio.cpp \
                moc_gscom.cpp \
                moc_splayer.cpp \
                moc_streamio.cpp \
@@ -66,7 +66,7 @@ SOURCES       = main.cpp \
                moc_bottombar.cpp \
                moc_vkb.cpp \
                moc_searchresults.cpp \
                moc_bottombar.cpp \
                moc_vkb.cpp \
                moc_searchresults.cpp \
-               moc_mpgplayer.cpp \
+               moc_plistwin.cpp \
                qrc_res.cpp
 OBJECTS       = main.o \
                groove.o \
                qrc_res.cpp
 OBJECTS       = main.o \
                groove.o \
@@ -80,7 +80,7 @@ OBJECTS       = main.o \
                bottombar.o \
                vkb.o \
                searchresults.o \
                bottombar.o \
                vkb.o \
                searchresults.o \
-               mpgplayer.o \
+               plistwin.o \
                moc_groove.o \
                moc_gscom.o \
                moc_splayer.o \
                moc_groove.o \
                moc_gscom.o \
                moc_splayer.o \
@@ -92,7 +92,7 @@ OBJECTS       = main.o \
                moc_bottombar.o \
                moc_vkb.o \
                moc_searchresults.o \
                moc_bottombar.o \
                moc_vkb.o \
                moc_searchresults.o \
-               moc_mpgplayer.o \
+               moc_plistwin.o \
                qrc_res.o
 DIST          = /usr/share/qt4/mkspecs/common/g++.conf \
                /usr/share/qt4/mkspecs/common/unix.conf \
                qrc_res.o
 DIST          = /usr/share/qt4/mkspecs/common/g++.conf \
                /usr/share/qt4/mkspecs/common/unix.conf \
@@ -198,7 +198,7 @@ qmake:  FORCE
 
 dist: 
        @$(CHK_DIR_EXISTS) .tmp/groove1.0.0 || $(MKDIR) .tmp/groove1.0.0 
 
 dist: 
        @$(CHK_DIR_EXISTS) .tmp/groove1.0.0 || $(MKDIR) .tmp/groove1.0.0 
-       $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/groove1.0.0/ && $(COPY_FILE) --parents groove.h gscom.h splayer.h streamio.h playlist.h downloadmanager.h grooveprogressbar.h topbar.h bottombar.h vkb.h searchresults.h mpgplayer.h .tmp/groove1.0.0/ && $(COPY_FILE) --parents res.qrc .tmp/groove1.0.0/ && $(COPY_FILE) --parents main.cpp groove.cpp gscom.cpp splayer.cpp streamio.cpp playlist.cpp downloadmanager.cpp grooveprogressbar.cpp topbar.cpp bottombar.cpp vkb.cpp searchresults.cpp mpgplayer.cpp .tmp/groove1.0.0/ && $(COPY_FILE) --parents topbar.ui bottombar.ui vkb.ui searchresults.ui .tmp/groove1.0.0/ && (cd `dirname .tmp/groove1.0.0` && $(TAR) groove1.0.0.tar groove1.0.0 && $(COMPRESS) groove1.0.0.tar) && $(MOVE) `dirname .tmp/groove1.0.0`/groove1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/groove1.0.0
+       $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/groove1.0.0/ && $(COPY_FILE) --parents groove.h gscom.h splayer.h streamio.h playlist.h downloadmanager.h grooveprogressbar.h topbar.h bottombar.h vkb.h searchresults.h plistwin.h .tmp/groove1.0.0/ && $(COPY_FILE) --parents res.qrc .tmp/groove1.0.0/ && $(COPY_FILE) --parents main.cpp groove.cpp gscom.cpp splayer.cpp streamio.cpp playlist.cpp downloadmanager.cpp grooveprogressbar.cpp topbar.cpp bottombar.cpp vkb.cpp searchresults.cpp plistwin.cpp .tmp/groove1.0.0/ && $(COPY_FILE) --parents topbar.ui bottombar.ui vkb.ui searchresults.ui .tmp/groove1.0.0/ && (cd `dirname .tmp/groove1.0.0` && $(TAR) groove1.0.0.tar groove1.0.0 && $(COMPRESS) groove1.0.0.tar) && $(MOVE) `dirname .tmp/groove1.0.0`/groove1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/groove1.0.0
 
 
 clean:compiler_clean 
 
 
 clean:compiler_clean 
@@ -219,9 +219,9 @@ mocclean: compiler_moc_header_clean compiler_moc_source_clean
 
 mocables: compiler_moc_header_make_all compiler_moc_source_make_all
 
 
 mocables: compiler_moc_header_make_all compiler_moc_source_make_all
 
-compiler_moc_header_make_all: moc_groove.cpp moc_gscom.cpp moc_splayer.cpp moc_streamio.cpp moc_playlist.cpp moc_downloadmanager.cpp moc_grooveprogressbar.cpp moc_topbar.cpp moc_bottombar.cpp moc_vkb.cpp moc_searchresults.cpp moc_mpgplayer.cpp
+compiler_moc_header_make_all: moc_groove.cpp moc_gscom.cpp moc_splayer.cpp moc_streamio.cpp moc_playlist.cpp moc_downloadmanager.cpp moc_grooveprogressbar.cpp moc_topbar.cpp moc_bottombar.cpp moc_vkb.cpp moc_searchresults.cpp moc_plistwin.cpp
 compiler_moc_header_clean:
 compiler_moc_header_clean:
-       -$(DEL_FILE) moc_groove.cpp moc_gscom.cpp moc_splayer.cpp moc_streamio.cpp moc_playlist.cpp moc_downloadmanager.cpp moc_grooveprogressbar.cpp moc_topbar.cpp moc_bottombar.cpp moc_vkb.cpp moc_searchresults.cpp moc_mpgplayer.cpp
+       -$(DEL_FILE) moc_groove.cpp moc_gscom.cpp moc_splayer.cpp moc_streamio.cpp moc_playlist.cpp moc_downloadmanager.cpp moc_grooveprogressbar.cpp moc_topbar.cpp moc_bottombar.cpp moc_vkb.cpp moc_searchresults.cpp moc_plistwin.cpp
 moc_groove.cpp: gscom.h \
                splayer.h \
                streamio.h \
 moc_groove.cpp: gscom.h \
                splayer.h \
                streamio.h \
@@ -231,6 +231,7 @@ moc_groove.cpp: gscom.h \
                topbar.h \
                vkb.h \
                bottombar.h \
                topbar.h \
                vkb.h \
                bottombar.h \
+               plistwin.h \
                groove.h
        /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) groove.h -o moc_groove.cpp
 
                groove.h
        /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) groove.h -o moc_groove.cpp
 
@@ -279,14 +280,10 @@ moc_vkb.cpp: vkb.h
 moc_searchresults.cpp: searchresults.h
        /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) searchresults.h -o moc_searchresults.cpp
 
 moc_searchresults.cpp: searchresults.h
        /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) searchresults.h -o moc_searchresults.cpp
 
-moc_mpgplayer.cpp: streamio.h \
-               splayer.h \
-               grooveprogressbar.h \
-               qmaemo5rotator.h \
-               playlist.h \
+moc_plistwin.cpp: playlist.h \
                gscom.h \
                gscom.h \
-               mpgplayer.h
-       /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) mpgplayer.h -o moc_mpgplayer.cpp
+               plistwin.h
+       /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) plistwin.h -o moc_plistwin.cpp
 
 compiler_rcc_make_all: qrc_res.cpp
 compiler_rcc_clean:
 
 compiler_rcc_make_all: qrc_res.cpp
 compiler_rcc_clean:
@@ -348,7 +345,8 @@ main.o: main.cpp groove.h \
                playlist.h \
                topbar.h \
                vkb.h \
                playlist.h \
                topbar.h \
                vkb.h \
-               bottombar.h
+               bottombar.h \
+               plistwin.h
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
 
 groove.o: groove.cpp groove.h \
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
 
 groove.o: groove.cpp groove.h \
@@ -361,15 +359,14 @@ groove.o: groove.cpp groove.h \
                topbar.h \
                vkb.h \
                bottombar.h \
                topbar.h \
                vkb.h \
                bottombar.h \
-               mpgplayer.h
+               plistwin.h
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o groove.o groove.cpp
 
 gscom.o: gscom.cpp gscom.h
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o gscom.o gscom.cpp
 
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o groove.o groove.cpp
 
 gscom.o: gscom.cpp gscom.h
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o gscom.o gscom.cpp
 
-splayer.o: splayer.cpp mpgplayer.h \
+splayer.o: splayer.cpp splayer.h \
                streamio.h \
                streamio.h \
-               splayer.h \
                grooveprogressbar.h \
                qmaemo5rotator.h \
                playlist.h \
                grooveprogressbar.h \
                qmaemo5rotator.h \
                playlist.h \
@@ -412,14 +409,10 @@ searchresults.o: searchresults.cpp searchresults.h \
                ui_searchresults.h
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o searchresults.o searchresults.cpp
 
                ui_searchresults.h
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o searchresults.o searchresults.cpp
 
-mpgplayer.o: mpgplayer.cpp mpgplayer.h \
-               streamio.h \
-               splayer.h \
-               grooveprogressbar.h \
-               qmaemo5rotator.h \
+plistwin.o: plistwin.cpp plistwin.h \
                playlist.h \
                gscom.h
                playlist.h \
                gscom.h
-       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mpgplayer.o mpgplayer.cpp
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o plistwin.o plistwin.cpp
 
 moc_groove.o: moc_groove.cpp 
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_groove.o moc_groove.cpp
 
 moc_groove.o: moc_groove.cpp 
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_groove.o moc_groove.cpp
@@ -454,8 +447,8 @@ moc_vkb.o: moc_vkb.cpp
 moc_searchresults.o: moc_searchresults.cpp 
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_searchresults.o moc_searchresults.cpp
 
 moc_searchresults.o: moc_searchresults.cpp 
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_searchresults.o moc_searchresults.cpp
 
-moc_mpgplayer.o: moc_mpgplayer.cpp 
-       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mpgplayer.o moc_mpgplayer.cpp
+moc_plistwin.o: moc_plistwin.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_plistwin.o moc_plistwin.cpp
 
 qrc_res.o: qrc_res.cpp 
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qrc_res.o qrc_res.cpp
 
 qrc_res.o: qrc_res.cpp 
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qrc_res.o qrc_res.cpp
index adc2d0a..c996e4b 100644 (file)
@@ -110,6 +110,8 @@ groove::groove(QWidget *parent) :
 
     connect(bBar,SIGNAL(back()),player,SLOT(back()));
     bBar->setPlaybackProgress(100,100);
 
     connect(bBar,SIGNAL(back()),player,SLOT(back()));
     bBar->setPlaybackProgress(100,100);
+    //pwindow = new pListWin(0);
+    //pwindow->show();
 
 }
 void groove::performSearch(QString s)
 
 }
 void groove::performSearch(QString s)
@@ -205,12 +207,13 @@ void groove::addSongPlaylist()
             pl->addSong(item);
         model->item(selected.first().row(),1)->setText("Added to Playlist");;
     }
             pl->addSong(item);
         model->item(selected.first().row(),1)->setText("Added to Playlist");;
     }
+    //pwindow->updateList();
 }
 
 void groove::stop()
 {
     player->pause();
 }
 
 void groove::stop()
 {
     player->pause();
-    mpg->pause();
+    //mpg->pause();
 }
 void groove::moreB()
 {
 }
 void groove::moreB()
 {
index 8779cce..d407c69 100644 (file)
--- a/groove.h
+++ b/groove.h
@@ -12,7 +12,8 @@
 #include "topbar.h"
 #include "vkb.h"
 #include "bottombar.h"
 #include "topbar.h"
 #include "vkb.h"
 #include "bottombar.h"
-#include "mpgplayer.h"
+//#include "mpgplayer.h"
+#include "plistwin.h"
 
 class groove : public QWidget
 {
 
 class groove : public QWidget
 {
@@ -36,7 +37,7 @@ private slots:
     void addSongPlaylist();
     void showOthers();
 private:
     void addSongPlaylist();
     void showOthers();
 private:
-    mpgplayer *mpg;
+    //mpgplayer *mpg;
     bottomBar *bBar;
     sPlayer *player;
     QMenuBar *mBar;
     bottomBar *bBar;
     sPlayer *player;
     QMenuBar *mBar;
@@ -47,6 +48,7 @@ private:
     QPushButton *button;
     bool portrait;
     gscom *gs;
     QPushButton *button;
     bool portrait;
     gscom *gs;
+    pListWin *pwindow;
 #if defined(Q_WS_MAEMO_5) || defined(Q_WS_HILDON)
     QMaemo5Rotator *rot;
 #endif
 #if defined(Q_WS_MAEMO_5) || defined(Q_WS_HILDON)
     QMaemo5Rotator *rot;
 #endif
index 38eb579..5d867fd 100644 (file)
@@ -10,6 +10,11 @@ playlist::playlist(QObject *parent) :
    this->currentSkeyItem = -1;
    this->reply = NULL;
 }
    this->currentSkeyItem = -1;
    this->reply = NULL;
 }
+QList<playlist::songElement *>* playlist::getList()
+{
+    return pList;
+}
+
 void playlist::markPlayed(int position)
 {
     if(0 <= position && position < pList->size())
 void playlist::markPlayed(int position)
 {
     if(0 <= position && position < pList->size())
index df0eca2..7d3c215 100644 (file)
@@ -12,12 +12,30 @@ class playlist : public QObject
 {
     Q_OBJECT
 public:
 {
     Q_OBJECT
 public:
+    enum elementType
+    {
+        EStream = 1,
+        EFile = 2,
+    };
     enum failType
     {
         none = 0,
         Aborted = 1,
         Other =2
     };
     enum failType
     {
         none = 0,
         Aborted = 1,
         Other =2
     };
+    struct songElement
+    {
+        QString *songId;
+        QString *streamkey;
+        QUrl *server;
+        QBuffer *buffer;
+        QIODevice *data;
+        elementType type;
+        bool downloaded;
+        bool played;
+        bool bufferready;
+    };
+    QList<songElement *>* getList();
     explicit playlist(QObject *parent = 0);
     int addSong(QStandardItem *item);
     QList<QStandardItem *> getPlaylist();
     explicit playlist(QObject *parent = 0);
     int addSong(QStandardItem *item);
     QList<QStandardItem *> getPlaylist();
@@ -54,24 +72,9 @@ private slots:
 private:
 
 
 private:
 
 
-    enum elementType
-    {
-        EStream = 1,
-        EFile = 2,
-    };
 
 
-    struct songElement
-    {
-        QString *songId;
-        QString *streamkey;
-        QUrl *server;
-        QBuffer *buffer;
-        QIODevice *data;
-        elementType type;
-        bool downloaded;
-        bool played;
-        bool bufferready;
-    };
+
+
     int currentplayingitem;
     int currentSkeyItem;
     QList<songElement *> *pList;
     int currentplayingitem;
     int currentSkeyItem;
     QList<songElement *> *pList;
diff --git a/plistwin.cpp b/plistwin.cpp
new file mode 100644 (file)
index 0000000..ed0f57c
--- /dev/null
@@ -0,0 +1,32 @@
+#include "plistwin.h"
+#include <QStandardItemModel>
+
+pListWin::pListWin(QWidget *parent) :
+    QWidget(parent)
+{
+    pview = new QTableView();
+    QVBoxLayout *vlay = new QVBoxLayout();
+    this->setLayout(vlay);
+    vlay->addWidget(pview);
+}
+bool pListWin::setPlaylist(playlist *p)
+{
+    if(p==0)
+        return false;
+    plist = p->getList();
+    return true;
+}
+void pListWin::updateList()
+{
+    if(!plist)
+        return;
+    if(!model)
+        model = new QStandardItemModel(0,1);
+    for(int i = 0; i < plist->count(); i++)
+    {
+        model->appendRow(new QStandardItem("test"));
+    }
+    pview->setModel(model);
+
+}
+
diff --git a/plistwin.h b/plistwin.h
new file mode 100644 (file)
index 0000000..715fbf8
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef PLISTWIN_H
+#define PLISTWIN_H
+
+#include <QWidget>
+#include <QtGui>
+#include "playlist.h"
+
+class pListWin : public QWidget
+{
+    Q_OBJECT
+public:
+    explicit pListWin(QWidget *parent = 0);
+    bool setPlaylist(playlist*);
+    void updateList();
+
+signals:
+
+public slots:
+
+private:
+    QTableView *pview;
+    QList<playlist::songElement *> *plist;
+    QStandardItemModel *model;
+
+};
+
+#endif // PLISTWIN_H
index f6352c8..1a3ec0e 100644 (file)
@@ -1,4 +1,4 @@
-#include "mpgplayer.h"
+#include "splayer.h"
 #include <QFile>
 sPlayer::sPlayer(QObject *parent) :
     QObject(parent)
 #include <QFile>
 sPlayer::sPlayer(QObject *parent) :
     QObject(parent)
index 0c004e4..a73d4d3 100644 (file)
--- a/topbar.ui
+++ b/topbar.ui
  <resources>
   <include location="res.qrc"/>
  </resources>
  <resources>
   <include location="res.qrc"/>
  </resources>
- <connections/>
+ <connections>
+  <connection>
+   <sender>sBox</sender>
+   <signal>returnPressed()</signal>
+   <receiver>sButton</receiver>
+   <slot>click()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>271</x>
+     <y>22</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>453</x>
+     <y>22</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
 </ui>
 </ui>