Ticket #6159: MVnewmeta.7.diff
File MVnewmeta.7.diff, 44.9 KB (added by , 15 years ago) |
---|
-
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
111 112 virtual void loadData(); 112 113 void fetchVideos(); 113 114 QString GetCoverImage(MythGenericTree *node); 115 QString GetScreenshot(MythGenericTree *node); 116 QString GetBanner(MythGenericTree *node); 117 QString GetFanart(MythGenericTree *node); 114 118 115 119 Metadata *GetMetadata(MythUIButtonListItem *item); 116 120 … … 183 192 MythUIText *m_crumbText; 184 193 185 194 MythUIImage *m_coverImage; 195 MythUIImage *m_screenshot; 196 MythUIImage *m_banner; 197 MythUIImage *m_fanart; 186 198 187 199 MythUIStateType *m_parentalLevelState; 188 200 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 FROM videometadata"); 116 "browse, playcommand, category, intid, trailer, screenshot," 117 "banner, fanart 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, … … 103 104 m_rating(rating), m_playcommand(playcommand), m_category(category), 104 105 m_genres(genres), m_countries(countries), m_cast(cast), 105 106 m_filename(filename), m_trailer(trailer), m_coverfile(coverfile), 106 m_categoryID(categoryID), m_childID(childID), m_year(year), 107 m_length(length), m_showlevel(showlevel), m_browse(browse), m_id(id), 107 m_screenshot(screenshot), m_banner(banner), m_fanart(fanart), 108 m_categoryID(categoryID), m_childID(childID), 109 m_year(year), m_length(length), m_showlevel(showlevel), m_browse(browse), m_id(id), 108 110 m_userrating(userrating) 109 111 { 110 112 VideoCategory::getCategory().get(m_categoryID, m_category); … … 137 139 m_filename = rhs.m_filename; 138 140 m_trailer = rhs.m_trailer; 139 141 m_coverfile = rhs.m_coverfile; 142 m_screenshot = rhs.m_screenshot; 143 m_banner = rhs.m_banner; 144 m_fanart = rhs.m_fanart; 140 145 141 146 m_categoryID = rhs.m_categoryID; 142 147 m_childID = rhs.m_childID; … … 216 221 const QString &getCoverFile() const { return m_coverfile; } 217 222 void setCoverFile(const QString &coverFile) { m_coverfile = coverFile; } 218 223 224 const QString &getScreenshot() const { return m_screenshot; } 225 void setScreenshot(const QString &screenshot) { m_screenshot = screenshot; } 226 227 const QString &getBanner() const { return m_banner; } 228 void setBanner(const QString &banner) { m_banner = banner; } 229 230 const QString &getFanart() const { return m_fanart; } 231 void setFanart(const QString &fanart) { m_fanart = fanart; } 232 219 233 int getCategoryID() const 220 234 { 221 235 return m_categoryID; … … 281 295 QString m_filename; 282 296 QString m_trailer; 283 297 QString m_coverfile; 298 QString m_screenshot; 299 QString m_banner; 300 QString m_fanart; 284 301 285 302 int m_categoryID; 286 303 int m_childID; … … 383 400 void MetadataImp::Reset() 384 401 { 385 402 MetadataImp tmp(m_filename, VIDEO_TRAILER_DEFAULT, VIDEO_COVERFILE_DEFAULT, 386 Metadata::FilenameToTitle(m_filename), VIDEO_YEAR_DEFAULT, 403 VIDEO_SCREENSHOT_DEFAULT, VIDEO_BANNER_DEFAULT, VIDEO_FANART_DEFAULT, 404 Metadata::FilenameToTitle(m_filename), VIDEO_YEAR_DEFAULT, 387 405 VIDEO_INETREF_DEFAULT, VIDEO_DIRECTOR_DEFAULT, 388 406 VIDEO_PLOT_DEFAULT, 0.0, VIDEO_RATING_DEFAULT, 0, m_id, 389 407 ParentalLevel::plLowest, 0, -1, true, "", "", … … 475 493 m_categoryID = query.value(14).toInt(); 476 494 m_id = query.value(15).toInt(); 477 495 m_trailer = query.value(16).toString(); 496 m_screenshot = query.value(17).toString(); 497 m_banner = query.value(18).toString(); 498 m_fanart = query.value(19).toString(); 478 499 479 500 VideoCategory::getCategory().get(m_categoryID, m_category); 480 501 … … 500 521 m_rating = VIDEO_RATING_DEFAULT; 501 522 if (m_coverfile.isEmpty()) 502 523 m_coverfile = VIDEO_COVERFILE_DEFAULT; 524 if (m_screenshot.isEmpty()) 525 m_screenshot = VIDEO_SCREENSHOT_DEFAULT; 526 if (m_banner.isEmpty()) 527 m_banner = VIDEO_BANNER_DEFAULT; 528 if (m_fanart.isEmpty()) 529 m_fanart = VIDEO_FANART_DEFAULT; 503 530 if (m_trailer.isEmpty()) 504 531 m_trailer = VIDEO_TRAILER_DEFAULT; 505 532 if (m_inetref.isEmpty()) … … 519 546 520 547 query.prepare("INSERT INTO videometadata (title,director,plot," 521 548 "rating,year,userrating,length,filename,showlevel," 522 "coverfile,inetref,browse,trailer) VALUES (:TITLE, :DIRECTOR, " 523 ":PLOT, :RATING, :YEAR, :USERRATING, :LENGTH, " 524 ":FILENAME, :SHOWLEVEL, :COVERFILE, :INETREF, :BROWSE, :TRAILER)"); 549 "coverfile,inetref,browse,trailer,screenshot,banner," 550 "fanart) VALUES (:TITLE, :DIRECTOR, :PLOT, :RATING, " 551 ":YEAR, :USERRATING, :LENGTH, :FILENAME, :SHOWLEVEL, " 552 ":COVERFILE, :INETREF, :BROWSE, :TRAILER, :SCREENSHOT, " 553 ":BANNER, :FANART)"); 525 554 526 555 } 527 556 else … … 531 560 "year = :YEAR, userrating = :USERRATING, " 532 561 "length = :LENGTH, filename = :FILENAME, trailer = :TRAILER, " 533 562 "showlevel = :SHOWLEVEL, coverfile = :COVERFILE, " 563 "screenshot = :SCREENSHOT, banner = :BANNER, fanart = :FANART, " 534 564 "inetref = :INETREF, browse = :BROWSE, " 535 565 "playcommand = :PLAYCOMMAND, childid = :CHILDID, " 536 566 "category = :CATEGORY WHERE intid = :INTID"); … … 552 582 query.bindValue(":TRAILER", m_trailer); 553 583 query.bindValue(":SHOWLEVEL", m_showlevel); 554 584 query.bindValue(":COVERFILE", m_coverfile); 585 query.bindValue(":SCREENSHOT", m_screenshot); 586 query.bindValue(":BANNER", m_banner); 587 query.bindValue(":FANART", m_fanart); 555 588 query.bindValue(":INETREF", m_inetref); 556 589 query.bindValue(":BROWSE", m_browse); 557 590 … … 783 816 return ret; 784 817 } 785 818 786 Metadata::Metadata(const QString &filename, const QString &trailer, const QString &coverfile, 819 Metadata::Metadata(const QString &filename, const QString &trailer, 820 const QString &coverfile, const QString &screenshot, 821 const QString &banner, const QString &fanart, 787 822 const QString &title, int year, 788 823 const QString &inetref, const QString &director, 789 824 const QString &plot, float userrating, … … 795 830 const country_list &countries, 796 831 const cast_list &cast) 797 832 { 798 m_imp = new MetadataImp(filename, trailer, coverfile, title, year, inetref, director, 799 plot, userrating, rating, length, id, showlevel, 800 categoryID, childID, browse, playcommand, category, 833 m_imp = new MetadataImp(filename, trailer, coverfile, screenshot, banner, 834 fanart, title, year, inetref, director, plot, 835 userrating, rating, length, id, showlevel, 836 categoryID, childID, browse, playcommand, category, 801 837 genres, countries, cast); 802 838 } 803 839 … … 1011 1047 m_imp->setCoverFile(coverFile); 1012 1048 } 1013 1049 1050 const QString &Metadata::Screenshot() const 1051 { 1052 return m_imp->getScreenshot(); 1053 } 1054 1055 void Metadata::setScreenshot(const QString &screenshot) 1056 { 1057 m_imp->setScreenshot(screenshot); 1058 } 1059 1060 const QString &Metadata::Banner() const 1061 { 1062 return m_imp->getBanner(); 1063 } 1064 1065 void Metadata::setBanner(const QString &banner) 1066 { 1067 m_imp->setBanner(banner); 1068 } 1069 1070 const QString &Metadata::Fanart() const 1071 { 1072 return m_imp->getFanart(); 1073 } 1074 1075 void Metadata::setFanart(const QString &fanart) 1076 { 1077 m_imp->setFanart(fanart); 1078 } 1079 1014 1080 const QString &Metadata::Category() const 1015 1081 { 1016 1082 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("VideoScreenshotDir"); 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("VideoBannerDir"); 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("VideoFanartDir"); 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 1";41 const QString currentDatabaseVersion = "1022"; 42 42 43 43 const QString OldMythVideoVersionName = "VideoDBSchemaVer"; 44 44 const QString OldMythDVDVersionName = "DVDDBSchemaVer"; … … 816 816 817 817 UpdateDBVersionNumber(MythVideoVersionName, "1021"); 818 818 } 819 820 if (dbver == "1021") 821 { 822 QStringList updates; 823 updates += "ALTER TABLE videometadata ADD `screenshot` TEXT;"; 824 updates += "ALTER TABLE videometadata ADD `banner` TEXT;"; 825 updates += "ALTER TABLE videometadata ADD `fanart` TEXT;"; 826 performActualUpdate(updates, "1022", dbver, MythVideoVersionName); 827 } 819 828 } 820 829 } 821 830 -
mythplugins/mythvideo/mythvideo/videoutils.cpp
70 70 coverfile == VIDEO_COVERFILE_DEFAULT_OLD; 71 71 } 72 72 73 bool IsDefaultScreenshot(const QString &screenshot) 74 { 75 return screenshot == VIDEO_SCREENSHOT_DEFAULT; 76 } 77 78 bool IsDefaultBanner(const QString &banner) 79 { 80 return banner == VIDEO_BANNER_DEFAULT; 81 } 82 83 bool IsDefaultFanart(const QString &fanart) 84 { 85 return fanart == VIDEO_FANART_DEFAULT; 86 } 87 73 88 QString GetDisplayUserRating(float userrating) 74 89 { 75 90 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
784 949 785 950 tmp["coverfile"] = coverfile; 786 951 952 const QString screenshotfile = metadata->Screenshot(); 953 if (!IsDefaultScreenshot(screenshotfile)) 954 tmp["screenshot"] = screenshotfile; 955 956 tmp["screenshotfile"] = screenshotfile; 957 958 const QString bannerfile = metadata->Banner(); 959 if (!IsDefaultBanner(bannerfile)) 960 tmp["banner"] = bannerfile; 961 962 tmp["bannerfile"] = bannerfile; 963 964 const QString fanartfile = metadata->Fanart(); 965 if (!IsDefaultFanart(fanartfile)) 966 tmp["fanart"] = fanartfile; 967 968 tmp["fanartfile"] = fanartfile; 969 787 970 tmp["video_player"] = VideoPlayerCommand::PlayerFor(metadata) 788 971 .GetCommandDisplayName(); 789 972 tmp["player"] = metadata->PlayCommand(); … … 837 1020 helper h(tmp, dest); 838 1021 839 1022 h.handleImage("coverimage"); 1023 h.handleImage("screenshot"); 1024 h.handleImage("banner"); 1025 h.handleImage("fanart"); 840 1026 841 1027 h.handleText("coverfile"); 1028 h.handleText("screenshotfile"); 1029 h.handleText("bannerfile"); 1030 h.handleText("fanartfile"); 842 1031 h.handleText("video_player"); 843 1032 h.handleText("player"); 844 1033 h.handleText("filename"); … … 1163 1380 MythScreenType(lparent, lname), m_menuPopup(0), m_busyPopup(0), 1164 1381 m_videoButtonList(0), m_videoButtonTree(0), m_titleText(0), 1165 1382 m_novideoText(0), m_positionText(0), m_crumbText(0), m_coverImage(0), 1166 m_ parentalLevelState(0)1383 m_screenshot(0), m_banner(0), m_fanart(0), m_parentalLevelState(0) 1167 1384 { 1168 1385 m_d = new VideoDialogPrivate(video_list, type); 1169 1386 … … 1241 1458 UIUtilW::Assign(this, m_crumbText, "breadcrumbs"); 1242 1459 1243 1460 UIUtilW::Assign(this, m_coverImage, "coverimage"); 1461 UIUtilW::Assign(this, m_screenshot, "screenshot"); 1462 UIUtilW::Assign(this, m_banner, "banner"); 1463 UIUtilW::Assign(this, m_fanart, "fanart"); 1244 1464 1245 1465 UIUtilW::Assign(this, m_parentalLevelState, "parentallevel"); 1246 1466 … … 1485 1705 return icon_file; 1486 1706 } 1487 1707 1708 QString VideoDialog::GetScreenshot(MythGenericTree *node) 1709 { 1710 int nodeInt = node->getInt(); 1711 1712 QString icon_file; 1713 1714 if (nodeInt == kSubFolder || nodeInt == kUpFolder) // subdirectory 1715 { 1716 icon_file = VIDEO_SCREENSHOT_DEFAULT; 1717 } 1718 else 1719 { 1720 const Metadata *metadata = GetMetadataPtrFromNode(node); 1721 1722 if (metadata) 1723 icon_file = metadata->Screenshot(); 1724 } 1725 1726 if (IsDefaultScreenshot(icon_file)) 1727 icon_file.clear(); 1728 1729 return icon_file; 1730 } 1731 1732 QString VideoDialog::GetBanner(MythGenericTree *node) 1733 { 1734 int nodeInt = node->getInt(); 1735 1736 QString icon_file; 1737 1738 if (nodeInt == kSubFolder || nodeInt == kUpFolder) // subdirectory 1739 { 1740 icon_file = VIDEO_BANNER_DEFAULT; 1741 } 1742 else 1743 { 1744 const Metadata *metadata = GetMetadataPtrFromNode(node); 1745 1746 if (metadata) 1747 icon_file = metadata->Banner(); 1748 } 1749 1750 if (IsDefaultBanner(icon_file)) 1751 icon_file.clear(); 1752 1753 return icon_file; 1754 } 1755 1756 QString VideoDialog::GetFanart(MythGenericTree *node) 1757 { 1758 int nodeInt = node->getInt(); 1759 1760 QString icon_file; 1761 1762 if (nodeInt == kSubFolder || nodeInt == kUpFolder) // subdirectory 1763 { 1764 icon_file = VIDEO_FANART_DEFAULT; 1765 } 1766 else 1767 { 1768 const Metadata *metadata = GetMetadataPtrFromNode(node); 1769 1770 if (metadata) 1771 icon_file = metadata->Fanart(); 1772 } 1773 1774 if (IsDefaultFanart(icon_file)) 1775 icon_file.clear(); 1776 1777 return icon_file; 1778 } 1779 1488 1780 bool VideoDialog::keyPressEvent(QKeyEvent *levent) 1489 1781 { 1490 1782 if (GetFocusWidget()->keyPressEvent(levent)) -
mythplugins/mythvideo/mythvideo/videoscan.cpp
216 216 if (!p->second) 217 217 { 218 218 Metadata newFile(p->first, VIDEO_TRAILER_DEFAULT, 219 VIDEO_COVERFILE_DEFAULT, 219 VIDEO_COVERFILE_DEFAULT, 220 VIDEO_SCREENSHOT_DEFAULT, 221 VIDEO_BANNER_DEFAULT, 222 VIDEO_FANART_DEFAULT, 220 223 Metadata::FilenameToTitle(p->first), 221 224 VIDEO_YEAR_DEFAULT, 222 225 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(), … … 130 133 const QString &CoverFile() const; 131 134 void setCoverFile(const QString &coverFile); 132 135 136 const QString &Screenshot() const; 137 void setScreenshot(const QString &screenshot); 138 139 const QString &Banner() const; 140 void setBanner(const QString &banner); 141 142 const QString &Fanart() const; 143 void setFanart(const QString &fanart); 144 133 145 const QString &Category() const; 134 146 135 147 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("VideoBannerDir"); 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("VideoFanartDir"); 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("VideoScreenshotDir"); 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
22 22 QStringList GetVideoDirs(); 23 23 24 24 bool IsDefaultCoverFile(const QString &coverfile); 25 bool IsDefaultScreenshot(const QString &screenshot); 26 bool IsDefaultBanner(const QString &banner); 27 bool IsDefaultFanart(const QString &fanart); 25 28 26 29 class Metadata; 27 30