bool ImportNative::Create(void) { // Load the theme for this screen bool foundtheme = LoadWindowFromXML("mythnative-ui.xml", "importnative", this); if (!foundtheme) return false; bool err = false; UIUtilE::Assign(this, m_progTitle_text, "progtitle", &err); UIUtilE::Assign(this, m_progDateTime_text, "progdatetime", &err); UIUtilE::Assign(this, m_progDescription_text, "progdescription", &err); UIUtilE::Assign(this, m_chanID_text, "chanid", &err); UIUtilE::Assign(this, m_chanNo_text, "channo", &err); UIUtilE::Assign(this, m_chanName_text, "name", &err); UIUtilE::Assign(this, m_callsign_text, "callsign", &err); UIUtilE::Assign(this, m_localChanID_text, "local_chanid", &err); UIUtilE::Assign(this, m_localChanNo_text, "local_channo", &err); UIUtilE::Assign(this, m_localChanName_text, "local_name", &err); UIUtilE::Assign(this, m_localCallsign_text, "local_callsign", &err); UIUtilE::Assign(this, m_searchChanID_button, "searchchanid_button", &err); UIUtilE::Assign(this, m_searchChanNo_button, "searchchanno_button", &err); UIUtilE::Assign(this, m_searchChanName_button, "searchname_button", &err); UIUtilE::Assign(this, m_searchCallsign_button ,"searchcallsign_button", &err); UIUtilE::Assign(this, m_finishButton, "finish_button", &err); UIUtilE::Assign(this, m_prevButton, "prev_button", &err); UIUtilE::Assign(this, m_cancelButton, "cancel_button", &err); if (err) { LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'importarchive'"); return false; } connect(m_finishButton, SIGNAL(Clicked()), this, SLOT(finishedPressed())); connect(m_prevButton, SIGNAL(Clicked()), this, SLOT(prevPressed())); connect(m_cancelButton, SIGNAL(Clicked()), this, SLOT(cancelPressed())); connect(m_searchChanID_button, SIGNAL(Clicked()), this, SLOT(searchChanID())); connect(m_searchChanNo_button, SIGNAL(Clicked()), this, SLOT(searchChanNo())); connect(m_searchChanName_button, SIGNAL(Clicked()), this, SLOT(searchName())); connect(m_searchCallsign_button, SIGNAL(Clicked()), this, SLOT(searchCallsign())); m_progTitle_text->SetText(m_details.title); m_progDateTime_text->SetText(m_details.startTime.toLocalTime() .toString("dd MMM yy (hh:mm)")); m_progDescription_text->SetText( (m_details.subtitle == "" ? m_details.subtitle + "\n" : "") + m_details.description); m_chanID_text->SetText(m_details.chanID); m_chanNo_text->SetText(m_details.chanNo); m_chanName_text->SetText(m_details.chanName); m_callsign_text->SetText(m_details.callsign); findChannelMatch(m_details.chanID, m_details.chanNo, m_details.chanName, m_details.callsign); BuildFocusList(); SetFocusWidget(m_finishButton); return true; }
bool MythNewsEditor::Create(void) { QMutexLocker locker(&m_lock); // Load the theme for this screen bool foundtheme = LoadWindowFromXML("news-ui.xml", "editor", this); if (!foundtheme) return false; bool err = false; UIUtilW::Assign(this, m_titleText, "title", &err); UIUtilW::Assign(this, m_nameLabelText, "namelabel", &err); UIUtilW::Assign(this, m_urlLabelText, "urllabel", &err); UIUtilW::Assign(this, m_iconLabelText, "iconlabel", &err); UIUtilW::Assign(this, m_podcastLabelText, "podcastlabel", &err); UIUtilE::Assign(this, m_nameEdit, "name", &err); UIUtilE::Assign(this, m_urlEdit, "url", &err); UIUtilE::Assign(this, m_iconEdit, "icon", &err); UIUtilE::Assign(this, m_podcastCheck, "podcast_check", &err); UIUtilE::Assign(this, m_okButton, "ok", &err); UIUtilE::Assign(this, m_cancelButton, "cancel", &err); if (err) { LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'editor'"); return false; } if (m_titleText) { m_titleText->SetText( (m_editing) ? tr("Edit Site Details") : tr("Enter Site Details")); } if (m_nameLabelText) m_nameLabelText->SetText(tr("Name:")); if (m_urlLabelText) m_urlLabelText->SetText(tr("URL:")); if (m_iconLabelText) m_iconLabelText->SetText(tr("Icon:")); if (m_podcastLabelText) m_podcastLabelText->SetText(tr("Podcast:")); m_okButton->SetText(tr("OK")); m_cancelButton->SetText(tr("Cancel")); connect(m_okButton, SIGNAL(Clicked()), this, SLOT(Save())); connect(m_cancelButton, SIGNAL(Clicked()), this, SLOT(Close())); if (m_editing) { m_nameEdit->SetText(m_site->name()); m_urlEdit->SetText(m_site->url()); m_iconEdit->SetText(m_site->imageURL()); if (m_site->podcast() == 1) m_podcastCheck->SetCheckState(MythUIStateType::Full); } BuildFocusList(); SetFocusWidget(m_nameEdit); return true; }
bool VideoFilterDialog::Create() { if (!LoadWindowFromXML("video-ui.xml", "filter", this)) return false; bool err = false; UIUtilE::Assign(this, m_textfilter, "textfilter_input", &err); UIUtilE::Assign(this, m_yearList, "year_select", &err); UIUtilE::Assign(this, m_userratingList, "userrating_select", &err); UIUtilE::Assign(this, m_categoryList, "category_select", &err); UIUtilE::Assign(this, m_countryList, "country_select", &err); UIUtilE::Assign(this, m_genreList, "genre_select", &err); UIUtilE::Assign(this, m_castList, "cast_select", &err); UIUtilE::Assign(this, m_runtimeList, "runtime_select", &err); UIUtilE::Assign(this, m_browseList, "browse_select", &err); UIUtilE::Assign(this, m_watchedList, "watched_select", &err); UIUtilE::Assign(this, m_inetrefList, "inetref_select", &err); UIUtilE::Assign(this, m_coverfileList, "coverfile_select", &err); UIUtilE::Assign(this, m_orderbyList, "orderby_select", &err); UIUtilE::Assign(this, m_doneButton, "done_button", &err); UIUtilE::Assign(this, m_saveButton, "save_button", &err); UIUtilE::Assign(this, m_numvideosText, "numvideos_text", &err); if (err) { VERBOSE(VB_IMPORTANT, "Cannot load screen 'filter'"); return false; } BuildFocusList(); fillWidgets(); update_numvideo(); connect(m_yearList, SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(SetYear(MythUIButtonListItem*))); connect(m_userratingList, SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(SetUserRating(MythUIButtonListItem*))); connect(m_categoryList, SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(SetCategory(MythUIButtonListItem*))); connect(m_countryList, SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(setCountry(MythUIButtonListItem*))); connect(m_genreList,SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(setGenre(MythUIButtonListItem*))); connect(m_castList,SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(SetCast(MythUIButtonListItem*))); connect(m_runtimeList, SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(setRunTime(MythUIButtonListItem*))); connect(m_browseList, SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(SetBrowse(MythUIButtonListItem*))); connect(m_watchedList, SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(SetWatched(MythUIButtonListItem*))); connect(m_inetrefList, SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(SetInetRef(MythUIButtonListItem*))); connect(m_coverfileList, SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(SetCoverFile(MythUIButtonListItem*))); connect(m_orderbyList, SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(setOrderby(MythUIButtonListItem*))); connect(m_textfilter, SIGNAL(valueChanged()), SLOT(setTextFilter())); connect(m_saveButton, SIGNAL(Clicked()), SLOT(saveAsDefault())); connect(m_doneButton, SIGNAL(Clicked()), SLOT(saveAndExit())); return true; }
bool MythTimeInputDialog::Create() { if (!CopyWindowFromBase("MythTimeInputDialog", this)) return false; MythUIText *messageText = NULL; MythUIButton *okButton = NULL; bool err = false; UIUtilE::Assign(this, messageText, "message", &err); UIUtilE::Assign(this, m_dateList, "dates", &err); UIUtilE::Assign(this, m_timeList, "times", &err); UIUtilE::Assign(this, okButton, "ok", &err); if (err) { LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'MythTimeInputDialog'"); return false; } m_dateList->SetVisible(false); m_timeList->SetVisible(false); MythUIButtonListItem *item; // Date if (kNoDate != (m_resolution & 0xF)) { const QDate startdate(m_startTime.toLocalTime().date()); QDate date(startdate); int limit = 0; if (m_resolution & kFutureDates) { limit += m_rangeLimit; } if (m_resolution & kPastDates) { limit += m_rangeLimit; date = date.addDays(0-m_rangeLimit); } QString text; int flags; bool selected = false; for (int x = 0; x <= limit; x++) { selected = false; if (m_resolution & kDay) { date = date.addDays(1); flags = MythDate::kDateFull | MythDate::kSimplify; if (m_rangeLimit >= 356) flags |= MythDate::kAddYear; text = MythDate::toString(date, flags); if (date == startdate) selected = true; } else if (m_resolution & kMonth) { date = date.addMonths(1); text = date.toString("MMM yyyy"); if ((date.month() == startdate.month()) && (date.year() == startdate.year())) selected = true; } else if (m_resolution & kYear) { date = date.addYears(1); text = date.toString("yyyy"); if (date.year() == startdate.year()) selected = true; } item = new MythUIButtonListItem(m_dateList, text, NULL, false); item->SetData(QVariant(date)); if (selected) m_dateList->SetItemCurrent(item); } m_dateList->SetVisible(true); } // Time if (kNoTime != (m_resolution & 0xF0)) { QDate startdate(m_startTime.toLocalTime().date()); QTime starttime(m_startTime.toLocalTime().time()); QTime time(0,0,0); QString text; bool selected = false; int limit = (m_resolution & kMinutes) ? (60 * 24) : 24; for (int x = 0; x < limit; x++) { selected = false; if (m_resolution & kMinutes) { time = time.addSecs(60); QDateTime dt = QDateTime(startdate, time, Qt::LocalTime); text = MythDate::toString(dt, MythDate::kTime); if (time == starttime) selected = true; } else if (m_resolution & kHours) { time = time.addSecs(60*60); text = time.toString("hh:00"); if (time.hour() == starttime.hour()) selected = true; } item = new MythUIButtonListItem(m_timeList, text, NULL, false); item->SetData(QVariant(time)); if (selected) m_timeList->SetItemCurrent(item); } m_timeList->SetVisible(true); } if (messageText && !m_message.isEmpty()) messageText->SetText(m_message); connect(okButton, SIGNAL(Clicked()), SLOT(okClicked())); BuildFocusList(); return true; }
bool GeneralSetupWizard::Create() { // Load the theme for this screen bool foundtheme = LoadWindowFromXML("config-ui.xml", "generalwizard", this); if (!foundtheme) return false; m_submitButton = dynamic_cast<MythUIButton *> (GetChild("submit")); m_viewButton = dynamic_cast<MythUIButton *> (GetChild("view")); m_deleteButton = dynamic_cast<MythUIButton *> (GetChild("delete")); m_nextButton = dynamic_cast<MythUIButton *> (GetChild("next")); m_cancelButton = dynamic_cast<MythUIButton *> (GetChild("cancel")); m_profileLocation = dynamic_cast<MythUIText *> (GetChild("profiletext")); m_adminPassword = dynamic_cast<MythUIText *> (GetChild("profilepassword")); if (!m_submitButton || !m_viewButton || !m_deleteButton || !m_nextButton || !m_cancelButton) { LOG(VB_GENERAL, LOG_ERR, "Theme is missing critical theme elements."); return false; } m_submitButton->SetHelpText( tr("Anonymously submit a profile of your hardware. " "This helps the developers to determine where " "to focus their efforts.") ); m_viewButton->SetHelpText( tr("Visit your online hardware profile. (This requires " "that you have the MythBrowser plugin installed)") ); m_deleteButton->SetHelpText( tr("Delete your online hardware profile.") ); m_nextButton->SetHelpText( tr("Save these changes and move on to the " "next configuration step.") ); m_cancelButton->SetHelpText( tr("Exit this wizard, save no changes.") ); connect(m_submitButton, SIGNAL(Clicked()), this, SLOT(slotSubmit())); connect(m_viewButton, SIGNAL(Clicked()), this, SLOT(slotView())); connect(m_deleteButton, SIGNAL(Clicked()), this, SLOT(slotDelete())); connect(m_nextButton, SIGNAL(Clicked()), this, SLOT(slotNext())); connect(m_cancelButton, SIGNAL(Clicked()), this, SLOT(Close())); BuildFocusList(); loadData(); #ifndef __linux__ #ifndef CONFIG_BINDINGS_PYTHON // The hardware profiler only works on linux. // Make the widgets invisible on other platforms. m_submitButton->Hide(); m_viewButton->Hide(); m_deleteButton->Hide(); if (m_profileLocation) m_profileLocation->Hide(); if (m_adminPassword) m_adminPassword->Hide(); #endif #endif return true; }
bool AudioSetupWizard::Create() { bool foundtheme = false; // Load the theme for this screen foundtheme = LoadWindowFromXML("config-ui.xml", "audiowizard", this); if (!foundtheme) return false; m_audioDeviceButtonList = dynamic_cast<MythUIButtonList *> (GetChild("audiodevices")); m_speakerNumberButtonList = dynamic_cast<MythUIButtonList *> (GetChild("speakers")); m_dtsCheck = dynamic_cast<MythUICheckBox *> (GetChild("dtscheck")); m_ac3Check = dynamic_cast<MythUICheckBox *> (GetChild("ac3check")); m_eac3Check = dynamic_cast<MythUICheckBox *> (GetChild("eac3check")); m_truehdCheck = dynamic_cast<MythUICheckBox *> (GetChild("truehdcheck")); m_dtshdCheck = dynamic_cast<MythUICheckBox *> (GetChild("dtshdcheck")); m_testSpeakerButton = dynamic_cast<MythUIButton *> (GetChild("testspeakers")); m_nextButton = dynamic_cast<MythUIButton *> (GetChild("next")); m_prevButton = dynamic_cast<MythUIButton *> (GetChild("previous")); if (!m_audioDeviceButtonList || !m_speakerNumberButtonList || !m_dtsCheck || !m_ac3Check || !m_eac3Check || !m_truehdCheck || !m_dtshdCheck || !m_testSpeakerButton || !m_nextButton || !m_prevButton) { LOG(VB_GENERAL, LOG_ERR, "Theme is missing critical theme elements."); return false; } // Pre-set the widgets to their database values // Buttonlists are set in load() int dtsSetting = gCoreContext->GetNumSetting("DTSPassThru", 0); if (dtsSetting == 1) m_dtsCheck->SetCheckState(MythUIStateType::Full); int ac3Setting = gCoreContext->GetNumSetting("AC3PassThru", 0); if (ac3Setting == 1) m_ac3Check->SetCheckState(MythUIStateType::Full); int eac3Setting = gCoreContext->GetNumSetting("EAC3PassThru", 0); if (eac3Setting == 1) m_eac3Check->SetCheckState(MythUIStateType::Full); int truehdSetting = gCoreContext->GetNumSetting("TrueHDPassThru", 0); if (truehdSetting == 1) m_truehdCheck->SetCheckState(MythUIStateType::Full); int dtshdSetting = gCoreContext->GetNumSetting("DTSHDPassThru", 0); if (dtshdSetting == 1) m_dtshdCheck->SetCheckState(MythUIStateType::Full); // Help Text // Buttonlists m_audioDeviceButtonList->SetHelpText( tr("Select from one of the " "audio devices detected on your system. When " "satisfied, you can test audio before moving " "on. If you fail to configure audio, video " "playback may fail as well.") ); m_speakerNumberButtonList->SetHelpText( tr("Select the number of speakers you " "have.") ); // Checkboxes m_dtsCheck->SetHelpText( tr("Select this checkbox if your receiver " "is capable of playing DTS.") ); m_ac3Check->SetHelpText( tr("Select this checkbox if your receiver " "is capable of playing AC-3 (Dolby Digital).") ); m_eac3Check->SetHelpText( tr("Select this checkbox if your receiver " "is capable of playing E-AC-3 (Dolby Digital Plus).") ); m_truehdCheck->SetHelpText( tr("Select this checkbox if your receiver " "is capable of playing TrueHD.") ); m_dtshdCheck->SetHelpText( tr("Select this checkbox if your receiver " "is capable of playing DTS-HD.") ); // Buttons m_testSpeakerButton->SetHelpText( tr("Test your audio settings by playing " "noise through each speaker.") ); m_nextButton->SetHelpText( tr("Save these changes and move on to the next " "configuration step.") ); m_prevButton->SetHelpText( tr("Return to the previous configuration step.") ); // I hate to SetText but it's the only way to make it reliably bi-modal m_testSpeakerButton->SetText(tr("Test Speakers")); connect(m_testSpeakerButton, SIGNAL(Clicked()), this, SLOT(toggleSpeakers())); connect(m_nextButton, SIGNAL(Clicked()), this, SLOT(slotNext())); connect(m_prevButton, SIGNAL(Clicked()), this, SLOT(slotPrevious())); QString message = tr("Discovering audio devices..."); LoadInBackground(message); BuildFocusList(); return true; }
bool FileSelector::Create(void) { bool foundtheme = false; // Load the theme for this screen foundtheme = LoadWindowFromXML("mytharchive-ui.xml", "file_selector", this); if (!foundtheme) return false; bool err = false; UIUtilW::Assign(this, m_titleText, "title_text"); UIUtilE::Assign(this, m_fileButtonList, "filelist", &err); UIUtilE::Assign(this, m_locationEdit, "location_edit", &err); UIUtilE::Assign(this, m_backButton, "back_button", &err); UIUtilE::Assign(this, m_homeButton, "home_button", &err); UIUtilE::Assign(this, m_okButton, "ok_button", &err); UIUtilE::Assign(this, m_cancelButton, "cancel_button", &err); if (err) { LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'file_selector'"); return false; } if (m_titleText) { switch (m_selectorType) { case FSTYPE_FILE: m_titleText->SetText(tr("Find File")); break; case FSTYPE_DIRECTORY: m_titleText->SetText(tr("Find Directory")); break; default: m_titleText->SetText(tr("Find Files")); break; } } connect(m_okButton, SIGNAL(Clicked()), this, SLOT(OKPressed())); connect(m_cancelButton, SIGNAL(Clicked()), this, SLOT(cancelPressed())); connect(m_locationEdit, SIGNAL(LosingFocus()), this, SLOT(locationEditLostFocus())); m_locationEdit->SetText(m_curDirectory); connect(m_backButton, SIGNAL(Clicked()), this, SLOT(backPressed())); connect(m_homeButton, SIGNAL(Clicked()), this, SLOT(homePressed())); connect(m_fileButtonList, SIGNAL(itemClicked(MythUIButtonListItem *)), this, SLOT(itemClicked(MythUIButtonListItem *))); BuildFocusList(); SetFocusWidget(m_fileButtonList); updateSelectedList(); updateFileList(); return true; }
void ClickedLabel::mouseReleaseEvent(QMouseEvent */*evt*/) { emit Clicked(); }
bool EditMetadataDialog::Create() { if (!LoadWindowFromXML("video-ui.xml", "edit_metadata", this)) return false; bool err = false; UIUtilE::Assign(this, m_titleEdit, "title_edit", &err); UIUtilE::Assign(this, m_subtitleEdit, "subtitle_edit", &err); UIUtilE::Assign(this, m_playerEdit, "player_edit", &err); UIUtilE::Assign(this, m_seasonSpin, "season", &err); UIUtilE::Assign(this, m_episodeSpin, "episode", &err); UIUtilE::Assign(this, m_coverartText, "coverart_text", &err); UIUtilE::Assign(this, m_screenshotText, "screenshot_text", &err); UIUtilE::Assign(this, m_bannerText, "banner_text", &err); UIUtilE::Assign(this, m_fanartText, "fanart_text", &err); UIUtilE::Assign(this, m_trailerText, "trailer_text", &err); UIUtilE::Assign(this, m_categoryList, "category_select", &err); UIUtilE::Assign(this, m_levelList, "level_select", &err); UIUtilE::Assign(this, m_childList, "child_select", &err); UIUtilE::Assign(this, m_browseCheck, "browse_check", &err); UIUtilE::Assign(this, m_watchedCheck, "watched_check", &err); UIUtilE::Assign(this, m_coverartButton, "coverart_button", &err); UIUtilE::Assign(this, m_bannerButton, "banner_button", &err); UIUtilE::Assign(this, m_fanartButton, "fanart_button", &err); UIUtilE::Assign(this, m_screenshotButton, "screenshot_button", &err); UIUtilE::Assign(this, m_trailerButton, "trailer_button", &err); UIUtilE::Assign(this, m_doneButton, "done_button", &err); if (err) { VERBOSE(VB_IMPORTANT, "Cannot load screen 'edit_metadata'"); return false; } UIUtilW::Assign(this, m_netBannerButton, "net_banner_button"); UIUtilW::Assign(this, m_netFanartButton, "net_fanart_button"); UIUtilW::Assign(this, m_netScreenshotButton, "net_screenshot_button"); UIUtilW::Assign(this, m_netCoverartButton, "net_coverart_button"); UIUtilW::Assign(this, m_taglineEdit, "tagline_edit"); UIUtilW::Assign(this, m_ratingEdit, "rating_edit"); UIUtilW::Assign(this, m_directorEdit, "director_edit"); UIUtilW::Assign(this, m_inetrefEdit, "inetref_edit"); UIUtilW::Assign(this, m_homepageEdit, "homepage_edit"); UIUtilW::Assign(this, m_plotEdit, "description_edit"); UIUtilW::Assign(this, m_yearSpin, "year_spin"); UIUtilW::Assign(this, m_userRatingSpin, "userrating_spin"); UIUtilW::Assign(this, m_lengthSpin, "length_spin"); UIUtilW::Assign(this, m_coverart, "coverart"); UIUtilW::Assign(this, m_screenshot, "screenshot"); UIUtilW::Assign(this, m_banner, "banner"); UIUtilW::Assign(this, m_fanart, "fanart"); fillWidgets(); BuildFocusList(); connect(m_titleEdit, SIGNAL(valueChanged()), SLOT(SetTitle())); m_titleEdit->SetMaxLength(128); connect(m_subtitleEdit, SIGNAL(valueChanged()), SLOT(SetSubtitle())); m_subtitleEdit->SetMaxLength(0); connect(m_playerEdit, SIGNAL(valueChanged()), SLOT(SetPlayer())); if (m_taglineEdit) { connect(m_taglineEdit, SIGNAL(valueChanged()), SLOT(SetTagline())); m_taglineEdit->SetMaxLength(255); } if (m_ratingEdit) { connect(m_ratingEdit, SIGNAL(valueChanged()), SLOT(SetRating())); m_ratingEdit->SetMaxLength(128); } if (m_directorEdit) { connect(m_directorEdit, SIGNAL(valueChanged()), SLOT(SetDirector())); m_directorEdit->SetMaxLength(128); } if (m_inetrefEdit) connect(m_inetrefEdit, SIGNAL(valueChanged()), SLOT(SetInetRef())); if (m_homepageEdit) { connect(m_homepageEdit, SIGNAL(valueChanged()), SLOT(SetHomepage())); m_homepageEdit->SetMaxLength(0); } if (m_plotEdit) { connect(m_plotEdit, SIGNAL(valueChanged()), SLOT(SetPlot())); m_plotEdit->SetMaxLength(0); } connect(m_seasonSpin, SIGNAL(LosingFocus()), SLOT(SetSeason())); connect(m_episodeSpin, SIGNAL(LosingFocus()), SLOT(SetEpisode())); if (m_yearSpin) connect(m_yearSpin, SIGNAL(LosingFocus()), SLOT(SetYear())); if (m_userRatingSpin) connect(m_userRatingSpin, SIGNAL(LosingFocus()), SLOT(SetUserRating())); if (m_lengthSpin) connect(m_lengthSpin, SIGNAL(LosingFocus()), SLOT(SetLength())); connect(m_doneButton, SIGNAL(Clicked()), SLOT(SaveAndExit())); // Find Artwork locally connect(m_coverartButton, SIGNAL(Clicked()), SLOT(FindCoverArt())); connect(m_bannerButton, SIGNAL(Clicked()), SLOT(FindBanner())); connect(m_fanartButton, SIGNAL(Clicked()), SLOT(FindFanart())); connect(m_screenshotButton, SIGNAL(Clicked()), SLOT(FindScreenshot())); // Find Artwork on the Internet if (m_netCoverartButton) connect(m_netCoverartButton, SIGNAL(Clicked()), SLOT(FindNetCoverArt())); if (m_netBannerButton) connect(m_netBannerButton, SIGNAL(Clicked()), SLOT(FindNetBanner())); if (m_netFanartButton) connect(m_netFanartButton, SIGNAL(Clicked()), SLOT(FindNetFanart())); if (m_netScreenshotButton) connect(m_netScreenshotButton, SIGNAL(Clicked()), SLOT(FindNetScreenshot())); connect(m_trailerButton, SIGNAL(Clicked()), SLOT(FindTrailer())); connect(m_browseCheck, SIGNAL(valueChanged()), SLOT(ToggleBrowse())); connect(m_watchedCheck, SIGNAL(valueChanged()), SLOT(ToggleWatched())); connect(m_childList, SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(SetChild(MythUIButtonListItem*))); connect(m_levelList, SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(SetLevel(MythUIButtonListItem*))); connect(m_categoryList, SIGNAL(itemSelected(MythUIButtonListItem*)), SLOT(SetCategory(MythUIButtonListItem*))); connect(m_categoryList, SIGNAL(itemClicked(MythUIButtonListItem*)), SLOT(NewCategoryPopup())); return true; }
bool ChannelEditor::Create() { bool foundtheme = false; // Load the theme for this screen foundtheme = LoadWindowFromXML("config-ui.xml", "channeloverview", this); if (!foundtheme) return false; MythUIButtonList *sortList = dynamic_cast<MythUIButtonList *>(GetChild("sorting")); m_sourceList = dynamic_cast<MythUIButtonList *>(GetChild("source")); m_channelList = dynamic_cast<MythUIButtonList *>(GetChild("channels")); m_preview = dynamic_cast<MythUIImage *>(GetChild("preview")); m_channame = dynamic_cast<MythUIText *>(GetChild("name")); m_channum = dynamic_cast<MythUIText *>(GetChild("channum")); m_callsign = dynamic_cast<MythUIText *>(GetChild("callsign")); m_chanid = dynamic_cast<MythUIText *>(GetChild("chanid")); m_sourcename = dynamic_cast<MythUIText *>(GetChild("sourcename")); m_compoundname = dynamic_cast<MythUIText *>(GetChild("compoundname")); MythUIButton *deleteButton = dynamic_cast<MythUIButton *>(GetChild("delete")); MythUIButton *scanButton = dynamic_cast<MythUIButton *>(GetChild("scan")); MythUIButton *importIconButton = dynamic_cast<MythUIButton *>(GetChild("importicons")); MythUIButton *transportEditorButton = dynamic_cast<MythUIButton *>(GetChild("edittransport")); MythUICheckBox *hideCheck = dynamic_cast<MythUICheckBox *>(GetChild("nochannum")); if (!sortList || !m_sourceList || !m_channelList || !deleteButton || !scanButton || !importIconButton || !transportEditorButton || !hideCheck) { return false; } // Delete button help text deleteButton->SetHelpText(tr("Delete all channels on currently selected source(s).")); // Sort List new MythUIButtonListItem(sortList, tr("Channel Name")); new MythUIButtonListItem(sortList, tr("Channel Number")); connect(m_sourceList, SIGNAL(itemSelected(MythUIButtonListItem *)), SLOT(setSourceID(MythUIButtonListItem *))); sortList->SetValue(m_currentSortMode); // Source List new MythUIButtonListItem(m_sourceList,tr("All"), qVariantFromValue((int)FILTER_ALL)); MSqlQuery query(MSqlQuery::InitCon()); query.prepare("SELECT name, sourceid FROM videosource"); if (query.exec()) { while(query.next()) { new MythUIButtonListItem(m_sourceList, query.value(0).toString(), query.value(1).toInt()); } } new MythUIButtonListItem(m_sourceList,tr("(Unassigned)"), qVariantFromValue((int)FILTER_UNASSIGNED)); connect(sortList, SIGNAL(itemSelected(MythUIButtonListItem *)), SLOT(setSortMode(MythUIButtonListItem *))); // Hide/Show channels without channum checkbox hideCheck->SetCheckState(m_currentHideMode); connect(hideCheck, SIGNAL(toggled(bool)), SLOT(setHideMode(bool))); // Scan Button scanButton->SetHelpText(tr("Starts the channel scanner.")); scanButton->SetEnabled(SourceUtil::IsAnySourceScanable()); // Import Icons Button importIconButton->SetHelpText(tr("Starts the icon downloader")); importIconButton->SetEnabled(true); connect(importIconButton, SIGNAL(Clicked()), SLOT(channelIconImport())); // Transport Editor Button transportEditorButton->SetHelpText( tr("Allows you to edit the transports directly. " "This is rarely required unless you are using " "a satellite dish and must enter an initial " "frequency to for the channel scanner to try.")); connect(transportEditorButton, SIGNAL(Clicked()), SLOT(transportEditor())); // Other signals connect(m_channelList, SIGNAL(itemClicked(MythUIButtonListItem *)), SLOT(edit(MythUIButtonListItem *))); connect(m_channelList, SIGNAL(itemSelected(MythUIButtonListItem *)), SLOT(itemChanged(MythUIButtonListItem *))); connect(scanButton, SIGNAL(Clicked()), SLOT(scan())); connect(deleteButton, SIGNAL(Clicked()), SLOT(deleteChannels())); fillList(); BuildFocusList(); return true; }
bool ManualSchedule::Create(void) { if (!LoadWindowFromXML("schedule-ui.xml", "manualschedule", this)) return false; m_channelList = dynamic_cast<MythUIButtonList *>(GetChild("channel")); m_startdateList = dynamic_cast<MythUIButtonList *>(GetChild("startdate")); m_starthourSpin = dynamic_cast<MythUISpinBox *>(GetChild("starthour")); m_startminuteSpin = dynamic_cast<MythUISpinBox *>(GetChild("startminute")); m_durationSpin = dynamic_cast<MythUISpinBox *>(GetChild("duration")); m_titleEdit = dynamic_cast<MythUITextEdit *>(GetChild("title")); m_recordButton = dynamic_cast<MythUIButton *>(GetChild("next")); m_cancelButton = dynamic_cast<MythUIButton *>(GetChild("cancel")); if (!m_channelList || !m_startdateList || !m_starthourSpin || !m_startminuteSpin || !m_durationSpin || !m_titleEdit || !m_recordButton || !m_cancelButton) { LOG(VB_GENERAL, LOG_ERR, "ManualSchedule, theme is missing required elements"); return false; } QString longChannelFormat = gCoreContext->GetSetting("LongChannelFormat", "<num> <name>"); QString chanorder = gCoreContext->GetSetting("ChannelOrdering", "channum"); DBChanList channels = ChannelUtil::GetChannels(0, false, "channum,callsign"); ChannelUtil::SortChannels(channels, chanorder); for (uint i = 0; i < channels.size(); i++) { QString chantext = channels[i].GetFormatted(longChannelFormat); MythUIButtonListItem *item = new MythUIButtonListItem(m_channelList, chantext); InfoMap infomap; channels[i].ToMap(infomap); item->SetTextFromMap(infomap); m_chanids.push_back(channels[i].chanid); } for (uint index = 0; index <= 60; index++) { QString dinfo = MythDateTimeToString(m_nowDateTime.addDays(index), kDateFull | kSimplify); if (m_nowDateTime.addDays(index).date().dayOfWeek() < 6) dinfo += QString(" (%1)").arg(tr("5 weekdays if daily")); else dinfo += QString(" (%1)").arg(tr("7 days per week if daily")); new MythUIButtonListItem(m_startdateList, dinfo); if (m_nowDateTime.addDays(index).toString("MMdd") == m_startDateTime.toString("MMdd")) m_startdateList->SetItemCurrent(m_startdateList->GetCount() - 1); } QTime thisTime = m_nowDateTime.time(); thisTime = thisTime.addSecs((30 - (thisTime.minute() % 30)) * 60); if (thisTime < QTime(0,30)) m_startdateList->SetItemCurrent(m_startdateList->GetCurrentPos() + 1); m_starthourSpin->SetRange(0,23,1); m_starthourSpin->SetValue(thisTime.hour()); int minute_increment = gCoreContext->GetNumSetting("ManualScheduleMinuteIncrement", 5); m_startminuteSpin->SetRange(0, 60-minute_increment, minute_increment); m_startminuteSpin->SetValue((thisTime.minute()/5)*5); m_durationSpin->SetRange(5,360,5); m_durationSpin->SetValue(60); connectSignals(); connect(m_recordButton, SIGNAL(Clicked()), SLOT(recordClicked())); connect(m_cancelButton, SIGNAL(Clicked()), SLOT(Close())); m_titleEdit->SetMaxLength(128); BuildFocusList(); return true; }
void GuiButton::Update(GuiTrigger * t) { if(state == STATE_DISABLED || !t || (this->IsAnimated() && (this->GetEffect() != EFFECT_PULSE))) return; else if(parentElement && ((parentElement->GetState() == STATE_DISABLED) || parentElement->IsAnimated())) return; #ifdef HW_RVL // cursor if(t->wpad->ir.valid && t->chan >= 0) { if(this->IsInside(t->wpad->ir.x, t->wpad->ir.y)) { if(state == STATE_DEFAULT || (state == STATE_SELECTED && t->chan != stateChan)) // we weren't on the button before! { this->SetState(STATE_SELECTED, t->chan); if(this->Rumble()) RequestRumble(t->chan); if(soundOver) soundOver->Play(); if(tooltip) SelectTimer.reset(); if(effectsOver && !effects) { // initiate effects effects = effectsOver; effectAmount = effectAmountOver; effectTarget = effectTargetOver; } } } else { if(state == STATE_SELECTED && (stateChan == t->chan || stateChan == -1)) this->ResetState(); if(effectTarget == effectTargetOver && effectAmount == effectAmountOver) { // initiate effects (in reverse) effects = effectsOver; effectAmount = -effectAmountOver; effectTarget = 100; } } } #endif // button triggers if(clickable) { u32 wm_btns = t->wpad->btns_d; for(int i = 0; i < 6; i++) { if(trigger[i] && (trigger[i]->chan == -1 || trigger[i]->chan == t->chan)) { if((wm_btns & trigger[i]->wpad->btns_d) || (t->pad.btns_d & trigger[i]->pad.btns_d)) { if(state == STATE_SELECTED) { if(!t->wpad->ir.valid || this->IsInside(t->wpad->ir.x, t->wpad->ir.y)) { if(soundClick) soundClick->Play(); POINT p = {0, 0}; if (userInput[t->chan].wpad && userInput[t->chan].wpad->ir.valid) { p.x = userInput[t->chan].wpad->ir.x; p.y = userInput[t->chan].wpad->ir.y; } Clicked(this, t->chan, p); ClickAndHold = true; return; } } else if(trigger[i]->type == TRIGGER_BUTTON_ONLY) { POINT p = {0, 0}; if (userInput[t->chan].wpad) { if (userInput[t->chan].wpad->ir.valid) { p.x = userInput[t->chan].wpad->ir.x; p.y = userInput[t->chan].wpad->ir.y; } } Clicked(this, t->chan, p); return; } } } } } if(holdable) { bool held = false; for(int i = 0; i < 6; i++) { //! if already found a trigger that takes effect stop searching if(held || !trigger[i]) continue; if((t->wpad->btns_h & trigger[i]->wpad->btns_h) || (t->pad.btns_h & trigger[i]->pad.btns_h)) { //! TRIGGER_BUTTON_ONLY_HELD is executed on every chan if(trigger[i]->type == TRIGGER_BUTTON_ONLY_HELD) { held = true; if(state != STATE_HELD) this->SetState(STATE_HELD, t->chan); } //! TRIGGER_HELD is executed only if holding the button else if( (trigger[i]->type == TRIGGER_HELD) && ( (trigger[i]->chan == -1) || (trigger[i]->chan == t->chan))) { held = ClickAndHold; if(held && (state != STATE_HELD) && (state == STATE_SELECTED)) this->SetState(STATE_HELD, t->chan); } } } if(held && (state == STATE_HELD) && (stateChan == t->chan)) { POINT p = {0, 0}; if (userInput[t->chan].wpad && userInput[t->chan].wpad->ir.valid) { p.x = userInput[t->chan].wpad->ir.x; p.y = userInput[t->chan].wpad->ir.y; } Held(this, t->chan, p); return; } else if(!held && (state == STATE_HELD) && (stateChan == t->chan)) { POINT p = {0, 0}; if (userInput[t->chan].wpad && userInput[t->chan].wpad->ir.valid) { p.x = userInput[t->chan].wpad->ir.x; p.y = userInput[t->chan].wpad->ir.y; } this->ResetState(); Released(this, t->chan, p); ClickAndHold = false; return; } } }
void Cell::mousePressEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED(event); emit Clicked(matrix_x, matrix_y); }
void ScriptDialogWidget::InitWindow(ScriptDialogRequest &request) { QVBoxLayout* layout = new QVBoxLayout(this); layout->setSpacing(0); layout->setMargin(0); setLayout(layout); QUiLoader loader; QFile file("./data/ui/scriptdialog.ui"); if (!file.exists()) { // TODO: LogError ("Cannot find ScriptDialog.ui file."); return; } // Get pointers to widgets. widget_ = loader.load(&file, 0); file.close(); layout->addWidget(widget_); QPlainTextEdit* message_text = widget_->findChild<QPlainTextEdit*>("messageText"); if (message_text) message_text->appendPlainText( QString::fromUtf8(request_.GetMessageText().c_str(), request_.GetMessageText().size()) ); QLabel* from_text = widget_->findChild<QLabel*>("fromText"); if (from_text) from_text->setText( QString( request_.GetObjectName().c_str()) ); QLabel* owner_text = widget_->findChild<QLabel*>("ownerText"); if (owner_text) owner_text->setText( QString(request_.GetObjectsOwnerName().c_str()) ); ButtonLabels labels = request.GetButtonLabels(); QGridLayout* button_container = widget_->findChild<QGridLayout*>("dynamicButtonsContainer"); if (!button_container) { // todo: LogError: "Cannot show buttons on ScriptDialogWidget, button container pointer not valid." return; } //button_container->setColumnCount(3); //button_container->setRowCount((labels.size()-1) / 3 + 1); int index = 0; for (ButtonLabels::iterator i = labels.begin(); i != labels.end(); ++i) { QString label = QString((*i).c_str()); SelectionButton* button = new SelectionButton(0, label.toStdString().c_str(), label); int column = index % 3; int row = index / 3; button_container->addWidget(button, row, column); connect(button, SIGNAL( Clicked(QString)), this, SLOT( OnButtonPressed(QString))); index++; } QPushButton* default_button = widget_->findChild<QPushButton*>("defaultButton"); if (default_button) { if (labels.size() == 0) { SelectionButton* button = new SelectionButton(0, "Ok", "Ok"); button_container->addWidget(button, 0, 0); connect(button, SIGNAL( Clicked(QString)), this, SLOT( OnButtonPressed(QString))); } else { default_button->setText("Ignore"); connect(default_button, SIGNAL( clicked()), this, SLOT( OnIgnorePressed()) ); } } }
void SelectionButton::OnClicked() { emit Clicked(id_); }