From 7609bebd7d38115710032037ebbe3dd2b58692c5 Mon Sep 17 00:00:00 2001 From: Robert Knight Date: Mon, 6 Aug 2007 12:30:31 +0000 Subject: [PATCH] Start of saving window size when Konsole and restoring it on the next startup. Not working properly yet for windows above a certain size. svn path=/trunk/KDE/kdebase/apps/konsole/; revision=696974 --- src/ViewManager.cpp | 36 ++++++++++++++++++++++++++++++------ src/ViewManager.h | 4 ++++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/ViewManager.cpp b/src/ViewManager.cpp index a8921ca31..371279a7e 100644 --- a/src/ViewManager.cpp +++ b/src/ViewManager.cpp @@ -29,6 +29,7 @@ // KDE #include +#include #include #include #include @@ -293,6 +294,11 @@ void ViewManager::sessionFinished() Q_ASSERT(session); + // record the size of the last session + qDebug() << "Recording session size: " << session->size(); + setDefaultDisplaySize( session->size().height() , session->size().width() ); + + // close attached views QList children = _viewSplitter->findChildren(); foreach ( TerminalDisplay* view , children ) @@ -303,6 +309,7 @@ void ViewManager::sessionFinished() view->deleteLater(); } } + } void ViewManager::focusActiveView() @@ -468,8 +475,11 @@ void ViewManager::createView(Session* session) applyProfile(display,session->profileKey()); // set initial size - // temporary default used for now - display->setSize(80,40); + int defaultLines = 0; + int defaultColumns = 0; + getDefaultDisplaySize(defaultLines,defaultColumns); + qDebug() << "Setting default display size to " << QSize(defaultColumns,defaultLines); + display->setSize(defaultColumns,defaultLines); ViewProperties* properties = createController(session,display); @@ -488,6 +498,19 @@ void ViewManager::createView(Session* session) } } +void ViewManager::getDefaultDisplaySize(int& lines , int& columns) const +{ + const KConfigGroup group = KGlobal::config()->group("Last Session"); + QSize size = group.readEntry("WindowSize",QSize(80,40)); + lines = size.height(); + columns = size.width(); +} +void ViewManager::setDefaultDisplaySize(int lines , int columns) +{ + KConfigGroup group = KGlobal::config()->group("Last Session"); + group.writeEntry("WindowSize",QSize(columns,lines)); +} + ViewContainer* ViewManager::createContainer(const QString& profileKey) { const Profile* info = SessionManager::instance()->profile(profileKey); @@ -528,12 +551,13 @@ void ViewManager::containerViewsChanged(QObject* container) void ViewManager::viewCloseRequest(QWidget* view) { + //FIXME Check that this cast is actually legal + TerminalDisplay* display = (TerminalDisplay*)view; + + Q_ASSERT(display); + // 1. detach view from session // 2. if the session has no views left, close it - - qDebug() << "Removing view."; - - TerminalDisplay* display = (TerminalDisplay*)view; Session* session = _sessionMap[ display ]; if ( session ) { diff --git a/src/ViewManager.h b/src/ViewManager.h index 2cc52a07c..8d7d61e4a 100644 --- a/src/ViewManager.h +++ b/src/ViewManager.h @@ -214,6 +214,10 @@ private: // about the session ( such as title and associated icon ) to the display. SessionController* createController(Session* session , TerminalDisplay* display); + // save and load default size for new displays + void setDefaultDisplaySize(int lines , int columns); + void getDefaultDisplaySize(int& lines , int& columns) const; + private: QPointer _viewSplitter; QPointer _pluggedController;