r22839 by jghali - Some refactoring for ResourceManager, make also "Show in Filesystem" button work

scribus-commit scribus-commit at lists.scribus.net
Tue Feb 19 23:05:51 UTC 2019


Author: jghali
Date: Tue Feb 19 23:05:50 2019
New Revision: 22839

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22839
Log:
Some refactoring for ResourceManager, make also "Show in Filesystem" button work

Modified:
    trunk/Scribus/scribus/ui/resourcemanager.cpp
    trunk/Scribus/scribus/ui/resourcemanager.h

Modified: trunk/Scribus/scribus/ui/resourcemanager.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=22839&path=/trunk/Scribus/scribus/ui/resourcemanager.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/resourcemanager.cpp	(original)
+++ trunk/Scribus/scribus/ui/resourcemanager.cpp	Tue Feb 19 23:05:50 2019
@@ -23,6 +23,7 @@
 #include <QComboBox>
 #include <QCryptographicHash>
 #include <QDebug>
+#include <QDesktopServices>
 #include <QDomDocument>
 #include <QFile>
 #include <QFileInfo>
@@ -54,10 +55,13 @@
 	downloadProgressBar->setValue(0);
 	downloadProgressBar->setVisible(false);
 	dataReceivedLabel->setVisible(false);
+	showInFSButton->setEnabled(false);
 	languageChange();
 
 	connect(categoryComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(categoryChanged()));
+	connect(installedTableWidget, SIGNAL(itemSelectionChanged()), this, SLOT(installedSelectionChanged()));
 	connect(updateAvailableButton, SIGNAL(clicked()), this, SLOT(updateDownloadLists()));
+	connect(showInFSButton, SIGNAL(clicked()), this, SLOT(showInFileBrowser()));
 	connect(showLicenseButton, SIGNAL(clicked()), this, SLOT(showLicense()));
 	connect(downloadButton, SIGNAL(clicked()), this, SLOT(startDownload()));
 }
@@ -285,11 +289,23 @@
 	}
 }
 
+void ResourceManager::installedSelectionChanged()
+{
+	auto selectedItems = installedTableWidget->selectedItems();
+	if (selectedItems.count() <= 0)
+	{
+		showInFSButton->setEnabled(false);
+		return;
+	}
+
+	showInFSButton->setEnabled(true);
+}
+
 void ResourceManager::updateInstalledFonts()
 {
 	dictionaryMap.clear();
 	QString fontDir(findDestinationFolder());
-	foreach(DownloadItem d, availableList)
+	for (const DownloadItem& d : qAsConst(availableList))
 	{
 		if (d.filetype!="zip")
 		{
@@ -308,6 +324,7 @@
 	installedTableWidget->setRowCount(dictionaryMap.count());
 	installedTableWidget->setColumnCount(2);
 	installedTableWidget->setSortingEnabled(false);
+	installedTableWidget->setSelectionBehavior(QTableWidget::SelectRows);
 
 	QMapIterator<QString, QString> i(dictionaryMap);
 	int row=0;
@@ -316,13 +333,14 @@
 		i.next();
 		int column=0;
 		QTableWidgetItem *newItem1 = new QTableWidgetItem(i.key());
-		newItem1->setFlags(newItem1->flags() & ~Qt::ItemIsEditable & ~Qt::ItemIsSelectable);
+		newItem1->setFlags(newItem1->flags() & ~Qt::ItemIsEditable);
 		installedTableWidget->setItem(row, column++, newItem1);
 		QTableWidgetItem *newItem2 = new QTableWidgetItem(i.value());
 		newItem2->setFlags(newItem1->flags());
 		installedTableWidget->setItem(row, column++, newItem2);
 		++row;
 	}
+
 	QStringList headers;
 	headers << tr("Description") << tr("Location") ;
 	installedTableWidget->setHorizontalHeaderLabels(headers);
@@ -343,6 +361,8 @@
 	installedTableWidget->setRowCount(dictionaryMap.count());
 	installedTableWidget->setColumnCount(4);
 	installedTableWidget->setSortingEnabled(false);
+	installedTableWidget->setSelectionBehavior(QTableWidget::SelectRows);
+
 	QMapIterator<QString, QString> i(dictionaryMap);
 	int row=0;
 	while (i.hasNext())
@@ -351,7 +371,7 @@
 		 int column=0;
 //		 qDebug()<<i.key()<<i.value()<<LanguageManager::instance()->getLangFromAbbrev(i.key(), false);
 		 QTableWidgetItem *newItem1 = new QTableWidgetItem(LanguageManager::instance()->getLangFromAbbrev(i.key()));
-		 newItem1->setFlags(newItem1->flags() & ~Qt::ItemIsEditable & ~Qt::ItemIsSelectable);
+		 newItem1->setFlags(newItem1->flags() & ~Qt::ItemIsEditable);
 		 installedTableWidget->setItem(row, column++, newItem1);
 		 QTableWidgetItem *newItem2 = new QTableWidgetItem(i.key());
 		 newItem2->setFlags(newItem1->flags());
@@ -366,6 +386,7 @@
 		 installedTableWidget->setItem(row, column++, newItem4);
 		 ++row;
 	}
+
 	QStringList headers;
 	headers << tr("Language") << tr("Code") << tr("Location") << tr("Licence");
 	installedTableWidget->setHorizontalHeaderLabels(headers);
@@ -386,6 +407,8 @@
 	installedTableWidget->setRowCount(dictionaryMap.count());
 	installedTableWidget->setColumnCount(3);
 	installedTableWidget->setSortingEnabled(false);
+	installedTableWidget->setSelectionBehavior(QTableWidget::SelectRows);
+
 	QMapIterator<QString, QString> i(dictionaryMap);
 	int row=0;
 	while (i.hasNext())
@@ -394,7 +417,7 @@
 		 int column=0;
 //		 qDebug()<<i.key()<<i.value()<<LanguageManager::instance()->getLangFromAbbrev(i.key(), false);
 		 QTableWidgetItem *newItem1 = new QTableWidgetItem(LanguageManager::instance()->getLangFromAbbrev(i.key()));
-		 newItem1->setFlags(newItem1->flags() & ~Qt::ItemIsEditable & ~Qt::ItemIsSelectable);
+		 newItem1->setFlags(newItem1->flags() & ~Qt::ItemIsEditable);
 		 installedTableWidget->setItem(row, column++, newItem1);
 		 QTableWidgetItem *newItem2 = new QTableWidgetItem(i.key());
 		 newItem2->setFlags(newItem1->flags());
@@ -405,6 +428,7 @@
 		 installedTableWidget->setItem(row, column++, newItem3);
 		 ++row;
 	}
+
 	QStringList headers;
 	headers << tr("Language") << tr("Code") << tr("Location");
 	installedTableWidget->setHorizontalHeaderLabels(headers);
@@ -423,7 +447,7 @@
 {
 	dictionaryMap.clear();
 	QString helpDir(findDestinationFolder());
-	foreach(DownloadItem d, availableList)
+	for (const DownloadItem &d : qAsConst(availableList))
 	{
 		if (QFileInfo::exists(helpDir+d.lang))
 			dictionaryMap.insert(d.desc, helpDir+d.lang);
@@ -432,6 +456,7 @@
 	installedTableWidget->setRowCount(dictionaryMap.count());
 	installedTableWidget->setColumnCount(2);
 	installedTableWidget->setSortingEnabled(false);
+	installedTableWidget->setSelectionBehavior(QTableWidget::SelectRows);
 
 	QMapIterator<QString, QString> i(dictionaryMap);
 	int row=0;
@@ -440,7 +465,7 @@
 		i.next();
 		int column=0;
 		QTableWidgetItem *newItem1 = new QTableWidgetItem(i.key());
-		newItem1->setFlags(newItem1->flags() & ~Qt::ItemIsEditable & ~Qt::ItemIsSelectable);
+		newItem1->setFlags(newItem1->flags() & ~Qt::ItemIsEditable);
 		installedTableWidget->setItem(row, column++, newItem1);
 		QTableWidgetItem *newItem2 = new QTableWidgetItem(i.value());
 		newItem2->setFlags(newItem1->flags());
@@ -448,44 +473,6 @@
 		++row;
 	}
 
-	QStringList headers;
-	headers << tr("Description") << tr("Location") ;
-	installedTableWidget->setHorizontalHeaderLabels(headers);
-
-	installedTableWidget->resizeColumnsToContents();
-	installedTableWidget->setSortingEnabled(true);
-	installedTableWidget->sortByColumn(0, Qt::AscendingOrder);
-}
-
-void ResourceManager::updateInstalledPalettes()
-{
-	dictionaryMap.clear();
-	QString palDir(findDestinationFolder());
-	foreach(DownloadItem d, availableList)
-	{
-		if (QFileInfo::exists(palDir+d.files))
-			dictionaryMap.insert(d.desc, palDir+d.files);
-	}
-
-	installedTableWidget->clear();
-	installedTableWidget->setRowCount(dictionaryMap.count());
-	installedTableWidget->setColumnCount(2);
-	installedTableWidget->setSortingEnabled(false);
-
-	QMapIterator<QString, QString> i(dictionaryMap);
-	int row=0;
-	while (i.hasNext())
-	{
-		i.next();
-		int column=0;
-		QTableWidgetItem *newItem1 = new QTableWidgetItem(i.key());
-		newItem1->setFlags(newItem1->flags() & ~Qt::ItemIsEditable & ~Qt::ItemIsSelectable);
-		installedTableWidget->setItem(row, column++, newItem1);
-		QTableWidgetItem *newItem2 = new QTableWidgetItem(i.value());
-		newItem2->setFlags(newItem1->flags());
-		installedTableWidget->setItem(row, column++, newItem2);
-		++row;
-	}
 	QStringList headers;
 	headers << tr("Description") << tr("Location") ;
 	installedTableWidget->setHorizontalHeaderLabels(headers);
@@ -494,6 +481,45 @@
 	installedTableWidget->sortByColumn(0, Qt::AscendingOrder);
 }
 
