Last french translation for v0.5 release
[vlc-remote] / favouritesmainwindow.cpp
1 /*   VLC-REMOTE for MAEMO 5
2 *   Copyright (C) 2010 Schutz Sacha <istdasklar@gmail.com>, Dru Moore <usr@dru-id.co.uk>, Yann Nave <yannux@onbebop.net>
3 *   This program is free software; you can redistribute it and/or modify
4 *   it under the terms of the GNU General Public License version 2,
5 *   or (at your option) any later version, as published by the Free
6 *   Software Foundation
7 *
8 *   This program is distributed in the hope that it will be useful,
9 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
10 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 *   GNU General Public License for more details
12 *
13 *   You should have received a copy of the GNU General Public
14 *   License along with this program; if not, write to the
15 *   Free Software Foundation, Inc.,
16 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17 */
18 #include "favouritesmainwindow.h"
19 #include "ui_favouritesmainwindow.h"
20 #include <QSettings>
21 #if defined(Q_WS_S60) || defined(Q_WS_MAEMO_5)
22 #include <QMaemo5InformationBox>
23 #endif
24 #include "appsettings.h"
25 //#include "browsemainwindow.h"
26
27 FavouritesMainWindow::FavouritesMainWindow(QWidget *parent) :
28         QMainWindow(parent),
29         ui(new Ui::FavouritesMainWindow)
30 {
31
32     ui->setupUi(this);
33
34     setWindowTitle("Vlc remote");
35     mCurrentItemIndex = -1;
36
37     ui->listWidget->setTextElideMode(Qt::ElideMiddle);
38     ui->listWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
39
40     ui->deleteButton->setIcon(QIcon::fromTheme("general_delete"));
41     ui->editButton->setIcon(QIcon::fromTheme("general_sketch"));
42     ui->browseButton->setIcon(QIcon::fromTheme("filemanager_media_folder"));
43     ui->saveButton->setIcon(QIcon::fromTheme("notes_save"));
44     ui->browseButton->setDisabled(true);
45     ui->editButton->setDisabled(true);
46     ui->deleteButton->setDisabled(true);
47     ui->actionSetHome->setDisabled(true);
48     ui->label->setVisible(false);
49     ui->lineEdit->setVisible(false);
50     ui->saveButton->setVisible(false);
51     ui->saveButton->setDisabled(true);
52
53     connect(ui->browseButton,SIGNAL(clicked()),this,SLOT(onBrowse()));
54     connect(ui->deleteButton,SIGNAL(clicked()),this,SLOT(onDelete()));
55     connect(ui->editButton,SIGNAL(clicked()),this,SLOT(onEdit()));
56     connect(ui->listWidget, SIGNAL(itemSelectionChanged()), this, SLOT(onListSelectionChanged()));
57     connect(ui->actionSetHome, SIGNAL(triggered()), this, SLOT(setHomeFolder()));
58     connect(ui->saveButton, SIGNAL(clicked()), this, SLOT(onEditSave()));
59     connect(ui->lineEdit, SIGNAL(textChanged(QString)), this, SLOT(onLineEditTextChanged(QString)));
60
61     init();
62
63
64 }
65 void FavouritesMainWindow::init()  // THIS METHOD IS CALLED WHEN CONFIG CHANGED AND WINDOW SHOWN...
66 {
67     mFavourites = AppSettings::getFavourites();
68     updateList();
69 }
70
71 FavouritesMainWindow::~FavouritesMainWindow()
72 {
73     delete mFavourites;
74     delete ui;
75 }
76
77 void FavouritesMainWindow::changeEvent(QEvent *e)
78 {
79     QMainWindow::changeEvent(e);
80     switch (e->type()) {
81     case QEvent::LanguageChange:
82         ui->retranslateUi(this);
83         break;
84     default:
85         break;
86     }
87 }
88 void FavouritesMainWindow::updateList() {
89     ui->listWidget->clear();
90     if (NULL != mFavourites && 0 < mFavourites->count()) {
91         for (int idx = 0; idx < mFavourites->count(); ++idx) {
92             QListWidgetItem* item = new QListWidgetItem(QIcon::fromTheme("imageviewer_favourite"), mFavourites->at(idx).name, ui->listWidget, LIST_ITEM_TYPE_OFFSET + idx);
93             ui->listWidget->addItem(item);
94         }
95     }
96 }
97 void FavouritesMainWindow::setHomeFolder() {
98     if (-1 < mCurrentItemIndex) {
99         AppSettings::setHomeDirectory(mCurrentFavourite);
100     }
101 }
102 void FavouritesMainWindow::onListSelectionChanged() {
103     ui->label->setVisible(false);
104     ui->lineEdit->setVisible(false);
105     ui->saveButton->setVisible(false);
106     ui->saveButton->setDisabled(true);
107     QList<QListWidgetItem *> items = ui->listWidget->selectedItems();
108     if (0 < items.count()) {
109         mCurrentItemIndex = ui->listWidget->currentIndex().row();
110         mCurrentFavourite = mFavourites->at(items.at(0)->type() - LIST_ITEM_TYPE_OFFSET); // Qt reserves types up to 1000, we use an offset beyond that for index tracking. May prove to be too hacky!
111         ui->browseButton->setDisabled(false);
112         ui->editButton->setDisabled(false);
113         ui->deleteButton->setDisabled(false);
114         ui->actionSetHome->setDisabled(false);
115     }
116     else {
117         mCurrentItemIndex = -1;
118         ui->browseButton->setDisabled(true);
119         ui->editButton->setDisabled(true);
120         ui->deleteButton->setDisabled(true);
121         ui->actionSetHome->setDisabled(true);
122     }
123 }
124 void FavouritesMainWindow::onLineEditTextChanged(QString text) {
125     if (0 < text.length()) {
126         ui->saveButton->setDisabled(false);
127     }
128     else {
129         ui->saveButton->setDisabled(true);
130     }
131 }
132 void FavouritesMainWindow::onEditSave() {
133     if (-1 < mCurrentItemIndex && 0 < ui->lineEdit->text().length()) {
134         ui->label->setVisible(false);
135         ui->lineEdit->setVisible(false);
136         ui->saveButton->setVisible(false);
137         ui->saveButton->setDisabled(true);
138         AppSettings::deleteFavourite(mCurrentFavourite);
139         mCurrentFavourite.name = ui->lineEdit->text();
140         AppSettings::addFavourite(mCurrentFavourite);
141         ui->lineEdit->setText("");
142         ui->listWidget->itemAt(mCurrentItemIndex, 0)->setText(mCurrentFavourite.name);
143         init();
144     }
145 }
146 void FavouritesMainWindow::onEdit() {
147     if (-1 < mCurrentItemIndex) {
148         ui->label->setVisible(true);
149         ui->lineEdit->setVisible(true);
150         ui->saveButton->setVisible(true);
151         ui->saveButton->setDisabled(false);
152         ui->lineEdit->setText(mCurrentFavourite.name);
153         ui->browseButton->setDisabled(true);
154         ui->editButton->setDisabled(true);
155         ui->deleteButton->setDisabled(true);
156     }
157 }
158 void FavouritesMainWindow::onBrowse() {
159     if (-1 < mCurrentItemIndex) {
160         emit browseDirectory(mCurrentFavourite.path);
161         //this->close();
162         //((BrowseMainWindow *)this->parent())->browseDirectory(mCurrentFavourite.path);
163     }
164 }
165 void FavouritesMainWindow::onDelete() {
166     if (-1 < mCurrentItemIndex) {
167         AppSettings::deleteFavourite(mCurrentFavourite);
168         init();
169     }
170 }