X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/cdcb4b0166aefdd382d20e7ff3b5cb217ba54ba8..3a2a6011e89d484c583fa4b1c2dd1d78a9bb0d7a:/src/viewproperties.cpp diff --git a/src/viewproperties.cpp b/src/viewproperties.cpp index 21f0c39da..b46ecb87e 100644 --- a/src/viewproperties.cpp +++ b/src/viewproperties.cpp @@ -18,21 +18,26 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ -#include +#include "viewproperties.h" -#include -#include -#include +#include "dolphinsettings.h" +#include "dolphin_directoryviewpropertysettings.h" +#include "dolphin_generalsettings.h" #include #include #include #include -#include "viewproperties.h" -#include "dolphinsettings.h" -#include "dolphin_directoryviewpropertysettings.h" -#include "dolphin_generalsettings.h" +#ifdef HAVE_NEPOMUK + #include +#endif + +#include +#include +#include + +bool ViewProperties::m_nepomukSupport = false; #define FILE_NAME "/.directory" @@ -41,12 +46,21 @@ ViewProperties::ViewProperties(const KUrl& url) : m_autoSave(true), m_node(0) { +#ifdef HAVE_NEPOMUK + static bool checkedNepomukSupport = false; + if (!checkedNepomukSupport) { + m_nepomukSupport = !Nepomuk::ResourceManager::instance()->init(); + checkedNepomukSupport = true; + } +#endif + KUrl cleanUrl(url); cleanUrl.cleanPath(); m_filepath = cleanUrl.path(); if ((m_filepath.length() < 1) || (m_filepath.at(0) != QChar('/'))) { - m_node = new ViewPropertySettings(); + const QString file = destinationDir("global") + FILE_NAME; + m_node = new ViewPropertySettings(KSharedConfig::openConfig(file)); return; } @@ -66,7 +80,7 @@ ViewProperties::ViewProperties(const KUrl& url) : m_filepath = destinationDir("remote") + m_filepath; } - const QString file(m_filepath + FILE_NAME); + const QString file = m_filepath + FILE_NAME; m_node = new ViewPropertySettings(KSharedConfig::openConfig(file)); const bool useDefaultProps = !useGlobalViewProps && @@ -160,7 +174,15 @@ void ViewProperties::setSorting(DolphinView::Sorting sorting) DolphinView::Sorting ViewProperties::sorting() const { - return static_cast(m_node->sorting()); + // If Nepomuk is not available, return SortByName as fallback if SortByRating + // or SortByTags is stored. + DolphinView::Sorting sorting = static_cast(m_node->sorting()); + const bool sortByName = !m_nepomukSupport && + ((sorting == DolphinView::SortByRating) || (sorting == DolphinView::SortByTags)); + if (sortByName) { + sorting = DolphinView::SortByName; + } + return sorting; } void ViewProperties::setSortOrder(Qt::SortOrder sortOrder) @@ -176,17 +198,65 @@ Qt::SortOrder ViewProperties::sortOrder() const return static_cast(m_node->sortOrder()); } -void ViewProperties::setAdditionalInfo(KFileItemDelegate::AdditionalInformation info) +void ViewProperties::setAdditionalInfo(KFileItemDelegate::InformationList list) { + int info = NoInfo; + foreach (KFileItemDelegate::Information currentInfo, list) { + switch (currentInfo) { + case KFileItemDelegate::Size: + info = info | SizeInfo; + break; + case KFileItemDelegate::ModificationTime: + info = info | DateInfo; + break; + case KFileItemDelegate::Permissions: + info = info | PermissionsInfo; + break; + case KFileItemDelegate::Owner: + info = info | OwnerInfo; + break; + case KFileItemDelegate::OwnerAndGroup: + info = info | GroupInfo; + break; + case KFileItemDelegate::FriendlyMimeType: + info = info | TypeInfo; + break; + default: + break; + } + } + if (m_node->additionalInfo() != info) { m_node->setAdditionalInfo(info); updateTimeStamp(); } } -KFileItemDelegate::AdditionalInformation ViewProperties::additionalInfo() const +KFileItemDelegate::InformationList ViewProperties::additionalInfo() const { - return static_cast(m_node->additionalInfo()); + const int info = m_node->additionalInfo(); + + KFileItemDelegate::InformationList list; + if (info & SizeInfo) { + list.append(KFileItemDelegate::Size); + } + if (info & DateInfo) { + list.append(KFileItemDelegate::ModificationTime); + } + if (info & PermissionsInfo) { + list.append(KFileItemDelegate::Permissions); + } + if (info & OwnerInfo) { + list.append(KFileItemDelegate::Owner); + } + if (info & GroupInfo) { + list.append(KFileItemDelegate::OwnerAndGroup); + } + if (info & TypeInfo) { + list.append(KFileItemDelegate::FriendlyMimeType); + } + + return list; }