diff options
| author | Peter Penz <[email protected]> | 2006-11-21 06:02:05 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2006-11-21 06:02:05 +0000 |
| commit | 5252c12db4929886dbe502013e0a1fee6500f568 (patch) | |
| tree | 589d970fd03a9ce4b524f1cc020d980a3a11bdd8 /src/dolphinsettings.cpp | |
commited initial version of Dolphin
svn path=/trunk/playground/utils/dolphin/; revision=606622
Diffstat (limited to 'src/dolphinsettings.cpp')
| -rw-r--r-- | src/dolphinsettings.cpp | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/src/dolphinsettings.cpp b/src/dolphinsettings.cpp new file mode 100644 index 000000000..8e040d767 --- /dev/null +++ b/src/dolphinsettings.cpp @@ -0,0 +1,184 @@ +/*************************************************************************** + * Copyright (C) 2006 by Peter Penz ([email protected]), * + * Cvetoslav Ludmiloff and Patrice Tremblay * + * * + * 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) any later version. * + * * + * 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., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "dolphinsettings.h" + +#include <assert.h> +#include <qdir.h> + +#include <kapplication.h> +#include <kbookmark.h> +#include <kbookmarkmanager.h> +#include <kicontheme.h> +#include <klocale.h> +#include <kstandarddirs.h> + +#include "dolphin.h" +#include "generalsettings.h" +#include "iconsmodesettings.h" +#include "previewsmodesettings.h" +#include "detailsmodesettings.h" +#include "sidebarsettings.h" + +DolphinSettings& DolphinSettings::instance() +{ + static DolphinSettings* instance = 0; + if (instance == 0) { + instance = new DolphinSettings(); + } + return *instance; +} + +KBookmark DolphinSettings::bookmark(int index) const +{ + int i = 0; + KBookmarkGroup root = bookmarkManager()->root(); + KBookmark bookmark = root.first(); + while (!bookmark.isNull()) { + if (i == index) { + return bookmark; + } + ++i; + bookmark = root.next(bookmark); + } + + return KBookmark(); +} + +KBookmarkManager* DolphinSettings::bookmarkManager() const +{ + QString basePath = KGlobal::instance()->instanceName(); + basePath.append("/bookmarks.xml"); + const QString file = locateLocal("data", basePath); + + return KBookmarkManager::managerForFile(file, false); +} + +void DolphinSettings::save() +{ + m_generalSettings->writeConfig(); + m_iconsModeSettings->writeConfig(); + m_previewsModeSettings->writeConfig(); + m_detailsModeSettings->writeConfig(); + m_sidebarSettings->writeConfig(); + + QString basePath = KGlobal::instance()->instanceName(); + basePath.append("/bookmarks.xml"); + const QString file = locateLocal( "data", basePath); + + KBookmarkManager* manager = KBookmarkManager::managerForFile(file, false); + manager->save(false); +} + +void DolphinSettings::calculateGridSize(int hint) +{ + // TODO: remove in KDE4 + const int previewSize = m_iconsModeSettings->previewSize(); + const int iconSize = m_iconsModeSettings->iconSize(); + const int maxSize = (previewSize > iconSize) ? previewSize : iconSize; + const Q3IconView::Arrangement arrangement = (m_iconsModeSettings->arrangement() == "LeftToRight") ? + Q3IconView::LeftToRight : Q3IconView::TopToBottom; + + int gridWidth = 0; + int gridHeight = 0; + if (arrangement == Q3IconView::LeftToRight) { + int widthUnit = maxSize + (maxSize / 2); + if (widthUnit < KIcon::SizeLarge) { + widthUnit = KIcon::SizeLarge; + } + + gridWidth = widthUnit + hint * KIcon::SizeLarge; + + gridHeight = iconSize; + if (gridHeight <= KIcon::SizeMedium) { + gridHeight = gridHeight * 2; + } + else { + gridHeight += maxSize / 2; + } + } + else { + assert(arrangement == Q3IconView::TopToBottom); + gridWidth = maxSize + (hint + 1) * (8 * m_iconsModeSettings->fontSize()); + + // The height-setting is ignored yet by KFileIconView if the TopToBottom + // arrangement is active. Anyway write the setting to have a defined value. + gridHeight = maxSize; + } + + m_iconsModeSettings->setGridWidth(gridWidth); + m_iconsModeSettings->setGridHeight(gridHeight); +} + +int DolphinSettings::textWidthHint() const +{ + // TODO: remove in KDE4 + const int previewSize = m_iconsModeSettings->previewSize(); + const int iconSize = m_iconsModeSettings->iconSize(); + const Q3IconView::Arrangement arrangement = (m_iconsModeSettings->arrangement() == "LeftToRight") ? + Q3IconView::LeftToRight : Q3IconView::TopToBottom; + + const int gridWidth = m_iconsModeSettings->gridWidth(); + + const int maxSize = (previewSize > iconSize) ? previewSize : iconSize; + int hint = 0; + if (arrangement == Q3IconView::LeftToRight) { + int widthUnit = maxSize + (maxSize / 2); + if (widthUnit < KIcon::SizeLarge) { + widthUnit = KIcon::SizeLarge; + } + hint = (gridWidth - widthUnit) / KIcon::SizeLarge; + } + else { + assert(arrangement == Q3IconView::TopToBottom); + hint = (gridWidth - maxSize) / (8 * m_iconsModeSettings->fontSize()) - 1; + if (hint > 2) { + hint = 2; + } + } + return hint; +} + +DolphinSettings::DolphinSettings() +{ + m_generalSettings = new GeneralSettings(); + m_iconsModeSettings = new IconsModeSettings(); + m_previewsModeSettings = new PreviewsModeSettings(); + m_detailsModeSettings = new DetailsModeSettings(); + m_sidebarSettings = new SidebarSettings(); +} + +DolphinSettings::~DolphinSettings() +{ + delete m_generalSettings; + m_generalSettings = 0; + + delete m_iconsModeSettings; + m_iconsModeSettings = 0; + + delete m_previewsModeSettings; + m_previewsModeSettings = 0; + + delete m_detailsModeSettings; + m_detailsModeSettings = 0; + + delete m_sidebarSettings; + m_sidebarSettings = 0; +} |
