Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mysql gui #451

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 9 additions & 1 deletion language/English/strings.xml
Expand Up @@ -701,7 +701,15 @@
<string id="796">Continuous repeat delay (ms)</string>
<string id="797">Maximum number of clients</string>
<string id="798">Internet access</string>

<string id="799">Connected to MySQL database successfully</string>
<string id="800">Could not connect to MySQL database</string>
<string id="801">Database</string>
<string id="802">SQLite</string>
<string id="803">MySQL</string>

<string id="805">Test Database Settings</string>
<string id="806">- Name</string>

<string id="850">Invalid port number entered</string>
<string id="851">Valid port range is 1-65535</string>
<string id="852">Valid port range is 1024-65535</string>
Expand Down
4 changes: 4 additions & 0 deletions xbmc/dbwrappers/mysqldataset.cpp
Expand Up @@ -27,6 +27,7 @@
#include "utils/log.h"
#include "system.h" // for GetLastError()
#include "mysql/errmsg.h"
#include "settings/GUISettings.h"
#ifdef _WIN32
#pragma comment(lib, "mysqlclient.lib")
#endif
Expand Down Expand Up @@ -155,13 +156,16 @@ int MysqlDatabase::connect(bool create_new) {

CLog::Log(LOGERROR, "Unable to open database: %s [%d](%s)",
db.c_str(), mysql_errno(conn), mysql_error(conn));

g_guiSettings.SetInt("videolibrary.type", 0); //we cant connect, go back to sqlite
return DB_CONNECTION_NONE;
}
catch(...)
{
CLog::Log(LOGERROR, "Unable to open database: %s (%u)",
db.c_str(), GetLastError());
}
g_guiSettings.SetInt("videolibrary.type", 0); //we cant connect, go back to sqlite
return DB_CONNECTION_NONE;
}

Expand Down
15 changes: 14 additions & 1 deletion xbmc/music/MusicDatabase.cpp
Expand Up @@ -87,7 +87,20 @@ CMusicDatabase::~CMusicDatabase(void)

bool CMusicDatabase::Open()
{
return CDatabase::Open(g_advancedSettings.m_databaseMusic);
g_settings.m_databaseMusic.type = (CStdString*)g_guiSettings.GetInt("musiclibrary.type") > 0 ? "mysql" : "sqlite3";
g_settings.m_databaseMusic.host = g_guiSettings.GetString("musiclibrary.host");
g_settings.m_databaseMusic.port = g_guiSettings.GetString("musiclibrary.port");
g_settings.m_databaseMusic.user = g_guiSettings.GetString("musiclibrary.user");
g_settings.m_databaseMusic.pass = g_guiSettings.GetString("musiclibrary.pass");
g_settings.m_databaseMusic.name = g_guiSettings.GetString("musiclibrary.name");

if (CDatabase::Open(g_settings.m_databaseMusic))
{
CommitTransaction();
return true;
}
g_guiSettings.SetInt("musiclibrary.type", 0);
return false;
}

bool CMusicDatabase::CreateTables()
Expand Down
22 changes: 0 additions & 22 deletions xbmc/settings/AdvancedSettings.cpp
Expand Up @@ -872,28 +872,6 @@ void CAdvancedSettings::ParseSettingsFile(const CStdString &file)

XMLUtils::GetBoolean(pRootElement, "measurerefreshrate", m_measureRefreshrate);

TiXmlElement* pDatabase = pRootElement->FirstChildElement("videodatabase");
if (pDatabase)
{
CLog::Log(LOGWARNING, "VIDEO database configuration is experimental.");
XMLUtils::GetString(pDatabase, "type", m_databaseVideo.type);
XMLUtils::GetString(pDatabase, "host", m_databaseVideo.host);
XMLUtils::GetString(pDatabase, "port", m_databaseVideo.port);
XMLUtils::GetString(pDatabase, "user", m_databaseVideo.user);
XMLUtils::GetString(pDatabase, "pass", m_databaseVideo.pass);
XMLUtils::GetString(pDatabase, "name", m_databaseVideo.name);
}

