#include "support/Translator.h"
#include <algorithm>
+#include <map>
+#include <ctime>
// FIXME: Q_WS_MACX is not available, it's in Qt
#ifdef USE_MACOSX_PACKAGING
string extension_;
};
+
+class FormatPrettyNameEqual : public unary_function<Format, bool> {
+public:
+ FormatPrettyNameEqual(string const & prettyname)
+ : prettyname_(prettyname) {}
+ bool operator()(Format const & f) const
+ {
+ return f.prettyname() == prettyname_;
+ }
+private:
+ string prettyname_;
+};
+
} //namespace anon
bool operator<(Format const & a, Format const & b)
{
- // use the compare_ascii_no_case instead of compare_no_case,
- // because in turkish, 'i' is not the lowercase version of 'I',
- // and thus turkish locale breaks parsing of tags.
-
- return compare_ascii_no_case(a.prettyname(), b.prettyname()) < 0;
+ return _(a.prettyname()) < _(b.prettyname());
}
Format::Format(string const & n, string const & e, string const & p,
string const & s, string const & v, string const & ed,
int flags)
- : name_(n), extensions_(e), prettyname_(p), shortcut_(s), viewer_(v),
+ : name_(n), prettyname_(p), shortcut_(s), viewer_(v),
editor_(ed), flags_(flags)
{
extension_list_ = getVectorFromString(e, ",");
}
+string const Format::extensions() const
+{
+ return getStringFromVector(extension_list_, ", ");
+}
+
+
bool Format::hasExtension(string const & e) const
{
return (find(extension_list_.begin(), extension_list_.end(), e)
void Format::setExtensions(string const & e)
{
- extensions_ = e;
extension_list_ = getVectorFromString(e, ",");
}
}
+string Formats::getFormatFromPrettyName(string const & prettyname) const
+{
+ if (!prettyname.empty()) {
+ Formats::const_iterator cit =
+ find_if(formatlist.begin(), formatlist.end(),
+ FormatPrettyNameEqual(prettyname));
+ if (cit != formats.end())
+ return cit->name();
+ }
+ return string();
+}
+
+
+/// Used to store last timestamp of file and whether it is (was) zipped
+struct ZippedInfo {
+ bool zipped;
+ std::time_t timestamp;
+ ZippedInfo(bool zipped, std::time_t timestamp)
+ : zipped(zipped), timestamp(timestamp) { }
+};
+
+
+/// Mapping absolute pathnames of files to their ZippedInfo metadata.
+static std::map<std::string, ZippedInfo> zipped_;
+
+
bool Formats::isZippedFile(support::FileName const & filename) const {
string const & fname = filename.absFileName();
time_t timestamp = filename.lastModified();