Ticket #6159: MVnewmeta.11.diff
File MVnewmeta.11.diff, 48.0 KB (added by , 15 years ago) |
---|
-
mythtv/libs/libmyth/storagegroup.cpp
19 19 // << "Thumbnails" 20 20 << "DB Backups" 21 21 << "Videos" 22 << "Trailers" 23 << "Coverart" 24 << "Fanart" 25 << "Screenshots" 26 << "Banners" 22 27 ; 23 28 24 29 /****************************************************************************/ -
mythplugins/mythvideo/theme/default/video-ui.xml
858 858 <window name="edit_metadata"> 859 859 860 860 <textarea name="title" from="basetextarea"> 861 <area>10, 50,760,50</area>861 <area>10,30,760,50</area> 862 862 <value>Edit Video Information</value> 863 863 <align>hcenter,vcenter</align> 864 864 <font>baselarge</font> … … 867 867 <!-- Labels --> 868 868 869 869 <textarea name="title_text" from="basetextarea"> 870 <area>50, 135,250,40</area>870 <area>50,90,250,40</area> 871 871 <value>Name:</value> 872 872 <align>right,top</align> 873 873 </textarea> 874 874 875 875 <textarea name="category_text" from="title_text"> 876 <position>50,1 97</position>876 <position>50,152</position> 877 877 <value>Category:</value> 878 878 </textarea> 879 879 880 880 <textarea name="level_text" from="title_text"> 881 <position>50,2 47</position>881 <position>50,202</position> 882 882 <value>Parental Control:</value> 883 883 </textarea> 884 884 885 885 <textarea name="child_text" from="title_text"> 886 <position>50,2 92</position>886 <position>50,247</position> 887 887 <value>File to Always Play Next:</value> 888 888 </textarea> 889 889 890 890 <textarea name="browse_text" from="title_text"> 891 <position>50, 337</position>891 <position>50,292</position> 892 892 <value>Include while Browsing:</value> 893 893 </textarea> 894 894 895 895 <textarea name="coverart_text_label" from="title_text"> 896 <position>50,3 75</position>896 <position>50,328</position> 897 897 <value>Cover Art:</value> 898 898 </textarea> 899 899 900 <textarea name="screenshot_text_label" from="title_text"> 901 <position>50,357</position> 902 <value>Screenshot:</value> 903 </textarea> 904 905 <textarea name="banner_text_label" from="title_text"> 906 <position>50,386</position> 907 <value>Banner:</value> 908 </textarea> 909 910 <textarea name="fanart_text_label" from="title_text"> 911 <position>50,415</position> 912 <value>Fanart:</value> 913 </textarea> 914 900 915 <textarea name="trailer_text_label" from="title_text"> 901 <position>50,4 05</position>916 <position>50,447</position> 902 917 <value>Trailer:</value> 903 918 </textarea> 904 919 905 920 <textarea name="player_text" from="title_text"> 906 <position>50,4 45</position>921 <position>50,487</position> 907 922 <value>Unique Player Command:</value> 908 923 </textarea> 909 924 910 925 <!-- Widgets --> 911 926 912 927 <textedit name="title_edit" from="basetextedit"> 913 <position>310, 125</position>928 <position>310,80</position> 914 929 </textedit> 915 930 916 931 <buttonlist name="category_select" from="baseselector"> 917 <position>310,1 90</position>932 <position>310,145</position> 918 933 </buttonlist> 919 934 920 935 <buttonlist name="level_select" from="baseselector"> 921 <position>310, 240</position>936 <position>310,195</position> 922 937 </buttonlist> 923 938 924 939 <buttonlist name="child_select" from="baseselector"> 925 <position>310,2 85</position>940 <position>310,240</position> 926 941 </buttonlist> 927 942 928 943 <checkbox name="browse_check" from="basecheckbox"> 929 <position>310, 335</position>944 <position>310,290</position> 930 945 </checkbox> 931 946 932 947 <button name="coverart_button"> 933 <area>310,3 70,32,32</area>948 <area>310,323,32,32</area> 934 949 <statetype name="buttonstate"> 935 950 <state name="active"> 936 951 <imagetype name="background"> … … 952 967 </button> 953 968 954 969 <textarea name="coverart_text" from="basetextarea"> 955 <area>350,3 75,250,40</area>970 <area>350,328,250,40</area> 956 971 <value>/path/to/the/thing.jpg</value> 957 972 </textarea> 958 973 974 <button name="screenshot_button"> 975 <area>310,352,32,32</area> 976 <statetype name="buttonstate"> 977 <state name="active"> 978 <imagetype name="background"> 979 <filename>blankbutton_off.png</filename> 980 </imagetype> 981 </state> 982 <state name="selected" from="active"> 983 <imagetype name="background"> 984 <filename>blankbutton_on.png</filename> 985 </imagetype> 986 </state> 987 <state name="disabled" from="active" /> 988 <state name="pushed" from="active"> 989 <imagetype name="background"> 990 <filename>blankbutton_pushed.png</filename> 991 </imagetype> 992 </state> 993 </statetype> 994 </button> 995 996 <textarea name="screenshot_text" from="basetextarea"> 997 <area>350,357,250,40</area> 998 <value>/path/to/the/thing.jpg</value> 999 </textarea> 1000 1001 <button name="banner_button"> 1002 <area>310,381,32,32</area> 1003 <statetype name="buttonstate"> 1004 <state name="active"> 1005 <imagetype name="background"> 1006 <filename>blankbutton_off.png</filename> 1007 </imagetype> 1008 </state> 1009 <state name="selected" from="active"> 1010 <imagetype name="background"> 1011 <filename>blankbutton_on.png</filename> 1012 </imagetype> 1013 </state> 1014 <state name="disabled" from="active" /> 1015 <state name="pushed" from="active"> 1016 <imagetype name="background"> 1017 <filename>blankbutton_pushed.png</filename> 1018 </imagetype> 1019 </state> 1020 </statetype> 1021 </button> 1022 1023 <textarea name="banner_text" from="basetextarea"> 1024 <area>350,386,250,40</area> 1025 <value>/path/to/the/thing.jpg</value> 1026 </textarea> 1027 1028 <button name="fanart_button"> 1029 <area>310,412,32,32</area> 1030 <statetype name="buttonstate"> 1031 <state name="active"> 1032 <imagetype name="background"> 1033 <filename>blankbutton_off.png</filename> 1034 </imagetype> 1035 </state> 1036 <state name="selected" from="active"> 1037 <imagetype name="background"> 1038 <filename>blankbutton_on.png</filename> 1039 </imagetype> 1040 </state> 1041 <state name="disabled" from="active" /> 1042 <state name="pushed" from="active"> 1043 <imagetype name="background"> 1044 <filename>blankbutton_pushed.png</filename> 1045 </imagetype> 1046 </state> 1047 </statetype> 1048 </button> 1049 1050 <textarea name="fanart_text" from="basetextarea"> 1051 <area>350,415,250,40</area> 1052 <value>/path/to/the/thing.jpg</value> 1053 </textarea> 1054 959 1055 <button name="trailer_button"> 960 <area>310,4 00,32,32</area>1056 <area>310,442,32,32</area> 961 1057 <statetype name="buttonstate"> 962 1058 <state name="active"> 963 1059 <imagetype name="background"> … … 979 1075 </button> 980 1076 981 1077 <textarea name="trailer_text" from="basetextarea"> 982 <area>350,4 05,250,40</area>1078 <area>350,447,250,40</area> 983 1079 <value>/path/to/the/thing.jpg</value> 984 1080 </textarea> 985 1081 986 1082 987 1083 <textedit name="player_edit" from="basetextedit"> 988 <position>310,4 35</position>1084 <position>310,477</position> 989 1085 </textedit> 990 1086 991 1087 <button name="done_button" from="basebutton"> 992 <position>310,5 05</position>1088 <position>310,537</position> 993 1089 <value>Done</value> 994 1090 </button> 995 1091 -
mythplugins/mythvideo/theme/default-wide/video-ui.xml
843 853 <window name="edit_metadata"> 844 854 845 855 <textarea name="title" from="basetextarea"> 846 <area>10,50, 760,50</area>856 <area>10,50,1260,50</area> 847 857 <value>Edit Video Information</value> 848 858 <align>hcenter,vcenter</align> 849 859 <font>baselarge</font> … … 852 862 <!-- Labels --> 853 863 854 864 <textarea name="title_text" from="basetextarea"> 855 <area> 50,135,250,40</area>865 <area>250,110,250,40</area> 856 866 <value>Name:</value> 857 867 <align>right,top</align> 858 868 </textarea> 859 869 860 870 <textarea name="category_text" from="title_text"> 861 <position> 50,197</position>871 <position>250,172</position> 862 872 <value>Category:</value> 863 873 </textarea> 864 874 865 875 <textarea name="level_text" from="title_text"> 866 <position> 50,247</position>876 <position>250,222</position> 867 877 <value>Parental Control:</value> 868 878 </textarea> 869 879 870 880 <textarea name="child_text" from="title_text"> 871 <position> 50,292</position>881 <position>250,267</position> 872 882 <value>File to Always Play Next:</value> 873 883 </textarea> 874 884 875 885 <textarea name="browse_text" from="title_text"> 876 <position> 50,337</position>886 <position>250,312</position> 877 887 <value>Include while Browsing:</value> 878 888 </textarea> 879 889 880 890 <textarea name="coverart_text_label" from="title_text"> 881 <position> 50,375</position>891 <position>250,348</position> 882 892 <value>Cover Art:</value> 883 893 </textarea> 884 894 895 <textarea name="screenshot_text_label" from="title_text"> 896 <position>250,377</position> 897 <value>Screenshot:</value> 898 </textarea> 899 900 <textarea name="banner_text_label" from="title_text"> 901 <position>250,406</position> 902 <value>Banner:</value> 903 </textarea> 904 905 <textarea name="fanart_text_label" from="title_text"> 906 <position>250,435</position> 907 <value>Fanart:</value> 908 </textarea> 909 885 910 <textarea name="trailer_text_label" from="title_text"> 886 <position> 50,405</position>911 <position>250,464</position> 887 912 <value>Trailer:</value> 888 913 </textarea> 889 914 890 915 <textarea name="player_text" from="title_text"> 891 <position> 50,445</position>916 <position>250,510</position> 892 917 <value>Unique Player Command:</value> 893 918 </textarea> 894 919 895 920 <!-- Widgets --> 896 921 897 922 <textedit name="title_edit" from="basetextedit"> 898 <position> 310,125</position>923 <position>510,100</position> 899 924 </textedit> 900 925 901 926 <buttonlist name="category_select" from="baseselector"> 902 <position> 310,190</position>927 <position>510,165</position> 903 928 </buttonlist> 904 929 905 930 <buttonlist name="level_select" from="baseselector"> 906 <position> 310,240</position>931 <position>510,215</position> 907 932 </buttonlist> 908 933 909 934 <buttonlist name="child_select" from="baseselector"> 910 <position> 310,285</position>935 <position>510,260</position> 911 936 </buttonlist> 912 937 913 938 <checkbox name="browse_check" from="basecheckbox"> 914 <position> 310,335</position>939 <position>510,310</position> 915 940 </checkbox> 916 941 917 942 <button name="coverart_button"> 918 <area> 310,370,32,32</area>943 <area>510,343,32,32</area> 919 944 <statetype name="buttonstate"> 920 945 <state name="active"> 921 946 <imagetype name="background"> … … 937 962 </button> 938 963 939 964 <textarea name="coverart_text" from="basetextarea"> 940 <area> 350,375,250,40</area>965 <area>550,348,250,40</area> 941 966 <value>/path/to/the/thing.jpg</value> 942 967 </textarea> 943 968 969 <button name="screenshot_button"> 970 <area>510,372,32,32</area> 971 <statetype name="buttonstate"> 972 <state name="active"> 973 <imagetype name="background"> 974 <filename>blankbutton_off.png</filename> 975 </imagetype> 976 </state> 977 <state name="selected" from="active"> 978 <imagetype name="background"> 979 <filename>blankbutton_on.png</filename> 980 </imagetype> 981 </state> 982 <state name="disabled" from="active" /> 983 <state name="pushed" from="active"> 984 <imagetype name="background"> 985 <filename>blankbutton_pushed.png</filename> 986 </imagetype> 987 </state> 988 </statetype> 989 </button> 990 991 <textarea name="screenshot_text" from="basetextarea"> 992 <area>550,377,250,40</area> 993 <value>/path/to/the/thing.jpg</value> 994 </textarea> 995 996 <button name="banner_button"> 997 <area>510,401,32,32</area> 998 <statetype name="buttonstate"> 999 <state name="active"> 1000 <imagetype name="background"> 1001 <filename>blankbutton_off.png</filename> 1002 </imagetype> 1003 </state> 1004 <state name="selected" from="active"> 1005 <imagetype name="background"> 1006 <filename>blankbutton_on.png</filename> 1007 </imagetype> 1008 </state> 1009 <state name="disabled" from="active" /> 1010 <state name="pushed" from="active"> 1011 <imagetype name="background"> 1012 <filename>blankbutton_pushed.png</filename> 1013 </imagetype> 1014 </state> 1015 </statetype> 1016 </button> 1017 1018 <textarea name="banner_text" from="basetextarea"> 1019 <area>550,406,250,40</area> 1020 <value>/path/to/the/thing.jpg</value> 1021 </textarea> 1022 1023 <button name="fanart_button"> 1024 <area>510,430,32,32</area> 1025 <statetype name="buttonstate"> 1026 <state name="active"> 1027 <imagetype name="background"> 1028 <filename>blankbutton_off.png</filename> 1029 </imagetype> 1030 </state> 1031 <state name="selected" from="active"> 1032 <imagetype name="background"> 1033 <filename>blankbutton_on.png</filename> 1034 </imagetype> 1035 </state> 1036 <state name="disabled" from="active" /> 1037 <state name="pushed" from="active"> 1038 <imagetype name="background"> 1039 <filename>blankbutton_pushed.png</filename> 1040 </imagetype> 1041 </state> 1042 </statetype> 1043 </button> 1044 1045 <textarea name="fanart_text" from="basetextarea"> 1046 <area>550,435,250,40</area> 1047 <value>/path/to/the/thing.jpg</value> 1048 </textarea> 1049 944 1050 <button name="trailer_button"> 945 <area> 310,400,32,32</area>1051 <area>510,460,32,32</area> 946 1052 <statetype name="buttonstate"> 947 1053 <state name="active"> 948 1054 <imagetype name="background"> … … 964 1070 </button> 965 1071 966 1072 <textarea name="trailer_text" from="basetextarea"> 967 <area> 350,405,250,40</area>1073 <area>550,465,250,40</area> 968 1074 <value>/path/to/the/thing.jpg</value> 969 1075 </textarea> 970 1076 971 1077 <textedit name="player_edit" from="basetextedit"> 972 <position> 310,435</position>1078 <position>510,495</position> 973 1079 </textedit> 974 1080 975 1081 <button name="done_button" from="basebutton"> 976 <position> 310,505</position>1082 <position>510,565</position> 977 1083 <value>Done</value> 978 1084 </button> 979 1085 -
mythplugins/mythvideo/mythvideo/videodlg.h
112 113 void fetchVideos(); 113 114 QString RemoteImageCheck(QString host, QString filename); 114 115 QString GetCoverImage(MythGenericTree *node); 116 QString GetScreenshot(MythGenericTree *node); 117 QString GetBanner(MythGenericTree *node); 118 QString GetFanart(MythGenericTree *node); 115 119 116 120 Metadata *GetMetadata(MythUIButtonListItem *item); 117 121 … … 184 193 MythUIText *m_crumbText; 185 194 186 195 MythUIImage *m_coverImage; 196 MythUIImage *m_screenshot; 197 MythUIImage *m_banner; 198 MythUIImage *m_fanart; 187 199 188 200 MythUIStateType *m_parentalLevelState; 189 201 MythUIStateType *m_videoLevelState; -
mythplugins/mythvideo/mythvideo/metadatalistmanager.cpp
113 113 const QString BaseMetadataQuery( 114 114 "SELECT title, director, plot, rating, year, userrating," 115 115 "length, filename, showlevel, coverfile, inetref, childid," 116 "browse, playcommand, category, intid, trailer, host FROM videometadata"); 116 "browse, playcommand, category, intid, trailer, screenshot," 117 "banner, fanart, host FROM videometadata"); 117 118 118 119 query.prepare(BaseMetadataQuery); 119 120 -
mythplugins/mythvideo/mythvideo/metadata.cpp
88 88 89 89 public: 90 90 MetadataImp(const QString &filename, const QString &trailer, const QString &coverfile, 91 const QString &screenshot, const QString &banner, const QString &fanart, 91 92 const QString &title, int year, 92 93 const QString &inetref, const QString &director, 93 94 const QString &plot, float userrating, … … 104 105 m_rating(rating), m_playcommand(playcommand), m_category(category), 105 106 m_genres(genres), m_countries(countries), m_cast(cast), 106 107 m_filename(filename), m_trailer(trailer), m_coverfile(coverfile), 107 m_categoryID(categoryID), m_childID(childID), m_year(year), 108 m_length(length), m_showlevel(showlevel), m_browse(browse), m_id(id), 108 m_screenshot(screenshot), m_banner(banner), m_fanart(fanart), 109 m_categoryID(categoryID), m_childID(childID), 110 m_year(year), m_length(length), m_showlevel(showlevel), m_browse(browse), m_id(id), 109 111 m_userrating(userrating), m_host(host) 110 112 { 111 113 VideoCategory::getCategory().get(m_categoryID, m_category); … … 138 140 m_filename = rhs.m_filename; 139 141 m_trailer = rhs.m_trailer; 140 142 m_coverfile = rhs.m_coverfile; 143 m_screenshot = rhs.m_screenshot; 144 m_banner = rhs.m_banner; 145 m_fanart = rhs.m_fanart; 141 146 142 147 m_categoryID = rhs.m_categoryID; 143 148 m_childID = rhs.m_childID; … … 221 226 const QString &getCoverFile() const { return m_coverfile; } 222 227 void setCoverFile(const QString &coverFile) { m_coverfile = coverFile; } 223 228 229 const QString &getScreenshot() const { return m_screenshot; } 230 void setScreenshot(const QString &screenshot) { m_screenshot = screenshot; } 231 232 const QString &getBanner() const { return m_banner; } 233 void setBanner(const QString &banner) { m_banner = banner; } 234 235 const QString &getFanart() const { return m_fanart; } 236 void setFanart(const QString &fanart) { m_fanart = fanart; } 237 224 238 int getCategoryID() const 225 239 { 226 240 return m_categoryID; … … 286 300 QString m_filename; 287 301 QString m_trailer; 288 302 QString m_coverfile; 303 QString m_screenshot; 304 QString m_banner; 305 QString m_fanart; 289 306 QString m_host; 290 307 291 308 int m_categoryID; … … 389 406 void MetadataImp::Reset() 390 407 { 391 408 MetadataImp tmp(m_filename, VIDEO_TRAILER_DEFAULT, VIDEO_COVERFILE_DEFAULT, 392 Metadata::FilenameToTitle(m_filename), VIDEO_YEAR_DEFAULT, 409 VIDEO_SCREENSHOT_DEFAULT, VIDEO_BANNER_DEFAULT, VIDEO_FANART_DEFAULT, 410 Metadata::FilenameToTitle(m_filename), VIDEO_YEAR_DEFAULT, 393 411 VIDEO_INETREF_DEFAULT, VIDEO_DIRECTOR_DEFAULT, 394 412 VIDEO_PLOT_DEFAULT, 0.0, VIDEO_RATING_DEFAULT, 0, m_id, 395 413 ParentalLevel::plLowest, 0, -1, true, "", "", … … 482 500 m_categoryID = query.value(14).toInt(); 483 501 m_id = query.value(15).toInt(); 484 502 m_trailer = query.value(16).toString(); 485 m_host = query.value(17).toString(); 503 m_screenshot = query.value(17).toString(); 504 m_banner = query.value(18).toString(); 505 m_fanart = query.value(19).toString(); 506 m_host = query.value(20).toString(); 486 507 487 508 VideoCategory::getCategory().get(m_categoryID, m_category); 488 509 … … 508 529 m_rating = VIDEO_RATING_DEFAULT; 509 530 if (m_coverfile.isEmpty()) 510 531 m_coverfile = VIDEO_COVERFILE_DEFAULT; 532 if (m_screenshot.isEmpty()) 533 m_screenshot = VIDEO_SCREENSHOT_DEFAULT; 534 if (m_banner.isEmpty()) 535 m_banner = VIDEO_BANNER_DEFAULT; 536 if (m_fanart.isEmpty()) 537 m_fanart = VIDEO_FANART_DEFAULT; 511 538 if (m_trailer.isEmpty()) 512 539 m_trailer = VIDEO_TRAILER_DEFAULT; 513 540 if (m_inetref.isEmpty()) … … 527 554 528 555 query.prepare("INSERT INTO videometadata (title,director,plot," 529 556 "rating,year,userrating,length,filename,showlevel," 530 "coverfile,inetref,browse,trailer, host) VALUES (:TITLE, :DIRECTOR,"531 " :PLOT, :RATING, :YEAR, :USERRATING, :LENGTH, "532 ": FILENAME, :SHOWLEVEL, :COVERFILE, :INETREF, :BROWSE, "533 ": TRAILER, :HOST)");534 557 "coverfile,inetref,browse,trailer,screenshot,banner," 558 "fanart,host) VALUES (:TITLE, :DIRECTOR, :PLOT, :RATING, " 559 ":YEAR, :USERRATING, :LENGTH, :FILENAME, :SHOWLEVEL, " 560 ":COVERFILE, :INETREF, :BROWSE, :TRAILER, :SCREENSHOT, " 561 ":BANNER, :FANART, :HOST)"); 535 562 } 536 563 else 537 564 { … … 540 567 "year = :YEAR, userrating = :USERRATING, " 541 568 "length = :LENGTH, filename = :FILENAME, trailer = :TRAILER, " 542 569 "showlevel = :SHOWLEVEL, coverfile = :COVERFILE, " 570 "screenshot = :SCREENSHOT, banner = :BANNER, fanart = :FANART, " 543 571 "inetref = :INETREF, browse = :BROWSE, host = :HOST, " 544 572 "playcommand = :PLAYCOMMAND, childid = :CHILDID, " 545 573 "category = :CATEGORY WHERE intid = :INTID"); … … 561 589 query.bindValue(":TRAILER", m_trailer); 562 590 query.bindValue(":SHOWLEVEL", m_showlevel); 563 591 query.bindValue(":COVERFILE", m_coverfile); 592 query.bindValue(":SCREENSHOT", m_screenshot); 593 query.bindValue(":BANNER", m_banner); 594 query.bindValue(":FANART", m_fanart); 564 595 query.bindValue(":INETREF", m_inetref); 565 596 query.bindValue(":BROWSE", m_browse); 566 597 query.bindValue(":HOST", m_host); … … 793 824 return ret; 794 825 } 795 826 796 Metadata::Metadata(const QString &filename, const QString &trailer, const QString &coverfile, 827 Metadata::Metadata(const QString &filename, const QString &trailer, 828 const QString &coverfile, const QString &screenshot, 829 const QString &banner, const QString &fanart, 797 830 const QString &title, int year, 798 831 const QString &inetref, const QString &director, 799 832 const QString &plot, float userrating, … … 806 839 const cast_list &cast, 807 840 const QString &host) 808 841 { 809 m_imp = new MetadataImp(filename, trailer, coverfile, title, year, inetref, director, 810 plot, userrating, rating, length, id, showlevel, 811 categoryID, childID, browse, playcommand, category, 842 m_imp = new MetadataImp(filename, trailer, coverfile, screenshot, banner, 843 fanart, title, year, inetref, director, plot, 844 userrating, rating, length, id, showlevel, 845 categoryID, childID, browse, playcommand, category, 812 846 genres, countries, cast, host); 813 847 } 814 848 … … 1032 1066 m_imp->setCoverFile(coverFile); 1033 1067 } 1034 1068 1069 const QString &Metadata::Screenshot() const 1070 { 1071 return m_imp->getScreenshot(); 1072 } 1073 1074 void Metadata::setScreenshot(const QString &screenshot) 1075 { 1076 m_imp->setScreenshot(screenshot); 1077 } 1078 1079 const QString &Metadata::Banner() const 1080 { 1081 return m_imp->getBanner(); 1082 } 1083 1084 void Metadata::setBanner(const QString &banner) 1085 { 1086 m_imp->setBanner(banner); 1087 } 1088 1089 const QString &Metadata::Fanart() const 1090 { 1091 return m_imp->getFanart(); 1092 } 1093 1094 void Metadata::setFanart(const QString &fanart) 1095 { 1096 m_imp->setFanart(fanart); 1097 } 1098 1035 1099 const QString &Metadata::Category() const 1036 1100 { 1037 1101 return m_imp->getCategory(); -
mythplugins/mythvideo/mythvideo/globalsettings.cpp
247 280 return gc; 248 281 } 249 282 283 HostLineEdit *VideoScreenshotDirectory() 284 { 285 HostLineEdit *gc = new HostLineEdit("mythvideo.screenshotDir"); 286 gc->setLabel(QObject::tr("Directory that holds movie screenshots")); 287 gc->setValue(GetConfDir() + "/MythVideo/Screenshots"); 288 gc->setHelpText(QObject::tr("This directory must exist, and the user " 289 "running MythVideo needs to have read/write permission " 290 "to the directory.")); 291 return gc; 292 } 293 294 HostLineEdit *VideoBannerDirectory() 295 { 296 HostLineEdit *gc = new HostLineEdit("mythvideo.bannerDir"); 297 gc->setLabel(QObject::tr("Directory that holds movie/TV Banners")); 298 gc->setValue(GetConfDir() + "/MythVideo/Banners"); 299 gc->setHelpText(QObject::tr("This directory must exist, and the user " 300 "running MythVideo needs to have read/write permission " 301 "to the directory.")); 302 return gc; 303 } 304 305 HostLineEdit *VideoFanartDirectory() 306 { 307 HostLineEdit *gc = new HostLineEdit("mythvideo.fanartDir"); 308 gc->setLabel(QObject::tr("Directory that holds movie fanart")); 309 gc->setValue(GetConfDir() + "/MythVideo/Fanart"); 310 gc->setHelpText(QObject::tr("This directory must exist, and the user " 311 "running MythVideo needs to have read/write permission " 312 "to the directory.")); 313 return gc; 314 } 315 250 316 HostLineEdit *TrailerDirectory() 251 317 { 252 318 HostLineEdit *gc = new HostLineEdit("mythvideo.TrailersDir"); … … 682 747 VConfigPage page1(pages, false); 683 748 page1->addChild(VideoStartupDirectory()); 684 749 page1->addChild(VideoArtworkDirectory()); 750 page1->addChild(VideoScreenshotDirectory()); 751 page1->addChild(VideoBannerDirectory()); 752 page1->addChild(VideoFanartDirectory()); 685 753 page1->addChild(VideoDefaultView()); 686 754 687 755 VConfigPage page2(pages, false); -
mythplugins/mythvideo/mythvideo/globals.cpp
16 16 const QString VIDEO_INETREF_DEFAULT = "00000000"; 17 17 const QString VIDEO_COVERFILE_DEFAULT = QObject::tr("No Cover"); 18 18 const QString VIDEO_TRAILER_DEFAULT; 19 const QString VIDEO_SCREENSHOT_DEFAULT; 20 const QString VIDEO_BANNER_DEFAULT; 21 const QString VIDEO_FANART_DEFAULT; 19 22 const QString VIDEO_RATING_DEFAULT = QObject::tr("NR"); 20 23 const QString VIDEO_PLOT_DEFAULT = QObject::tr("None"); 21 24 const QString VIDEO_CAST_DEFAULT = VIDEO_CAST_UNKNOWN; -
mythplugins/mythvideo/mythvideo/dbcheck.cpp
38 38 const QString lastMythDVDDBVersion = "1002"; 39 39 const QString lastMythVideoVersion = "1010"; 40 40 41 const QString currentDatabaseVersion = "102 2";41 const QString currentDatabaseVersion = "1023"; 42 42 43 43 const QString OldMythVideoVersionName = "VideoDBSchemaVer"; 44 44 const QString OldMythDVDVersionName = "DVDDBSchemaVer"; … … 825 825 performActualUpdate(updates, "1022", dbver, MythVideoVersionName); 826 826 } 827 827 828 if (dbver == "1022") 829 { 830 QStringList updates; 831 updates += "ALTER TABLE videometadata ADD `screenshot` TEXT;"; 832 updates += "ALTER TABLE videometadata ADD `banner` TEXT;"; 833 updates += "ALTER TABLE videometadata ADD `fanart` TEXT;"; 834 performActualUpdate(updates, "1023", dbver, MythVideoVersionName); 835 } 836 837 828 838 } 829 839 } 830 840 -
mythplugins/mythvideo/mythvideo/videoutils.cpp
114 114 coverfile == VIDEO_COVERFILE_DEFAULT_OLD; 115 115 } 116 116 117 bool IsDefaultScreenshot(const QString &screenshot) 118 { 119 return screenshot == VIDEO_SCREENSHOT_DEFAULT; 120 } 121 122 bool IsDefaultBanner(const QString &banner) 123 { 124 return banner == VIDEO_BANNER_DEFAULT; 125 } 126 127 bool IsDefaultFanart(const QString &fanart) 128 { 129 return fanart == VIDEO_FANART_DEFAULT; 130 } 131 117 132 QString GetDisplayUserRating(float userrating) 118 133 { 119 134 return QString::number(userrating, 'f', 1); -
mythplugins/mythvideo/mythvideo/editmetadata.h
41 41 void setChild(MythUIButtonListItem*); 42 42 void toggleBrowse(); 43 43 void findCoverArt(); 44 void findBanner(); 45 void findFanart(); 46 void findScreenshot(); 44 47 void NewCategoryPopup(); 45 48 void AddCategory(QString category); 46 49 void SetCoverArt(QString file); 50 void SetBanner(QString file); 51 void SetFanart(QString file); 52 void SetScreenshot(QString file); 47 53 48 54 private: 49 55 … … 62 68 MythUICheckBox *m_browseCheck; 63 69 MythUIButton *m_coverartButton; 64 70 MythUIText *m_coverartText; 71 MythUIButton *m_screenshotButton; 72 MythUIText *m_screenshotText; 73 MythUIButton *m_bannerButton; 74 MythUIText *m_bannerText; 75 MythUIButton *m_fanartButton; 76 MythUIText *m_fanartText; 65 77 MythUIButton *m_trailerButton; 66 78 MythUIText *m_trailerText; 67 79 MythUIButton *m_doneButton; -
mythplugins/mythvideo/mythvideo/videodlg.cpp
778 943 779 944 if (metadata) 780 945 { 781 const QString coverfile = metadata->CoverFile(); 946 QString coverfile; 947 if (metadata->Host() != "" && !metadata->CoverFile().startsWith("/")) 948 coverfile = GenRemoteFileURL("Coverart", metadata->Host(), metadata->CoverFile()); 949 else 950 coverfile = metadata->CoverFile(); 782 951 if (!IsDefaultCoverFile(coverfile)) 783 952 tmp["coverimage"] = coverfile; 784 953 785 954 tmp["coverfile"] = coverfile; 786 955 956 QString screenshotfile; 957 if (metadata->Host() != "" && !metadata->Screenshot().startsWith("/")) 958 screenshotfile = GenRemoteFileURL("Screenshots", metadata->Host(), metadata->Screenshot()); 959 else 960 screenshotfile = metadata->Screenshot(); 961 if (!IsDefaultScreenshot(screenshotfile)) 962 tmp["screenshot"] = screenshotfile; 963 964 tmp["screenshotfile"] = screenshotfile; 965 966 QString bannerfile; 967 if (metadata->Host() != "" && !metadata->Banner().startsWith("/")) 968 bannerfile = GenRemoteFileURL("Banners", metadata->Host(), metadata->Banner()); 969 else 970 bannerfile = metadata->Banner(); 971 if (!IsDefaultBanner(bannerfile)) 972 tmp["banner"] = bannerfile; 973 974 tmp["bannerfile"] = bannerfile; 975 976 QString fanartfile; 977 if (metadata->Host() != "" && !metadata->Fanart().startsWith("/")) 978 fanartfile = GenRemoteFileURL("Fanart", metadata->Host(), metadata->Fanart()); 979 else 980 fanartfile = metadata->Fanart(); 981 if (!IsDefaultFanart(fanartfile)) 982 tmp["fanart"] = fanartfile; 983 984 tmp["fanartfile"] = fanartfile; 985 787 986 tmp["video_player"] = VideoPlayerCommand::PlayerFor(metadata) 788 987 .GetCommandDisplayName(); 789 988 tmp["player"] = metadata->PlayCommand(); … … 837 1040 helper h(tmp, dest); 838 1041 839 1042 h.handleImage("coverimage"); 1043 h.handleImage("screenshot"); 1044 h.handleImage("banner"); 1045 h.handleImage("fanart"); 840 1046 841 1047 h.handleText("coverfile"); 1048 h.handleText("screenshotfile"); 1049 h.handleText("bannerfile"); 1050 h.handleText("fanartfile"); 842 1051 h.handleText("video_player"); 843 1052 h.handleText("player"); 844 1053 h.handleText("filename"); … … 1163 1400 MythScreenType(lparent, lname), m_menuPopup(0), m_busyPopup(0), 1164 1401 m_videoButtonList(0), m_videoButtonTree(0), m_titleText(0), 1165 1402 m_novideoText(0), m_positionText(0), m_crumbText(0), m_coverImage(0), 1166 m_ parentalLevelState(0)1403 m_screenshot(0), m_banner(0), m_fanart(0), m_parentalLevelState(0) 1167 1404 { 1168 1405 m_d = new VideoDialogPrivate(video_list, type); 1169 1406 … … 1241 1478 UIUtilW::Assign(this, m_crumbText, "breadcrumbs"); 1242 1479 1243 1480 UIUtilW::Assign(this, m_coverImage, "coverimage"); 1481 UIUtilW::Assign(this, m_screenshot, "screenshot"); 1482 UIUtilW::Assign(this, m_banner, "banner"); 1483 UIUtilW::Assign(this, m_fanart, "fanart"); 1244 1484 1245 1485 UIUtilW::Assign(this, m_parentalLevelState, "parentallevel"); 1246 1486 … … 1612 1848 const Metadata *metadata = GetMetadataPtrFromNode(node); 1613 1849 1614 1850 if (metadata) 1615 icon_file = metadata->CoverFile(); 1851 { 1852 if (metadata->Host() != "" && !metadata->CoverFile().startsWith("/")) 1853 icon_file = GenRemoteFileURL("Coverart", metadata->Host(), metadata->CoverFile()); 1854 else 1855 icon_file = metadata->CoverFile(); 1856 } 1616 1857 } 1617 1858 1618 1859 if (IsDefaultCoverFile(icon_file)) … … 1621 1862 return icon_file; 1622 1863 } 1623 1864 1865 QString VideoDialog::GetScreenshot(MythGenericTree *node) 1866 { 1867 int nodeInt = node->getInt(); 1868 1869 QString icon_file; 1870 1871 if (nodeInt == kSubFolder || nodeInt == kUpFolder) // subdirectory 1872 { 1873 icon_file = VIDEO_SCREENSHOT_DEFAULT; 1874 } 1875 else 1876 { 1877 const Metadata *metadata = GetMetadataPtrFromNode(node); 1878 1879 if (metadata) 1880 { 1881 if (metadata->Host() != "" && !metadata->Screenshot().startsWith("/")) 1882 icon_file = GenRemoteFileURL("Screenshots", metadata->Host(), metadata->Screenshot()); 1883 else 1884 icon_file = metadata->Screenshot(); 1885 } 1886 } 1887 1888 if (IsDefaultScreenshot(icon_file)) 1889 icon_file.clear(); 1890 1891 return icon_file; 1892 } 1893 1894 QString VideoDialog::GetBanner(MythGenericTree *node) 1895 { 1896 int nodeInt = node->getInt(); 1897 1898 QString icon_file; 1899 1900 if (nodeInt == kSubFolder || nodeInt == kUpFolder) // subdirectory 1901 { 1902 icon_file = VIDEO_BANNER_DEFAULT; 1903 } 1904 else 1905 { 1906 const Metadata *metadata = GetMetadataPtrFromNode(node); 1907 1908 if (metadata) 1909 { 1910 if (metadata->Host() != "" && !metadata->Banner().startsWith("/")) 1911 icon_file = GenRemoteFileURL("Banners", metadata->Host(), metadata->Banner()); 1912 else 1913 icon_file = metadata->Banner(); 1914 } 1915 } 1916 1917 if (IsDefaultBanner(icon_file)) 1918 icon_file.clear(); 1919 1920 return icon_file; 1921 } 1922 1923 QString VideoDialog::GetFanart(MythGenericTree *node) 1924 { 1925 int nodeInt = node->getInt(); 1926 1927 QString icon_file; 1928 1929 if (nodeInt == kSubFolder || nodeInt == kUpFolder) // subdirectory 1930 { 1931 icon_file = VIDEO_FANART_DEFAULT; 1932 } 1933 else 1934 { 1935 const Metadata *metadata = GetMetadataPtrFromNode(node); 1936 1937 if (metadata) 1938 { 1939 if (metadata->Host() != "" && !metadata->Fanart().startsWith("/")) 1940 icon_file = GenRemoteFileURL("Fanart", metadata->Host(), metadata->Fanart()); 1941 else 1942 icon_file = metadata->Fanart(); 1943 } 1944 } 1945 1946 if (IsDefaultFanart(icon_file)) 1947 icon_file.clear(); 1948 1949 return icon_file; 1950 } 1951 1624 1952 bool VideoDialog::keyPressEvent(QKeyEvent *levent) 1625 1953 { 1626 1954 if (GetFocusWidget()->keyPressEvent(levent)) -
mythplugins/mythvideo/mythvideo/videoscan.cpp
263 263 if (!p->second.check) 264 264 { 265 265 Metadata newFile(p->first, VIDEO_TRAILER_DEFAULT, 266 VIDEO_COVERFILE_DEFAULT, 266 VIDEO_COVERFILE_DEFAULT, 267 VIDEO_SCREENSHOT_DEFAULT, 268 VIDEO_BANNER_DEFAULT, 269 VIDEO_FANART_DEFAULT, 267 270 Metadata::FilenameToTitle(p->first), 268 271 VIDEO_YEAR_DEFAULT, 269 272 VIDEO_INETREF_DEFAULT, VIDEO_DIRECTOR_DEFAULT, -
mythplugins/mythvideo/mythvideo/metadata.h
51 51 Metadata(const QString &filename = QString(), 52 52 const QString &trailer = QString(), 53 53 const QString &coverfile = QString(), 54 const QString &screenshot = QString(), 55 const QString &banner = QString(), 56 const QString &fanart = QString(), 54 57 const QString &title = QString(), 55 58 int year = VIDEO_YEAR_DEFAULT, 56 59 const QString &inetref = QString(), … … 134 137 const QString &CoverFile() const; 135 138 void setCoverFile(const QString &coverFile); 136 139 140 const QString &Screenshot() const; 141 void setScreenshot(const QString &screenshot); 142 143 const QString &Banner() const; 144 void setBanner(const QString &banner); 145 146 const QString &Fanart() const; 147 void setFanart(const QString &fanart); 148 137 149 const QString &Category() const; 138 150 139 151 const genre_list &Genres() const; -
mythplugins/mythvideo/mythvideo/editmetadata.cpp
25 25 m_origMetadata(source_metadata), m_titleEdit(0), m_playerEdit(0), 26 26 m_categoryList(0), m_levelList(0), m_childList(0), m_browseCheck(0), 27 27 m_coverartButton(0), m_coverartText(0), 28 m_screenshotButton(0), m_screenshotText(0), 29 m_bannerButton(0), m_bannerText(0), 30 m_fanartButton(0), m_fanartText(0), 28 31 m_trailerButton(0), m_trailerText(0), 29 32 m_doneButton(0), cachedChildSelection(0), 30 33 m_metaCache(cache) … … 47 50 UIUtilE::Assign(this, m_playerEdit, "player_edit", &err); 48 51 49 52 UIUtilE::Assign(this, m_coverartText, "coverart_text", &err); 53 UIUtilE::Assign(this, m_screenshotText, "screenshot_text", &err); 54 UIUtilE::Assign(this, m_bannerText, "banner_text", &err); 55 UIUtilE::Assign(this, m_fanartText, "fanart_text", &err); 50 56 UIUtilE::Assign(this, m_trailerText, "trailer_text", &err); 51 57 52 58 UIUtilE::Assign(this, m_categoryList, "category_select", &err); … … 56 62 UIUtilE::Assign(this, m_browseCheck, "browse_check", &err); 57 63 58 64 UIUtilE::Assign(this, m_coverartButton, "coverart_button", &err); 65 UIUtilE::Assign(this, m_bannerButton, "banner_button", &err); 66 UIUtilE::Assign(this, m_fanartButton, "fanart_button", &err); 67 UIUtilE::Assign(this, m_screenshotButton, "screenshot_button", &err); 59 68 UIUtilE::Assign(this, m_doneButton, "done_button", &err); 60 69 61 70 if (err) … … 74 83 75 84 connect(m_doneButton, SIGNAL(Clicked()), SLOT(saveAndExit())); 76 85 connect(m_coverartButton, SIGNAL(Clicked()), SLOT(findCoverArt())); 86 connect(m_bannerButton, SIGNAL(Clicked()), SLOT(findBanner())); 87 connect(m_fanartButton, SIGNAL(Clicked()), SLOT(findFanart())); 88 connect(m_screenshotButton, SIGNAL(Clicked()), SLOT(findScreenshot())); 77 89 78 90 connect(m_browseCheck, SIGNAL(valueChanged()), SLOT(toggleBrowse())); 79 91 … … 216 228 if (m_workingMetadata->Browse()) 217 229 m_browseCheck->SetCheckState(MythUIStateType::Full); 218 230 m_coverartText->SetText(m_workingMetadata->CoverFile()); 231 m_screenshotText->SetText(m_workingMetadata->Screenshot()); 232 m_bannerText->SetText(m_workingMetadata->Banner()); 233 m_fanartText->SetText(m_workingMetadata->Fanart()); 219 234 m_trailerText->SetText(m_workingMetadata->GetTrailer()); 220 235 m_playerEdit->SetText(m_workingMetadata->PlayCommand()); 221 236 } … … 330 345 CheckedSet(m_coverartText, file); 331 346 } 332 347 348 void EditMetadataDialog::findBanner() 349 { 350 QString fileprefix = gContext->GetSetting("mythvideo.bannerDir"); 351 // If the video artwork setting hasn't been set default to 352 // using ~/.mythtv/MythVideo/Banners 353 if (fileprefix.isEmpty()) 354 { 355 fileprefix = GetConfDir() + "/MythVideo/Banners"; 356 } 357 358 QStringList imageExtensions; 359 360 QList< QByteArray > exts = QImageReader::supportedImageFormats(); 361 QList< QByteArray >::Iterator it = exts.begin(); 362 for (;it != exts.end();++it) 363 { 364 imageExtensions.append( QString("*.").append(*it) ); 365 } 366 367 MythScreenStack *popupStack = 368 GetMythMainWindow()->GetStack("popup stack"); 369 370 MythUIFileBrowser *nba = new MythUIFileBrowser(popupStack, fileprefix); 371 nba->SetNameFilter(imageExtensions); 372 373 if (nba->Create()) 374 { 375 nba->SetReturnEvent(this, "bannerfile"); 376 popupStack->AddScreen(nba); 377 } 378 else 379 delete nba; 380 } 381 382 void EditMetadataDialog::SetBanner(QString file) 383 { 384 if (file.isEmpty()) 385 return; 386 387 m_workingMetadata->setBanner(file); 388 CheckedSet(m_bannerText, file); 389 } 390 391 void EditMetadataDialog::findFanart() 392 { 393 QString fileprefix = gContext->GetSetting("mythvideo.fanartDir"); 394 // If the video artwork setting hasn't been set default to 395 // using ~/.mythtv/MythVideo/Fanart 396 if (fileprefix.isEmpty()) 397 { 398 fileprefix = GetConfDir() + "/MythVideo/Fanart"; 399 } 400 401 QStringList imageExtensions; 402 403 QList< QByteArray > exts = QImageReader::supportedImageFormats(); 404 QList< QByteArray >::Iterator it = exts.begin(); 405 for (;it != exts.end();++it) 406 { 407 imageExtensions.append( QString("*.").append(*it) ); 408 } 409 410 MythScreenStack *popupStack = 411 GetMythMainWindow()->GetStack("popup stack"); 412 413 MythUIFileBrowser *nfa = new MythUIFileBrowser(popupStack, fileprefix); 414 nfa->SetNameFilter(imageExtensions); 415 416 if (nfa->Create()) 417 { 418 nfa->SetReturnEvent(this, "fanartfile"); 419 popupStack->AddScreen(nfa); 420 } 421 else 422 delete nfa; 423 } 424 425 void EditMetadataDialog::SetFanart(QString file) 426 { 427 if (file.isEmpty()) 428 return; 429 430 m_workingMetadata->setFanart(file); 431 CheckedSet(m_fanartText, file); 432 } 433 434 void EditMetadataDialog::findScreenshot() 435 { 436 QString fileprefix = gContext->GetSetting("mythvideo.screenshotDir"); 437 // If the video artwork setting hasn't been set default to 438 // using ~/.mythtv/MythVideo/Screenshots 439 if (fileprefix.isEmpty()) 440 { 441 fileprefix = GetConfDir() + "/MythVideo/Screenshots"; 442 } 443 444 QStringList imageExtensions; 445 446 QList< QByteArray > exts = QImageReader::supportedImageFormats(); 447 QList< QByteArray >::Iterator it = exts.begin(); 448 for (;it != exts.end();++it) 449 { 450 imageExtensions.append( QString("*.").append(*it) ); 451 } 452 453 MythScreenStack *popupStack = 454 GetMythMainWindow()->GetStack("popup stack"); 455 456 MythUIFileBrowser *nsa = new MythUIFileBrowser(popupStack, fileprefix); 457 nsa->SetNameFilter(imageExtensions); 458 459 if (nsa->Create()) 460 { 461 nsa->SetReturnEvent(this, "screenshotfile"); 462 popupStack->AddScreen(nsa); 463 } 464 else 465 delete nsa; 466 } 467 468 void EditMetadataDialog::SetScreenshot(QString file) 469 { 470 if (file.isEmpty()) 471 return; 472 473 m_workingMetadata->setScreenshot(file); 474 CheckedSet(m_screenshotText, file); 475 } 476 333 477 void EditMetadataDialog::customEvent(QEvent *event) 334 478 { 335 479 if (event->type() == kMythDialogBoxCompletionEventType) … … 348 492 SetCoverArt(filename); 349 493 } 350 494 495 if (resultid == "bannerfile") 496 497 { 498 QString filename = dce->GetResultText(); 499 SetBanner(filename); 500 } 501 if (resultid == "fanartfile") 502 503 { 504 QString filename = dce->GetResultText(); 505 SetFanart(filename); 506 } 507 508 if (resultid == "screenshotfile") 509 { 510 QString filename = dce->GetResultText(); 511 SetScreenshot(filename); 512 } 513 351 514 if (resultid == "newcategory") 352 515 { 353 516 AddCategory(dce->GetResultText()); -
mythplugins/mythvideo/mythvideo/globals.h
14 14 extern const QString VIDEO_INETREF_DEFAULT; 15 15 extern const QString VIDEO_COVERFILE_DEFAULT; 16 16 extern const QString VIDEO_TRAILER_DEFAULT; 17 extern const QString VIDEO_SCREENSHOT_DEFAULT; 18 extern const QString VIDEO_BANNER_DEFAULT; 19 extern const QString VIDEO_FANART_DEFAULT; 17 20 extern const QString VIDEO_RATING_DEFAULT; 18 21 extern const QString VIDEO_PLOT_DEFAULT; 19 22 extern const QString VIDEO_CAST_DEFAULT; -
mythplugins/mythvideo/mythvideo/videoutils.h
25 25 QStringList GetVideoDirs(); 26 26 27 27 bool IsDefaultCoverFile(const QString &coverfile); 28 bool IsDefaultScreenshot(const QString &screenshot); 29 bool IsDefaultBanner(const QString &banner); 30 bool IsDefaultFanart(const QString &fanart); 28 31 29 32 class Metadata; 30 33