pDatabase = pRootElement->FirstChildElement("musicdatabase");
if (pDatabase)
{
XMLUtils::GetString(pDatabase, "type", m_databaseMusic.type);
XMLUtils::GetString(pDatabase, "host", m_databaseMusic.host);
XMLUtils::GetString(pDatabase, "port", m_databaseMusic.port);
XMLUtils::GetString(pDatabase, "user", m_databaseMusic.user);
XMLUtils::GetString(pDatabase, "pass", m_databaseMusic.pass);
XMLUtils::GetString(pDatabase, "name", m_databaseMusic.name);
}

pElement = pRootElement->FirstChildElement("enablemultimediakeys");
if (pElement)
Expand Down
13 changes: 0 additions & 13 deletions xbmc/settings/AdvancedSettings.h
Expand Up @@ -26,16 +26,6 @@

class TiXmlElement;

struct DatabaseSettings
{
CStdString type;
CStdString host;
CStdString port;
CStdString user;
CStdString pass;
CStdString name;
};

struct TVShowRegexp
{
bool byDate;
Expand Down Expand Up @@ -283,9 +273,6 @@ class CAdvancedSettings
bool m_measureRefreshrate; //when true the videoreferenceclock will measure the refreshrate when direct3d is used
//otherwise it will use the windows refreshrate

DatabaseSettings m_databaseMusic; // advanced music database setup
DatabaseSettings m_databaseVideo; // advanced video database setup

bool m_guiVisualizeDirtyRegions;
int m_guiAlgorithmDirtyRegions;
int m_guiDirtyRegionNoFlipTimeout;
Expand Down
32 changes: 30 additions & 2 deletions xbmc/settings/GUISettings.cpp
Expand Up @@ -272,9 +272,23 @@ void CGUISettings::Initialize()
AddBool(ml,"musiclibrary.downloadinfo", 20192, false);
AddDefaultAddon(ml, "musiclibrary.albumsscraper", 20193, "metadata.albums.allmusic.com", ADDON_SCRAPER_ALBUMS);
AddDefaultAddon(ml, "musiclibrary.artistsscraper", 20194, "metadata.artists.allmusic.com", ADDON_SCRAPER_ARTISTS);

AddSeparator(ml,"musiclibrary.sep2");
map<int,int> musicDatabase;
musicDatabase.insert(make_pair(802,0));
musicDatabase.insert(make_pair(803,1));

AddInt(ml, "musiclibrary.type", 801, 1, musicDatabase, SPIN_CONTROL_TEXT);

AddString(ml,"musiclibrary.host", 706, "127.0.0.1", EDIT_CONTROL_INPUT);
AddString(ml,"musiclibrary.port", 730, "3306", EDIT_CONTROL_NUMBER_INPUT);
AddString(ml,"musiclibrary.user", 1048, "xbmc", EDIT_CONTROL_INPUT);
AddString(ml,"musiclibrary.pass", 733, "xbmc", EDIT_CONTROL_HIDDEN_INPUT);
AddString(ml,"musiclibrary.name", 806, "xbmc_music", EDIT_CONTROL_INPUT);
AddString(ml, "musiclibrary.test", 805, "", BUTTON_CONTROL_STANDARD);
AddSeparator(ml,"musiclibrary.sep3");
AddBool(ml, "musiclibrary.updateonstartup", 22000, false);
AddBool(ml, "musiclibrary.backgroundupdate", 22001, false);
AddSeparator(ml,"musiclibrary.sep2");
AddString(ml, "musiclibrary.cleanup", 334, "", BUTTON_CONTROL_STANDARD);
AddString(ml, "musiclibrary.export", 20196, "", BUTTON_CONTROL_STANDARD);
AddString(ml, "musiclibrary.import", 20197, "", BUTTON_CONTROL_STANDARD);
Expand Down Expand Up @@ -557,9 +571,23 @@ void CGUISettings::Initialize()
AddBool(vdl, "videolibrary.actorthumbs", 20402, true);
AddInt(vdl, "videolibrary.flattentvshows", 20412, 1, 0, 1, 2, SPIN_CONTROL_TEXT);
AddBool(NULL, "videolibrary.flattenmoviesets", 22002, false);

AddSeparator(vdl, "videolibrary.sep3");
map<int,int> videoDatabase;
videoDatabase.insert(make_pair(802,0));
videoDatabase.insert(make_pair(803,1));

AddInt(vdl, "videolibrary.type", 801, 1, videoDatabase, SPIN_CONTROL_TEXT);

AddString(vdl,"videolibrary.host", 706, "127.0.0.1", EDIT_CONTROL_INPUT);
AddString(vdl,"videolibrary.port", 730, "3306", EDIT_CONTROL_NUMBER_INPUT);
AddString(vdl,"videolibrary.user", 1048, "xbmc", EDIT_CONTROL_INPUT);
AddString(vdl,"videolibrary.pass", 733, "xbmc", EDIT_CONTROL_HIDDEN_INPUT);
AddString(vdl,"videolibrary.name", 806, "xbmc_video", EDIT_CONTROL_INPUT);
AddString(vdl, "videolibrary.test", 805, "", BUTTON_CONTROL_STANDARD);
AddSeparator(vdl, "videolibrary.sep4");
AddBool(vdl, "videolibrary.updateonstartup", 22000, false);
AddBool(vdl, "videolibrary.backgroundupdate", 22001, false);
AddSeparator(vdl, "videolibrary.sep3");
AddString(vdl, "videolibrary.cleanup", 334, "", BUTTON_CONTROL_STANDARD);
AddString(vdl, "videolibrary.export", 647, "", BUTTON_CONTROL_STANDARD);
AddString(vdl, "videolibrary.import", 648, "", BUTTON_CONTROL_STANDARD);
Expand Down
49 changes: 48 additions & 1 deletion xbmc/settings/GUIWindowSettingsCategory.cpp
Expand Up @@ -1036,6 +1036,18 @@ void CGUIWindowSettingsCategory::UpdateSettings()
pControl->SetEnabled(enabled);
}
}
else if (strSetting.Equals("videolibrary.host") || strSetting.Equals("videolibrary.port") || strSetting.Equals("videolibrary.test") ||
strSetting.Equals("videolibrary.user") || strSetting.Equals("videolibrary.pass") || strSetting.Equals("videolibrary.name"))
{
CGUIControl *pControl = (CGUIControl *)GetControl(pSettingControl->GetID());
if (pControl) pControl->SetVisible(g_guiSettings.GetInt("videolibrary.type") > 0);
}
else if (strSetting.Equals("musiclibrary.host") || strSetting.Equals("musiclibrary.port") || strSetting.Equals("musiclibrary.test") ||
strSetting.Equals("musiclibrary.user") || strSetting.Equals("musiclibrary.pass") || strSetting.Equals("musiclibrary.name"))
{
CGUIControl *pControl = (CGUIControl *)GetControl(pSettingControl->GetID());
if (pControl) pControl->SetVisible(g_guiSettings.GetInt("musiclibrary.type") > 0);
}
else if (strSetting.Equals("weather.scriptsettings"))
{
AddonPtr addon;
Expand Down Expand Up @@ -1124,7 +1136,42 @@ void CGUIWindowSettingsCategory::OnClick(CBaseSettingControl *pSettingControl)
else
return;
}

