~ubuntu-branches/ubuntu/saucy/clementine/saucy

« back to all changes in this revision

Viewing changes to src/ui/behavioursettingspage.cpp

  • Committer: Package Import Robot
  • Author(s): Thomas PIERSON
  • Date: 2012-01-01 20:43:39 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20120101204339-lsb6nndwhfy05sde
Tags: 1.0.1+dfsg-1
New upstream release. (Closes: #653926, #651611, #657391)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* This file is part of Clementine.
 
2
   Copyright 2010, David Sansome <me@davidsansome.com>
 
3
 
 
4
   Clementine is free software: you can redistribute it and/or modify
 
5
   it under the terms of the GNU General Public License as published by
 
6
   the Free Software Foundation, either version 3 of the License, or
 
7
   (at your option) any later version.
 
8
 
 
9
   Clementine is distributed in the hope that it will be useful,
 
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
   GNU General Public License for more details.
 
13
 
 
14
   You should have received a copy of the GNU General Public License
 
15
   along with Clementine.  If not, see <http://www.gnu.org/licenses/>.
 
16
*/
 
17
 
 
18
#include "behavioursettingspage.h"
 
19
#include "mainwindow.h"
 
20
#include "ui_behavioursettingspage.h"
 
21
#include "playlist/playlist.h"
 
22
 
 
23
#include <QDir>
 
24
 
 
25
 
 
26
BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog* dialog)
 
27
  : SettingsPage(dialog),
 
28
    ui_(new Ui_BehaviourSettingsPage)
 
29
{
 
30
  ui_->setupUi(this);
 
31
 
 
32
  connect(ui_->b_show_tray_icon_, SIGNAL(toggled(bool)), SLOT(ShowTrayIconToggled(bool)));
 
33
 
 
34
  ui_->doubleclick_addmode->setItemData(0, MainWindow::AddBehaviour_Append);
 
35
  ui_->doubleclick_addmode->setItemData(1, MainWindow::AddBehaviour_Load);
 
36
  ui_->doubleclick_addmode->setItemData(2, MainWindow::AddBehaviour_OpenInNew);
 
37
  ui_->doubleclick_addmode->setItemData(3, MainWindow::AddBehaviour_Enqueue);
 
38
 
 
39
  ui_->doubleclick_playmode->setItemData(0, MainWindow::PlayBehaviour_Never);
 
40
  ui_->doubleclick_playmode->setItemData(1, MainWindow::PlayBehaviour_IfStopped);
 
41
  ui_->doubleclick_playmode->setItemData(2, MainWindow::PlayBehaviour_Always);
 
42
 
 
43
  ui_->menu_playmode->setItemData(0, MainWindow::PlayBehaviour_Never);
 
44
  ui_->menu_playmode->setItemData(1, MainWindow::PlayBehaviour_IfStopped);
 
45
  ui_->menu_playmode->setItemData(2, MainWindow::PlayBehaviour_Always);
 
46
 
 
47
  // Populate the language combo box.  We do this by looking at all the
 
48
  // compiled in translations.
 
49
  QDir dir(":/translations/");
 
50
  QStringList codes(dir.entryList(QStringList() << "*.qm"));
 
51
  QRegExp lang_re("^clementine_(.*).qm$");
 
52
  foreach (const QString& filename, codes) {
 
53
    // The regex captures the "ru" from "clementine_ru.qm"
 
54
    if (!lang_re.exactMatch(filename))
 
55
      continue;
 
56
 
 
57
    QString code = lang_re.cap(1);
 
58
    QString name = QString("%1 (%2)").arg(
 
59
        QLocale::languageToString(QLocale(code).language()), code);
 
60
 
 
61
    language_map_[name] = code;
 
62
  }
 
63
 
 
64
  language_map_["English (en)"] = "en";
 
65
 
 
66
  // Sort the names and show them in the UI
 
67
  QStringList names = language_map_.keys();
 
68
  qStableSort(names);
 
69
  ui_->language->addItems(names);
 
70
 
 
71
#ifdef Q_OS_DARWIN
 
72
  ui_->b_show_tray_icon_->setEnabled(false);
 
73
  ui_->startup_group_->setEnabled(false);
 
74
#endif
 
75
}
 
76
 
 
77
BehaviourSettingsPage::~BehaviourSettingsPage() {
 
78
  delete ui_;
 
79
}
 
