void BookmarkSelectionPageListModel::queryFinished(void) { QList<struct Bookmark> marks; if (m_result->hasError() == true) { mDebug(__func__) << "Failed to execute query: " << m_result->lastError().message(); goto done; } else { mDebug(__func__) << "Query returned " << m_result->size() << " rows. "; m_result->first(); while (m_result->isValid() == true) { QString s = m_result->stringValue(0); mDebug(__func__) << s; if (s.startsWith("file://") == true) { s = s.mid(7); if (readDesktopFile(s, marks) == false) { mDebug(__func__) << "Failed to read " << s; } } m_result->next(); } } if (marks.length() == 0) { mDebug(__func__) << "Nothing to be inserted. "; goto done; } Q_EMIT(layoutAboutToBeChanged()); beginInsertRows(QModelIndex(), 0, marks.length() - 1, Util::animateLists); m_bookmarks = marks; endInsertRows(); Q_EMIT(layoutChanged()); done: Q_EMIT(ready()); }
MDesktopEntryPrivate::MDesktopEntryPrivate(const QString &fileName) : sourceFileName(fileName), valid(true), q_ptr(NULL) { QFile file(fileName); //Checks if the file exists and opens it in readonly mode if (file.exists() && file.open(QIODevice::ReadOnly)) { if (readDesktopFile(file, desktopEntriesMap)) { // Load the translation catalog if it has been defined for the entry. if (desktopEntriesMap.contains(TranslationCatalogKey)) { // Load the catalog from disk if it's not yet loaded QString catalog = desktopEntriesMap.value(TranslationCatalogKey); QString engineeringEnglishCatalog = catalog + "_eng_en"; if (!translators.contains(engineeringEnglishCatalog)) { QTranslator *translator = new QTranslator; if (translator->load(engineeringEnglishCatalog, "/usr/share/translations")) { translators[engineeringEnglishCatalog] = QSharedPointer<QTranslator>(translator); qApp->installTranslator(translator); } else { delete translator; } } if (!translators.contains(catalog)) { QTranslator *translator = new QTranslator; if (translator->load(QLocale(), catalog, "-", "/usr/share/translations")) { translators[catalog] = QSharedPointer<QTranslator>(translator); qApp->installTranslator(translator); } else { qDebug() << "Unable to load catalog" << catalog; delete translator; } } } } } else { qDebug() << "Specified Desktop file does not exist" << fileName; } }
void ExtEdit::createAppList() { #ifdef Q_WS_X11 QByteArray globalMimeTypesList = _globalAppListPath_c + "mimeinfo.cache"; QByteArray localMimeTypesPath = qgetenv("XDG_DATA_HOME"); if (localMimeTypesPath.isEmpty() == true) { localMimeTypesPath = qgetenv("HOME") + "/.local/share"; } localMimeTypesPath += "/applications/"; QByteArray localMimeTypesList = localMimeTypesPath + "mimeinfo.cache"; QVector<QByteArray> pathList; pathList << _globalAppListPath_c << localMimeTypesPath; QVector<QByteArray> fileList; fileList << globalMimeTypesList << localMimeTypesList; QFile file; for (int f = 0; f < fileList.count(); ++f) { file.setFileName(fileList.value(f)); if (file.open(QIODevice::ReadOnly) == true) { QString inLine; QString mimetype; QStringList desktopFiles; QTextStream in(&file); while(in.atEnd() == false) { inLine = in.readLine(); if (inLine.split("=").count() > 1) { mimetype = inLine.split("=").at(0); if (mimetype == "image/png") { desktopFiles = inLine.split("=").at(1).split(";"); if (desktopFiles.count() != 0) { for (int i = 0; i < desktopFiles.count(); ++i) { if (desktopFiles.at(i).isEmpty() == false) { _appList.append(readDesktopFile(desktopFiles.at(i), pathList.at(f))); } } } } } } } file.close(); } #endif #ifdef Q_WS_WIN // TODO make read windows registry for get apps for image editing // WARNING this in dirty hack - hardcoded mspaint app ExtApp_t app; app.exec = "mspaint"; app.name = "Paint"; _appList.append(app); #endif }
void ServiceButton::slotUpdate() { loadServiceFromId(_id); readDesktopFile(); emit requestSave(); }
void ServiceButton::initialize() { readDesktopFile(); connect(this, SIGNAL(clicked()), SLOT(slotExec())); }
void fillDesk(void) { struct udev *udev; udev_device *thedev; udev_device *usbdev; char buffer[BUFFERSIZE]; char path[BUFFERSIZE]; char *uuid=NULL; int iconhint=0; bool iscd=false; bool isdvd=false; bool isusb=false; FILE *fp; const char *ptr; char *holdfilename=NULL; /* Create the udev object */ udev = udev_new(); if (!udev) { printf("Can't create udev\n"); exit(1); } deskIconsCnt=RESERVED; fp=popen("ls -1 /dev/disk/by-uuid","r"); if(fp!=NULL) { buffer[0]=0; while(fgets(buffer,BUFFERSIZE,fp)) { addExtraIconSpace(); clearDeskEntry(deskIconsCnt,false); buffer[strlen(buffer)-1]=0; asprintf(&uuid,"%s",buffer); sprintf(path,"/dev/disk/by-uuid/%s",buffer); buffer[readlink(path,buffer,BUFFERSIZE)]=0; ptr=strrchr(buffer,'/'); ptr++; sprintf(path,"/dev/%s",ptr); if(strcmp(path,rootDev)==0) continue; deskIconsArray[deskIconsCnt].partname=strdup(ptr); thedev=udev_device_new_from_subsystem_sysname(udev,"block",ptr); if(thedev==NULL) { printf("no dev for %s from %s\n",ptr,buffer); exit(1); } else { if(strcmp(udev_device_get_property_value(thedev,"ID_FS_USAGE"),"filesystem")==0) { ptr=udev_device_get_property_value(thedev,"ID_FS_LABEL"); if(ptr==NULL) ptr=udev_device_get_property_value(thedev,"ID_SERIAL"); if(ptr==NULL) continue; iconhint=0; deskIconsArray[deskIconsCnt].label=strdup(ptr); deskIconsArray[deskIconsCnt].uuid=uuid; isdvd=false; iscd=false; isusb=false; if(udev_device_get_property_value(thedev,"ID_CDROM_MEDIA_DVD")!=NULL) { iconhint=DVD; isdvd=true; } if(udev_device_get_property_value(thedev,"ID_CDROM_MEDIA_CD")!=NULL) { iconhint=CDROM; iscd=true; } usbdev=udev_device_get_parent_with_subsystem_devtype(thedev,"usb","usb_device"); if(usbdev!=NULL) { isusb=true; if(udev_device_get_property_value(thedev,"ID_DRIVE_THUMB")!=NULL) iconhint=STICK; else iconhint=getUSBData(udev_device_get_property_value(thedev,"ID_VENDOR")); } asprintf(&deskIconsArray[deskIconsCnt].dev,"/dev/%s",deskIconsArray[deskIconsCnt].partname); deskIconsArray[deskIconsCnt].dvd=isdvd; deskIconsArray[deskIconsCnt].cdrom=iscd; deskIconsArray[deskIconsCnt].usb=isusb; deskIconsArray[deskIconsCnt].file=false; deskIconsArray[deskIconsCnt].iconhint=iconhint; if(ignores!=NULL) { if(strstr(ignores,deskIconsArray[deskIconsCnt].label)!=NULL) deskIconsArray[deskIconsCnt].ignore=true; } sprintf(buffer,"%s/%s",diskInfoPath,deskIconsArray[deskIconsCnt].uuid); if(loadVarsFromFile(buffer,globalFileData)) { deskIconsArray[deskIconsCnt].x=fileDiskXPos; deskIconsArray[deskIconsCnt].y=fileDiskYPos; if(fileGotCustomIcon==true) { deskIconsArray[deskIconsCnt].icon=fileCustomIcon; deskIconsArray[deskIconsCnt].customicon=true; fileCustomIcon=NULL; fileGotCustomIcon=false; } else deskIconsArray[deskIconsCnt].icon=NULL; } else { getFreeSlot(&deskIconsArray[deskIconsCnt].x,&deskIconsArray[deskIconsCnt].y); saveInfofile(DISKFOLDER,deskIconsArray[deskIconsCnt].label,NULL,NULL,deskIconsArray[deskIconsCnt].uuid,(char*)iconDiskType[deskIconsArray[deskIconsCnt].iconhint],deskIconsArray[deskIconsCnt].x,deskIconsArray[deskIconsCnt].y,deskIconsCnt); } deskIconsArray[deskIconsCnt].installed=true; xySlot[deskIconsArray[deskIconsCnt].x][deskIconsArray[deskIconsCnt].y]=1; deskIconsCnt++; } } } } pclose(fp); holdfilename=NULL; //desktop files sprintf(buffer,"find %s -mindepth 1 -maxdepth 1",desktopPath); char buffer2[4096]; char *tptr; fp=popen(buffer,"r"); while(fgets(buffer,BUFFERSIZE,fp)) { char *ptr; buffer[strlen(buffer)-1]=0; ptr=strrchr(buffer,'/'); ptr++; sprintf(buffer2,"%s/%s",cachePath,ptr); addExtraIconSpace(); if(strcmp(&buffer[strlen(buffer)-8],".desktop")==0) { holdfilename=strdup(buffer); } if(fileExists(buffer2)==-1) { clearDeskEntry(deskIconsCnt,false); deskIconsArray[deskIconsCnt].mountpoint=strdup(buffer); ptr=strrchr(buffer,'/'); ptr++; deskIconsArray[deskIconsCnt].label=strdup(ptr); tptr=getMimeType(buffer); ptr=strchr(tptr,'/'); while(ptr!=NULL) { *ptr='-'; ptr=strchr(tptr,'/'); } ptr=strstr(tptr,"text-x-shellscript"); if(ptr==NULL) deskIconsArray[deskIconsCnt].mime=strdup(tptr); else deskIconsArray[deskIconsCnt].mime=strdup("application-x-shellscript"); free(tptr); getFreeSlot(&deskIconsArray[deskIconsCnt].x,&deskIconsArray[deskIconsCnt].y); xySlot[deskIconsArray[deskIconsCnt].x][deskIconsArray[deskIconsCnt].y]=1; saveInfofile(CACHEFOLDER,deskIconsArray[deskIconsCnt].label,deskIconsArray[deskIconsCnt].mime,deskIconsArray[deskIconsCnt].mountpoint,NULL,NULL,deskIconsArray[deskIconsCnt].x,deskIconsArray[deskIconsCnt].y,deskIconsCnt); deskIconsArray[deskIconsCnt].installed=true; deskIconsArray[deskIconsCnt].file=true; deskIconsCnt++; } else { readDesktopFile(ptr); } if((holdfilename!=NULL) && (deskIconsArray[deskIconsCnt-1].customicon==false)) { char commandbuffer[MAXBUFFER]; char *icon; char *pth; sprintf(commandbuffer,"awk -F= '/Icon=/{print $2}' \"%s\"",holdfilename); icon=oneLiner("%s",commandbuffer); pth=strrchr(icon,'.'); if(pth!=NULL) *pth=0; if(icon!=NULL) { pth=pathToIcon(icon,""); deskIconsArray[deskIconsCnt-1].icon=strdup(pth); } free(holdfilename); holdfilename=NULL; fileCustomIcon=NULL; } } pclose(fp); }