Ticket #10734: customedit.2.patch
| File customedit.2.patch, 10.7 KB (added by , 14 years ago) |
|---|
-
programs/mythfrontend/customedit.cpp
old new 35 35 m_baseTitle.remove(QRegExp(" \\(.*\\)$")); 36 36 37 37 m_maxex = 0; 38 m_evaluate = 1; // default: evaluate 38 39 m_seSuffix = QString(" (%1)").arg(tr("stored search")); 39 40 m_exSuffix = QString(" (%1)").arg(tr("stored example")); 40 41 … … 150 151 textChanged(); 151 152 } 152 153 153 void CustomEdit::loadClauses()154 QString CustomEdit::evaluate(QString clause) 154 155 { 155 QString quoteTitle = m_baseTitle; 156 quoteTitle.replace("\'","\'\'"); 156 int s0=0; 157 int e0=0; 158 159 while (1) { 160 s0 = clause.indexOf (QRegExp("\\{[A-Z]+\\}"), e0); 161 162 if (s0 < 0) 163 break; 164 165 e0 = clause.indexOf ("}", s0); 166 167 QString mid = clause.mid(s0 + 1, e0 - s0 - 1); 168 QString repl = ""; 169 170 if (!mid.compare("TITLE")) { 171 repl = m_pginfo->GetTitle(); 172 repl.replace("\'","\'\'"); 173 } else if (!mid.compare("SUBTITLE")) { 174 repl = m_pginfo->GetSubtitle(); 175 repl.replace("\'","\'\'"); 176 } else if (!mid.compare("DESCR")) { 177 repl = m_pginfo->GetDescription(); 178 repl.replace("\'","\'\'"); 179 } else if (!mid.compare("SERIESID")) { 180 repl = QString("%1").arg(m_pginfo->GetSeriesID()); 181 } else if (!mid.compare("PROGID")) { 182 repl = m_pginfo->GetProgramID(); 183 } else if (!mid.compare("SEASON")) { 184 repl = QString::number(m_pginfo->GetSeason()); 185 } else if (!mid.compare("EPISODE")) { 186 repl = QString::number(m_pginfo->GetEpisode()); 187 } else if (!mid.compare("CATEGORY")) { 188 repl = m_pginfo->GetCategory(); 189 } else if (!mid.compare("CHANID")) { 190 repl = QString("%1").arg(m_pginfo->GetChanID()); 191 } else if (!mid.compare("CHANNUM")) { 192 repl = m_pginfo->GetChanNum(); 193 } else if (!mid.compare("SCHEDID")) { 194 repl = m_pginfo->GetChannelSchedulingID(); 195 } else if (!mid.compare("CHANNAME")) { 196 repl = m_pginfo->GetChannelName(); 197 } else if (!mid.compare("DAYNAME")) { 198 repl = m_pginfo->GetScheduledStartTime().toString("dddd"); 199 } else if (!mid.compare("STARTDATE")) { 200 repl = m_pginfo->GetScheduledStartTime().toString("yyyy-mm-dd hh:mm:ss"); 201 } else if (!mid.compare("ENDDATE")) { 202 repl = m_pginfo->GetScheduledEndTime().toString("yyyy-mm-dd hh:mm:ss"); 203 } else if (!mid.compare("STARTTIME")) { 204 repl = m_pginfo->GetScheduledStartTime().toString("hh:mm"); 205 } else if (!mid.compare("ENDTIME")) { 206 repl = m_pginfo->GetScheduledEndTime().toString("hh:mm"); 207 } else if (!mid.compare("STARTSEC")) { 208 QDateTime date = m_pginfo->GetScheduledStartTime(); 209 QDateTime midnight = QDateTime(date.date()); 210 repl = QString("%1").arg(midnight.secsTo(date)); 211 } else if (!mid.compare("ENDSEC")) { 212 QDateTime date = m_pginfo->GetScheduledEndTime(); 213 QDateTime midnight = QDateTime(date.date()); 214 repl = QString("%1").arg(midnight.secsTo(date)); 215 } 216 // unknown tags are simply removed 217 clause.replace(s0, e0 - s0 + 1, repl); 218 } 219 return clause; 220 } 157 221 222 void CustomEdit::loadClauses() 223 { 158 224 CustomRuleInfo rule; 159 225 160 226 rule.title = tr("Match an exact title"); 161 227 if (!m_baseTitle.isEmpty()) 162 rule.description = QString("program.title = ' %1' ").arg(quoteTitle);228 rule.description = QString("program.title = '{TITLE}' "); 163 229 else 164 230 rule.description = "program.title = 'Nova' "; 165 231 new MythUIButtonListItem(m_clauseList, rule.title, … … 169 235 { 170 236 rule.title = tr("Match this series"); 171 237 rule.subtitle.clear(); 172 rule.description = QString("program.seriesid = '%1' ") 173 .arg(m_pginfo->GetSeriesID()); 238 rule.description = QString("program.seriesid = '{SERIESID}' "); 174 239 new MythUIButtonListItem(m_clauseList, rule.title, 175 240 qVariantFromValue(rule)); 176 241 } … … 178 243 rule.title = tr("Match words in the title"); 179 244 rule.subtitle.clear(); 180 245 if (!m_pginfo->GetTitle().isEmpty()) 181 rule.description = QString("program.title LIKE '%%1%' ") 182 .arg(quoteTitle); 246 rule.description = QString("program.title LIKE '%{TITLE}%' "); 183 247 else 184 248 rule.description = "program.title LIKE 'CSI: %' "; 185 249 new MythUIButtonListItem(m_clauseList, rule.title, … … 188 252 rule.title = tr("Match words in the subtitle"); 189 253 rule.subtitle.clear(); 190 254 if (!m_pginfo->GetSubtitle().isEmpty()) 191 { 192 QString subt = m_pginfo->GetSubtitle(); 193 subt.replace("\'","\'\'"); 194 rule.description = QString("program.subtitle LIKE '%%1%' ") 195 .arg(subt); 196 } 255 rule.description = QString("program.subtitle LIKE '%{SUBTITLE}%' "); 197 256 else 198 257 rule.description = "program.subtitle LIKE '%Las Vegas%' "; 199 258 new MythUIButtonListItem(m_clauseList, rule.title, … … 203 262 { 204 263 rule.title = tr("Match this episode"); 205 264 rule.subtitle.clear(); 206 rule.description = QString("program.programid = '%1' ") 207 .arg(m_pginfo->GetProgramID()); 265 rule.description = QString("program.programid = '{PROGID}' "); 208 266 } 209 267 else if (!m_pginfo->GetSubtitle().isEmpty()) 210 268 { 211 269 rule.title = tr("Match this episode"); 212 270 rule.subtitle.clear(); 213 rule.description = QString("program.subtitle = '%1' \n" 214 "AND program.description = '%2' ") 215 .arg(m_pginfo->GetSubtitle().replace("\'","\'\'")) 216 .arg(m_pginfo->GetDescription().replace("\'","\'\'")); 271 rule.description = QString("program.subtitle = '{SUBTITLE}' \n" 272 "AND program.description = '{DESCR}' "); 217 273 } 218 274 else 219 275 { … … 259 315 260 316 rule.title = tr("Anytime on a specific day of the week"); 261 317 rule.subtitle.clear(); 262 rule.description = QString("DAYNAME(program.starttime) = '%1' ") 263 .arg(m_pginfo->GetScheduledStartTime().toString("dddd")); 318 rule.description = QString("DAYNAME(program.starttime) = '{DAYNAME}' "); 264 319 new MythUIButtonListItem(m_clauseList, rule.title, 265 320 qVariantFromValue(rule)); 266 321 … … 293 348 rule.title = tr("Only on a specific station"); 294 349 rule.subtitle.clear(); 295 350 if (!m_pginfo->GetChannelSchedulingID().isEmpty()) 296 rule.description = QString("channel.callsign = '%1' ") 297 .arg(m_pginfo->GetChannelSchedulingID()); 351 rule.description = QString("channel.callsign = '{SCHEDID}' "); 298 352 else 299 353 rule.description = "channel.callsign = 'ESPN' "; 300 354 new MythUIButtonListItem(m_clauseList, rule.title, … … 366 420 rule.title = tr("Limit by category"); 367 421 rule.subtitle.clear(); 368 422 if (!m_pginfo->GetCategory().isEmpty()) 369 rule.description = QString("program.category = '%1' ") 370 .arg(m_pginfo->GetCategory()); 423 rule.description = QString("program.category = '{CATEGORY}' "); 371 424 else 372 425 rule.description = "program.category = 'Reality' "; 373 426 new MythUIButtonListItem(m_clauseList, rule.title, … … 378 431 "program.chanid = programgenres.chanid AND " 379 432 "program.starttime = programgenres.starttime "; 380 433 if (!m_pginfo->GetCategory().isEmpty()) 381 rule.description = QString("programgenres.genre = '%1' ") 382 .arg(m_pginfo->GetCategory()); 434 rule.description = QString("programgenres.genre = '{CATEGORY}' "); 383 435 else 384 436 rule.description = "programgenres.genre = 'Reality' "; 385 437 new MythUIButtonListItem(m_clauseList, rule.title, … … 545 597 546 598 CustomRuleInfo rule = qVariantValue<CustomRuleInfo>(item->GetData()); 547 599 548 QString msg = rule.description;600 QString msg = (m_evaluate) ? evaluate(rule.description) : rule.description; 549 601 msg.replace('\n', ' '); 550 602 msg.replace(QRegExp(" [ ]*"), " "); 551 603 msg = QString("\"%1\"").arg(msg); … … 570 622 571 623 if (desc.contains(QRegExp("\\S"))) 572 624 clause = "AND "; 573 clause += rule.description; 625 clause += (m_evaluate) ? evaluate(rule.description) : rule.description; 626 574 627 m_descriptionEdit->SetText(desc.append(clause)); 575 628 576 629 QString sub = m_subtitleEdit->GetText(); … … 586 639 587 640 MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack(); 588 641 ProgLister *pl = new ProgLister(mainStack, plSQLSearch, 589 m_descriptionEdit->GetText(),642 evaluate(m_descriptionEdit->GetText()), 590 643 m_subtitleEdit->GetText()); 591 644 if (pl->Create()) 592 645 { … … 610 663 if (cur_recid > 0) 611 664 { 612 665 record->ModifyPowerSearchByID(cur_recid, m_titleEdit->GetText(), 613 m_descriptionEdit->GetText(),666 evaluate(m_descriptionEdit->GetText()), 614 667 m_subtitleEdit->GetText()); 615 668 } 616 669 else 617 670 { 618 671 record->LoadBySearch(kPowerSearch, m_titleEdit->GetText(), 619 m_descriptionEdit->GetText(),672 evaluate(m_descriptionEdit->GetText()), 620 673 m_subtitleEdit->GetText()); 621 674 } 622 675 … … 700 753 bool ret = false; 701 754 QString msg; 702 755 703 QString desc = m_descriptionEdit->GetText();756 QString desc = evaluate(m_descriptionEdit->GetText()); 704 757 QString from = m_subtitleEdit->GetText(); 705 758 if (desc.contains(QRegExp("^\\s*AND\\s", Qt::CaseInsensitive))) 706 759 { … … 867 920 // else if (GetFocusWidget() == m_ruleList) 868 921 // deleteRecordingRule(); 869 922 } 870 else 923 else if (action == "EDIT") 924 { 925 // toggle evaluated/unevaluated sample view 926 m_evaluate = 1-m_evaluate; 927 MythUIButtonListItem* item = m_clauseList->GetItemCurrent(); 928 clauseChanged(item); 929 } else 871 930 handled = false; 872 931 } 873 932 -
programs/mythfrontend/customedit.h
old new 39 39 void storeRule(bool is_search, bool is_new); 40 40 void deleteRule(void); 41 41 42 QString evaluate(QString clause); 43 42 44 ProgramInfo *m_pginfo; 43 45 QString m_baseTitle; 44 46 45 47 int m_maxex; 48 int m_evaluate; 46 49 47 50 QString m_seSuffix; 48 51 QString m_exSuffix;