80
 
 
81
void BehaviourSettingsPage::Load() {
 
82
  QSettings s;
 
83
 
 
84
  s.beginGroup(MainWindow::kSettingsGroup);
 
85
  ui_->b_show_tray_icon_->setChecked(s.value("showtray", true).toBool());
 
86
  ui_->b_keep_running_->setChecked(s.value("keeprunning",
 
87
      ui_->b_show_tray_icon_->isChecked()).toBool());
 
88
  ui_->doubleclick_addmode->setCurrentIndex(ui_->doubleclick_addmode->findData(
 
89
      s.value("doubleclick_addmode", MainWindow::AddBehaviour_Append).toInt()));
 
90
  ui_->doubleclick_playmode->setCurrentIndex(ui_->doubleclick_playmode->findData(
 
91
      s.value("doubleclick_playmode", MainWindow::PlayBehaviour_IfStopped).toInt()));
 
92
  ui_->menu_playmode->setCurrentIndex(ui_->menu_playmode->findData(
 
93
      s.value("menu_playmode", MainWindow::PlayBehaviour_IfStopped).toInt()));
 
94
 
 
95
  MainWindow::StartupBehaviour behaviour = MainWindow::StartupBehaviour(
 
96
      s.value("startupbehaviour", MainWindow::Startup_Remember).toInt());
 
97
  switch (behaviour) {
 
98
    case MainWindow::Startup_AlwaysHide: ui_->b_always_hide_->setChecked(true); break;
 
99
    case MainWindow::Startup_AlwaysShow: ui_->b_always_show_->setChecked(true); break;
 
100
    case MainWindow::Startup_Remember:   ui_->b_remember_->setChecked(true);    break;
 
101
  }
 
102
  s.endGroup();
 
103
 
 
104
  s.beginGroup("General");
 
105
  QString name = language_map_.key(s.value("language").toString());
 
106
  if (name.isEmpty())
 
107
    ui_->language->setCurrentIndex(0);
 
108
  else
 
109
    ui_->language->setCurrentIndex(ui_->language->findText(name));
 
110
  s.endGroup();
 
111
 
 
112
  s.beginGroup(Playlist::kSettingsGroup);
 
113
  ui_->b_grey_out_deleted_->setChecked(s.value("greyoutdeleted", false).toBool());
 
114
  ui_->b_enable_background_img_->setChecked(s.value("bg_enabled", true).toBool());
 
115
  s.endGroup();
 
116
}
 
117
 
 
118
void BehaviourSettingsPage::Save() {
 
119
  QSettings s;
 
120
 
 
121
  MainWindow::StartupBehaviour behaviour = MainWindow::Startup_Remember;
 
122
  if (ui_->b_always_hide_->isChecked()) behaviour = MainWindow::Startup_AlwaysHide;
 
123
  if (ui_->b_always_show_->isChecked()) behaviour = MainWindow::Startup_AlwaysShow;
 
124
  if (ui_->b_remember_->isChecked())    behaviour = MainWindow::Startup_Remember;
 
125
 
 
126
  MainWindow::AddBehaviour doubleclick_addmode = MainWindow::AddBehaviour(
 
127
    ui_->doubleclick_addmode->itemData(ui_->doubleclick_addmode->currentIndex()).toInt());
 
128
  MainWindow::PlayBehaviour doubleclick_playmode = MainWindow::PlayBehaviour(
 
129
    ui_->doubleclick_playmode->itemData(ui_->doubleclick_playmode->currentIndex()).toInt());
 
130
  MainWindow::PlayBehaviour menu_playmode = MainWindow::PlayBehaviour(
 
131
    ui_->menu_playmode->itemData(ui_->menu_playmode->currentIndex()).toInt());
 
132
 
 
133
  s.beginGroup(MainWindow::kSettingsGroup);
 
134
  s.setValue("showtray", ui_->b_show_tray_icon_->isChecked());
 
135
  s.setValue("keeprunning", ui_->b_keep_running_->isChecked());
 
136
  s.setValue("startupbehaviour", int(behaviour));
 
137
  s.setValue("doubleclick_addmode", doubleclick_addmode);
 
138
  s.setValue("doubleclick_playmode", doubleclick_playmode);
 
139
  s.setValue("menu_playmode", menu_playmode);
 
140
  s.endGroup();
 
141
 
 
142
  s.beginGroup("General");
 
143
  s.setValue("language", language_map_.contains(ui_->language->currentText()) ?
 
144
             language_map_[ui_->language->currentText()] : QString());
 
145
  s.endGroup();
 
146
 
 
147
  s.beginGroup(Playlist::kSettingsGroup);
 
148
  s.setValue("greyoutdeleted", ui_->b_grey_out_deleted_->isChecked());
 
149
  s.setValue("bg_enabled", ui_->b_enable_background_img_->isChecked());
 
150
  s.endGroup();
 
151
}
 
152
 
 
153
void BehaviourSettingsPage::ShowTrayIconToggled(bool on) {
 
154
  ui_->b_always_hide_->setEnabled(on);
 
155
  if (!on && ui_->b_always_hide_->isChecked())
 
156
    ui_->b_remember_->setChecked(true);
 
157
}