diff --git a/App.cpp b/App.cpp deleted file mode 100644 index b725e5a..0000000 --- a/App.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#include "App.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "Contacts.h" - -// quick and dirty function to quickly make text labels -BStringView *MakeText(const char* text) -{ - return new BStringView("rstr", text); -} - -App::App(void) : BApplication(std::format("application/x-vnd.{}-{}", APP_AUTHOR, APP_NAME).c_str()) -{ - std::cout << "hello world!!\n"; - // Initialize BRect frame for window - BRect frame(100, 100, 500, 400); - - // Initialize parent group for all UI elements to sit in. This is so they all get grouped nicely together - BGroupLayout *pGroup = new BGroupLayout(B_HORIZONTAL); - // Create window - BWindow *window = new BWindow(frame, std::format("{} by {}", APP_NAME, APP_AUTHOR).c_str(), B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS); - - // Set window layout to parent group created earlier - window->SetLayout(pGroup); - - // Initialize special UI group for all of our "real" elements - BGroupLayout *uGroup = new BGroupLayout(B_HORIZONTAL, 100); - // Add label group to parent group - pGroup->AddItem(uGroup); - - // Center label group - uGroup->SetExplicitAlignment(BAlignment(B_ALIGN_HORIZONTAL_CENTER, B_ALIGN_VERTICAL_CENTER)); - - // And finally, add a button!! - BButton *connectButton = new BButton(frame, "connect", "Connect to XMPP", new BMessage(msgConnectButtonClicked)); - connectButton->SetTarget(this); - - uGroup->AddView(connectButton); - - window->Show(); - - App::ConnectWindow = window; -} - -void App::MessageReceived(BMessage *msg) -{ - switch(msg->what) { - case msgConnectButtonClicked: - { - printf("Connect button clicked...\n"); - App::ConnectWindow->Hide(); - App::ContactsWindow = ShowContacts(); - break; - } - default: - { - printf("Unknown message received: %d\n", msg->what); - BApplication::MessageReceived(msg); - break; - } - } -} - -int main(void) -{ - App *app = new App(); - app->Run(); - - delete app; - return 0; -} diff --git a/App.h b/App.h deleted file mode 100644 index 4c75c69..0000000 --- a/App.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef APP_H -#define APP_H - -#include -#include - -#define APP_NAME "Renga" -#define APP_AUTHOR "hex_andre" - -const uint32 msgConnectButtonClicked = 'mCBC'; - -#include - -class App : public BApplication -{ - public: - App(void); - virtual void MessageReceived(BMessage *msg); - BWindow *ConnectWindow; - BWindow *ContactsWindow; -}; - - -#endif diff --git a/Contacts.cpp b/Contacts.cpp deleted file mode 100644 index 587ea3f..0000000 --- a/Contacts.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "Contacts.h" -#include "App.h" -#include -#include -#include - -BWindow *ShowContacts() -{ - // POS W H - BRect frame(200,200,600,400); - BWindow *window = new BWindow(frame, "Contacts List", B_TITLED_WINDOW, B_NOT_MINIMIZABLE | B_QUIT_ON_WINDOW_CLOSE); - window->Show(); - return window; -} diff --git a/Contacts.h b/Contacts.h deleted file mode 100644 index fc892f5..0000000 --- a/Contacts.h +++ /dev/null @@ -1,3 +0,0 @@ -#include "App.h" -#include -extern BWindow *ShowContacts(); diff --git a/Makefile b/Makefile index ac34d7b..de29a3a 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ FLAGS=-lbe -std=c++20 -lstdc++ all: build build: - $(CPP) *.cpp -o $(BINARY) $(FLAGS) + $(CPP) $(shell find ./src | grep cpp) -o $(BINARY) $(FLAGS) test: build ./renga diff --git a/src/App.cpp b/src/App.cpp new file mode 100644 index 0000000..e06bb8b --- /dev/null +++ b/src/App.cpp @@ -0,0 +1,17 @@ +#include "App.h" +#include "gui/MainWindow.h" + +App::App(void) : BApplication(kSignature) +{ + MainWindow *mainWindow = new MainWindow(); + mainWindow->Show(); +} + +int main(void) +{ + App *app = new App(); + app->Run(); + + delete app; + return 0; +} diff --git a/src/App.h b/src/App.h new file mode 100644 index 0000000..462a3a2 --- /dev/null +++ b/src/App.h @@ -0,0 +1,23 @@ +#ifndef APP_H +#define APP_H + +#include +#include +#include +#include +#include + +#define kSignature "application/x-vnd.iwakura-Renga" + +class Client : public gloox::ConnectionListener, gloox::PresenceHandler { + +}; + +class App : public BApplication +{ + public: + App(void); + Client *client; +}; + +#endif diff --git a/src/gui/Contacts.cpp b/src/gui/Contacts.cpp new file mode 100644 index 0000000..3276cb6 --- /dev/null +++ b/src/gui/Contacts.cpp @@ -0,0 +1,11 @@ +#include "Contacts.h" +#include +#include +#include +#include + +Contacts::Contacts(void) + : BWindow(BRect(200,200,600,400), TITLE, B_TITLED_WINDOW, B_NOT_MINIMIZABLE | B_QUIT_ON_WINDOW_CLOSE) +{ + AddChild(new BStringView("label", "Placeholder label (contact list to be added)")); +} diff --git a/src/gui/Contacts.h b/src/gui/Contacts.h new file mode 100644 index 0000000..21ac43d --- /dev/null +++ b/src/gui/Contacts.h @@ -0,0 +1,12 @@ +#ifndef CONTACTS_H +#define CONTACTS_H + +#include +#define TITLE "Contact List" + +class Contacts : public BWindow { + public: + Contacts(void); +}; + +#endif diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp new file mode 100644 index 0000000..8ef0143 --- /dev/null +++ b/src/gui/MainWindow.cpp @@ -0,0 +1,87 @@ +#include "MainWindow.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Contacts.h" +#include + +MainWindow::MainWindow(void) + : BWindow(BRect(100, 100, 500, 400), "Renga", B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE) +{ + // parent layout (defines the entire window layout) + BGroupLayout *pGroup = new BGroupLayout(B_HORIZONTAL); + SetLayout(pGroup); + + // make sure window uses window colors set in haiku preferences (equivelant to system themes) + pGroup->View()->AdoptSystemColors(); + + // prepare "renga" text banner + BStringView *banner = new BStringView("banner", "Renga"); + + banner->SetHighColor(135,1,1); + banner->SetFontSize(28.0); + + // ui layout (parent of all UI elements visible to the user) + BGridLayout *uiElems = new BGridLayout(10, 0); + + pGroup->AddItem(uiElems); + + // center the entire UI + uiElems->SetExplicitAlignment(BAlignment(B_ALIGN_HORIZONTAL_CENTER, B_ALIGN_VERTICAL_CENTER)); + + BButton *connectButton = new BButton(Frame(), "connect", "Connect!", new BMessage(msgConnectButtonClicked)); + connectButton->SetTarget(this); + + BTextControl *jidInput = new BTextControl("jidinput", "JID:", "Placeholder", new BMessage(msgConnectButtonClicked)); + BTextControl *pwInput = new BTextControl("pwinput", "Password:", "Placeholder", new BMessage(msgConnectButtonClicked)); + + pwInput->TextView()->HideTyping(true); + + jidInput->SetExplicitSize(BSize(200,23)); + pwInput->SetExplicitSize(BSize(200,23)); + + uiElems->AddView(banner, 0, 0); + uiElems->AddView(jidInput, 0, 1); + uiElems->AddView(pwInput, 0, 2); + uiElems->AddView(connectButton, 0, 3); + uiElems->SetMinRowHeight(3, 75); + uiElems->SetMinRowHeight(0, 25); + + Show(); +} + + +void MainWindow::MessageReceived(BMessage *msg) +{ + switch(msg->what) { + case msgConnectButtonClicked: + { + printf("Connect button clicked...\n"); + + Hide(); + Contacts *contacts = new Contacts(); + contacts->Show(); + break; + } + default: + { + printf("Unknown message received: %d\n", msg->what); + break; + } + } +} diff --git a/src/gui/MainWindow.h b/src/gui/MainWindow.h new file mode 100644 index 0000000..0af4989 --- /dev/null +++ b/src/gui/MainWindow.h @@ -0,0 +1,19 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include + +const uint32 msgConnectButtonClicked = 'mCBC'; + +class MainWindow : public BWindow +{ + public: + MainWindow(void); + virtual void MessageReceived(BMessage *msg); +}; + +#endif