1
0
mirror of git://projects.qi-hardware.com/gmenu2x.git synced 2024-11-20 20:05:20 +02:00
gmenu2x/src/browsedialog.h
Maarten ter Huurne 1ad6b2f25a Made GMenu2X::ts private.
Pass Touchscreen reference to constructors instead of pulling it from
the GMenu2X class.
2011-12-23 14:03:05 +01:00

103 lines
2.7 KiB
C++

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