├── LICENSE ├── README.md ├── mobile ├── android.html ├── epg.html ├── images │ ├── arts.png │ ├── book_open.png │ ├── children.png │ ├── clearsearch.png │ ├── date_next.png │ ├── date_previous.png │ ├── desktop.png │ ├── gradient.png │ ├── hobbies.png │ ├── layout_add.png │ ├── layout_delete.png │ ├── magazine.png │ ├── mobile.png │ ├── movies.png │ ├── music.png │ ├── news.png │ ├── pb_left.png │ ├── pb_middle.png │ ├── pb_right.png │ ├── pb_trans.png │ ├── resultset_next.png │ ├── resultset_previous.png │ ├── science.png │ ├── show.png │ ├── social.png │ ├── special.png │ ├── sports.png │ ├── tick.png │ ├── timeline.png │ ├── timeline200.png │ ├── tvheadend128.png │ └── white75.png ├── index.html ├── iui │ ├── ext-sandbox │ │ ├── TbBMod │ │ │ ├── Read Me.txt │ │ │ ├── TbBMod.js │ │ │ ├── ajaxhelp.html │ │ │ ├── formno.html │ │ │ ├── formyes.html │ │ │ ├── how.html │ │ │ ├── index.html │ │ │ ├── instruction2.html │ │ │ └── xtra.css │ │ ├── cache-manager │ │ │ ├── cache-demo.html │ │ │ ├── cache-demo.manifest │ │ │ └── iui-cache-manager.js │ │ ├── canvg │ │ │ ├── canvg.js │ │ │ ├── index.html │ │ │ ├── iui-canvg.js │ │ │ ├── rgbcolor.js │ │ │ └── testimages │ │ │ │ ├── ball.svg │ │ │ │ ├── butterfly.svg │ │ │ │ ├── tiger.svg │ │ │ │ └── world.svg │ │ ├── ext-css │ │ │ ├── iui-buttons.css │ │ │ ├── iui-deflist.css │ │ │ ├── iui-ext.css │ │ │ └── iui-lists.css │ │ ├── google-analytics │ │ │ └── iui-google-analytics.js │ │ ├── jit-loader │ │ │ ├── gmaps.frag │ │ │ ├── jit-loader.js │ │ │ ├── jit-test-gmaps.js │ │ │ ├── jstest.frag │ │ │ ├── jstest1.js │ │ │ ├── jstest2.js │ │ │ └── test-jit-loader.html │ │ ├── masabi │ │ │ ├── iui_ext.js │ │ │ └── t │ │ │ │ └── default │ │ │ │ ├── dpBack.png │ │ │ │ ├── dpFwd.png │ │ │ │ ├── iui_ext.css │ │ │ │ ├── listArrow.png │ │ │ │ └── tick.png │ │ ├── reachability │ │ │ ├── iui-reachability.js │ │ │ └── reachability-demo.html │ │ ├── t │ │ │ ├── android │ │ │ │ ├── android-theme.css │ │ │ │ ├── cancel.png │ │ │ │ ├── droidsans.ttf │ │ │ │ ├── listArrow.png │ │ │ │ ├── loading.gif │ │ │ │ ├── panelTitle.png │ │ │ │ ├── thumb.png │ │ │ │ ├── toggle.png │ │ │ │ └── toggleOn.png │ │ │ ├── defaulthd │ │ │ │ ├── backButton-hd.png │ │ │ │ ├── backButtonBack-hd.png │ │ │ │ ├── backButtonBackSel-hd.png │ │ │ │ ├── backButtonBrdr-hd.png │ │ │ │ ├── backButtonSel-hd.png │ │ │ │ ├── backButtonSelBrdr-hd.png │ │ │ │ ├── blueButton-hd.png │ │ │ │ ├── defaulthd-theme.css │ │ │ │ ├── listArrow-hd.png │ │ │ │ ├── listArrowSel-hd.png │ │ │ │ ├── selection-hd.png │ │ │ │ ├── toolButton-hd.png │ │ │ │ ├── toolButtonSel-hd.png │ │ │ │ └── toolbar-hd.png │ │ │ ├── svg │ │ │ │ ├── backButton.svg │ │ │ │ └── backButtonSqCorners.svg │ │ │ └── webos │ │ │ │ ├── cancel.png │ │ │ │ ├── grayButton.png │ │ │ │ ├── list.png │ │ │ │ ├── listArrow.png │ │ │ │ ├── listArrowSel.png │ │ │ │ ├── listGroup.png │ │ │ │ ├── loading.gif │ │ │ │ ├── selection.png │ │ │ │ ├── thumb.png │ │ │ │ ├── toggle.png │ │ │ │ ├── toggleOn.png │ │ │ │ ├── webos-theme.css │ │ │ │ └── whiteButton.png │ │ ├── unloader │ │ │ ├── ajax.frag │ │ │ ├── index.html │ │ │ └── iui-unloader.js │ │ ├── video │ │ │ ├── index.html │ │ │ ├── iui-video-logger.js │ │ │ ├── iui-video.css │ │ │ └── iui-video.js │ │ └── view │ │ │ ├── iui-views.js │ │ │ ├── view-test.html │ │ │ └── view-test.js │ ├── iui-favicon.png │ ├── iui-logo-touch-icon-hd.png │ ├── iui-logo-touch-icon.png │ ├── iui-startup-ipad.jpg │ ├── iui-startup.jpg │ ├── iui.css │ ├── iui.js │ ├── iuix.css │ ├── iuix.js │ ├── js │ │ ├── iui-event-log.js │ │ └── iui-theme-switcher.js │ └── t │ │ ├── ThemeImageCatalog.html │ │ ├── default │ │ ├── back-img.png │ │ ├── backButton.png │ │ ├── backButtonBack.png │ │ ├── backButtonBrdr.png │ │ ├── backButtonSel.png │ │ ├── blueButton.png │ │ ├── cancel.png │ │ ├── default-theme.css │ │ ├── grayButton.png │ │ ├── listArrow.png │ │ ├── listArrowSel.png │ │ ├── listGroup.png │ │ ├── loading.gif │ │ ├── pinstripes.png │ │ ├── redButton.png │ │ ├── selection.png │ │ ├── thumb.png │ │ ├── title-img.png │ │ ├── toggle.png │ │ ├── toggleOn.png │ │ ├── toolButton.png │ │ ├── toolbar.png │ │ └── whiteButton.png │ │ ├── defaultgrad │ │ └── defaultgrad-theme.css │ │ └── ipdc │ │ ├── Logo_DevCamp.png │ │ ├── backButton.png │ │ ├── beige.png │ │ ├── blueButton.png │ │ ├── ipdc-theme.css │ │ ├── listGroup.png │ │ ├── pinstripes.png │ │ ├── redButton.png │ │ ├── toggleOn.png │ │ ├── toolButton.png │ │ └── toolbar.png ├── mag.html ├── mobile.html ├── tvh.css ├── tvh.js ├── tvh_common.js ├── tvh_custom.js ├── tvh_epg.css ├── tvh_epg.js ├── tvh_lang.js ├── tvh_mag.css └── tvh_mag.js └── screenshots ├── channels.png ├── epg.png ├── epg_entry.png ├── home.png ├── magazine.png └── timeline.png /README.md: -------------------------------------------------------------------------------- 1 | TvheadendMobileUI 2 | ================= 3 | 4 | Tvheadend mobile web interface 5 | 6 | ## Introduction 7 | 8 | This is a mobile web interface for the Tvheadend streaming/recording server {https://www.lonelycoder.com/tvheadend/}. You need a current version of Tvheadend (3.3). 9 | 10 | It uses the framework iUI {http://www.iui-js.org/}, which provides an iPhone-like look and feel. It works on different modern browsers 11 | 12 | Have a look at the screenshots in the folder "screenshots"! 13 | 14 |  15 | 16 | ## Features 17 | 18 | - Show channels by channel tag 19 | - Show channel epg by channel 20 | - Record/cancel epg entries 21 | - Show upcoming/finished/failed recordings 22 | - Cancel/Delete recording entries 23 | - Show/Editing automatic recorder entries 24 | - Show subscriptions 25 | - Show adapters 26 | - Show about 27 | - Search epg by title 28 | - Suport for different DVR configurations 29 | - Support for different languages 30 | - English 31 | - German 32 | 33 | ## EPG Timeline 34 | 35 | - Also included is a nice EPG timeline (vertical EPG) with the channels on y-axis and time on x-axis. It is possible to schedule and cancel recordings from the timeline. Just click on an entry and you see a detailed entry with buttons. 36 | 37 |  38 | 39 | 40 | ## Listings magazine 41 | 42 | - Also included is a listings magazine with the channels each on a separate column. You can select a tag, skip to the next day or skip to the next page. You can also show and hide columns. It is possible to schedule and recordings from the listing. Just click on a title or subtitle. 43 | 44 |  45 | 46 | 47 | ## Installation 48 | 49 | First checkout repository 50 | 51 | $ git clone git://github.com/polini/TvheadendMobileUI.git 52 | 53 | Then copy directory 54 | 55 | $ sudo cp -r TvheadendMobileUI/mobile/ /usr/local/share/tvheadend/src/webui/static/ 56 | 57 | or create symlink 58 | 59 | $ sudo ln -s `pwd`/TvheadendMobileUI/mobile/ /usr/local/share/tvheadend/src/webui/static/mobile 60 | 61 | The target directory may vary. It could also be /usr/share/tvheadend/src/webui/static/mobile. 62 | 63 | ### OpenELEC Tvheadend add-on 64 | 65 | When you installed Tvheadend as an OpenELEC add-on, you can not use TvheadendMobileUI at the moment, as the static html pages are bundled in the Tvheadend binary. 66 | 67 | ## Usage 68 | 69 | - You can now access the web interface: http://ip:9981/static/mobile/index.html 70 | - The mobile page can be accessed via: http://ip:9981/static/mobile/mobile.html 71 | - The EPG timeline can accessed via: http://ip:9981/static/mobile/epg.html 72 | - The listings magazine can be accessed via: http://ip:9981/static/mobile/mag.html 73 | 74 | ## Please notice 75 | 76 | - This software has beta status, so be careful. I am not responsible for missed or deleted recordings. 77 | - Please feel free to give feedback or to create issue tickets. 78 | 79 | ## License 80 | 81 | Licensed under GPLv3 (see LICENSE) 82 | -------------------------------------------------------------------------------- /mobile/android.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |