Merged PartDownloader into the prompt and renamed the prompt to PartDownloader

Sat, 03 Aug 2013 12:31:36 +0300

author
Santeri Piippo <crimsondusk64@gmail.com>
date
Sat, 03 Aug 2013 12:31:36 +0300
changeset 435
bc3a51394953
parent 434
b7a73ef3d4de
child 436
4268a5507725

Merged PartDownloader into the prompt and renamed the prompt to PartDownloader

src/download.cpp file | annotate | diff | comparison | revisions
src/download.h file | annotate | diff | comparison | revisions
src/ui/downloadfrom.ui file | annotate | diff | comparison | revisions
--- a/src/download.cpp	Sat Aug 03 04:44:30 2013 +0300
+++ b/src/download.cpp	Sat Aug 03 12:31:36 2013 +0300
@@ -30,8 +30,6 @@
 #include "file.h"
 #include "gldraw.h"
 
-PartDownloader g_PartDownloader;
-
 cfg (str, net_downloadpath, "");
 cfg (bool, net_guesspaths, true);
 cfg (bool, net_autoclose, false);
@@ -41,15 +39,15 @@
 
 // =============================================================================
 // -----------------------------------------------------------------------------
-void PartDownloader::download() {
+void PartDownloader::k_download() {
 	str path = getDownloadPath();
 	if (path == "" || QDir (path).exists() == false) {
-		critical (PartDownloadPrompt::tr ("You need to specify a valid path for "
+		critical (PartDownloader::tr ("You need to specify a valid path for "
 			"downloaded files in the configuration to download paths."));
 		return;
 	}
 	
-	PartDownloadPrompt* dlg = new PartDownloadPrompt;
+	PartDownloader* dlg = new PartDownloader;
 	dlg->exec();
 }
 
@@ -67,10 +65,11 @@
 
 // =============================================================================
 // -----------------------------------------------------------------------------
-PartDownloadPrompt::PartDownloadPrompt (QWidget* parent) : QDialog (parent) {
+PartDownloader::PartDownloader (QWidget* parent) : QDialog (parent) {
 	ui = new Ui_DownloadFrom;
 	ui->setupUi (this);
 	ui->fname->setFocus();
+	ui->progress->horizontalHeader()->setResizeMode (PartLabelColumn, QHeaderView::Stretch);
 	
 	m_downloadButton = new QPushButton (tr ("Download"));
 	ui->buttonBox->addButton (m_downloadButton, QDialogButtonBox::ActionRole);
@@ -82,13 +81,13 @@
 
 // =============================================================================
 // -----------------------------------------------------------------------------
-PartDownloadPrompt::~PartDownloadPrompt() {
+PartDownloader::~PartDownloader() {
 	delete ui;
 }
 
 // =============================================================================
 // -----------------------------------------------------------------------------
-str PartDownloadPrompt::getURL() const {
+str PartDownloader::getURL() const {
 	const Source src = getSource();
 	str dest;
 	
@@ -96,7 +95,7 @@
 	case PartsTracker:
 		dest = ui->fname->text();
 		modifyDest (dest);
-		return str (PartDownloader::k_UnofficialURL) + dest;
+		return str (k_UnofficialURL) + dest;
 	
 	case CustomURL:
 		return ui->fname->text();
@@ -108,7 +107,7 @@
 
 // =============================================================================
 // -----------------------------------------------------------------------------
-void PartDownloadPrompt::modifyDest (str& dest) const {
+void PartDownloader::modifyDest (str& dest) const {
 	dest = dest.simplified();
 	
 	// If the user doesn't want us to guess, stop right here.
@@ -166,20 +165,20 @@
 
 // =============================================================================
 // -----------------------------------------------------------------------------
-PartDownloadPrompt::Source PartDownloadPrompt::getSource() const {
+PartDownloader::Source PartDownloader::getSource() const {
 	return (Source) ui->source->currentIndex();
 }
 
 // =============================================================================
 // -----------------------------------------------------------------------------
-void PartDownloadPrompt::sourceChanged (int i) {
+void PartDownloader::sourceChanged (int i) {
 	if (i == CustomURL)
 		ui->fileNameLabel->setText (tr ("URL:"));
 	else
 		ui->fileNameLabel->setText (tr ("File name:"));
 }
 
-void PartDownloadPrompt::buttonClicked (QAbstractButton* btn) {
+void PartDownloader::buttonClicked (QAbstractButton* btn) {
 	if (btn == getButton (Close)) {
 		reject();
 	} elif (btn == getButton (Abort)) {
@@ -217,7 +216,7 @@
 
 // =============================================================================
 // -----------------------------------------------------------------------------
-void PartDownloadPrompt::downloadFile (str dest, str url, bool primary) {
+void PartDownloader::downloadFile (str dest, str url, bool primary) {
 	const int row = ui->progress->rowCount();
 	
 	// Don't download files repeadetly.
@@ -237,7 +236,7 @@
 
 // =============================================================================
 // -----------------------------------------------------------------------------
-void PartDownloadPrompt::checkIfFinished() {
+void PartDownloader::checkIfFinished() {
 	bool failed = aborted();
 	
 	// If there is some download still working, we're not finished.
@@ -274,7 +273,7 @@
 
 // =============================================================================
 // -----------------------------------------------------------------------------
-QPushButton* PartDownloadPrompt::getButton (PartDownloadPrompt::Button i) {
+QPushButton* PartDownloader::getButton (PartDownloader::Button i) {
 	typedef QDialogButtonBox QDBB;
 	alias btnbox = ui->buttonBox;
 	
@@ -294,7 +293,7 @@
 
 // =============================================================================
 // -----------------------------------------------------------------------------
-PartDownloadRequest::PartDownloadRequest (str url, str dest, bool primary, PartDownloadPrompt* parent) :
+PartDownloadRequest::PartDownloadRequest (str url, str dest, bool primary, PartDownloader* parent) :
 	QObject (parent),
 	m_prompt (parent),
 	m_url (url),
@@ -329,17 +328,19 @@
 // =============================================================================
 // -----------------------------------------------------------------------------
 void PartDownloadRequest::updateToTable() {
+	const int labelcol = PartDownloader::PartLabelColumn,
+		progcol = PartDownloader::ProgressColumn;
 	QTableWidget* table = m_prompt->ui->progress;
 	QProgressBar* prog;
 	
 	switch (m_state) {
 	case Requesting:
 	case Downloading:
-		prog = qobject_cast<QProgressBar*> (table->cellWidget (tableRow(), ProgressColumn));
+		prog = qobject_cast<QProgressBar*> (table->cellWidget (tableRow(), progcol));
 		
 		if (!prog) {
 			prog = new QProgressBar;
-			table->setCellWidget (tableRow(), ProgressColumn, prog);
+			table->setCellWidget (tableRow(), progcol, prog);
 		}
 		
 		prog->setRange (0, m_bytesTotal);
@@ -352,20 +353,20 @@
 			QLabel* lb = new QLabel ((m_state == Finished) ? "<b><span style=\"color: #080\">FINISHED</span></b>" :
 				"<b><span style=\"color: #800\">FAILED</span></b>");
 			lb->setAlignment (Qt::AlignCenter);
-			table->setCellWidget (tableRow(), ProgressColumn, lb);
+			table->setCellWidget (tableRow(), progcol, lb);
 		}
 		break;
 	}
 	
-	QLabel* lb = qobject_cast<QLabel*> (table->cellWidget (tableRow(), PartLabelColumn));
+	QLabel* lb = qobject_cast<QLabel*> (table->cellWidget (tableRow(), labelcol));
 	if (m_firstUpdate) {
 		lb = new QLabel (fmt ("<b>%1</b>", m_dest), table);
-		table->setCellWidget (tableRow(), PartLabelColumn, lb);
+		table->setCellWidget (tableRow(), labelcol, lb);
 	}
 	
 	// Make sure that the cell is big enough to contain the label
-	if (table->columnWidth (PartLabelColumn) < lb->width())
-		table->setColumnWidth (PartLabelColumn, lb->width());
+	if (table->columnWidth (labelcol) < lb->width())
+		table->setColumnWidth (labelcol, lb->width());
 	
 	m_firstUpdate = false;
 }
@@ -483,5 +484,5 @@
 // =============================================================================
 // -----------------------------------------------------------------------------
 DEFINE_ACTION (DownloadFrom, 0) {
-	g_PartDownloader.download();
+	PartDownloader::k_download();
 }
\ No newline at end of file
--- a/src/download.h	Sat Aug 03 04:44:30 2013 +0300
+++ b/src/download.h	Sat Aug 03 12:31:36 2013 +0300
@@ -34,25 +34,15 @@
 
 // =============================================================================
 // -----------------------------------------------------------------------------
-extern class PartDownloader {
-public:
-	constexpr static const char* k_OfficialURL = "http://ldraw.org/library/official/",
-		*k_UnofficialURL = "http://ldraw.org/library/unofficial/";
-	
-	PartDownloader() {}
-	void download();
-	static str getDownloadPath();
-	void operator()() { download(); }
-} g_PartDownloader;
-
-// =============================================================================
-// -----------------------------------------------------------------------------
-class PartDownloadPrompt : public QDialog {
+class PartDownloader : public QDialog {
 	Q_OBJECT
 	PROPERTY (LDFile*, primaryFile, setPrimaryFile)
 	PROPERTY (bool, aborted, setAborted)
 	
 public:
+	constexpr static const char* k_OfficialURL = "http://ldraw.org/library/official/",
+		*k_UnofficialURL = "http://ldraw.org/library/unofficial/";
+	
 	enum Source {
 		PartsTracker,
 		CustomURL,
@@ -64,13 +54,20 @@
 		Close
 	};
 	
-	explicit PartDownloadPrompt (QWidget* parent = null);
-	virtual ~PartDownloadPrompt();
+	enum TableColumn {
+		PartLabelColumn,
+		ProgressColumn,
+	};
+	
+	explicit PartDownloader (QWidget* parent = null);
+	virtual ~PartDownloader();
 	str getURL() const;
+	static str getDownloadPath();
 	Source getSource() const;
 	void downloadFile (str dest, str url, bool primary);
 	void modifyDest (str& dest) const;
 	QPushButton* getButton (Button i);
+	static void k_download();
 	
 public slots:
 	void sourceChanged (int i);
@@ -94,11 +91,6 @@
 	PROPERTY (int, tableRow, setTableRow)
 	
 public:
-	enum TableColumn {
-		PartLabelColumn,
-		ProgressColumn,
-	};
-	
 	enum State {
 		Requesting,
 		Downloading,
@@ -106,7 +98,7 @@
 		Failed,
 	};
 	
-	explicit PartDownloadRequest (str url, str dest, bool primary, PartDownloadPrompt* parent);
+	explicit PartDownloadRequest (str url, str dest, bool primary, PartDownloader* parent);
 	         PartDownloadRequest (const PartDownloadRequest&) = delete;
 	virtual ~PartDownloadRequest();
 	void updateToTable();
@@ -122,7 +114,7 @@
 	void abort();
 	
 private:
-	PartDownloadPrompt* m_prompt;
+	PartDownloader* m_prompt;
 	str m_url, m_dest, m_fpath;
 	QNetworkAccessManager* m_nam;
 	QNetworkReply* m_reply;
--- a/src/ui/downloadfrom.ui	Sat Aug 03 04:44:30 2013 +0300
+++ b/src/ui/downloadfrom.ui	Sat Aug 03 12:31:36 2013 +0300
@@ -83,30 +83,15 @@
      <property name="editTriggers">
       <set>QAbstractItemView::NoEditTriggers</set>
      </property>
-     <property name="cornerButtonEnabled">
-      <bool>false</bool>
+     <property name="selectionMode">
+      <enum>QAbstractItemView::NoSelection</enum>
      </property>
-     <attribute name="horizontalHeaderCascadingSectionResizes">
-      <bool>false</bool>
-     </attribute>
-     <attribute name="horizontalHeaderShowSortIndicator" stdset="0">
-      <bool>true</bool>
-     </attribute>
-     <attribute name="horizontalHeaderStretchLastSection">
-      <bool>true</bool>
-     </attribute>
      <attribute name="verticalHeaderVisible">
       <bool>false</bool>
      </attribute>
-     <attribute name="verticalHeaderCascadingSectionResizes">
-      <bool>false</bool>
-     </attribute>
-     <attribute name="verticalHeaderStretchLastSection">
-      <bool>false</bool>
-     </attribute>
      <column>
       <property name="text">
-       <string>URL</string>
+       <string>File</string>
       </property>
       <property name="font">
        <font>

mercurial