QString ContentDescriptor::GetDescription(uint i) const { if (!categoryDescExists) Init(); QMutexLocker locker(&categoryLock); // Try to get detailed description map<uint,QString>::const_iterator it = categoryDesc.find(Nibble(i)); if (it != categoryDesc.end()) { QString ret = (*it).second; ret.detach(); return ret; } // Fall back to category description it = categoryDesc.find(Nibble1(i)<<4); if (it != categoryDesc.end()) { QString ret = (*it).second; ret.detach(); return ret; } // Found nothing? Just return empty string. return ""; }
QString StorageGroup::FindFileDir(QString filename) { QString result = ""; QFileInfo checkFile(""); int curDir = 0; while (curDir < m_dirlist.size()) { QString testFile = m_dirlist[curDir] + "/" + filename; LOG(VB_FILE, LOG_DEBUG, LOC + QString("FindFileDir: Checking '%1' for '%2'") .arg(m_dirlist[curDir]).arg(testFile)); checkFile.setFile(testFile); if (checkFile.exists() || checkFile.isSymLink()) { QString tmp = m_dirlist[curDir]; tmp.detach(); return tmp; } curDir++; } if (m_groupname.isEmpty() || (m_allowFallback == false)) { // Not found in any dir, so try RecordFilePrefix if it exists QString tmpFile = gCoreContext->GetSetting("RecordFilePrefix") + "/" + filename; checkFile.setFile(tmpFile); if (checkFile.exists() || checkFile.isSymLink()) result = tmpFile; } else if (m_groupname != "Default") { // Not found in current group so try Default StorageGroup sgroup("Default"); QString tmpFile = sgroup.FindFileDir(filename); result = (tmpFile.isEmpty()) ? result : tmpFile; } else { // Not found in Default so try any dir StorageGroup sgroup; QString tmpFile = sgroup.FindFileDir(filename); result = (tmpFile.isEmpty()) ? result : tmpFile; } result.detach(); return result; }
void KFMServer::slotCopyClients( const char *_src_urls, const char *_dest_url ) { QString s = _src_urls; s.detach(); QStrList urlList; QString dest = _dest_url; if ( dest == "trash:/" ) dest = "file:" + KFMPaths::TrashPath(); int i; while ( ( i = s.find( "\n" ) ) != -1 ) { QString t = s.left( i ); urlList.append( t.data() ); s = s.mid( i + 1, s.length() ); } urlList.append( s.data() ); KIOJob *job = new KIOJob(); if ( urlList.count() == 1 ) job->copy( urlList.first(), dest.data() ); else job->copy( urlList, dest.data() ); }
void KFMClient::slotMove( const char *_src_urls, const char *_dest_url ) { QString s = _src_urls; s.detach(); QStrList urlList; QString dest = _dest_url; if ( dest == "trash:/" ) dest = "file:" + KFMPaths::TrashPath(); int i; while ( ( i = s.find( "\n" ) ) != -1 ) { QString t = s.left( i ); urlList.append( t.data() ); s = s.mid( i + 1, s.length() ); } urlList.append( s.data() ); KIOJob *job = new KIOJob(); connect( job, SIGNAL( finished( int ) ), this, SLOT( finished( int ) ) ); if ( urlList.count() == 1 ) job->move( urlList.first(), dest.data() ); else job->move( urlList, dest.data() ); }
/// \brief Add a verbose level to the verboseMap. Done at initialization. /// \param mask verbose mask (VB_*) /// \param name name of the verbosity level /// \param additive true if this is to be ORed with other masks. false if /// is will clear the other bits. /// \param helptext Descriptive text for --verbose help output void verboseAdd(uint64_t mask, QString name, bool additive, QString helptext) { VerboseDef *item = new VerboseDef; item->mask = mask; name.detach(); // VB_GENERAL -> general name.remove(0, 3); name = name.toLower(); item->name = name; item->additive = additive; helptext.detach(); item->helpText = helptext; verboseMap.insert(name, item); }
void mimetranslate(QString& s){ QString q; QString hex; s = s.stripWhiteSpace(); // there is no harm in doing this and it // will simplify the quoted printable mime encoding. for(uint i = 0 ; i < s.length(); i++){ if (((s.data()[i] >= 32) && (s.data()[i] <= 60)) || ((s.data()[i] >= 62) && (s.data()[i] <= 126))) { q += s.data()[i]; } else{ hex = hex.sprintf("=%02X", (unsigned char)s.data()[i]); q += hex; } } q.detach(); // printf("%s\n",q.data()); s = q.copy(); }
QString MythCoreContext::GetHostName(void) { QMutexLocker (&d->m_hostnameLock); QString tmp = d->m_localHostname; tmp.detach(); return tmp; }
bool TeletextScreen::InitialiseFont() { static bool initialised = false; //QString font = gCoreContext->GetSetting("DefaultSubtitleFont", "FreeMono"); if (initialised) { return true; #if 0 if (gTTFont->face().family() == font) return true; delete gTTFont; #endif // 0 } MythFontProperties *mythfont = new MythFontProperties(); QString font = SubtitleScreen::GetTeletextFontName(); if (mythfont) { QFont newfont(font); font.detach(); mythfont->SetFace(newfont); gTTFont = mythfont; } else return false; initialised = true; LOG(VB_PLAYBACK, LOG_INFO, LOC + QString("Loaded main subtitle font '%1'") .arg(font)); return true; }
void TopLevel::newClipData() { QString clipData = kapp->clipboard()->text(); if(clipData != QSlast){ QSlast = clipData.copy(); if(clipData.isEmpty() || clipData.stripWhiteSpace().isEmpty()){ // If the string is null bug out return; } QString *data = new QString(clipData); if (bClipEmpty) { // remove <clipboard empty> from popupmenu if (*data != QSempty) { bClipEmpty = false; pQPMmenu->removeItemAt(2); } } data->detach(); while(pQPMmenu->count() > 12){ int id = pQPMmenu->idAt(2); pQIDclipData->remove(id); pQPMmenu->removeItemAt(2); } if(clipData.length() > 50){ clipData.truncate(47); clipData.append("..."); } long int id = pQPMmenu->insertItem(clipData.simplifyWhiteSpace(), -2, -1); // -2 means unique id, -1 means at end pQIDclipData->insert(id, data); } }
SGPopupResult StorageGroupPopup::showPopup(MythMainWindow *parent, QString title, QString message, QString& text) { MythPopupBox *popup = new MythPopupBox(parent, title.toAscii().constData()); popup->addLabel(message); MythLineEdit *textEdit = new MythLineEdit(popup, "chooseEdit"); textEdit->setText(text); popup->addWidget(textEdit); popup->addButton(QObject::tr("OK"), popup, SLOT(accept())); popup->addButton(QObject::tr("Cancel"), popup, SLOT(reject())); textEdit->setFocus(); bool ok = (MythDialog::Accepted == popup->ExecPopup()); if (ok) { text = textEdit->text(); text.detach(); } popup->hide(); popup->deleteLater(); return (ok) ? SGPopup_OK : SGPopup_CANCEL; }
int KJotsMain::writeFile( QString name ) { int pos; TextEntry *entry; QString buf; QFile folder(name); if( !folder.open(IO_WriteOnly | IO_Truncate) ) return -1; QTextStream st( (QIODevice *) &folder); for( entry = entrylist.first(); entry != NULL; entry = entrylist.next() ) { st << "\\NewEntry "; st << entry->subject; st << "\n"; buf = entry->text; buf.detach(); pos = 0; while( (pos = buf.find( '\\', pos )) != -1 ) { buf.insert( ++pos, '\\' ); pos++; } st << buf; if( buf.right(1) != "\n" ) st << '\n'; } folder.close(); return 0; }
bool SubtitleScreen::InitialiseFont(int fontStretch) { static bool initialised = false; QString font = gCoreContext->GetSetting("OSDSubFont", "FreeSans"); if (initialised) { if (gTextSubFont->face().family() == font && gTextSubFont->face().stretch() == fontStretch) { return true; } delete gTextSubFont; } MythFontProperties *mythfont = new MythFontProperties(); if (mythfont) { QFont newfont(font); newfont.setStretch(fontStretch); font.detach(); mythfont->SetFace(newfont); mythfont->SetOutline(true, Qt::black, 2, 255); gTextSubFont = mythfont; } else return false; initialised = true; LOG(VB_PLAYBACK, LOG_INFO, LOC + QString("Loaded main subtitle font '%1'") .arg(font)); return true; }
QString SignalMonitorValue::GetShortName(void) const { if (noSpaceName.isNull()) return QString::null; QString ret = noSpaceName; ret.detach(); return ret; }
void MyMultiEdit::openUrl() { QString command; int pos; if( hasMarkedText() ) { QString marked = markedText(); if( marked.left(7) == "http://" ) { command = exec_http; command.detach(); if( (pos = exec_http.find("%u")) == -1 ) { command += " " + marked + " &"; } else { command.remove(pos, 2); command = command.insert(pos, marked); command += " &"; } system((const char *) command); //debug("exec: %s", (const char *) command ); } else if( marked.left(6) == "ftp://" ) { command = exec_ftp; command.detach(); if( (pos = exec_ftp.find("%u")) == -1 ) { command += " " + marked + " &"; } else { command.remove(pos, 2); command = command.insert(pos, marked); command += " &"; } system((const char *) command); //debug("exec: %s", (const char *) command ); } } }
QString StorageGroup::FindNextDirMostFree(void) { QString nextDir; long long nextDirFree = 0; long long thisDirTotal; long long thisDirUsed; long long thisDirFree; LOG(VB_FILE, LOG_DEBUG, LOC + QString("FindNextDirMostFree: Starting")); if (m_allowFallback) nextDir = kDefaultStorageDir; if (m_dirlist.size()) nextDir = m_dirlist[0]; QDir checkDir(""); int curDir = 0; while (curDir < m_dirlist.size()) { checkDir.setPath(m_dirlist[curDir]); if (!checkDir.exists()) { LOG(VB_GENERAL, LOG_ERR, LOC + QString("FindNextDirMostFree: '%1' does not exist!") .arg(m_dirlist[curDir])); curDir++; continue; } thisDirFree = getDiskSpace(m_dirlist[curDir], thisDirTotal, thisDirUsed); LOG(VB_FILE, LOG_DEBUG, LOC + QString("FindNextDirMostFree: '%1' has %2 KiB free") .arg(m_dirlist[curDir]) .arg(QString::number(thisDirFree))); if (thisDirFree > nextDirFree) { nextDir = m_dirlist[curDir]; nextDirFree = thisDirFree; } curDir++; } if (nextDir.isEmpty()) LOG(VB_FILE, LOG_ERR, LOC + "FindNextDirMostFree: Unable to find any directories to use."); else LOG(VB_FILE, LOG_DEBUG, LOC + QString("FindNextDirMostFree: Using '%1'").arg(nextDir)); nextDir.detach(); return nextDir; }
QString Cat_user::string(Procinfo *p) { if(p->uid == p->euid) return Uidstr::name(p->uid); else { QString s = Uidstr::name(p->uid); s.detach(); s.append(p->euid == 0 ? "*" : "+"); return s; } }
/** \fn DVBChannel::ProbeTuningParams(DTVMultiplex&) const * \brief Fetches DTVMultiplex params from driver * * Note: Only updates tuning on success. * * \return true on success, false on failure */ bool DVBChannel::ProbeTuningParams(DTVMultiplex &tuning) const { QMutexLocker locker(&hw_lock); if (fd_frontend < 0) { LOG(VB_GENERAL, LOG_ERR, LOC + "Card not open!"); return false; } const DVBChannel *master = GetMasterLock(); if (master != this) { bool ok = master->ProbeTuningParams(tuning); ReturnMasterLock(master); return ok; } ReturnMasterLock(master); // if we're the master we don't need this lock.. if (diseqc_tree) { // TODO We need to implement the inverse of // lnb->GetIntermediateFrequency() for ProbeTuningParams() // to accurately reflect the frequency before LNB transform. return false; } if (tunerType == DTVTunerType::kTunerTypeDVBS2) { // TODO implement probing of tuning parameters with FE_GET_PROPERTY return false; } dvb_frontend_parameters params; if (ioctl(fd_frontend, FE_GET_FRONTEND, ¶ms) < 0) { LOG(VB_GENERAL, LOG_ERR, LOC + "Getting Frontend tuning parameters failed." + ENO); return false; } uint mplex = tuning.mplex; QString sistandard = tuning.sistandard; sistandard.detach(); tuning = dvbparams_to_dtvmultiplex(tunerType, params); tuning.mplex = mplex; tuning.sistandard = sistandard; return true; }
void CC708Reader::SetOSDFontName(const QString osdfonts[22], const QString &prefix) { osdfontname = osdfonts[0]; osdfontname.detach(); osdccfontname = osdfonts[1]; osdccfontname.detach(); for (int i = 2; i < 22; i++) { QString tmp = osdfonts[i]; tmp.detach(); osd708fontnames[i - 2] = tmp; } osdprefix = prefix; osdprefix.detach(); }
/** * \brief Get the currently selected action string. * * If no action is selected, an empty string is returned. * * \return The currently selected action string. */ QString MythControls::GetCurrentAction(void) { if (m_leftListType == kActionList) { if (m_leftList && m_leftList->GetItemCurrent()) { QString tmp = m_leftList->GetItemCurrent()->GetText(); tmp.detach(); return tmp; } return QString(); } if (GetFocusWidget() == m_leftList) return QString(); if (!m_rightList || !m_rightList->GetItemCurrent()) return QString(); QString desc = m_rightList->GetItemCurrent()->GetText(); if (kContextList == m_leftListType && kActionList == m_rightListType) { desc.detach(); return desc; } int loc = desc.indexOf(" => "); if (loc == -1) return QString(); // should not happen.. if (m_rightListType == kActionList) return desc.left(loc); QString rv = desc.mid(loc+4); if (rv == "<none>") return QString(); return rv; }
const DTVChannel *DTVChannel::GetMaster(const QString &videodevice) const { QMutexLocker locker(&master_map_lock); QMap<QString,DTVChannel*>::iterator it = master_map.find(videodevice); if (it != master_map.end()) return *it; QString tmp = videodevice; tmp.detach(); master_map[tmp] = (DTVChannel*) this; return this; }
QString StorageGroup::GetFirstDir(bool appendSlash) const { if (m_dirlist.isEmpty()) return QString(); QString tmp = m_dirlist[0]; tmp.detach(); if (appendSlash) tmp += "/"; return tmp; }
QString PlayerContext::GetFilters(const QString &baseFilters) const { QString filters = baseFilters; QString chanFilters = QString::null; if (gCoreContext->IsDatabaseIgnored()) return baseFilters; LockPlayingInfo(__FILE__, __LINE__); if (playingInfo) // Recordings have this info already. { chanFilters = playingInfo->GetChannelPlaybackFilters(); chanFilters.detach(); } UnlockPlayingInfo(__FILE__, __LINE__); if (!chanFilters.isEmpty()) { if ((chanFilters[0] != '+')) { filters = chanFilters; } else { if (!filters.isEmpty() && (!filters.endsWith(","))) filters += ","; filters += chanFilters.mid(1); } } LOG(VB_CHANNEL, LOG_INFO, LOC + QString("Output filters for this channel are: '%1'") .arg(filters)); filters.detach(); return filters; }
/** \fn Action::AddKey(const QString&) * \brief Add a key sequence to this action. * * We don't add empty keys nor duplicates, and cannot * add more than kMaximumNumberOfBindings. If any of * these restrictions are a problem we return false and * do not add the binding. * * \param key The key to add to the action. * \return true if the key was added otherwise, false. */ bool Action::AddKey(const QString &key) { if (key.isEmpty() || HasKey(key) || ((uint)m_keys.size() >= kMaximumNumberOfBindings)) { return false; } QString tmp = key; tmp.detach(); m_keys.push_back(tmp); return true; }
/// \brief Add a log level to the logLevelMap. Done at initialization. /// \param value log level enumerated value (LOG_*) - matches syslog /// levels /// \param name name of the log level /// \param shortname one-letter short name for output into logs void loglevelAdd(int value, QString name, char shortname) { LoglevelDef *item = new LoglevelDef; item->value = value; name.detach(); // LOG_CRIT -> crit name.remove(0, 4); name = name.toLower(); item->name = name; item->shortname = shortname; loglevelMap.insert(value, item); }
QString toString(CommSkipMode type) { const QString kCommSkipTitles[] = { QObject::tr("Auto-Skip OFF"), QObject::tr("Auto-Skip ON"), QObject::tr("Auto-Skip Notify"), }; QString ret = kCommSkipTitles[(uint)(type) % kCommSkipCount]; ret.detach(); return ret; }
QString PlayerContext::GetPreviousChannel(void) const { if (prevChan.empty()) return QString::null; QString curChan = tvchain->GetChannelName(-1); QString preChan = QString::null; if (curChan != prevChan.back() || prevChan.size() < 2) preChan = prevChan.back(); else preChan = prevChan[prevChan.size()-2]; preChan.detach(); return preChan; }
/** * \brief Set the contents of a list. * \param uilist The list being changed. * \param contents The contents of the list. * \param arrows True to draw with arrows, otherwise arrows are not drawn. */ void MythControls::SetListContents( MythUIButtonList *uilist, const QStringList &contents, bool arrows) { // remove all strings from the current list uilist->Reset(); // add each new string QStringList::const_iterator it = contents.begin(); for (; it != contents.end(); ++it) { QString tmp = *it; tmp.detach(); MythUIButtonListItem *item = new MythUIButtonListItem(uilist, tmp); item->setDrawArrow(arrows); } }
QString toTypeString(PictureAdjustType type) { const QString kPicAdjType[] = { "", "", QObject::tr("(CH)"), QObject::tr("(REC)"), }; QString ret = kPicAdjType[(uint)type & 0x3]; ret.detach(); return ret; }
QString toTitleString(PictureAdjustType type) { const QString kPicAdjTitles[] = { "", QObject::tr("Adjust Playback"), QObject::tr("Adjust Recorder"), QObject::tr("Adjust Recorder"), }; QString ret = kPicAdjTitles[(uint)type & 0x3]; ret.detach(); return ret; }
/** \fn Action::ReplaceKey(const QString&, const QString&) * \brief Replace a key. * \param newkey The new key. * \param oldkey The old key, which is being replaced. */ bool Action::ReplaceKey(const QString &newkey, const QString &oldkey) { // make sure that the key list doesn't already have the new key if (HasKey(newkey)) return false; int idx = m_keys.indexOf(oldkey); if (idx < 0) return false; QString tmp = newkey; tmp.detach(); m_keys[idx] = tmp; return true; }