┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphinsettings.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2006-11-21 06:02:05 +0000
committerPeter Penz <[email protected]>2006-11-21 06:02:05 +0000
commit5252c12db4929886dbe502013e0a1fee6500f568 (patch)
tree589d970fd03a9ce4b524f1cc020d980a3a11bdd8 /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.cpp184
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;
+}