+void ResourceManager::updateInstalledPalettes()
+{
+	dictionaryMap.clear();
+	QString palDir(findDestinationFolder());
+	for (const DownloadItem& d : qAsConst(availableList))
+	{
+		if (QFileInfo::exists(palDir+d.files))
+			dictionaryMap.insert(d.desc, palDir+d.files);
+	}
+
+	installedTableWidget->clear();
+	installedTableWidget->setRowCount(dictionaryMap.count());
+	installedTableWidget->setColumnCount(2);
+	installedTableWidget->setSortingEnabled(false);
+	installedTableWidget->setSelectionBehavior(QTableWidget::SelectRows);
+
+	QMapIterator<QString, QString> i(dictionaryMap);
+	int row=0;
+	while (i.hasNext())
+	{
+		i.next();
+		int column=0;
+		QTableWidgetItem *newItem1 = new QTableWidgetItem(i.key());
+		newItem1->setFlags(newItem1->flags() & ~Qt::ItemIsEditable);
+		installedTableWidget->setItem(row, column++, newItem1);
+		QTableWidgetItem *newItem2 = new QTableWidgetItem(i.value());
+		newItem2->setFlags(newItem1->flags());
+		installedTableWidget->setItem(row, column++, newItem2);
+		++row;
+	}
+
+	QStringList headers;
+	headers << tr("Description") << tr("Location") ;
+	installedTableWidget->setHorizontalHeaderLabels(headers);
+	installedTableWidget->resizeColumnsToContents();
+	installedTableWidget->setSortingEnabled(true);
+	installedTableWidget->sortByColumn(0, Qt::AscendingOrder);
+}
+
 void ResourceManager::updateInstalledTest()
 {
 	dictionaryMap.clear();
@@ -502,7 +528,6 @@
 
 void ResourceManager::updateAvailableFonts()
 {
-
 	availableTableWidget->clear();
 	if(availableList.isEmpty())
 	{
@@ -512,8 +537,9 @@
 	availableTableWidget->setRowCount(availableList.count());
 	availableTableWidget->setColumnCount(4);
 	availableTableWidget->setSortingEnabled(false);
+
 	int row=0;
-	foreach(DownloadItem d, availableList)
+	for (const DownloadItem& d :  qAsConst(availableList))
 	{
 		int column=0;
 //		qDebug()<<d.version<<d.files<<d.url<<d.desc<<d.license;
@@ -533,6 +559,7 @@
 		availableTableWidget->setItem(row, column++, newItem4);
 		++row;
 	}
+
 	QStringList headers;
 	headers << tr("Description") << tr("Type") << tr("Installed") << tr("Download");
 	availableTableWidget->setHorizontalHeaderLabels(headers);
@@ -602,7 +629,7 @@
 		n = n.nextSibling();
 	}
 	availableTableWidget->clear();
-	if(availableList.isEmpty())
+	if (availableList.isEmpty())
 	{
 		downloadButton->setEnabled(false);
 		return;
@@ -610,8 +637,9 @@
 	availableTableWidget->setRowCount(availableList.count());
 	availableTableWidget->setColumnCount(5);
 	availableTableWidget->setSortingEnabled(false);
-	int row=0;
-	foreach(DownloadItem d, availableList)
+
+	int row  =0;
+	for (const DownloadItem& d : qAsConst(availableList))
 	{
 		int column=0;
 		//qDebug()<<d.version<<d.files<<d.url<<d.desc<<d.license;
@@ -634,6 +662,7 @@
 		availableTableWidget->setItem(row, column++, newItem5);
 		++row;
 	}
+
 	QStringList headers;
 	headers << tr("Language") << tr("Code") << tr("Installed") << tr("License") << tr("Download");
 	availableTableWidget->setHorizontalHeaderLabels(headers);
@@ -711,8 +740,9 @@
 	availableTableWidget->setRowCount(availableList.count());
 	availableTableWidget->setColumnCount(5);
 	availableTableWidget->setSortingEnabled(false);
+
 	int row=0;
-	foreach(DownloadItem d, availableList)
+	for (const DownloadItem& d : qAsConst(availableList))
 	{
 		int column=0;
 		//qDebug()<<d.version<<d.files<<d.url<<d.desc<<d.license;
@@ -735,6 +765,7 @@
 		availableTableWidget->setItem(row, column++, newItem5);
 		++row;
 	}
+
 	QStringList headers;
 	headers << tr("Language") << tr("Code") << tr("Installed") << tr("License") << tr("Download");
 	availableTableWidget->setHorizontalHeaderLabels(headers);
@@ -752,7 +783,7 @@
 void ResourceManager::updateAvailableHelp()
 {
 	availableTableWidget->clear();
-	if(availableList.isEmpty())
+	if (availableList.isEmpty())
 	{
 		downloadButton->setEnabled(false);
 		return;
@@ -760,8 +791,9 @@
 	availableTableWidget->setRowCount(availableList.count());
 	availableTableWidget->setColumnCount(5);
 	availableTableWidget->setSortingEnabled(false);
-	int row=0;
-	foreach(DownloadItem d, availableList)
+
+	int row = 0;
+	for (const DownloadItem& d :  qAsConst(availableList))
 	{
 		int column=0;
 		QTableWidgetItem *newItem1 = new QTableWidgetItem(d.desc);
@@ -783,6 +815,7 @@
 		availableTableWidget->setItem(row, column++, newItem5);
 		++row;
 	}
+
 	QStringList headers;
 	headers << tr("Description") << tr("Language") << tr("Installed") << tr("License") << tr("Download");
 	availableTableWidget->setHorizontalHeaderLabels(headers);
@@ -795,7 +828,7 @@
 void ResourceManager::updateAvailablePalettes()
 {
 	availableTableWidget->clear();
-	if(availableList.isEmpty())
+	if (availableList.isEmpty())
 	{
 		downloadButton->setEnabled(false);
 		return;
@@ -803,8 +836,9 @@
 	availableTableWidget->setRowCount(availableList.count());
 	availableTableWidget->setColumnCount(5);
 	availableTableWidget->setSortingEnabled(false);
-	int row=0;
-	foreach(DownloadItem d, availableList)
+
+	int row = 0;
+	for (const DownloadItem &d : qAsConst(availableList))
 	{
 		int column=0;
 		QTableWidgetItem *newItem1 = new QTableWidgetItem(d.desc);
@@ -826,6 +860,7 @@
 		availableTableWidget->setItem(row, column++, newItem5);
 		++row;
 	}
+
 	QStringList headers;
 	headers << tr("Description") << tr("Source") << tr("Installed") << tr("License") << tr("Download");
 	availableTableWidget->setHorizontalHeaderLabels(headers);
@@ -920,9 +955,9 @@
 	downloadProgressBar->setVisible(true);
 	dataReceivedLabel->setVisible(true);
 	downloadProgressBar->setRange(0, dataFiles.count());
-	foreach(QString f, dataFiles)
+	for (QString f : qAsConst(dataFiles))
 		ScQApp->dlManager()->addURL("http://services.scribus.net/"+f, true, ScPaths::downloadDir(), ScPaths::downloadDir());
-	foreach(QString f, dataFiles)
+	for (QString f : qAsConst(dataFiles))
 		ScQApp->dlManager()->addURL("http://services.scribus.net/"+f+".sha256", true, ScPaths::downloadDir(), ScPaths::downloadDir());
 	connect(ScQApp->dlManager(), SIGNAL(finished()), this, SLOT(downloadListFinished()));
 	connect(ScQApp->dlManager(), SIGNAL(fileReceived(const QString&)), this, SLOT(updateProgressBar()));
@@ -1001,7 +1036,7 @@
 	switch (category)
 	{
 		case RM_FONTS:
-			foreach(DownloadItem d, downloadList)
+			for (const DownloadItem& d : qAsConst(downloadList))
 			{
 				if (d.filetype=="zip")
 				{
@@ -1041,7 +1076,7 @@
 		case RM_SPELL:
 			{
 				int fileType = category == RM_HYPH ? ScPaths::Hyph : ScPaths::Spell;
-				foreach(DownloadItem d, downloadList)
+				for (const DownloadItem& d : qAsConst(downloadList))
 				{
 					if (d.filetype=="zip")
 					{
@@ -1079,7 +1114,7 @@
 			}
 			break;
 		case RM_HELP:
-			foreach(DownloadItem d, downloadList)
+			for (const DownloadItem& d : qAsConst(downloadList))
 			{
 				//qDebug()<<d.desc<<d.download<<d.files<<d.type;
 				if (d.filetype=="zip")
@@ -1194,7 +1229,7 @@
 	{
 		QTableWidgetItem *dlItem = availableTableWidget->item(i, columns - 1);
 		if (dlItem->checkState() == Qt::Checked)
-			filesToDownload<<availableTableWidget->item(i, 0)->text();
+			filesToDownload << availableTableWidget->item(i, 0)->text();
 	}
 	if (filesToDownload.isEmpty())
 		return;
@@ -1215,31 +1250,30 @@
 		case RM_FONTS:
 			foreach(DownloadItem d, availableList)
 			{
-				if (filesToDownload.contains(d.desc))
-				{
-					if (d.filetype=="zip")
+				if (!filesToDownload.contains(d.desc))
+					continue;
+				if (d.filetype=="zip")
+				{
+					const QStringList plainURLs(d.files.split(";", QString::SkipEmptyParts));
+					for (const QString& s : plainURLs)
 					{
-						const QStringList plainURLs(d.files.split(";", QString::SkipEmptyParts));
-						for (const QString& s : plainURLs)
-						{
 //							qDebug()<<"Requesting:"<<d.url+"/"+s;
-							ScQApp->dlManager()->addURL(d.url+"/"+s, true, ScPaths::downloadDir(), destinationFolder, d.files);
-							++dlCount;
-						}
-						downloadList.append(d);
-						d.download=true;
+						ScQApp->dlManager()->addURL(d.url+"/"+s, true, ScPaths::downloadDir(), destinationFolder, d.files);
+						++dlCount;
 					}
-					if (d.filetype=="plain")
+					downloadList.append(d);
+					d.download=true;
+				}
+				if (d.filetype=="plain")
+				{
+					const QStringList plainURLs(d.files.split(";", QString::SkipEmptyParts));
+					for (const QString& s : plainURLs)
 					{
-						const QStringList plainURLs(d.files.split(";", QString::SkipEmptyParts));
-						for (const QString& s : plainURLs)
-						{
-							ScQApp->dlManager()->addURL(d.url+"/"+s, true, ScPaths::downloadDir(), destinationFolder);
-							++dlCount;
-						}
-						downloadList.append(d);
-						d.download=true;
+						ScQApp->dlManager()->addURL(d.url+"/"+s, true, ScPaths::downloadDir(), destinationFolder);
+						++dlCount;
 					}
+					downloadList.append(d);
+					d.download=true;
 				}
 			}
 			break;
@@ -1248,32 +1282,31 @@
 			foreach(DownloadItem d, availableList)
 			{
 //				qDebug()<<d.desc;
-				if (filesToDownload.contains(d.desc))
-				{
-					if (d.filetype=="zip")
+				if (!filesToDownload.contains(d.desc))
+					continue;
+				if (d.filetype=="zip")
+				{
+//						qDebug()<<"zip type:"<<d.url<<d.files;
+					const QStringList plainURLs(d.files.split(";", QString::SkipEmptyParts));
+					for (const QString& s : plainURLs)
 					{
-//						qDebug()<<"zip type:"<<d.url<<d.files;
-						const QStringList plainURLs(d.files.split(";", QString::SkipEmptyParts));
-						for (const QString& s : plainURLs)
-						{
-							ScQApp->dlManager()->addURL(d.url+"/"+s, true, ScPaths::downloadDir(), destinationFolder);
-							++dlCount;
-						}
-						downloadList.append(d);
-						d.download=true;
+						ScQApp->dlManager()->addURL(d.url+"/"+s, true, ScPaths::downloadDir(), destinationFolder);
+						++dlCount;
 					}
-					if (d.filetype=="plain")
+					downloadList.append(d);
+					d.download=true;
+				}
+				if (d.filetype=="plain")
+				{
+//						qDebug()<<"plain type:"<<d.url<<d.files;
+					const QStringList plainURLs(d.files.split(";", QString::SkipEmptyParts));
+					for (const QString& s : plainURLs)
 					{
-//						qDebug()<<"plain type:"<<d.url<<d.files;
-						const QStringList plainURLs(d.files.split(";", QString::SkipEmptyParts));
-						for (const QString& s : plainURLs)
-						{
-							ScQApp->dlManager()->addURL(d.url+"/"+s, true, ScPaths::downloadDir(), destinationFolder);
-							++dlCount;
-						}
-						downloadList.append(d);
-						d.download=true;
+						ScQApp->dlManager()->addURL(d.url+"/"+s, true, ScPaths::downloadDir(), destinationFolder);
+						++dlCount;
 					}
+					downloadList.append(d);
+					d.download=true;
 				}
 			}
 			break;
@@ -1281,21 +1314,20 @@
 			foreach(DownloadItem d, availableList)
 			{
 //				qDebug()<<d.desc;
-				if (filesToDownload.contains(d.desc))
-				{
-					if (d.filetype=="zip")
+				if (!filesToDownload.contains(d.desc))
+					continue;
+				if (d.filetype=="zip")
+				{
+//						qDebug()<<"zip type:"<<d.url<<d.files;
+					const QStringList plainURLs(d.files.split(";", QString::SkipEmptyParts));
+					for (const QString& s : plainURLs)
 					{
-//						qDebug()<<"zip type:"<<d.url<<d.files;
-						const QStringList plainURLs(d.files.split(";", QString::SkipEmptyParts));
-						for (const QString& s : plainURLs)
-						{
-							ScQApp->dlManager()->addURL(d.url+"/"+s, true, ScPaths::downloadDir(), destinationFolder);
-							ScQApp->dlManager()->addURL(d.url+"/"+s+".sha256", true, ScPaths::downloadDir(), destinationFolder);
-							dlCount+=2;
-						}
-						downloadList.append(d);
-						d.download=true;
+						ScQApp->dlManager()->addURL(d.url+"/"+s, true, ScPaths::downloadDir(), destinationFolder);
+						ScQApp->dlManager()->addURL(d.url+"/"+s+".sha256", true, ScPaths::downloadDir(), destinationFolder);
+						dlCount+=2;
 					}
+					downloadList.append(d);
+					d.download=true;
 				}
 			}
 			break;
@@ -1303,21 +1335,20 @@
 			foreach(DownloadItem d, availableList)
 			{
 //				qDebug()<<d.desc;
-				if (filesToDownload.contains(d.desc))
-				{
-					if (d.filetype=="zip")
+				if (!filesToDownload.contains(d.desc))
+					continue;
+				if (d.filetype == "zip")
+				{
+//						qDebug()<<"zip type:"<<d.url<<d.files;
+					const QStringList plainURLs(d.files.split(";", QString::SkipEmptyParts));
+					for (const QString& s : plainURLs)
 					{
-//						qDebug()<<"zip type:"<<d.url<<d.files;
-						const QStringList plainURLs(d.files.split(";", QString::SkipEmptyParts));
-						for (const QString& s : plainURLs)
-						{
-							ScQApp->dlManager()->addURL(d.url+"/"+s, true, ScPaths::downloadDir(), destinationFolder);
-							ScQApp->dlManager()->addURL(d.url+"/"+s+".sha256", true, ScPaths::downloadDir(), destinationFolder);
-							dlCount+=2;
-						}
-						downloadList.append(d);
-						d.download=true;
+						ScQApp->dlManager()->addURL(d.url+"/"+s, true, ScPaths::downloadDir(), destinationFolder);
+						ScQApp->dlManager()->addURL(d.url+"/"+s+".sha256", true, ScPaths::downloadDir(), destinationFolder);
+						dlCount+=2;
 					}
+					downloadList.append(d);
+					d.download=true;
 				}
 			}
 			break;
@@ -1332,6 +1363,54 @@
 		connect(ScQApp->dlManager(), SIGNAL(fileFailed(const QString&)), this, SLOT(updateProgressBar()));
 		connect(ScQApp->dlManager(), SIGNAL(fileDownloadProgress(qint64, qint64)), this, SLOT(updateProgressData(qint64, qint64)));
 		ScQApp->dlManager()->startDownloads();
+	}
+}
+
+void ResourceManager::showInFileBrowser()
+{
+	QString filePath;
+	QTableWidgetItem* item;
+
+	auto selectedItems = installedTableWidget->selectedItems();
+	if (selectedItems.count() <= 0)
+		return;
+	
+	int currentRow = installedTableWidget->currentRow();
+	
+	int category = categoryComboBox->currentData().toInt();
+	switch (category)
+	{
+	case RM_FONTS:
+		item = installedTableWidget->item(currentRow, 1);
+		filePath = item->text();
+		break;
+	case RM_HYPH:
+		item = installedTableWidget->item(currentRow, 2);
+		filePath = item->text();
+		break;
+	case RM_SPELL:
+		item = installedTableWidget->item(currentRow, 2);
+		filePath = item->text() + ".dic";
+		break;
+	case RM_TEMPLATES:
+		break;
+	case RM_HELP:
+		item = installedTableWidget->item(currentRow, 1);
+		filePath = item->text();
+		break;
+	case RM_PALETTES:
+		item = installedTableWidget->item(currentRow, 1);
+		filePath = item->text();
+		break;
+	case RM_TEST:
+		break;
+	}
+
+	if (!filePath.isEmpty())
+	{
+		QString dirPath = QFileInfo(filePath).canonicalPath();
+		QUrl fileUrl = QUrl::fromLocalFile(dirPath);
+		QDesktopServices::openUrl(fileUrl);
 	}
 }
 
@@ -1384,20 +1463,15 @@
 				case RM_SPELL:
 				case RM_PALETTES:
 */
-			foreach(const DownloadItem& d, availableList)
+			for (const DownloadItem& d : qAsConst(availableList))
 			{
-				if (filesToDownload.contains(d.desc))
-				{
-					ScQApp->dlManager()->addURL(d.url+"/"+licenceFileName, true, ScPaths::downloadDir(), ScPaths::tempFileDir());
-					connect(ScQApp->dlManager(), SIGNAL(finished()), this, SLOT(downloadLicenseFinished()));
-					connect(ScQApp->dlManager(), SIGNAL(fileReceived(const QString&)), this, SLOT(downloadLicenseFileFinished(const QString&)));
-					connect(ScQApp->dlManager(), SIGNAL(fileFailed(const QString&)), this, SLOT(downloadLicenseFileFailed(const QString&)));
-					ScQApp->dlManager()->startDownloads();
-				}
-/*
- * 					}
-					break;
-*/
+				if (!filesToDownload.contains(d.desc))
+					continue;
+				ScQApp->dlManager()->addURL(d.url+"/"+licenceFileName, true, ScPaths::downloadDir(), ScPaths::tempFileDir());
+				connect(ScQApp->dlManager(), SIGNAL(finished()), this, SLOT(downloadLicenseFinished()));
+				connect(ScQApp->dlManager(), SIGNAL(fileReceived(const QString&)), this, SLOT(downloadLicenseFileFinished(const QString&)));
+				connect(ScQApp->dlManager(), SIGNAL(fileFailed(const QString&)), this, SLOT(downloadLicenseFileFailed(const QString&)));
+				ScQApp->dlManager()->startDownloads();
 			}
 		}
 	}

Modified: trunk/Scribus/scribus/ui/resourcemanager.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=22839&path=/trunk/Scribus/scribus/ui/resourcemanager.h
==============================================================================
--- trunk/Scribus/scribus/ui/resourcemanager.h	(original)
+++ trunk/Scribus/scribus/ui/resourcemanager.h	Tue Feb 19 23:05:50 2019
@@ -101,11 +101,12 @@
 		void downloadLicenseFinished();
 		void downloadLicenseFileFinished(const QString &);
 		void downloadLicenseFileFailed(const QString &);
+		void installedSelectionChanged();
 		void updateProgressBar();
 		void updateProgressData(qint64 bytesReceived, qint64 bytesTotal);
 		void startDownload();
+		void showInFileBrowser();
 		void showLicense();
-
 };
 
 #endif // RESOURCEMANAGER_H




More information about the scribus-commit mailing list