[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: =?utf-8?q?=5Bmuon=5D_/=3A_Use_the_new_saveDownloadList_and_downl?=
From: Jonathan Thomas <echidnaman () kubuntu ! org>
Date: 2011-01-31 23:45:09
Message-ID: 20110131234509.27ABAA609B () git ! kde ! org
[Download RAW message or body]
Git commit 502ad03cdf625e1ff03579c382b8d68d9ccf63dd by Jonathan Thomas.
Pushed by jmthomas into branch 'master'.
Use the new saveDownloadList and downloadArchives to create a user interface for \
downloading packages from a list. Users without internet access can use this \
functionality to create a list of packages they want downloaded, take it to another \
computer, download them with Muon's download archives feature, and then take the USB \
stick back to their computer where they can add the packages to the package cache.
M +43 -2 libmuon/MuonMainWindow.cpp
M +2 -0 libmuon/MuonMainWindow.h
M +30 -1 muon/MainWindow.cpp
M +3 -0 muon/MainWindow.h
M +2 -0 muon/muonui.rc
M +27 -1 updater/UpdaterWindow.cpp
M +3 -0 updater/UpdaterWindow.h
M +2 -0 updater/muon-updaterui.rc
http://commits.kde.org/muon/502ad03cdf625e1ff03579c382b8d68d9ccf63dd
diff --git a/libmuon/MuonMainWindow.cpp b/libmuon/MuonMainWindow.cpp
index c92fd7f..9ee4e08 100644
--- a/libmuon/MuonMainWindow.cpp
+++ b/libmuon/MuonMainWindow.cpp
@@ -187,6 +187,7 @@ void MuonMainWindow::workerEvent(QApt::WorkerEvent event)
m_canExit = false;
break;
case QApt::CacheUpdateFinished:
+ case QApt::PackageDownloadFinished:
case QApt::CommitChangesFinished:
Solid::PowerManagement::stopSuppressingSleep(m_powerInhibitor);
m_canExit = true;
@@ -280,10 +281,11 @@ void MuonMainWindow::errorOccurred(QApt::ErrorCode code, const \
QVariantMap &args case QApt::UserCancelError:
case QApt::UnknownError:
default:
- setActionsEnabled();
- m_canExit = true; // If we were committing changes, we aren't anymore
break;
}
+
+ setActionsEnabled();
+ m_canExit = true; // If we were committing changes, we aren't anymore
}
void MuonMainWindow::warningOccurred(QApt::WarningCode warning, const QVariantMap \
&args) @@ -445,6 +447,45 @@ bool MuonMainWindow::saveInstalledPackagesList()
return true;
}
+bool MuonMainWindow::createDownloadList()
+{
+ QString filename;
+ filename = KFileDialog::getSaveFileName(QString(), QString(), this,
+ i18nc("@title:window", "Save Download \
List As")); +
+ if (filename.isEmpty()) {
+ return false;
+ }
+
+ if (!m_backend->saveDownloadList(filename)) {
+ QString text = i18nc("@label", "The document could not be saved, as it "
+ "was not possible to write to "
+ "<filename>%1</filename>\n\nCheck "
+ "that you have write access to this file "
+ "or that enough disk space is available.",
+ filename);
+ KMessageBox::error(this, text, QString());
+ return false;
+ }
+
+ return true;
+}
+
+void MuonMainWindow::downloadPackagesFromList()
+{
+ QString filename = KFileDialog::getOpenFileName(QString(), QString(),
+ this, i18nc("@title:window", \
"Open File")); +
+ if (filename.isEmpty()) {
+ return;
+ }
+
+ QString dirName = filename.left(filename.lastIndexOf('/'));
+
+ setActionsEnabled(false);
+ m_backend->downloadArchives(filename, dirName % QLatin1String("/packages"));
+}
+
void MuonMainWindow::loadSelections()
{
QString filename = KFileDialog::getOpenFileName(QString(), QString(),
diff --git a/libmuon/MuonMainWindow.h b/libmuon/MuonMainWindow.h
index 9063044..3be6c3f 100644
--- a/libmuon/MuonMainWindow.h
+++ b/libmuon/MuonMainWindow.h
@@ -90,6 +90,8 @@ protected Q_SLOTS:
bool saveSelections();
bool saveInstalledPackagesList();
void loadSelections();
+ bool createDownloadList();
+ void downloadPackagesFromList();
void loadArchives();
void undo();
void redo();
diff --git a/muon/MainWindow.cpp b/muon/MainWindow.cpp
index cde1451..8fc1111 100644
--- a/muon/MainWindow.cpp
+++ b/muon/MainWindow.cpp
@@ -161,6 +161,20 @@ void MainWindow::setupActions()
m_saveSelectionsAction->setText(i18nc("@action", "Save Markings As..."));
connect(m_saveSelectionsAction, SIGNAL(triggered()), this, \
SLOT(saveSelections()));
+ m_createDownloadListAction = \
actionCollection()->addAction("save_download_list"); + \
m_createDownloadListAction->setIcon(KIcon("document-save-as")); + \
m_createDownloadListAction->setText(i18nc("@action", "Save Package Download \
List...")); + connect(m_createDownloadListAction, SIGNAL(triggered()), this, \
SLOT(createDownloadList())); +
+ m_downloadListAction = actionCollection()->addAction("download_from_list");
+ m_downloadListAction->setIcon(KIcon("download"));
+ m_downloadListAction->setText(i18nc("@action", "Download Packages From \
List...")); + connect(m_downloadListAction, SIGNAL(triggered()), this, \
SLOT(downloadPackagesFromList())); + if (!isConnected()) {
+ m_downloadListAction->setDisabled(false);
+ }
+ connect(this, SIGNAL(shouldConnect(bool)), m_downloadListAction, \
SLOT(setEnabled(bool))); +
m_loadArchivesAction = actionCollection()->addAction("load_archives");
m_loadArchivesAction->setIcon(KIcon("document-open"));
m_loadArchivesAction->setText(i18nc("@action", "Add Downloaded Packages"));
@@ -259,10 +273,17 @@ void MainWindow::markAutoRemove()
void MainWindow::checkForUpdates()
{
setActionsEnabled(false);
+ m_managerWidget->setEnabled(false);
initDownloadWidget();
m_backend->updateCache();
}
+void MainWindow::downloadPackagesFromList()
+{
+ initDownloadWidget();
+ MuonMainWindow::downloadPackagesFromList();
+}
+
void MainWindow::errorOccurred(QApt::ErrorCode error, const QVariantMap &details)
{
Q_UNUSED(details);
@@ -271,6 +292,7 @@ void MainWindow::errorOccurred(QApt::ErrorCode error, const \
QVariantMap &details
switch(error) {
case QApt::UserCancelError:
+ m_managerWidget->setEnabled(true);
QApplication::restoreOverrideCursor();
returnFromPreview();
break;
@@ -294,6 +316,7 @@ void MainWindow::workerEvent(QApt::WorkerEvent event)
case QApt::CacheUpdateFinished:
case QApt::CommitChangesFinished:
reload();
+ case QApt::PackageDownloadFinished:
returnFromPreview();
if (m_warningStack.size() > 0) {
showQueuedWarnings();
@@ -303,6 +326,9 @@ void MainWindow::workerEvent(QApt::WorkerEvent event)
showQueuedErrors();
m_errorStack.clear();
}
+
+ m_downloadWidget->deleteLater();
+ m_downloadWidget = 0;
break;
case QApt::PackageDownloadStarted:
if (m_downloadWidget) {
@@ -330,7 +356,6 @@ void MainWindow::workerEvent(QApt::WorkerEvent event)
m_statusWidget, SLOT(updateXapianProgress(int)));
m_statusWidget->hideXapianProgress();
break;
- case QApt::PackageDownloadFinished:
case QApt::InvalidEvent:
default:
break;
@@ -372,6 +397,7 @@ void MainWindow::returnFromPreview()
void MainWindow::startCommit()
{
setActionsEnabled(false);
+ m_managerWidget->setEnabled(false);
QApplication::setOverrideCursor(Qt::WaitCursor);
initDownloadWidget();
initCommitWidget();
@@ -412,6 +438,7 @@ void MainWindow::reload()
m_statusWidget->updateStatus();
setActionsEnabled();
+ m_managerWidget->setEnabled(true);
// No need to keep these around in memory.
if (m_downloadWidget) {
@@ -451,8 +478,10 @@ void MainWindow::setActionsEnabled(bool enabled)
if (isConnected()) {
m_applyAction->setEnabled(changesPending);
+ m_downloadListAction->setEnabled(true);
} else {
m_applyAction->setEnabled(false);
+ m_downloadListAction->setEnabled(false);
}
m_undoAction->setEnabled(!m_backend->isUndoStackEmpty());
diff --git a/muon/MainWindow.h b/muon/MainWindow.h
index fc25714..c77f461 100644
--- a/muon/MainWindow.h
+++ b/muon/MainWindow.h
@@ -69,6 +69,8 @@ private:
KAction *m_saveInstalledAction;
KAction *m_saveSelectionsAction;
KAction *m_loadSelectionsAction;
+ KAction *m_createDownloadListAction;
+ KAction *m_downloadListAction;
KAction *m_loadArchivesAction;
ManagerSettingsDialog *m_settingsDialog;
@@ -91,6 +93,7 @@ private Q_SLOTS:
void markDistUpgrade();
void markAutoRemove();
void checkForUpdates();
+ void downloadPackagesFromList();
void workerEvent(QApt::WorkerEvent event);
void errorOccurred(QApt::ErrorCode error, const QVariantMap &details);
void previewChanges();
diff --git a/muon/muonui.rc b/muon/muonui.rc
index 3d6e0f7..e33a974 100644
--- a/muon/muonui.rc
+++ b/muon/muonui.rc
@@ -12,6 +12,8 @@
<Action name="save_markings" />
<Action name="save_package_list" />
<Separator/>
+ <Action name="save_download_list" />
+ <Action name="download_from_list" />
<Action name="load_archives" />
<Separator/>
<Action name="quit" />
diff --git a/updater/UpdaterWindow.cpp b/updater/UpdaterWindow.cpp
index 8675d1e..c4f498a 100644
--- a/updater/UpdaterWindow.cpp
+++ b/updater/UpdaterWindow.cpp
@@ -90,6 +90,20 @@ void UpdaterWindow::setupActions()
{
MuonMainWindow::setupActions();
+ m_createDownloadListAction = \
actionCollection()->addAction("save_download_list"); + \
m_createDownloadListAction->setIcon(KIcon("document-save-as")); + \
m_createDownloadListAction->setText(i18nc("@action", "Save Package Download \
List...")); + connect(m_createDownloadListAction, SIGNAL(triggered()), this, \
SLOT(createDownloadList())); +
+ m_downloadListAction = actionCollection()->addAction("download_from_list");
+ m_downloadListAction->setIcon(KIcon("download"));
+ m_downloadListAction->setText(i18nc("@action", "Download Packages From \
List...")); + connect(m_downloadListAction, SIGNAL(triggered()), this, \
SLOT(downloadPackagesFromList())); + if (!isConnected()) {
+ m_downloadListAction->setDisabled(false);
+ }
+ connect(this, SIGNAL(shouldConnect(bool)), m_downloadListAction, \
SLOT(setEnabled(bool))); +
m_loadArchivesAction = actionCollection()->addAction("load_archives");
m_loadArchivesAction->setIcon(KIcon("document-open"));
m_loadArchivesAction->setText(i18nc("@action", "Add Downloaded Packages"));
@@ -117,10 +131,17 @@ void UpdaterWindow::setupActions()
void UpdaterWindow::checkForUpdates()
{
setActionsEnabled(false);
+ m_updaterWidget->setEnabled(false);
initDownloadWidget();
m_backend->updateCache();
}
+void UpdaterWindow::downloadPackagesFromList()
+{
+ initDownloadWidget();
+ MuonMainWindow::downloadPackagesFromList();
+}
+
void UpdaterWindow::workerEvent(QApt::WorkerEvent event)
{
MuonMainWindow::workerEvent(event);
@@ -136,6 +157,7 @@ void UpdaterWindow::workerEvent(QApt::WorkerEvent event)
case QApt::CacheUpdateFinished:
case QApt::CommitChangesFinished:
reload();
+ case QApt::PackageDownloadFinished:
returnFromPreview();
if (m_warningStack.size() > 0) {
showQueuedWarnings();
@@ -161,7 +183,6 @@ void UpdaterWindow::workerEvent(QApt::WorkerEvent event)
}
QApplication::restoreOverrideCursor();
break;
- case QApt::PackageDownloadFinished:
case QApt::InvalidEvent:
default:
break;
@@ -174,6 +195,7 @@ void UpdaterWindow::errorOccurred(QApt::ErrorCode error, const \
QVariantMap &args
switch(error) {
case QApt::UserCancelError:
+ m_updaterWidget->setEnabled(true);
QApplication::restoreOverrideCursor();
returnFromPreview();
break;
@@ -207,6 +229,7 @@ void UpdaterWindow::initCommitWidget()
void UpdaterWindow::startCommit()
{
setActionsEnabled(false);
+ m_updaterWidget->setEnabled(false);
QApplication::setOverrideCursor(Qt::WaitCursor);
initDownloadWidget();
initCommitWidget();
@@ -219,6 +242,7 @@ void UpdaterWindow::reload()
m_updaterWidget->reload();
m_statusWidget->updateStatus();
setActionsEnabled();
+ m_updaterWidget->setEnabled(true);
// No need to keep these around in memory.
if (m_downloadWidget) {
@@ -253,8 +277,10 @@ void UpdaterWindow::setActionsEnabled(bool enabled)
if (isConnected()) {
m_applyAction->setEnabled(m_backend->areChangesMarked());
+ m_downloadListAction->setEnabled(true);
} else {
m_applyAction->setEnabled(false);
+ m_downloadListAction->setEnabled(false);
}
m_undoAction->setEnabled(!m_backend->isUndoStackEmpty());
diff --git a/updater/UpdaterWindow.h b/updater/UpdaterWindow.h
index 1a6ddca..a86218e 100644
--- a/updater/UpdaterWindow.h
+++ b/updater/UpdaterWindow.h
@@ -51,6 +51,8 @@ private:
UpdaterWidget *m_updaterWidget;
KAction *m_applyAction;
+ KAction *m_createDownloadListAction;
+ KAction *m_downloadListAction;
KAction *m_loadArchivesAction;
UpdaterSettingsDialog *m_settingsDialog;
@@ -64,6 +66,7 @@ private Q_SLOTS:
void initObject();
void setupActions();
void checkForUpdates();
+ void downloadPackagesFromList();
void workerEvent(QApt::WorkerEvent event);
void errorOccurred(QApt::ErrorCode code, const QVariantMap &args);
void initDownloadWidget();
diff --git a/updater/muon-updaterui.rc b/updater/muon-updaterui.rc
index 28b26e8..ea96212 100644
--- a/updater/muon-updaterui.rc
+++ b/updater/muon-updaterui.rc
@@ -8,6 +8,8 @@
<MenuBar>
<Menu name="file" >
<Separator/>
+ <Action name="save_download_list" />
+ <Action name="download_from_list" />
<Action name="load_archives" />
<Separator/>
<Action name="quit" />
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic