QMimeSource

Alles rund um die Programmierung mit Qt
Antworten
Wolle
Beiträge: 10
Registriert: 19. Oktober 2005 22:38

QMimeSource

Beitrag von Wolle »

Guten Tag!
*ein Glas nehm und mit Löffel dagegen klopf*

Ich suche schon länger nach informationen dazu aber kann einfach nichts finden! Mit QMimeSource kann man doch -wenn ich das laut dem qt manual richtig verstanden habe- den MIME-Typ von Dateien/Ordnern abfragen, oder?
/home/ordner wäre folglich inode/directory
Ist das richtig so? Wenn ja, wie funktioniert das? Aus der arg spärlichen QT Hilfe werde ich nicht schlau! Und wenn nicht: Wie stell ich das am besten an? :)

Danke für eure Aufmerksamkeit! *g* :wink:
Wolle
Beiträge: 10
Registriert: 19. Oktober 2005 22:38

Beitrag von Wolle »

Da niemand eine Idee hat, habe ich mir diese Header-Datei geschrieben. Sie zeigt mir den mime-typ richtig an (sofern es keine ausführbare datei, ein socket oder link ist - typen ohne endung eben). Ich hab dafür meine ganzes bescheidenes C++ Können eingebracht -> ich hoffe das bleibt nur provisorisch ;-):

Code: Alles auswählen

#include<fstream>

struct TDatei
{
	QString type;
	QString ending;
} Angefordert;

QString mimeinfo(QString endung)
{
	TDatei *mimeData = 0;
	mimeData = &Angefordert;
	mimeData->ending = "." + endung;

	char zeile[256];
	QString typ = "";
	QString dateiEnde = "";
	

	std::fstream globs;
	globs.open ("/usr/share/mime/globs", std::ios::in);
	while (!globs.eof())
	{
		typ = "";
		dateiEnde = "";
		bool endung = false;

		globs.getline(zeile, sizeof(zeile));
		int buchstabe = 0;
		while (zeile[buchstabe] != '\0')
		{
			if (zeile[buchstabe] == '#')
				break;

			if (zeile[buchstabe] != ':' && !endung)
				typ += zeile[buchstabe];
			else
			{
				endung = true;
				if (zeile[buchstabe] != '*' && zeile[buchstabe] != ':')
					dateiEnde += zeile[buchstabe];
			}
			buchstabe++;
		}
		if (mimeData->ending == dateiEnde)
		{
			mimeData->type = typ;
			mimeData->ending = dateiEnde;
			return mimeData->type; 
			break;
		}
	}
	globs.close();

}
Antworten