summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2014-02-06 09:32:44 +0100
committerPetr Mrázek <peterix@gmail.com>2014-02-06 09:32:44 +0100
commitf8df07c3272c0e02f31f46fda8a429292c7a446a (patch)
tree31af739dd416f521787ed970af05fb1de8b01222
parentb4b6091372310f4a811180cffde3ea5611881e6c (diff)
downloadMultiMC-f8df07c3272c0e02f31f46fda8a429292c7a446a.tar
MultiMC-f8df07c3272c0e02f31f46fda8a429292c7a446a.tar.gz
MultiMC-f8df07c3272c0e02f31f46fda8a429292c7a446a.tar.lz
MultiMC-f8df07c3272c0e02f31f46fda8a429292c7a446a.tar.xz
MultiMC-f8df07c3272c0e02f31f46fda8a429292c7a446a.zip
Small tweaks to make things better.
-rw-r--r--gui/ConsoleWindow.cpp18
-rw-r--r--gui/ConsoleWindow.h2
-rw-r--r--logic/MinecraftProcess.cpp2
-rw-r--r--logic/Mod.cpp21
-rw-r--r--logic/ModList.cpp27
-rw-r--r--logic/ModList.h1
6 files changed, 49 insertions, 22 deletions
diff --git a/gui/ConsoleWindow.cpp b/gui/ConsoleWindow.cpp
index dc36a8ff..ccc037f2 100644
--- a/gui/ConsoleWindow.cpp
+++ b/gui/ConsoleWindow.cpp
@@ -84,7 +84,7 @@ void ConsoleWindow::iconActivated(QSystemTrayIcon::ActivationReason reason)
}
}
-void ConsoleWindow::writeColor(QString text, const char *color)
+void ConsoleWindow::writeColor(QString text, const char *color, const char * background)
{
// append a paragraph
QString newtext;
@@ -92,6 +92,8 @@ void ConsoleWindow::writeColor(QString text, const char *color)
{
if (color)
newtext += QString("color:") + color + ";";
+ if (background)
+ newtext += QString("background-color:") + background + ";";
newtext += "font-family: monospace;";
}
newtext += "\">";
@@ -127,26 +129,26 @@ void ConsoleWindow::write(QString data, MessageLevel::Enum mode)
QListIterator<QString> iter(paragraphs);
if (mode == MessageLevel::MultiMC)
while (iter.hasNext())
- writeColor(iter.next(), "blue");
+ writeColor(iter.next(), "blue", 0);
else if (mode == MessageLevel::Error)
while (iter.hasNext())
- writeColor(iter.next(), "red");
+ writeColor(iter.next(), "red", 0);
else if (mode == MessageLevel::Warning)
while (iter.hasNext())
- writeColor(iter.next(), "orange");
+ writeColor(iter.next(), "orange", 0);
else if (mode == MessageLevel::Fatal)
while (iter.hasNext())
- writeColor(iter.next(), "pink");
+ writeColor(iter.next(), "red", "black");
else if (mode == MessageLevel::Debug)
while (iter.hasNext())
- writeColor(iter.next(), "green");
+ writeColor(iter.next(), "green", 0);
else if (mode == MessageLevel::PrePost)
while (iter.hasNext())
- writeColor(iter.next(), "grey");
+ writeColor(iter.next(), "grey", 0);
// TODO: implement other MessageLevels
else
while (iter.hasNext())
- writeColor(iter.next());
+ writeColor(iter.next(), 0, 0);
if(isVisible())
{
if (m_scroll_active)
diff --git a/gui/ConsoleWindow.h b/gui/ConsoleWindow.h
index 9291320e..7fe90c52 100644
--- a/gui/ConsoleWindow.h
+++ b/gui/ConsoleWindow.h
@@ -47,7 +47,7 @@ private:
* this will only insert a single paragraph.
* \n are ignored. a real \n is always appended.
*/
- void writeColor(QString data, const char *color = nullptr);
+ void writeColor(QString text, const char *color, const char *background);
signals:
void isClosing();
diff --git a/logic/MinecraftProcess.cpp b/logic/MinecraftProcess.cpp
index 9c0a7074..70a9d55f 100644
--- a/logic/MinecraftProcess.cpp
+++ b/logic/MinecraftProcess.cpp
@@ -113,6 +113,8 @@ MessageLevel::Enum MinecraftProcess::guessLevel(const QString &line, MessageLeve
level = MessageLevel::Fatal;
if (line.contains("[DEBUG]"))
level = MessageLevel::Debug;
+ if(line.contains("overwriting existing"))
+ level = MessageLevel::Fatal;
return level;
}
diff --git a/logic/Mod.cpp b/logic/Mod.cpp
index 6732446d..22ac36c8 100644
--- a/logic/Mod.cpp
+++ b/logic/Mod.cpp
@@ -164,6 +164,16 @@ void Mod::ReadMCModInfo(QByteArray contents)
m_name = firstObj.value("name").toString();
m_version = firstObj.value("version").toString();
m_homeurl = firstObj.value("url").toString();
+ m_homeurl = m_homeurl.trimmed();
+ if(!m_homeurl.isEmpty())
+ {
+ // fix up url.
+ if (!m_homeurl.startsWith("http://") && !m_homeurl.startsWith("https://") &&
+ !m_homeurl.startsWith("ftp://"))
+ {
+ m_homeurl.prepend("http://");
+ }
+ }
m_description = firstObj.value("description").toString();
QJsonArray authors = firstObj.value("authors").toArray();
if (authors.size() == 0)
@@ -178,7 +188,8 @@ void Mod::ReadMCModInfo(QByteArray contents)
}
m_credits = firstObj.value("credits").toString();
return;
- };
+ }
+ ;
QJsonParseError jsonError;
QJsonDocument jsonDoc = QJsonDocument::fromJson(contents, &jsonError);
// this is the very old format that had just the array
@@ -227,17 +238,17 @@ void Mod::ReadLiteModInfo(QByteArray contents)
QJsonParseError jsonError;
QJsonDocument jsonDoc = QJsonDocument::fromJson(contents, &jsonError);
auto object = jsonDoc.object();
- if(object.contains("name"))
+ if (object.contains("name"))
{
m_mod_id = m_name = object.value("name").toString();
}
- if(object.contains("version"))
+ if (object.contains("version"))
{
- m_version=object.value("version").toString("");
+ m_version = object.value("version").toString("");
}
else
{
- m_version=object.value("revision").toString("");
+ m_version = object.value("revision").toString("");
}
m_mcversion = object.value("mcversion").toString();
m_authors = object.value("author").toString();
diff --git a/logic/ModList.cpp b/logic/ModList.cpp
index 499623bf..79b56986 100644
--- a/logic/ModList.cpp
+++ b/logic/ModList.cpp
@@ -62,6 +62,19 @@ void ModList::stopWatching()
}
}
+void ModList::internalSort(QList<Mod> &what)
+{
+ auto predicate = [](const Mod & left, const Mod & right)
+ {
+ if (left.name() == right.name())
+ {
+ return left.mmc_id().localeAwareCompare(right.mmc_id()) <= 0;
+ }
+ return left.name().localeAwareCompare(right.name()) <= 0;
+ };
+ std::sort(what.begin(), what.end(), predicate);
+}
+
bool ModList::update()
{
if (!isValid())
@@ -98,7 +111,7 @@ bool ModList::update()
isEnabled = idxEnabled >= 0;
}
int idx = isEnabled ? idxEnabled : idxDisabled;
- QFileInfo & info = isEnabled ? infoEnabled : infoDisabled;
+ QFileInfo &info = isEnabled ? infoEnabled : infoDisabled;
// if the file from the index file exists
if (idx != -1)
{
@@ -122,8 +135,7 @@ bool ModList::update()
{
newMods.append(Mod(entry));
}
- std::sort(newMods.begin(), newMods.end(), [](const Mod & left, const Mod & right)
- { return left.name().localeAwareCompare(right.name()) <= 0; });
+ internalSort(newMods);
orderedMods.append(newMods);
orderOrStateChanged = true;
}
@@ -236,8 +248,8 @@ bool ModList::installMod(const QFileInfo &filename, int index)
int idx = mods.indexOf(m);
if (idx != -1)
{
- int idx2 = mods.indexOf(m,idx+1);
- if(idx2 != -1)
+ int idx2 = mods.indexOf(m, idx + 1);
+ if (idx2 != -1)
return false;
if (mods[idx].replace(m))
{
@@ -416,7 +428,7 @@ QVariant ModList::data(const QModelIndex &index, int role) const
switch (index.column())
{
case ActiveColumn:
- return mods[row].enabled() ? Qt::Checked: Qt::Unchecked;
+ return mods[row].enabled() ? Qt::Checked : Qt::Unchecked;
default:
return QVariant();
}
@@ -567,8 +579,7 @@ bool ModList::dropMimeData(const QMimeData *data, Qt::DropAction action, int row
if (m_list_file.isEmpty())
{
beginResetModel();
- std::sort(mods.begin(), mods.end(), [](const Mod & left, const Mod & right)
- { return left.name().localeAwareCompare(right.name()) <= 0; });
+ internalSort(mods);
endResetModel();
}
}
diff --git a/logic/ModList.h b/logic/ModList.h
index 0d6507fb..95f52061 100644
--- a/logic/ModList.h
+++ b/logic/ModList.h
@@ -127,6 +127,7 @@ public:
}
private:
+ void internalSort(QList<Mod> & what);
struct OrderItem
{
QString id;