コード例 #1
0
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());
}
コード例 #2
0
ファイル: mdesktopentry.cpp プロジェクト: SamuelNevala/mlite
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;
    }
}
コード例 #3
0
ファイル: extedit.cpp プロジェクト: Tenawar/screengrab
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
}
コード例 #4
0
void ServiceButton::slotUpdate()
{
    loadServiceFromId(_id);
    readDesktopFile();
    emit requestSave();
}
コード例 #5
0
void ServiceButton::initialize()
{
    readDesktopFile();
    connect(this, SIGNAL(clicked()), SLOT(slotExec()));
}
コード例 #6
0
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);
}