From 80828dcd0a812149993c04d81c24a8d8bd2e971f Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Sat, 30 Mar 2013 14:47:03 +0100 Subject: Implement session saving, inspired from kate session management (or at least, for what I see...) Added session manager widget and ability to load/save/rename sessions --- src/sessionwidget.cpp | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 src/sessionwidget.cpp (limited to 'src/sessionwidget.cpp') diff --git a/src/sessionwidget.cpp b/src/sessionwidget.cpp new file mode 100644 index 00000000..fa8330a7 --- /dev/null +++ b/src/sessionwidget.cpp @@ -0,0 +1,129 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2013 by Andrea Diamantini +* +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* 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, see . +* +* ============================================================ */ + + +// Self Includes +#include "sessionwidget.h" +#include "sessionwidget.moc" + +// Auto Includes +#include "rekonq.h" + +// Local Includes +#include "sessionmanager.h" + +// KDE Includes +#include + +// Qt Includes +#include + + +SessionWidget::SessionWidget(QWidget *parent) + : QWidget(parent) +{ + setupUi(this); + + QStringList ses = ReKonfig::savedSessions(); + + Q_FOREACH(const QString & s, ses) + { + QListWidgetItem *item = new QListWidgetItem(s, listWidget, 0); + item->setFlags (item->flags () | Qt::ItemIsEditable); + listWidget->addItem(item); + } + + loadButton->setIcon(KIcon("system-run")); + connect(loadButton, SIGNAL(clicked()), this, SLOT(loadSession())); + + saveButton->setIcon(KIcon("document-save")); + connect(saveButton, SIGNAL(clicked()), this, SLOT(saveSession())); + + deleteButton->setIcon(KIcon("edit-delete")); + connect(deleteButton, SIGNAL(clicked()), this, SLOT(deleteSession())); + + connect(listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(updateButtons(int))); + connect(listWidget, SIGNAL(itemChanged(QListWidgetItem *)), this, SLOT(save())); + + updateButtons(-1); +} + + +void SessionWidget::loadSession() +{ + int cc = listWidget->currentRow(); + SessionManager::self()->restoreYourSession(cc); + // close(); +} + + +void SessionWidget::saveSession() +{ + int cc = listWidget->count(); + SessionManager::self()->saveYourSession(cc); + + QListWidgetItem *item = new QListWidgetItem(i18n("untitled"), listWidget, 0); + item->setFlags (item->flags () | Qt::ItemIsEditable); + listWidget->addItem(item); +} + + +void SessionWidget::deleteSession() +{ + listWidget->takeItem(listWidget->currentRow()); + save(); +} + + +void SessionWidget::updateButtons(int index) +{ + kDebug() << "UPDATE INDEX: " << index; + if (index < 0) + { + loadButton->setEnabled(false); + deleteButton->setEnabled(false); + return; + } + + loadButton->setEnabled(true); + deleteButton->setEnabled(true); +} + + +void SessionWidget::save() +{ + kDebug() << " ------------------------ SAVE --------------------------"; + + QStringList ses; + + int c = listWidget->count(); + for (int i = 0; i < c; ++i) + { + QListWidgetItem *item = listWidget->item(i); + ses << item->text(); + } + + ReKonfig::setSavedSessions(ses); +} -- cgit v1.2.1