else if (strSetting.Equals("videolibrary.test"))
{
int msgLine = 799;
CVideoDatabase videoDatabase;
if (!videoDatabase.Open())
{
msgLine = 800;
CGUISpinControlEx *pControl = (CGUISpinControlEx *)GetControl(GetSetting("videolibrary.type")->GetID());
pControl->SetValue(0);
}
CGUIDialogOK::ShowAndGetInput(805, 20022, msgLine, 20022);
}
else if (strSetting.Equals("musiclibrary.test"))
{
int msgLine = 799;
CMusicDatabase musicDatabase;
if (!musicDatabase.Open())
{
msgLine = 800;
CGUISpinControlEx *pControl = (CGUISpinControlEx *)GetControl(GetSetting("musiclibrary.type")->GetID());
pControl->SetValue(0);
}
CGUIDialogOK::ShowAndGetInput(805, 20022, msgLine, 20022);
}
else if (strSetting.Equals("videolibrary.type"))
{
CVideoDatabase videoDatabase;
videoDatabase.Close();
videoDatabase.Open();
}
else if (strSetting.Equals("musiclibrary.type"))
{
CMusicDatabase musicDatabase;
musicDatabase.Close();
musicDatabase.Open();
}
// if OnClick() returns false, the setting hasn't changed or doesn't
// require immediate update
if (!pSettingControl->OnClick())
Expand Down
13 changes: 13 additions & 0 deletions xbmc/settings/Settings.h
Expand Up @@ -74,6 +74,16 @@
like special://masterprofile/ */
#define PROFILES_FILE "special://masterprofile/profiles.xml"

