File: Settings.cpp

package info (click to toggle)
fotowall 0.9-8
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 4,280 kB
  • sloc: cpp: 23,275; makefile: 51; sh: 25
file content (102 lines) | stat: -rw-r--r-- 3,081 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/***************************************************************************
 *                                                                         *
 *   This file is part of the Fotowall project,                            *
 *       http://www.enricoros.com/opensource/fotowall                      *
 *                                                                         *
 *   Copyright (C) 2009 by Enrico Ros <enrico.ros@gmail.com>               *
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

#include "Settings.h"

#include "App.h"

#include <QStringList>
#include <QMessageBox>

Settings::Settings(bool clearConfig)
    : QSettings()
    , m_firstTime(false)
{
    // only this timer bybasses clearing
    int usageCount = value("Fotowall/UsageCount", (int)0).toInt();

    // clear settings if asked to do so
    if (clearConfig)
        clear();

    // build up the recent urls list
    foreach (const QString & urlString, value("Fotowall/RecentUrls").toStringList())
        if (App::validateFotowallUrl(urlString))
            m_recentFotowallUrls.append(QUrl(urlString));

    // find out if this is the first time
    m_firstTime = value("Fotowall/FirstTime", true).toBool();
    setValue("Fotowall/FirstTime", false);

    // increment usage count
    setValue("Fotowall/UsageCount", ++usageCount);
}

Settings::~Settings()
{
    // save the recent urls list
    if (!m_recentFotowallUrls.isEmpty()) {
        QStringList urls;
        foreach (const QUrl & url, m_recentFotowallUrls)
            urls.append(url.toString());
        setValue("Fotowall/RecentUrls", urls);
    } else
        remove("Fotowall/RecentUrls");

    // flush to disk
    sync();
}

bool Settings::firstTime() const
{
    return m_firstTime || usageCount() < 2;
}

int Settings::usageCount() const
{
    return value("Fotowall/UsageCount", (int)0).toInt();
}

QList<QUrl> Settings::recentFotowallUrls() const
{
    return m_recentFotowallUrls;
}

void Settings::addRecentFotowallUrl(const QUrl & fotowallUrl)
{
    // remove if already enlisted
    m_recentFotowallUrls.removeAll(fotowallUrl);

    // keep up to 10 urls
    //while (m_recentFotowallUrls.size() > 10)
    //    m_recentFotowallUrls.removeLast();

    // finally add the url
    m_recentFotowallUrls.prepend(fotowallUrl);
}

void Settings::removeRecentFotowallUrl(const QUrl & fotowallUrl)
{
    m_recentFotowallUrls.removeAll(fotowallUrl);
}

void Settings::addCommandlineUrl(const QString & url)
{
    m_commandlineUrls.append(url);
}

QStringList Settings::commandlineUrls() const
{
    return m_commandlineUrls;
}