From be4fc77c294a41a0db46ba692fbe45b2045b66c3 Mon Sep 17 00:00:00 2001
From: tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>
Date: Fri, 19 Feb 2010 20:40:48 +0000
Subject: Added KDE3 version of kpowersave

git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kpowersave@1092957 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
---
 src/countdowndialog.cpp | 177 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 177 insertions(+)
 create mode 100644 src/countdowndialog.cpp

(limited to 'src/countdowndialog.cpp')

diff --git a/src/countdowndialog.cpp b/src/countdowndialog.cpp
new file mode 100644
index 0000000..3deac27
--- /dev/null
+++ b/src/countdowndialog.cpp
@@ -0,0 +1,177 @@
+/***************************************************************************
+ *   Copyright (C) 2007 by Danny Kukawka                                   *
+ *                         <dkukawka@suse.de>, <danny.kukawka@web.de>      *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of version 2 of the GNU General Public License     *
+ *   as published by the Free Software Foundation.                         *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.             *
+ ***************************************************************************/
+
+/*! \file countdowndialog.cpp
+ * \brief 	In this file can be found the countdown dialog related code. 
+ * \author 	Danny Kukawka, <dkukawka@suse.de, danny.kukawka@web.de>
+ * \date    	2007
+ */
+
+// own header
+#include "countdowndialog.h"
+#include "kpowersave_debug.h"
+
+// KDE headers:
+#include <klocale.h>
+#include <kiconloader.h>
+#include <kprogress.h>
+
+// QT headers:
+#include <qdialog.h>
+#include <qlabel.h> 
+#include <qprogressbar.h>
+#include <qpushbutton.h>
+#include <qstring.h>
+#include <qtimer.h>
+
+/*! This is the default constructor of class countDownDialog . */
+countDownDialog::countDownDialog( int timeout, QWidget *parent, const char *name)
+		:countdown_Dialog(parent, name, false, Qt::WStyle_StaysOnTop | Qt::WDestructiveClose )
+{
+	kdDebugFuncIn(trace);
+	chancel = false;
+	remaining = timeout;
+	timeOut = timeout;
+
+	PROGRESS = new QTimer(this);
+	connect(PROGRESS, SIGNAL(timeout()), this, SLOT(updateProgress()));
+
+	this->setCaption(i18n("KPowersave"));
+
+	kdDebugFuncOut(trace);
+}
+
+/*! This is the default destructor of class countDownDialog . */
+countDownDialog::~countDownDialog() {
+	kdDebugFuncIn(trace);
+	// no need to delete child widgets, Qt does it all for us
+	emit dialogClosed(chancel);
+
+	kdDebugFuncOut(trace);
+}
+
+/*! 
+ * This used to set Icon/pixmap for the dialog.
+ * \param type QString with the type of the current suspend
+ *             to set the pixmap in the dialog
+ */
+void countDownDialog::setPixmap( QString type )
+{
+	QPixmap pixmap = 0;
+
+	if(type.startsWith("suspend2disk")){
+		pixmap = KGlobal::iconLoader()->loadIcon("suspend_to_disk", KIcon::NoGroup, KIcon::SizeLarge);
+	} else if (type.startsWith("suspend2ram")) {
+		pixmap = KGlobal::iconLoader()->loadIcon("suspend_to_ram", KIcon::NoGroup, KIcon::SizeLarge);
+	} else if (type.startsWith("standby")) {
+		pixmap = KGlobal::iconLoader()->loadIcon("stand_by", KIcon::NoGroup, KIcon::SizeLarge);
+	} else {
+		pixmap = KGlobal::iconLoader()->loadIcon("kpowersave", KIcon::NoGroup, KIcon::SizeLarge);
+	}
+	iconPixmap->setPixmap( pixmap );
+}
+
+/*!
+ * To set the message to the dialog, which should be shown to the user.
+ * \param text	QString with the message. 
+ */
+void countDownDialog::setMessageText(QString text) {
+	kdDebugFuncIn(trace);
+
+	if (!text.isEmpty()) {
+		textLabel->setText(text);
+	}
+
+	kdDebugFuncOut(trace);
+}
+
+/*!
+ * To show the dialog and start the countdown.
+ * \return boolean with the result of the operation
+ * \retval true		if the dialog could get displayed
+ * \retval false	if there is any problem
+ */
+bool countDownDialog::showDialog() {
+	kdDebugFuncIn(trace);
+
+	bool _retval = false;
+
+	if (!textLabel->text().isEmpty() && timeOut > 0) {
+		// init the progressbar
+		progressBar->setFormat(i18n("%1 seconds").arg(remaining));
+		progressBar->setPercentageVisible(true);
+		progressBar->setProgress(100);
+		progressBar->setEnabled(true);
+
+		this->adjustSize();
+		this->show();
+
+		PROGRESS->start(1000, true);
+	}
+
+	kdDebugFuncOut(trace);
+	return _retval;
+}
+
+/*!
+ * \b SLOT to get the event if the 'Cancel' button was pressed.
+ */
+void countDownDialog::pB_cancel_pressed() {
+	kdDebugFuncIn(trace);
+
+	if (PROGRESS->isActive())
+		PROGRESS->stop();
+
+	chancel = true;
+	close();
+
+	kdDebugFuncOut(trace);
+}
+
+/*!
+ * \b SLOT to handle the change of the progressbar.
+ */
+void countDownDialog::updateProgress() {
+	kdDebugFuncIn(trace);
+
+	if (remaining == 0 ) {
+		if (PROGRESS->isActive())
+			PROGRESS->stop();
+		
+		chancel = false;
+		close();
+	} else if ( remaining > 0) {
+		int setTo = (int)((100.0/(float)timeOut)*(float)remaining);
+		
+		// set the progressBar
+		progressBar->setFormat(i18n("%1 seconds").arg(remaining));
+		progressBar->setPercentageVisible(true);
+		progressBar->setProgress(setTo);
+		progressBar->setEnabled(true);
+
+		// increase counter
+		remaining--;
+		// start needed timer
+		PROGRESS->start(1000, true);
+	}
+
+	kdDebugFuncOut(trace);
+}
+
+#include "countdowndialog.moc"
-- 
cgit v1.2.1