struct DatabaseSettings
{
CStdString type;
CStdString host;
CStdString port;
CStdString user;
CStdString pass;
CStdString name;
};

class CSkinString
{
public:
Expand Down Expand Up @@ -127,6 +137,9 @@ class CSettings
int TranslateSkinBool(const CStdString &setting);
bool GetSkinBool(int setting) const;
void SetSkinBool(int setting, bool set);

DatabaseSettings m_databaseMusic; // music database setup
DatabaseSettings m_databaseVideo; // video database setup

/*! \brief Retreive the watched mode for the given content type
\param content Current content type
Expand Down
15 changes: 14 additions & 1 deletion xbmc/video/VideoDatabase.cpp
Expand Up @@ -70,7 +70,20 @@ CVideoDatabase::~CVideoDatabase(void)
//********************************************************************************************************************************
bool CVideoDatabase::Open()
{
return CDatabase::Open(g_advancedSettings.m_databaseVideo);
g_settings.m_databaseVideo.type = (CStdString*)g_guiSettings.GetInt("videolibrary.type") > 0 ? "mysql" : "sqlite3";
g_settings.m_databaseVideo.host = g_guiSettings.GetString("videolibrary.host");
g_settings.m_databaseVideo.port = g_guiSettings.GetString("videolibrary.port");
g_settings.m_databaseVideo.user = g_guiSettings.GetString("videolibrary.user");
g_settings.m_databaseVideo.pass = g_guiSettings.GetString("videolibrary.pass");
g_settings.m_databaseVideo.name = g_guiSettings.GetString("videolibrary.name");

if (CDatabase::Open(g_settings.m_databaseVideo))
{
CommitTransaction();
return true;
}
g_guiSettings.SetInt("videolibrary.type", 0);
return false;
}

bool CVideoDatabase::CreateTables()
Expand Down
6 changes: 3 additions & 3 deletions xbmc/windows/GUIWindowHome.cpp
Expand Up @@ -25,7 +25,7 @@
#include "utils/RecentlyAddedJob.h"
#include "interfaces/AnnouncementManager.h"
#include "utils/log.h"
#include "settings/AdvancedSettings.h"
#include "settings/Settings.h"
#include "utils/Variant.h"

using namespace ANNOUNCEMENT;
Expand All @@ -48,8 +48,8 @@ void CGUIWindowHome::OnInitWindow()
{
// for shared databases (ie mysql) always force an update on return to home
// this is a temporary solution until remote announcements can be delivered
if ( g_advancedSettings.m_databaseVideo.type.Equals("mysql") ||
g_advancedSettings.m_databaseMusic.type.Equals("mysql") )
if ( g_settings.m_databaseVideo.type.Equals("mysql") ||
g_settings.m_databaseMusic.type.Equals("mysql") )
m_updateRA = (Audio | Video | Totals);
AddRecentlyAddedJobs( m_updateRA );

Expand Down