3 #include <wibble/string.h>
18 #ifndef EPT_CORE_DESKTOP_H
19 #define EPT_CORE_DESKTOP_H
38 operator std::string()
const {
return name; }
44 while ( i.peek() != EOF ) {
46 if ( c ==
';' )
return i;
52 struct Entry : wibble::mixin::Comparable< Entry > {
54 Entry( std::string n, std::string g,
55 std::string p, std::string d , std::string i )
62 void load( std::string file ) {
64 std::ifstream i( file.c_str() );
82 std::istringstream i( s );
85 std::istream_iterator< Category >( i ),
86 std::istream_iterator< Category >(),
88 std::bind1st( std::equal_to< std::string >(),
"" ) );
95 std::string
id()
const {
return m_id; }
120 InternalList( std::string d ) : dir( d ), offset( -1 ), loaded( false )
127 entry.
load( current );
133 return (offset == -2);
149 DIR *d = opendir( dir.c_str() );
157 seekdir( d, offset );
160 while ( ( ent = readdir( d ) ) != 0 ) {
161 std::string name( ent->d_name );
162 if ( name ==
"." || name ==
".." )
164 if ( !wibble::str::endsWith( name,
".desktop" ) )
166 current = dir +
"/" + name;
167 offset = telldir( d );
198 Source( std::string dir ) : m_dir( dir ),
199 m_policy( &m_defaultPolicy ) {}
207 t._id = std::string(
"desktop:" ) + i.
id();
213 e.
load( t.desktop() );
221 template< PropertyId p >
232 PropertyFilter< Group, IsInGroup >::T
group( std::string
id )
234 return propertyFilter< Group >(
IsInGroup(
id ) );
239 template<>
inline std::string Source::getInternal< Name >(
Entry e ) {
243 template<>
inline std::string Source::getInternal< Icon >(
Entry e ) {
253 template<>
inline std::string Source::getInternal< Group >(
Entry e ) {
254 return m_policy->group( e );
257 template<>
inline std::string Source::getInternal< ShortDescription >(
Entry e ) {
258 return e.description();
bool inCategory(std::string c) const
Definition: desktop.h:92
PropertyId
Definition: desktop.h:25
Setup::Token Token
Definition: source.h:15
Definition: desktop.h:183
std::string m_name
Definition: desktop.h:107
std::string g
Definition: desktop.h:225
GroupPolicy * m_policy
Definition: desktop.h:196
Source(std::string dir)
Definition: desktop.h:198
desktop::PropertyId PropertyId
Definition: desktop.h:179
ept::Token Token
Definition: desktop.h:177
Definition: desktop.h:112
Entry entry
Definition: desktop.h:115
Definition: desktopfile.h:15
std::string m_dir
Definition: desktop.h:193
void load(std::string file)
Definition: desktop.h:62
Definition: desktopfile.h:22
Definition: desktop.h:176
std::string id() const
Definition: desktop.h:95
-*- C++ -*- (c) 2006, 2007 Petr Rockai me@mornfall.net
Definition: apt.cc:43
std::istream & operator>>(std::istream &i, Category &cat)
Definition: desktop.h:41
bool m_free
Definition: desktop.h:108
Definition: desktop.h:224
Entry()
Definition: desktop.h:53
std::string name() const
Definition: desktop.h:96
Entry head() const
Definition: desktop.h:125
std::string T
Definition: desktop.h:30
PropertyFilter< Group, IsInGroup >::T group(std::string id)
Definition: desktop.h:232
InternalList(std::string d)
Definition: desktop.h:120
Categories m_categories
Definition: desktop.h:109
bool loaded
Definition: desktop.h:117
std::string name
Definition: desktop.h:37
InternalList()
Definition: desktop.h:119
Entry(std::string n, std::string g, std::string p, std::string d, std::string i)
Definition: desktop.h:54
Entry lookupToken(Token t)
Definition: desktop.h:211
Entry & entry(std::string k)
Definition: desktopfile.h:25
bool operator()(Token, std::string gr) const
Definition: desktop.h:227
PropertyType< p >::T getInternal(Entry)
std::string current
Definition: desktop.h:114
std::string m_icon
Definition: desktop.h:107
InternalList tail() const
Definition: desktop.h:141
Categories categories() const
Definition: desktop.h:91
IsInGroup(std::string _g="")
Definition: desktop.h:226
Definition: desktop.h:191
virtual std::string group(const Entry &e)
Definition: desktop.h:184
void setCategories(std::string s)
Definition: desktop.h:81
void setGroupPolicy(GroupPolicy *p)
Definition: desktop.h:217
std::string value
Definition: desktopfile.h:18
std::set< std::string > Categories
Definition: desktop.h:34
std::string T
Definition: desktop.h:28
std::string icon() const
Definition: desktop.h:99
bool m_supported
Definition: desktop.h:108
std::string _id
Definition: token.h:11
std::string T
Definition: desktop.h:32
std::string m_description
Definition: desktop.h:107
std::string dir
Definition: desktop.h:113
std::string package() const
Definition: desktop.h:97
desktop::InternalList InternalList
Definition: desktop.h:180
AptInternalList< Internal > InternalList
Definition: core/apt.h:381
std::string m_id
Definition: desktop.h:107
std::string m_package
Definition: desktop.h:107
bool operator<(const Entry &o) const
Definition: desktop.h:100
ept::Token T
Definition: desktop.h:31
Token getToken(Entry i)
Definition: desktop.h:205
off_t offset
Definition: desktop.h:116
std::string description() const
Definition: desktop.h:98
virtual ~GroupPolicy()
Definition: desktop.h:188
std::string T
Definition: desktop.h:29
InternalList listInternal()
Definition: desktop.h:201
GroupPolicy m_defaultPolicy
Definition: desktop.h:195
void nextFile()
Definition: desktop.h:147
Entry Internal
Definition: desktop.h:178
bool empty() const
Definition: desktop.h:132
void firstFile()
Definition: desktop.h:136