Ticket #6159: MVnewmeta.6.diff
File MVnewmeta.6.diff, 44.4 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 } … … 329 344 CheckedSet(m_coverartText, file); 330 345 } 331 346 347 void EditMetadataDialog::findBanner() 348 { 349 QString fileprefix = gContext->GetSetting("VideoBannerDir"); 350 // If the video artwork setting hasn't been set default to 351 // using ~/.mythtv/MythVideo/Banners 352 if (fileprefix.isEmpty()) 353 { 354 fileprefix = GetConfDir() + "/MythVideo/Banners"; 355 } 356 357 QStringList imageExtensions; 358 359 QList< QByteArray > exts = QImageReader::supportedImageFormats(); 360 QList< QByteArray >::Iterator it = exts.begin(); 361 for (;it != exts.end();++it) 362 { 363 imageExtensions.append( QString("*.").append(*it) ); 364 } 365 366 MythScreenStack *popupStack = 367 GetMythMainWindow()->GetStack("popup stack"); 368 369 MythUIFileBrowser *nca = new MythUIFileBrowser(popupStack, this, fileprefix); 370 nca->SetNameFilter(imageExtensions); 371 372 if (nca->Create()) 373 { 374 popupStack->AddScreen(nca); 375 connect(nca, SIGNAL(haveResult(QString)), SLOT(SetBanner(QString))); 376 } 377 else 378 delete nca; 379 } 380 381 void EditMetadataDialog::SetBanner(QString file) 382 { 383 if (file.isEmpty()) 384 return; 385 386 m_workingMetadata->setBanner(file); 387 CheckedSet(m_bannerText, file); 388 } 389 390 void EditMetadataDialog::findFanart() 391 { 392 QString fileprefix = gContext->GetSetting("VideoFanartDir"); 393 // If the video artwork setting hasn't been set default to 394 // using ~/.mythtv/MythVideo/Fanart 395 if (fileprefix.isEmpty()) 396 { 397 fileprefix = GetConfDir() + "/MythVideo/Fanart"; 398 } 399 400 QStringList imageExtensions; 401 402 QList< QByteArray > exts = QImageReader::supportedImageFormats(); 403 QList< QByteArray >::Iterator it = exts.begin(); 404 for (;it != exts.end();++it) 405 { 406 imageExtensions.append( QString("*.").append(*it) ); 407 } 408 409 MythScreenStack *popupStack = 410 GetMythMainWindow()->GetStack("popup stack"); 411 412 MythUIFileBrowser *nca = new MythUIFileBrowser(popupStack, this, fileprefix); 413 nca->SetNameFilter(imageExtensions); 414 415 if (nca->Create()) 416 { 417 popupStack->AddScreen(nca); 418 connect(nca, SIGNAL(haveResult(QString)), SLOT(SetFanart(QString))); 419 } 420 else 421 delete nca; 422 } 423 424 void EditMetadataDialog::SetFanart(QString file) 425 { 426 if (file.isEmpty()) 427 return; 428 429 m_workingMetadata->setFanart(file); 430 CheckedSet(m_fanartText, file); 431 } 432 433 void EditMetadataDialog::findScreenshot() 434 { 435 QString fileprefix = gContext->GetSetting("VideoScreenshotDir"); 436 // If the video artwork setting hasn't been set default to 437 // using ~/.mythtv/MythVideo/Screenshots 438 if (fileprefix.isEmpty()) 439 { 440 fileprefix = GetConfDir() + "/MythVideo/Screenshots"; 441 } 442 443 QStringList imageExtensions; 444 445 QList< QByteArray > exts = QImageReader::supportedImageFormats(); 446 QList< QByteArray >::Iterator it = exts.begin(); 447 for (;it != exts.end();++it) 448 { 449 imageExtensions.append( QString("*.").append(*it) ); 450 } 451 452 MythScreenStack *popupStack = 453 GetMythMainWindow()->GetStack("popup stack"); 454 455 MythUIFileBrowser *nca = new MythUIFileBrowser(popupStack, this, fileprefix); 456 nca->SetNameFilter(imageExtensions); 457 458 if (nca->Create()) 459 { 460 popupStack->AddScreen(nca); 461 connect(nca, SIGNAL(haveResult(QString)), SLOT(SetScreenshot(QString))); 462 } 463 else 464 delete nca; 465 } 466 467 void EditMetadataDialog::SetScreenshot(QString file) 468 { 469 if (file.isEmpty()) 470 return; 471 472 m_workingMetadata->setScreenshot(file); 473 CheckedSet(m_screenshotText, file); 474 } 475 332 476 void EditMetadataDialog::customEvent(QEvent *event) 333 477 { 334 478 if (event->type() == kMythDialogBoxCompletionEventType) -
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