1
0
mirror of git://projects.qi-hardware.com/gmenu2x.git synced 2024-07-04 20:23:51 +03:00
gmenu2x/src/browsedialog.h

106 lines
2.7 KiB
C
Raw Normal View History

2010-05-03 20:58:28 +03:00
/***************************************************************************
* Copyright (C) 2006 by Massimiliano Torromeo *
* massimiliano.torromeo@gmail.com *
2010-05-03 20:58:28 +03:00
* *
* 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. *
***************************************************************************/
#ifndef BROWSEDIALOG_H
#define BROWSEDIALOG_H
2010-05-03 20:58:28 +03:00
#include "buttonbox.h"
#include "dialog.h"
#include "filelister.h"
#include "inputmanager.h"
2010-05-03 20:58:28 +03:00
#include <SDL.h>
#include <string>
2010-05-03 20:58:28 +03:00
class OffscreenSurface;
class Touchscreen;
class BrowseDialog : protected Dialog {
2010-05-03 20:58:28 +03:00
protected:
BrowseDialog(
GMenu2X *gmenu2x, Touchscreen &ts,
const std::string &title, const std::string &subtitle);
virtual ~BrowseDialog();
void setPath(const std::string &path) {
this->path = path;
fl.browse(path);
}
FileLister fl;
unsigned int selected;
private:
2010-05-03 20:58:28 +03:00
enum Action {
ACT_NONE,
ACT_SELECT,
ACT_CLOSE,
ACT_UP,
ACT_DOWN,
ACT_SCROLLUP,
ACT_SCROLLDOWN,
ACT_GOUP,
ACT_CONFIRM,
};
Touchscreen &ts;
2010-05-03 20:58:28 +03:00
bool close, result;
std::string title;
std::string subtitle;
std::string path;
2010-05-03 20:58:28 +03:00
SDL_Rect clipRect;
SDL_Rect touchRect;
unsigned int numRows;
unsigned int rowHeight;
bool ts_pressed;
OffscreenSurface *iconGoUp;
OffscreenSurface *iconFolder;
OffscreenSurface *iconFile;
2010-05-03 20:58:28 +03:00
ButtonBox buttonBox;
Action getAction(InputManager::Button button);
2010-06-19 04:15:20 +03:00
void handleInput();
2010-05-03 20:58:28 +03:00
void paint();
void directoryUp();
void directoryEnter();
void confirm();
void quit();
2010-05-03 20:58:28 +03:00
public:
bool exec();
const std::string &getPath() {
return path;
2010-05-03 20:58:28 +03:00
}
std::string getFile() {
return fl[selected];
2010-05-03 20:58:28 +03:00
}
};
#endif // INPUTDIALOG_H