diff --git a/App.cpp b/App.cpp new file mode 100644 index 0000000..b725e5a --- /dev/null +++ b/App.cpp @@ -0,0 +1,84 @@ +#include "App.h" +#include <Application.h> +#include <GroupLayout.h> +#include <InterfaceDefs.h> +#include <Layout.h> +#include <LayoutItem.h> +#include <Message.h> +#include <Rect.h> +#include <String.h> +#include <StringView.h> +#include <GroupLayoutBuilder.h> +#include <Window.h> +#include <Button.h> +#include <cstdio> +#include <format> +#include <iostream> +#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 new file mode 100644 index 0000000..4c75c69 --- /dev/null +++ b/App.h @@ -0,0 +1,24 @@ +#ifndef APP_H +#define APP_H + +#include <Message.h> +#include <Window.h> + +#define APP_NAME "Renga" +#define APP_AUTHOR "hex_andre" + +const uint32 msgConnectButtonClicked = 'mCBC'; + +#include <Application.h> + +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 new file mode 100644 index 0000000..587ea3f --- /dev/null +++ b/Contacts.cpp @@ -0,0 +1,14 @@ +#include "Contacts.h" +#include "App.h" +#include <Application.h> +#include <Rect.h> +#include <Window.h> + +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 new file mode 100644 index 0000000..fc892f5 --- /dev/null +++ b/Contacts.h @@ -0,0 +1,3 @@ +#include "App.h" +#include <Window.h> +extern BWindow *ShowContacts(); diff --git a/Makefile b/Makefile index de29a3a..ac34d7b 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ FLAGS=-lbe -std=c++20 -lstdc++ all: build build: - $(CPP) $(shell find ./src | grep cpp) -o $(BINARY) $(FLAGS) + $(CPP) *.cpp -o $(BINARY) $(FLAGS) test: build ./renga diff --git a/src/App.cpp b/src/App.cpp deleted file mode 100644 index e06bb8b..0000000 --- a/src/App.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#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 deleted file mode 100644 index 462a3a2..0000000 --- a/src/App.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef APP_H -#define APP_H - -#include <Message.h> -#include <Window.h> -#include <gloox/connectionlistener.h> -#include <gloox/presencehandler.h> -#include <Application.h> - -#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 deleted file mode 100644 index 3276cb6..0000000 --- a/src/gui/Contacts.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "Contacts.h" -#include <Application.h> -#include <Rect.h> -#include <Window.h> -#include <StringView.h> - -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 deleted file mode 100644 index 21ac43d..0000000 --- a/src/gui/Contacts.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef CONTACTS_H -#define CONTACTS_H - -#include <Window.h> -#define TITLE "Contact List" - -class Contacts : public BWindow { - public: - Contacts(void); -}; - -#endif diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp deleted file mode 100644 index 8ef0143..0000000 --- a/src/gui/MainWindow.cpp +++ /dev/null @@ -1,87 +0,0 @@ -#include "MainWindow.h" -#include <Alignment.h> -#include <Application.h> -#include <GridLayout.h> -#include <GroupLayout.h> -#include <InterfaceDefs.h> -#include <Layout.h> -#include <LayoutItem.h> -#include <Message.h> -#include <Rect.h> -#include <String.h> -#include <StringView.h> -#include <TextView.h> -#include <View.h> -#include <Window.h> -#include <GroupLayoutBuilder.h> -#include <GridLayoutBuilder.h> -#include <Button.h> -#include <cstdio> -#include "Contacts.h" -#include <TextControl.h> - -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 deleted file mode 100644 index 0af4989..0000000 --- a/src/gui/MainWindow.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include <Message.h> -#include <Window.h> -#include <Application.h> -#include <gloox/connectionlistener.h> -#include <gloox/presencehandler.h> - -const uint32 msgConnectButtonClicked = 'mCBC'; - -class MainWindow : public BWindow -{ - public: - MainWindow(void); - virtual void MessageReceived(BMessage *msg); -}; - -#endif